1. TLS协议概述与演进(1.0/1.1/1.2/1.3)
各位好,我们直接进入正题。TLS,全称是传输层安全协议。说白了,它就是给网络通信加了一把锁。
在开始讲TLS 1.2下线之前,我们得先搞清楚:TLS这兄弟几个,到底有什么区别?为什么1.2必须下线?1.3又强在哪?
我个人习惯把TLS的演进史分为四个阶段。每个版本都解决了一些老问题,也带来了新麻烦。今天我们就把这四兄弟挨个盘一遍。
1.1 从SSL到TLS:标准的诞生
先说点历史背景。TLS的前身是SSL,网景公司搞出来的。SSL 3.0在1996年发布,后来IETF(互联网工程任务组)把它标准化成了TLS 1.0(1999年)。
有意思的是:TLS 1.0其实只比SSL 3.0改了一点点,所以很多时候他们还能互通。但安全这东西,差一点就是天壤之别。
原因很简单:他们用的加密算法太老了,比如RC4、CBC模式加密,现在破解起来跟玩一样。
1.2 TLS 1.0:问题最多的老大哥
- 发布时间:1999年(RFC 2246)
- 核心问题:支持CBC模式加密,存在BEAST攻击(2011年曝光)
- 密码套件:依赖RC4、3DES、IDEA等老算法
- 当前状态:主流浏览器和OS已默认禁用
我早期做安全审计时,遇到过不少遗留系统还在跑TLS 1.0。你想想看,一个1999年的协议,面对2024年的攻击者,基本就是裸奔。我建议手里还有老系统的朋友,尽快把1.0和1.1都禁掉。
1.3 TLS 1.1:过渡的尴尬品
- 发布时间:2006年(RFC 4346)
- 主要改进:引入隐式IV,防御CBC攻击
- 致命弱点:还是没有AEAD加密支持
- 当前状态:也已禁止使用
TLS 1.1在我眼里就是个“过渡品”。它修了一些洞,但没解决根本问题。到2018年,PCI DSS(支付卡行业数据安全标准)明确要求禁用1.0和1.1,基本判了它俩死刑。
1.4 TLS 1.2:我们的主角
终于轮到我们今天的主角了。TLS 1.2发布在2008年(RFC 5246),这是个分水岭。
- 关键改进:引入SHA256作为默认哈希算法
- 新增功能:支持AEAD(认证加密)模式,如AES-GCM
- 灵活性:密码套件大幅扩展,支持ECDHE密钥交换
- 当前状态:仍在使用,但安全基线已要求禁用弱套件
我个人认为,TLS 1.2是目前为止最成功的TLS版本——它撑了将近15年。但问题是,大家只用了它的“基础版”。很多服务器还在跑一些有问题的密码套件,比如用RSA密钥交换(无前向安全)、用CBC模式加密(有padding oracle攻击风险)。
✅ 关闭所有非AEAD的加密模式(如CBC)
✅ 关闭不使用ECDHE/DHE的密钥交换(如RSA、DH)
这样配置的1.2,才有资格叫“安全”。
1.5 TLS 1.3:新一代的王者
- 发布时间:2018年(RFC 8446)
- 革命性改变:握手从2-RTT缩短到1-RTT(甚至0-RTT)
- 强制性安全:所有密码套件必须支持前向安全
- 废弃的垃圾:直接砍掉了几十个有问题的密码套件
TLS 1.3最大的优点就是“干净”。它不允许你选择弱算法,只能用AEAD加密(AES-GCM或ChaCha20-Poly1305)。这带来的好处是——配置简单了,不容易出错。我建议新项目直接上1.3,不用犹豫。
1.6 核心演进对比表
| 版本 | 发布年份 | 加密强度 | AEAD支持 | 前向安全 | 握手延迟 | 当前状态 |
|---|---|---|---|---|---|---|
| SSL 3.0 | 1996 | 极低 | 否 | 否 | 2-RTT | 已禁止 |
| TLS 1.0 | 1999 | 低 | 否 | 否 | 2-RTT | 已禁止 |
| TLS 1.1 | 2006 | 中低 | 否 | 否 | 2-RTT | 已禁止 |
| TLS 1.2 | 2008 | 高(配置得当) | 是(可选) | 是(可选) | 2-RTT | 主力(即将下线) |
| TLS 1.3 | 2018 | 极高(强制) | 是(强制) | 是(强制) | 1-RTT / 0-RTT | 推荐使用 |
1.7 为什么必须下线TLS 1.2?
讲到这里,可能有人会问:“TLS 1.2不是还安全吗?为什么非得下?”
一句话回答:不是TLS 1.2本身有问题,而是它下面留了太多“后门”。
- 弱套件泛滥:很多系统还在用RC4、CBC、3DES这些已经破解的算法
- 缺乏强制前向安全:如果服务器私钥泄露,之前记录的所有加密通信都会被破解
- 握手延迟高:2-RTT在大规模服务中会显著增加延迟
- 攻击面大:支持的密码套件太多,每种都可能存在实现漏洞
我曾经帮一家金融公司做安全加固,发现他们虽然只开放了TLS 1.2,但密码套件列表里还躺着TLS_RSA_WITH_AES_128_CBC_SHA。这就是个定时炸弹。CBC模式在1.2里仍然可用,攻击者可以利用Padding Oracle攻击一步步把你的Cookie解密出来。
在安全领域,可用不等于安全,安全不等于最佳。主动下旧版,才能防患于未然。
1.8 我们的课程定位
这门课,就是要手把手教你把TLS 1.2安全地下线,同时平滑过渡到1.3。注意,是“安全下线”,不是粗暴关闭。我们还要保证老客户端(比如某些老旧手机、嵌入式设备)在不支持1.3的情况下,还能用1.2继续跑。这就是“双协议共存”要解决的问题。