FreeBuf|HTTP/3协议的安全优势与挑战
文章图片
HTTP/3是超文本传输协议(HTTP)的第三个正式版本 , 将改善网络性能和稳定性 , 解决各种安全隐私问题 , 但尽管如此 , 仍存在一些安全挑战 。
HTTP/3不再使用传输控制协议(TCP) , 相反 , 将使用2012年谷歌提出的QUIC传输协议 。 实际上 , HTTP/3前身是HTTP-over-QUIC 。
2018年10月 , 互联网工程任务组(IETF)HTTP和QUIC工作组主席MarkNottingham提出了将HTTP-over-QUIC更名为HTTP/3
QUIC是基于用户数据包协议(UDP)连接的复用版本的传输层协议 。 与TCP不同 , UDP不遵循TCP三向交握 , 而是使用单个UDP往返 。 因此 , 在用户代理和Web服务器之间的每个连接都使用UDP , QUIC协议极大地改善了任何web组件的网络性能 。
同样 , QUIC依靠多路复用来在单个连接上无缝地管理用户代理与服务器之间的多个交互 , 而没有一个阻塞另一个 , 因此与以前的版本相比 , 有助于提高性能 。 从性能和稳定性的角度考虑 , HTTP/3似乎都有很大的优势 。 从安全性来说 , HTTP/3有其先进性也有其局限性 。
【FreeBuf|HTTP/3协议的安全优势与挑战】安全优势1.端到端加密
TCP协议旨在确保在传输过程中进行有效负载加密 , 但是对于特定传输的信息仍未加密 , 所以这会引发许多安全和隐私问题 。 预防攻击的对策不是在TCP堆栈上 , 而是在处理协议和网络的网络设备和中间盒上 。 此外 , 解析器可以克服负载均衡器和其他网络设备中的这些问题 , 但它们也还存在严重的性能问题 , 并且可能会限制网络发展速度和可靠性 。
使用QUIC协议时 , 只有网段中的必填字段未加密 , 而其余信息默认情况下是加密的 。 通过查看TCP和QUIC的网络段 , 我们发现包括数据包标志(数据包NR和ACKNR) , 窗口和选项的字段在QUIC中已加密 , 但在TCP中未加密 。 QUIC中建议加密有助于防止普遍存在的监视攻击(在HTTP/3的前身中很普遍)以及协议工件和元数据、应用程序数据的侵入式信息收集 。
下面的图1显示了QUIC协议在网络分析器工具Wireshark中的呈现方式 。 根据QUIC的网段 , 互联网协议(IP)层保存源IP地址和目标IP地址信息 。 UDP保留源端口和目标端口 , 而QUIC包含公共标志 , 数据包编号 , 连接ID和加密的有效负载 。
文章图片
图1Wireshark代码段显示QUIC协议的网段2.TLS安全连接
为了在连接期间支持端到端加密 , QUIC主要依赖于加密和传输层握手 。 由于QUIC直接与TLS1.3交互 , 因此它可用于所有原始连接的授权加密 , 并且没有禁用TLS 。 QUIC还负责确保建立安全连接 , 同时考虑到所有原始连接的机密性和完整性保护 。 与HTTP/2+TLS实现不同 , QUIC在其传输上下文中处理TLS握手和警报机制 , 这反过来又帮助QUIC利用从握手交换的密钥来建立密码保护 。
如果我们从整体上考虑该协议 , 则TLS和QUIC之间存在两个主要通信:
QUIC为TLS提供了稳定的流抽象 , 通过QUIC发送和接收消息 。
TLS使用以下内容更新QUIC组件 。
1.秘密的、经过身份验证的加密算法和密钥派生功能(KDF)
2.数据包保护密钥
3.协议状态更改(例如握手状态、服务器证书)
与使用TLS的“application_data”记录的HTTP/2不同 , QUIC使用STREAM帧 , 通过QUIC数据包形式展现 。 TLS握手以CRYPTO帧的形式形成 , 主要由连续流中的握手数据组成 。 QUIC旨在并行发送数据包 , 有时会将不同的消息捆绑成一个消息并加密 , 因为这些消息具有相同的加密级别 。 此功能为网络性能提供了极大的优势 , 同时确保在传输过程中应用正确的加密模式 。
3.完全正向保密性
- FreeBuf|Deceptikons:潜伏十年的“黑客雇佣军团”浮出水面
- 产业气象站|还让我手动写个HTTP协议代码,三次握手和四次挥手说完了
- 华为|高通突然宣布,与华为达成协议,华为要使用高通的芯片了?
- 华为|美媒:不惧美国政府打压,美国高通与华为达成新专利授权协议
- 商业经济观察|和解款将达18亿美元,高通、华为和解?高通、华为签署专利协议
- 高通|华为与高通达成专利协议,将支付 18 亿和解金
- 环球Tech|带动高通股价大涨13%,高通与华为签署长期专利协议
- 科创板日报|警告5G手机出货量将下滑15%,高通宣布与华为签署长期专利协议
- 专注教育的小步酱|三步科技携手浪潮云签署战略合作协议
- 腾讯|腾讯面试HTTP与TCP/IP20连问,你能答出多少?