HTTP/3是超文本传输协议(HTTP)的第三个正式版本,它将改善网络性能和稳定性并解决各种安全隐私问题。但是,仍然存在一些安全挑战。
HTTP/3将不再使用传输控制协议(TCP),相反,将使用Google在2012年提出的QUIC传输协议。
2018年10月,互联网工程任务小组(IETF)HTTP和QUIC工作组的主席Mark Nottingham提议HTTP-Over-Quic被更名为HTTP/3
QUIC是基于用户数据包协议(UDP)Connection的传输层协议的重复使用版本。Unlike TCP,UDP不遵循TCP三式握把,而是使用单个UDP往返往返。因此,用户之间的每种连接都在代理和Web服务器使用UDP,QUIC协议已大大提高了任何Web组件的网络性能。
同样,Quic依靠多种方法来无缝管理单个连接上用户代理和服务器之间的多个交互,而无需阻止另一个连接。因此,与以前的版本相比,它有助于提高性能。从性能和稳定性的角度来看,HTTP/3似乎具有很大的优势。在安全性方面,HTTP/3具有其高级性质和局限性。
TCP协议旨在确保在传输过程中执行有效的负载加密,但是没有加密特定传输的信息,因此这将导致许多安全性和隐私问题。防止攻击的对策不在TCP堆栈上,而是在TCP堆栈上进行。处理协议和网络设备以及网络的中间框。此外,解析器可以在负载平衡器和其他网络设备中克服这些问题,但它们也存在严重的性能问题,并且可能会限制网络开发的速度和可靠性。
当使用QUIC协议时,仅加密网络段中所需的字段,并且默认情况下对剩余信息进行加密。通过查看TCP和QUIC的网络段,我们发现数据数据包徽标(数据数据包NR和ACKnr),窗口和选项的字段在QUIC中加密,但在TCP.Quic中不加密。和元数据和应用程序数据。
下图1显示了网络分析仪工具中Wireshark中Quic协议的呈现。根据QUIC网络段,Internet协议(IP)层保存源IP地址和目标IP地址信息。UDP保留源端口和目标端口,而QUIC包含公共标志,数据包号,有效的加载和加密。
为了在连接期间支持端到-To -end加密,Quic主要取决于加密和手持。由于Quic是直接与TLS 1.3进行交互,因此可以用于授权加密所有原始连接,并且不会禁用TLS.Quicic tls.quicic tlse tlse还负责确保建立安全的连接,同时考虑所有原始连接的机密性和完整性保护。Quic使用钥匙交换手来建立密码保护。
如果我们考虑整个协议,TLS和Quic之间有两个主要沟通:
Quic为TLS提供了稳定的流量抽象,通过QUIC发送和接收消息。
TLS使用以下内容来更新Quic组件。
1.秘密,加密算法和密钥推导功能(KDF)
2.包装保护密钥
3.协议状态更改(例如握手,服务器证书)
与TLS录制的“ application_data”录制的http/2不同,Quic使用流帧并以QUIC数据包的形式显示。TLS握手以加密框架的形式形成,主要由连续握手数据组成。在传输过程中应用。
当用户代理和服务器之间交换临时私钥时,可以在协议中实现完整的前向级别的机密性(PFS)。每个会话由用户代理开始使用新的独特的会话密钥,并且无需任何内容使用上一个会话密钥。通过使用每个传输的单独会话密钥,即使泄漏任何会话密钥,来自较早或将来会话的任何信息也不会损坏。从加密的角度来看,没有键交换可以提供完美的前进机密性。
Quic使用TLS 1.3。该协议支持有限字段上的椭圆曲线(EC)DHE密钥交换或预共享密钥(PSK)和Diffie-Hellman(DH)。0-RTT键交换提供了完全的积极机密性,因为加密规范仅接受加密规范通过0-RTT握手的前向安全连接。尽管TLS 1.2也支持前级机密性,从技术上讲,当用户代理发送机密信息的副本,该机密信息仅知道服务器的对称密钥保护,机密性是为了在会话恢复期间丢失。该协议为用户代理和服务器之间的初始消息提供了完整的正面机密性。此外,由于QUIC协议不支持长期键,因此QUIC可以使用其协议层为应用程序提供应用程序。TLS 1.3的帮助层具有完全积极的机密功能。
除随机数外,QUIC实现还用于存储关键客户端值。服务器识别并拒绝使用相同的密钥推导和随机数的任何重复请求。考虑用户代理和服务器之间的通信开销,此设计称为性能的噩梦。从理论上讲,解决方案似乎适用,但实际上,协议可能会变得非常积极并引起性能问题。当前的设计不是最好的,而是协议的角度,这将阻止任何服务器从多次接受相同的密钥。相似,Quic在初始步骤中不提供可更换的保护,而是在服务器初始答复后立即开始保护。Quiquiquiqu允许初始交易以获得应用程序保护并减少协议所占据的内存。考虑到Web组件可以使用键来从会话密钥中得出,因此在此阶段可能会发生可更换的攻击。Wever,可以在应用级别使用预防措施来减少这种情况。
Quic支持握手期间的地址验证,并需要签名地址来证明它,从而消除了任何IP欺骗攻击。IP地址欺骗的问题主要是通过广泛使用Quic中的“源地址令牌”来解决的。“源地址令牌”是服务器身份验证的加密加密块,其中包含用户代理的IP地址和服务器的时间戳。用户代理可以重复使用服务器生成的源代币,除非连接更改和IP地址没有更改。由于源地址令牌被用作承载令牌,因此可以重复使用它们,并且可以通过服务器设置绕过任何IP地址限制。因为服务器仅响应令牌中的IP地址,即使被盗的曲奇或令牌不会成功执行IP欺骗。
TLS 1.3可以防止TLS降级,因为该协议规定了关键哈希望台谷tohism,并要求握手接收器验证钥匙哈希。此外,该测试还涉及用户代理和服务器之间的认证验证消息,包括所有先前消息的PKCS RSA哈希签名。
HTTP / 3的最大优势之一是0-RTT恢复,它可以大大提高连接速度并降低延迟。在建立前共享秘密时播放。
0-RTT恢复功能具有一些安全性缺点。最常见的攻击媒介之一是替换攻击。当对手发送初始数据包时,可能会导致此攻击。在特定情况下,这可能会迫使服务器认为该请求来自先前已知的客户前进的部分。如果对手破坏了令牌,则可以解密用户代理发送的0-RTT通信内容。
连接ID操纵攻击要求攻击者在用户代理之间和服务器之间。他们可以在初次手 - 手动交换客户和服务器问候时操纵连接ID。握手将照常进行。服务器假设已建立了连接,但是用户代理将无法解密,因为连接ID需要加密密钥分配过程输入步骤,并且用户代理和服务器将计算不同的加密键。最终将暂停并向服务器发送错误消息,以告知已终止的连接。由于客户端使用原始加密密钥将错误消息加密到服务器,因此服务器将无法解密,它将保持连接状态,直到释放超时(通常在10分钟内)到期。
当大规模执行时,相同的攻击可能会导致服务器拒绝服务攻击并保持多个连接直到连接状态到期。客户从建立任何连接。
为了成功扩大攻击,攻击者必须欺骗受害者的IP地址并将UDP请求发送到服务器。如果将服务器发送回更重要的UDP响应,则攻击者可以大规模使用此服务器行为,并且创建DDOS攻击。
具体而言,在Quic中,当对手接受目标地址的令牌并发布最初用于生成令牌的IP地址时,会发生UDP扩增攻击。攻击者可以使用相同的IP地址将0-RTT连接发送到服务器,IP地址可能已更改为不同的端点。通过执行此设置,攻击者可以潜在地表明服务器向受害者服务器发送了大量流量。为了防止此攻击,HTTP / 3具有速度限制功能和短期验证令牌,可以充当DDOS攻击的补偿控制,同时减轻攻击情况。
当对手有意启动多个连接时,电流将被耗尽,这可能会导致端点。攻击者可以使用大量请求来使用详尽的序列。尽管特定的传输参数可能会限制并发活动流的数量,在某些情况下,,服务器配置可以设置为更高的值。由于服务器的协议配置增加了协议性能,因此受害者服务器可能成为此类攻击的目标。
连接重置攻击主要是将无状态重置发送给受害者,这可能会产生类似于TCP重置注射攻击的拒绝服务攻击。如果攻击者可以获得具有特定连接ID的重置令牌,则可能会有潜在的攻击媒介。最终,攻击者可以使用生成的令牌用相同的连接ID重置活动连接,以便服务器等待连接直到发生。如果此攻击是大规模执行的,则服务器必须消耗很多等待连接完成的资源。
QUIC数据包保护为通信中的所有数据包提供了身份验证和加密。将版本降级到不安全的Quic版本。暂时不会发生攻击,因为只有一个版本的Quic,但将来需要注意。
尽管某些用户代理,服务器和良好的声誉网站支持HTTP3 / QUIC,但许多网络设备(例如反向 /正代理,负载Balanor,Web应用程序防火墙和安全事件监视工具)却不完全支持HTTP / 3SessenceUnlike TCP,没有需要连接到QUIC连接,这使检测主机和恶意连接更加困难。MaliousIouse攻击者可能能够通过QUIC继电器恶意有效负载并执行数据泄漏攻击并保持隐身,因为大多数检测工具无法检测到Quic,交通。
2016年,互联网工程任务组(IETF)开始了标准化的Google的Quic,并宣布IETF Quic成为新的HTTP / 3版本的基础。但是由于性能和安全考虑,IETF Quic与原始Quic有很大不同设计。
TCP上的传统网络流量需要三道握手。QUIC使用UDP。由于往返数量减少和发送数据包的减少,延迟减少,从而加速了网络流量的传输。在UDP的更快速度外,它还具有其他优势,包括连接迁移,改进延迟,拥堵控制和建立 - 在加密。对Google进行审计,“与TCP + TLS的1-3次往返,Quic握手通常需要零圆旅程来发送有效的负载”。第一个连接需要往返,随后的连接不需要任何往返。类似,因为与TCP相比,QUIC用于多路重用操作,它在数据包的丢失方面做得更好,并且它的功能更好握手速度更快。
Google的Quic版本现在是GQUIC.HTTP / 3从GQUIC演变而来的,已得到显着改进,并已由IETF工作组贡献和增强。尽管从技术上讲HTTP / 3是完整的应用程序协议,但QUIC是指基本传输协议,这是不限于服务Web流量。UDP没有连接,也不是非常可靠的。QuiC通过添加类似于TCP的堆栈在UDP中添加可靠的连接,并在其上方使用流量控制功能克服了这些限制,同时解决了问题。TCP的头部堵塞。
HTTP / 3使用UDP,类似于HTTP / 2,使用TCP。每个连接中有几个平行流。这些平行流用于同时通过单个连接传输数据而不会影响其他流。因此,与TCP不同,携带特定单流数据数据的数据包的丢失只会影响特定的流。当它到达时立即分配到该流,因此它可以继续在应用程序中重新计算,而不会丢失任何流。这种连接的建立策略是通过加密和传输握手的结合来实现的。
QUIC旨在通过减少HTTP/2的损失和延迟来提高性能2.尽管HTTP/2使用单个TCP连接,这将导致阻塞问题。例如,请求的对象可能会在之后停滞不前另一个丢失的对象,直到恢复对象为止。QuIC通过将HTTP/2流层推向传输层来解决问题,从而避免了应用程序层和传输层的问题。HTTP/3还支持多通道重用。在与TLS直接集成的同时,它提供了独立于其他连接请求的请求。尽管HTTP/2和HTTP/3工作相似,但以下是HTTP/2和HTTP/3之间的一些重要差异。
从网络堆栈的角度来看,HTTP/2广泛使用符合HTTP标准的TLS 1.2+,而基础TCP充当传输协议。在默认情况下,在http/3中,除了Quic,TLS 1.3也使用了,UDP是传输协议。下图说明了Quic在网络协议堆栈中的位置。在相反,以前的版本使用TLS 1.2,并使用TCP的拥塞控制来控制损失恢复功能,而HTTP/2个过程多电流函数。
TCP连接意味着数据源和目标网络实体(主要是地址和端口)用于识别特定连接。对于当前的Web技术,主要是因为它们需要支持用户的移动性。如果用户从Wi-Fi网络移动到蜂窝网络,则HTTP/2 TCP协议将需要基于当前的新连接建立新连接地址。中断。
从协议的角度来看,连接ID提供了其他好处。服务器和用户代理可以使用连接ID来识别原始连接和重新传输连接,并避免重新启动TCP中歧义的问题。
QUIC已获得大多数浏览器的支持。重要的网站,例如YouTube和Facebook,已启用此功能更快地加载页面。撰写本文时,只有4%的顶级网站支持Quic.Microsoft宣布他们将使用Windows运送Windows。内核中的一般Quic库MSQUIC支持各种收件箱功能。
Quic和HTTP/3旨在满足当今互联网网络性能,可靠性和安全性的目标。TLS 1.3的安全支持已大大改善,这解决了HTTP/2的弱点,以及HTTP.USE END -TO -TO -TO -TO -TO -TO -TO -TO -TO -TO -TO -TO -TO -TO -TO -TO -END -to -to -to -to -to -to -to -to -to -to -to -to -to -to -to -早期版本。HTTP/3传输期间的结束加密有助于抵抗攻击者和数据汇总的某些隐私问题。尽管从性能和安全的角度来看,http/3的角度有些弱点,但无论如何,这是HTTP的重大改进/2。
作者:阴影
链接:https://www.jianshu.com/p/b0b3c6df1a16