文档简介:本文档深度拆解了 TLS 1.3 在底层协议设计上相较于 TLS 1.2 的提速机制。TLS 1.3 的提速核心不仅在于“优化”,更在于“做减法”——通过精简握手流程和剔除低效算法,将网络延迟降至物理极限。
一、 核心概念:什么是 RTT?
在理解提速原理前,必须先理解 RTT (Round Trip Time,往返时延):
- 定义:一个数据包从客户端发出,到达服务器,再将服务器的响应返回客户端所经历的总时间。
- 影响:RTT 往往受限于物理距离。如果客户端在北京,服务器在美国,1 个 RTT 大约是 200 毫秒。握手所需的 RTT 越多,用户看到网页首屏的等待时间就越长。
二、 提速核心 1:握手流程减半(2-RTT ➔ 1-RTT)
TLS 1.2 采用的是“先互相了解,再交换密钥”的两步走策略;而 TLS 1.3 采用了“直接猜你喜欢,带着密钥去打招呼”的一步到位策略。
1. TLS 1.2 握手流程(需要 2 个 RTT)
在 TLS 1.2 中,建立安全连接需要反复沟通 2 次才能开始发送真实的 HTTP 数据。
【 TLS 1.2 握手全过程 】
[ 客户端 ] [ 服务端 ]
| |
| --- 1. Client Hello (我支持哪些算法) --------------->|
| |
|<--- 2. Server Hello (我选定算法,附带证书) ----------|
| (此时完成 1-RTT) |
| |
| --- 3. Key Exchange (发送我生成的随机数/公钥) ------>|
| |
|<--- 4. Finished (密钥生成完毕,握手完成) ------------|
| (此时完成 2-RTT) |
| |
| === 5. 开始发送真实的加密 HTTP 数据 (GET /) ========>|
2. TLS 1.3 握手流程(仅需 1 个 RTT)
TLS 1.3 极其聪明地利用了现代密码学算法高度统一的特点。客户端在第一次打招呼时,就顺便把密钥材料一起发了过去。
【 TLS 1.3 握手全过程 】
[ 客户端 ] [ 服务端 ]
| |
| --- 1. Client Hello (我支持啥算法 + 我算好的公钥) --->|
| |
|<--- 2. Server Hello (选定算法 + 证书 + 握手完成) ----|
| (此时完成 1-RTT) |
| |
| === 3. 开始发送真实的加密 HTTP 数据 (GET /) ========>|
💡 提速本质:TLS 1.3 将“协商加密算法”和“交换密钥”这两个步骤合并了。这就好比去饭店,TLS 1.2 是先要菜单再点菜;TLS 1.3 是进门直接大喊“给我来份招牌菜(主流算法公钥)”,极大节省了沟通成本。
三、 提速核心 2:老用户免检通道(支持 0-RTT)
对于第一次访问网站的用户,TLS 1.3 将延迟从 2-RTT 降到了 1-RTT。 对于曾经访问过该网站的老用户,TLS 1.3 甚至可以做到 0-RTT(零往返)。
- 工作原理:当客户端第一次与服务器完成 TLS 1.3 握手后,服务器会给客户端下发一个类似“月票”的凭证(PSK, Pre-Shared Key)。
- 0-RTT 极速连接:当客户端短时间内再次访问时,在发送第一个数据包(Client Hello)的同时,直接将 HTTP 请求(如请求图片的 GET 命令)用 PSK 加密后一起塞进数据包里发过去。
- 效果:服务器收到第一个数据包后,直接解密并返回图片。握手时间彻底清零,达到了物理极限!
⚠️ 安全提示:0-RTT 存在重放攻击(Replay Attack)风险。因此,业界最佳实践是:仅允许对服务器数据没有修改作用的
GET请求使用 0-RTT,而POST请求(如支付、登录)依然退回 1-RTT 保证安全。
四、 提速核心 3:算法“断舍离”(剔除慢速加密套件)
TLS 1.2 诞生于 2008 年,背负了沉重的历史包袱,支持海量又慢又旧的加密算法。TLS 1.3 进行了一场彻底的“大扫除”:
1. 废弃 RSA 密钥协商,强制使用 ECDHE
- TLS 1.2 的痛点:经常使用 RSA 算法进行密钥协商,该算法涉及极其复杂的超大素数运算,非常消耗服务器与手机的 CPU 算力,导致解密极慢。
- TLS 1.3 的优化:强制废弃 RSA 密钥协商,全面采用 ECDHE(椭圆曲线 Diffie-Hellman)。椭圆曲线算法计算量小、速度极快,是实现 1-RTT 的数学基础。
2. 引入对移动端极度友好的 ChaCha20
- TLS 1.2 的痛点:高度依赖 AES 加密。对于没有内置 AES 硬件加速芯片的老旧或低端安卓手机,纯靠软件算力解密非常卡顿。
- TLS 1.3 的优化:引入了
ChaCha20-Poly1305流密码算法。该算法在纯软件环境下的计算速度比 AES 快 3 倍以上,让移动端 App 的网络响应如丝般顺滑。
五、 总结与对比速查表 (Cheatsheet)
| 对比维度 | TLS 1.2 | TLS 1.3 | 性能收益 |
|---|---|---|---|
| 首次握手时间 | 2-RTT | 1-RTT | 延迟降低 50%,首屏加载明显变快 |
| 恢复连接 (老用户) | 1-RTT | 0-RTT (Early Data) | 会话恢复瞬间完成,达到物理极限 |
| 密钥协商机制 | 繁杂 (RSA / DH 等) | 极简 (强制 ECDHE) | 降低 CPU 计算耗时,提高并发量 |
| 加密算法集合 | 庞大且包含不安全算法 | 仅 5 种现代 AEAD 算法 | 没有烂算法拖后腿,整体平均速度提升 |
| 移动端友好度 | 一般 | 极高 (支持 ChaCha20) | 弱算力设备(低端手机/IoT)不再卡顿 |
留言