You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
DHE密钥协商方案则没有这个限制,虽然理论上客户端也需要先拿到服务器提供的域参数(比如前篇博文介绍DHE中的G、P两个参数,或者ECDHE中的椭圆曲线类型)才能计算出自己的密钥协商参数(比如DHE中的Gc mod P),但这并非必要条件。客户端可以像发送支持的加密套件列表那样,向服务器发送支持的域参数组合列表(比如椭圆曲线类型列表)及其对应的密钥协商参数,服务器只需要从列表中选择一组确定为双方使用的域参数即可,这样就可以在第一个网络往返中协商共享密钥了。
Web技术(四):TLS 握手过程与性能优化(TLS 1.2与TLS 1.3对比)_流云IoT的博客-CSDN博客_tls1.2握手过程
一 TLS发展历史:
SSL(Secure Socket Layer) / TLS(Transport Layer Security) 是独立于 HTTP 的协议,所以不光是 HTTP 协议,其他运行在应用层的 SMTP 和 Telnet 等协议均可配合 SSL / TLS 协议使用,可以说 SSL / TLS 是当今世界上应用最为广泛的网络安全技术。
Netscape 开发了原始的 SSL 协议:
TLS的发展历程:
二 TLS1.2 和 TLS1.3的主要差别:
三 TLS1.2 和 TLS1.3的握手流程:
TLS1.2 的握手流程:
TLS 1.2 完整的握手过程(从发送第一个握手报文到发送第一个用户数据报文)需要在客户端与服务器之间完成两次往返通信,也即 2-RTT(Round Trip Time)
TLS 1.2 会快速恢复的过程
TLS 1.2 会话恢复的简短握手过程从发送第一个报文ClientHello到发送应用数据,只需要一次网络往返 1-RTT
利用session-id恢复的缺点:
为了解决使用Session ID的问题,又引入了Session Ticket 作为新的会话恢复方案。
TLS1.3 的握手流程:
LS 1.3 废弃了RSA密钥交换方案(因为RSA不具有前向保密性),仅支持(EC)DHE密钥协商方案;
TLS 1.3 可以在第一个网络往返中完成共享密钥协商和身份认证,在完成共享密钥协商和身份认证后可以直接切换到应用数据协议,所以TLS 1.3 完整握手过程只需要一个网络往返(1-RTT)。
TLS 1.3 完整握手过程图示如下:
从TLS 1.3 的握手过程可以看出;
Halfrost-Field/TLS_1.3_Handshake_Protocol.md at master · halfrost/Halfrost-Field · GitHub
TLS 1.3握手报文ClientHello与ServeHello在进行密钥协商时并没有进行数字签名,通信双方的身份认证主要靠后续的Certificate与CertificateVerify报文保证,因为CertificateVerify报文是对之前的握手消息(自然包括密钥协商消息)进行签名,身份认证放到后面也不会影响整个握手过程的安全性。把客户端与服务器之间完整握手过程中每个握手报文的作用及传递的主要参数字段展开,如下图所示:
TLS 1.3 会话恢复 0-RTT 的简短握手
TLS 1.3 采用了新的会话缓存恢复方案 — PSK (pre_shared_key)握手,该方案相当于TLS 1.2 Session Ticket 会话恢复方案的升级版。
TLS 1.3 完整握手过程ClientHello报文中出现的两个扩展字段psk_key_exchange_modes和pre_shared_key,PSK会话缓存恢复方案正需要借助这两个字段:
TLS 1.3 完成完整握手过程后,服务器也会生成一个 New Session Ticket 并发送给客户端保存。New Session Ticket 中包含恢复共享密钥、有效期、随机数nonce等信息,可以使用New Session Ticket 中的信息生成预共享密钥PSK,过程大概如下:
从上图TLS 1.3 会话恢复简短握手过程可以看出,发送首个报文ClientHello时就可以通过early_data 发送应用数据,因此从发送首个报文到发送应用数据之间并没有经过网络往返,也即0-RTT。因为发送early_data 不依赖ServerHello消息,安全性自然更弱一些,如果攻击者捕获发送到服务器的 0-RTT 数据包,他们可以重播该数据包,并且服务器可能会接受该数据包为有效数据包,甚至借此改变服务器上的重要资源状态,这就是 0-RTT 重放攻击:
为了应对 0-RTT 攻击,一般会限制 0-RTT 会话恢复的使用范围,比如在 0-RTT 中发送不改变服务器资源状态的HTTP GET报文等。TLS 1.3 会话恢复简短握手过程完成后,用于加密应用数据的密钥是双方再计算出来的密钥,包含了双方随机数或握手报文散列值信息,保证每次会话尽可能使用一次性密钥,同时也具备前向保密性。
The text was updated successfully, but these errors were encountered: