在学习SSL和TLS握手过程中,书上(计算机网络:自顶向下的方法)和博客文章,总会有一些出入和矛盾点,让我摸不着头脑,所以我通过 AI 对 SSL 和 TLS 各个版本握手模式进行了总结,希望帮到大家

SSL/TLS 的演进史本质上是一部“安全性”与“性能”不断博弈的进化史。为了方便记忆和面试,我将其总结为版本演进、密钥交换演进和加密模式演进三个维度。


1. 协议版本演进:从诞生到“大繁至简”

版本发布年份地位与现状核心改进 / 变化
SSL 1.0/2.01994/95已废弃初始尝试,存在严重设计缺陷(如中间人攻击)。
SSL 3.01996已废弃互联网安全的基础。后因 POODLE 漏洞被彻底停用。
TLS 1.01999已废弃SSL 3.1 的升级版,标准化的开始。
TLS 1.12006逐渐退出增强了防御 CBC 模式攻击的能力(引入显式 IV)。
TLS 1.22008当今主流里程碑版本。 引入 SHA-256,支持 AEAD 模式,是目前应用最广的版本。
TLS 1.32018未来标准大刀阔斧的改革。 砍掉废旧算法,1-RTT 握手,强制前向安全,安全性与速度质变。

2. 密钥交换模式演进:从“传输”到“协商”

这是决定“对称密钥如何产生”的关键:

  • RSA 时代(TLS 1.2 以前的主流):

    • 机制: 客户端生成密钥,用服务器公钥加密发送。

    • 槽点: 不支持前向安全 (Forward Secrecy)。一旦服务器私钥泄露,历史记录全部玩完。

  • DH / DHE 时代(过渡期):

    • 机制: 双方交换参数计算密钥,不传输密钥本身。

    • 槽点: 纯 DH 计算量巨大,导致服务器 CPU 负载极高。

  • ECDHE 时代(TLS 1.2 主流 & TLS 1.3 唯一):

    • 机制: 椭圆曲线版的 DH。

    • 优势: 前向安全 + 性能极佳。它是目前 HTTPS 的标配方案。


3. 加密与完整性模式演进:从“分两步”到“合一”

这是你之前看书(MtE)和学到 AEAD 产生矛盾的地方:

阶段一:MtE (MAC-then-Encrypt) —— 《自顶向下》教材版

  • 逻辑: 1. 算 MAC;2. 填充 Padding;3. 加密。

  • 痛点: 容易受到 Padding Oracle 攻击。接收方必须解密后才能验证 MAC,给了黑客通过报错时间差猜测明文的机会。

阶段二:EtM (Encrypt-then-MAC) —— 修补版

  • 逻辑: 1. 加密;2. 对密文算 MAC。

  • 改进: 接收方先看 MAC,不对直接丢弃,不给黑客解密报错的机会。

阶段三:AEAD (认证加密) —— 现代版

  • 代表: AES-GCM, ChaCha20-Poly1305。

  • 逻辑: 加密的同时计算认证标签(Tag)。

  • 改进: 彻底抛弃独立的 MAC 密钥。不仅更安全,且硬件加速效率极高,不再需要复杂的“切四片密钥”逻辑。


4. 总结:现在的 TLS 1.3 剩下了什么?

为了彻底安全,TLS 1.3 像一个“洁癖者”,把不干净的、慢的全部砍掉了:

  1. 砍掉 RSA 密钥交换:强制使用 ECDHE,保证每一条流量都具备前向安全。

  2. 砍掉所有非 AEAD 算法:不再支持分步的 MAC 计算,只有 AES-GCM 等高效 AEAD。

  3. 砍掉握手往返:从 2-RTT 压缩到 1-RTT,甚至 0-RTT(重连)。

最经典的 TLS 1.2 RSA + CBC(MtE) 模式,最能体现“公钥解密、私钥解密”和“分层校验”的教科书逻辑。而现代工业界(TLS 1.3)为了性能和安全,已经把这些逻辑封装或合并了。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐