握手
TLS 1.3 支持三种密钥交换方式:
(EC)DHE
PSK-only
PSK with (EC)DHE
基于 DHE 的握手方式如下:
若 ClientHello 中提供的信息不充分,则 Server 可以发送 Hello Retry Request
要求 Client 重传 ClientHello。
PSK 模式
PSK(Pre-Shared Key, 预共享密钥) 模式允许在 0-RTT 的时间内进行握手协商。PSK 有两种形式,第一种是静态共享密钥,第二种是在先前的回话中创建 PSK,然后用于建立新的连接:
Figure 1. 在会话中创建 PSK
可以看到,第二次握手依然经历了完整的 Hello 流程,然而 PSK 模式下允许客户端通过 psk 验证身份,因此允许在 ClientHello 阶段就发送数据,这种数据被称为 early_data。[2]
双向认证
双向认证流程如下:
在 TLS 1.3 中,证书内容是通过密钥进行加密的,主要是防止明文传输的证书导致客户端身份泄露。