TLS 1.3 相比 TLS 1.2 的改进
TLS 1.3 在握手效率、安全性和密码套件方面的主要改进
问题
TLS 1.3 相比 TLS 1.2 做了哪些改进?
解答
1. 握手效率提升
TLS 1.2 握手流程(2-RTT):
Client Server
| |
| -------- ClientHello ---------> |
| <------- ServerHello ---------- |
| <------- Certificate ---------- |
| <------- ServerKeyExchange ---- |
| <------- ServerHelloDone ------ | RTT 1
| |
| -------- ClientKeyExchange ---> |
| -------- ChangeCipherSpec ----> |
| -------- Finished ------------> |
| <------- ChangeCipherSpec ----- |
| <------- Finished ------------- | RTT 2
| |
| ========= 加密通信 ============= |
TLS 1.3 握手流程(1-RTT):
Client Server
| |
| -------- ClientHello ---------> |
| + key_share |
| + supported_versions |
| |
| <------- ServerHello ---------- |
| + key_share |
| <------- {EncryptedExtensions} - |
| <------- {Certificate} --------- |
| <------- {CertificateVerify} --- |
| <------- {Finished} ----------- | RTT 1
| |
| -------- {Finished} ----------> |
| |
| ========= 加密通信 ============= |
TLS 1.3 还支持 0-RTT 恢复,客户端可以在首次握手时就发送加密数据。
2. 移除不安全的加密算法
| 移除的算法 | 原因 |
|---|---|
| RSA 密钥交换 | 不支持前向安全 |
| CBC 模式 | 易受 BEAST、Lucky13 攻击 |
| RC4 | 已被破解 |
| SHA-1 | 碰撞攻击 |
| MD5 | 已被破解 |
| DES/3DES | 密钥长度不足 |
| 静态 DH | 不支持前向安全 |
3. 密码套件大幅简化
TLS 1.2 密码套件示例(几十种):
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
...
TLS 1.3 密码套件(仅 5 种):
TLS_AES_128_GCM_SHA256
TLS_AES_256_GCM_SHA384
TLS_CHACHA20_POLY1305_SHA256
TLS_AES_128_CCM_SHA256
TLS_AES_128_CCM_8_SHA256
密钥交换算法从密码套件中分离,单独协商。
4. 强制前向安全
TLS 1.3 只支持 ECDHE 和 DHE 密钥交换,确保即使服务器私钥泄露,历史通信也无法被解密。
// TLS 1.2:RSA 密钥交换(无前向安全)
// 私钥泄露 → 所有历史流量可解密
// TLS 1.3:仅 (EC)DHE(前向安全)
// 私钥泄露 → 历史流量仍然安全
5. 握手消息加密
TLS 1.2:
ClientHello → 明文
ServerHello → 明文
Certificate → 明文 ← 证书信息暴露
Finished → 加密
TLS 1.3:
ClientHello → 明文
ServerHello → 明文
Certificate → 加密 ← 证书信息保护
Finished → 加密
ServerHello 之后的所有消息都被加密,防止中间人窥探证书等敏感信息。
关键点
- 握手从 2-RTT 降到 1-RTT,支持 0-RTT 恢复,连接建立更快
- 移除 RSA 密钥交换,强制使用 ECDHE/DHE,保证前向安全
- 密码套件从几十种精简到 5 种,只保留 AEAD 加密模式
- 握手消息加密,ServerHello 后的内容对中间人不可见
- 移除不安全算法:RC4、CBC、SHA-1、MD5、3DES 等全部废弃
目录