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

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


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

版本 发布年份 地位与现状 核心改进 / 变化
SSL 1.0/2.0 1994/95 已废弃 初始尝试,存在严重设计缺陷(如中间人攻击)。
SSL 3.0 1996 已废弃 互联网安全的基础。后因 POODLE 漏洞被彻底停用。
TLS 1.0 1999 已废弃 SSL 3.1 的升级版,标准化的开始。
TLS 1.1 2006 逐渐退出 增强了防御 CBC 模式攻击的能力(引入显式 IV)。
TLS 1.2 2008 当今主流 里程碑版本。 引入 SHA-256,支持 AEAD 模式,是目前应用最广的版本。
TLS 1.3 2018 未来标准 大刀阔斧的改革。 砍掉废旧算法,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

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

更多推荐