TLS协议概述:历史、版本演进与核心功能
说实话,每次技术分享让我讲TLS,我都会先问一个问题:
你现在用的是TLS 1.2还是TLS 1.3?
很多人会说“1.2吧,稳一点”,也有人会问“1.3有必要升吗?”
嗯,在解答这些问题之前,我们先得把TLS的“家底”摸清楚。
我刚开始接触TLS的时候,市面上主流还是SSL v3和TLS 1.0。
那时候大家对“加密通信”的理解,说白了就是“建一条没人能偷听的管道”。
但这么多年过去了,攻击手段在变,协议本身也在迭代。
我在一个老项目中,还见过有人在用SSL 2.0的配置,当时真是吓一跳——
1.1 TLS的诞生背景
你可能会问:TLS到底保护了什么?
它工作在传输层之上、应用层之下。
你的HTTP、FTP、SMTP……都跑在它上面。
它的核心职责就是三个:机密性、完整性、身份验证。
- 机密性:数据只有通信双方能看懂,中间人拿到的全是密文。
- 完整性:数据在传输中没被篡改,哪怕改了一个bit,接收方也能检测出来。
- 身份验证:你连接的服务端确实是它声称的那个,而不是冒牌货。
我经历过一次线上故障,因为证书链不完整,客户端反复握手失败。
那时候我才真正理解:验证不是“有没有证书”,而是“信任链有没有断”。
1.2 版本演进脉络
我们来看一下历史时间线。你想想看,一个协议从SSL 1.0提出到现在,走了快30年。
| 协议版本 | 发布时间 | 握手机制 | 最致命缺陷 | 当前状态 | 我的评价 |
|---|---|---|---|---|---|
| SSL 1.0 | 1994(未公开) | 未公开 | 从未发布 | 不存在 | 胎死腹中 |
| SSL 2.0 | 1995 | 2次往返 | 无法抵抗中间人攻击 | 已弃用 | 建议永别 |
| SSL 3.0 | 1996 | 2次往返 | POODLE攻击 | 已弃用 | 我曾经在审计中遇到过 |
| TLS 1.0 | 1999 | 2次往返 | BEAST攻击 | 已弃用 | 很多旧系统还在用 |
| TLS 1.1 | 2006 | 2次往返 | Lucky13攻击 | 已弃用 | 过渡版本,存在感低 |
| TLS 1.2 | 2008 | 2次往返 | 需要正确配置 | 广泛使用 | 目前为止的默认选择 |
| TLS 1.3 | 2018 | 1次往返(或0-RTT) | 几乎无已知漏洞 | 推荐使用 | 我强烈建议迁移 |
为什么要关注这些旧版本?
我经常在安全审计中看到这样的情况:服务端支持TLS 1.0甚至SSL 3.0,而且还在生产环境运行。
这就是俗话说的“挖坑给攻击者跳”。
1.3 TLS 1.3凭什么“出圈”
我个人习惯从握手过程入手去评估一个协议的好坏。
TLS 1.2的握手:
Client Hello → Server Hello → Certificate → Key Exchange → Finished
这一来一回,至少要两次网络往返(2-RTT)。
如果是首次连接,还得算上TCP三次握手——用户感知到的延迟就很明显了。
而TLS 1.3呢?
它把很多步骤压缩了。一次往返(1-RTT)就能完成握手。
而且它还有个“0-RTT”模式,对重连场景特别友好。
我在一个移动端项目里做过测试,切换到TLS 1.3后,首屏加载时间降低了30%。
用户体验的提升是实打实的。
1.4 核心功能对比:TLS 1.2 vs TLS 1.3
我整理了一份快速对比,你照着看就好——
| 功能项 | TLS 1.2 | TLS 1.3 |
|---|---|---|
| 握手往返次数 | 2-RTT | 1-RTT / 0-RTT |
| 支持的密码套件 | 37种 | 5种(仅AEAD) |
| 密钥交换 | RSA / DH / ECDH | 仅 (EC)DHE |
| 签名算法 | RSA / DSA / ECDSA | RSA / ECDSA / EdDSA |
| 会话恢复 | Session ID / Ticket | PSK + 0-RTT |
| 降级保护 | 无 | 内建降级保护 |
| 前向安全性 | 需主动配置 | 强制提供 |
你看,TLS 1.3把密码套件从37种砍到5种。
很多老的项目管理员会疑惑:删这么多,会不会不安全?
其实恰恰相反——那些被删掉的算法,很多都有已知的弱点。
这是“做减法”的设计哲学,我特别喜欢。
1.5 本章核心知识框架
我把本章的逻辑画成一张图。你看完就知道TLS的演进脉络了——
这张图很直观:从左到右是协议演进,TLS 1.3在握手效率、密码套件简化、安全性上都有明显改善。
我们的课程后面会逐章深挖这些改进是如何做到的。
好了,这一章我们就梳理到这里。
下个知识点会特别硬核——我会带你手撸一遍TLS 1.3的握手包,看一眼就知道它跟1.2的差异在哪里。
准备动手吧。