SSL/TLS 的演进
砍掉 RSA 密钥交换:强制使用 ECDHE,保证每一条流量都具备前向安全。砍掉所有非 AEAD 算法:不再支持分步的 MAC 计算,只有 AES-GCM 等高效 AEAD。砍掉握手往返:从 2-RTT 压缩到 1-RTT,甚至 0-RTT(重连)。最经典的模式,最能体现“公钥解密、私钥解密”和“分层校验”的教科书逻辑。而现代工业界(TLS 1.3)为了性能和安全,已经把这些逻辑封装或合并了。
在学习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 像一个“洁癖者”,把不干净的、慢的全部砍掉了:
-
砍掉 RSA 密钥交换:强制使用 ECDHE,保证每一条流量都具备前向安全。
-
砍掉所有非 AEAD 算法:不再支持分步的 MAC 计算,只有 AES-GCM 等高效 AEAD。
-
砍掉握手往返:从 2-RTT 压缩到 1-RTT,甚至 0-RTT(重连)。
最经典的 TLS 1.2 RSA + CBC(MtE) 模式,最能体现“公钥解密、私钥解密”和“分层校验”的教科书逻辑。而现代工业界(TLS 1.3)为了性能和安全,已经把这些逻辑封装或合并了。
更多推荐
所有评论(0)