← 返回题目列表

TLS 1.2 和 TLS 1.3 有什么区别?

高频 中等 第 9 / 29 题 更新于 2026/07/28
TLSTLS1.3握手优化前向安全

简化版

TLS 1.3 相比 1.2 有三大改进:① 握手更快——从 2-RTT 减到 1-RTT,会话恢复可 0-RTT② 更安全——移除了 RSA 密钥交换和一堆不安全的老算法(RC4、MD5、SHA1、CBC 等),强制使用带前向安全性的 ECDHE;③ 更私密——加密了更多握手内容。总的方向就是「更快、更安全、更简洁」。

详细版

维度TLS 1.2TLS 1.3
握手往返2-RTT1-RTT(恢复 0-RTT)
密钥交换RSA 或 (EC)DHE只保留 (EC)DHE,移除 RSA 密钥交换
前向安全可选(用 ECDHE 才有)强制(必然有)
加密算法含不安全的老算法只保留 AEAD 套件,砍掉 RC4/CBC/MD5/SHA1 等
握手隐私部分明文加密更多握手消息
加密套件冗长、组合多精简、组合少

核心变化:TLS 1.3 把 TLS 1.2 里那套「用服务器公钥加密 Pre-master Secret」的 RSA 密钥交换彻底移除了,只用 ECDHE 协商密钥。这既简化了握手、又让前向安全成为默认

完整版教学

一、握手提速:2-RTT → 1-RTT

TLS 1.2 的完整握手需要两个往返(2-RTT):Client Hello / Server Hello + 证书要一个来回,密钥交换又要一个来回,之后才能发数据。在移动网络高延迟下,这个握手开销很明显。

TLS 1.3 把握手压缩到 1-RTT:客户端在第一个 Client Hello 里就顺带把密钥交换参数(ECDHE 公钥)发出去,服务器一个回合就能返回自己的参数并完成密钥协商。少一个往返,首次连接速度明显提升。

对于重连(会话恢复),TLS 1.3 还支持 0-RTT:客户端可以在第一个包里就带上加密的应用数据,几乎「零等待」。(0-RTT 有重放风险,只用于幂等请求。)

二、安全性:砍掉一堆「历史包袱」

TLS 1.2 支持很多算法组合,其中不少年久失修、已被证明不安全,但为兼容一直留着,反而成了攻击面(降级攻击可以逼你用弱算法)。TLS 1.3 做了大清理:

  • 移除:RSA 密钥交换、静态 DH、RC4、3DES、MD5、SHA1、CBC 模式、TLS 压缩、重协商等;
  • 只保留:安全的 AEAD 加密套件(如 AES-GCM、ChaCha20-Poly1305)和 ECDHE 密钥交换。

套件从 TLS 1.2 的一大堆精简到寥寥几个「都安全」的选择,从根上减少了「选到弱算法」的风险。

三、为什么移除 RSA 密钥交换——为了前向安全

这是最重要的一点。TLS 1.2 允许用 RSA 密钥交换:客户端用服务器公钥加密 Pre-master Secret。它的致命问题是没有前向安全性——如果服务器私钥将来泄露,攻击者用之前录下的流量就能解密 Pre-master Secret,进而解密所有历史通信

TLS 1.3 强制用 ECDHE:每次会话用临时的密钥对协商共享密钥,用完即弃,服务器私钥只用于签名认证、不参与加密密钥的生成。这样即使私钥日后泄露,也解不了过去的会话——这就是前向安全性(详见「前向安全性」那道题)。TLS 1.3 让它成为默认,是安全性的一大跃升。

四、握手隐私增强

TLS 1.2 握手中,证书等信息是明文传输的,中间人能看到你在访问哪个网站的证书。TLS 1.3 在密钥协商后尽早开始加密,把证书等更多握手消息也加密了,减少了元数据泄露,隐私性更好。

五、常见误区

  • ❌ 以为 TLS 1.3 只是「更快一点」——它还移除了不安全算法、强制前向安全,是安全性的重大升级。
  • ❌ 以为 TLS 1.3 仍有 RSA 密钥交换——已移除,只用 ECDHE(RSA 只可能用于证书签名)。
  • ❌ 以为 0-RTT 完全没风险——0-RTT 数据有重放风险,只应用于幂等操作。
  • ❌ 把「SSL」和 TLS 版本混谈——SSL 已全部废弃,现在用的都是 TLS,主流是 1.2 和 1.3。

六、常见误区与追问

考点正确口径
握手 RTTTLS 1.2 通常 2-RTT,TLS 1.3 通常 1-RTT
算法TLS 1.3 移除 RSA 密钥交换等旧算法
安全性TLS 1.3 默认前向安全,更多握手内容加密
TLS 1.2: ClientHello -> ServerHello ... -> Finished
TLS 1.3: ClientHello(with key share) -> ServerHello -> Finished

TLS 1.3 的方向是更快、更少历史包袱、默认更安全。

  • 误区:TLS 1.3 只是版本号升级。 它重构了握手流程,删除大量旧算法,并默认要求前向安全。
  • 误区:TLS 1.3 还支持 RSA 密钥交换。 TLS 1.3 移除了静态 RSA 密钥交换,RSA 只可能用于签名认证。
  • 误区:0-RTT 一定安全无副作用。 0-RTT 存在重放风险,只适合幂等请求或额外防重放设计。
  • 追问:TLS 1.3 为什么更快? 客户端首包就带 key share,减少往返,通常 1-RTT 完成握手。
  • 追问:前向安全为什么重要? 长期私钥泄露后,攻击者不能解密过去抓到的会话流量。
  • 追问:TLS 1.2 还能用吗? 安全配置得当仍可使用,但应禁用旧协议和弱密码套件,优先 TLS 1.3。

七、加强记忆

TLS 1.3 相比 1.2:握手更快(2-RTT → 1-RTT,恢复 0-RTT)、更安全(移除 RSA 密钥交换和 RC4/MD5/SHA1/CBC 等弱算法,只留 AEAD + ECDHE)、更私密(加密更多握手内容)。最关键的是强制 ECDHE 让前向安全成为默认——服务器私钥将来泄露也解不了历史流量。