1. TLS 协议概述与历史

说到网络安全,TLS 协议是绕不开的一个话题。我个人习惯把它看作是互联网通信的“安全腰带”——有了它,你的数据在传输过程中不会被人偷看,也不会被人篡改。说白了,没有 TLS,你在网上购物、登录银行、发邮件,基本上就是裸奔。

这节课,咱们就从头梳理一下 TLS 的发展脉络。为什么要讲历史?你想想看,一个协议从诞生到现在经历了这么多版本迭代,每次升级背后其实都是血泪教训。我在做安全审计时,经常看到一些老系统还在用百年前的版本——嗯,相当于你家大门还在用纸糊的锁。

1.1 从 SSL 到 TLS:一个不得不说的故事

TLS 的前身是 SSL(Secure Sockets Layer),由网景公司开发。最早的 SSL 1.0 从未公开发布过,因为安全问题实在太严重。我记得有个老前辈跟我说过,当时内部测试直接就毙掉了。

版本 发布年份 关键变化 安全状态
SSL 1.0 1994(未公开) 内部原型,从未发布 高危漏洞
SSL 2.0 1995 首次公开发布,支持简单加密 已废弃,不安全
SSL 3.0 1996 引入 HMAC,修复大量漏洞 已废弃,存在 POODLE 攻击
TLS 1.0 1999 基于 SSL 3.0,改名为 TLS 已废弃,安全性不足
TLS 1.1 2006 防御 CBC 攻击,引入隐式 IV 已废弃,建议禁用
TLS 1.2 2008 支持 AEAD 加密,SHA-256 广泛使用,推荐
TLS 1.3 2018 简化握手,移除不安全算法 最新标准,强烈推荐
⚠️ 重要提醒: 截至今天,SSL 2.0、SSL 3.0、TLS 1.0、TLS 1.1 均已正式废弃。我在审计中碰到过不少系统还在跑 TLS 1.0 —— 那可真是安全隐患。如果你的服务器还在支持这些版本,请立即关闭。

1.2 TLS 协议到底在保护什么?

用一个场景来理解。你在咖啡店连上公共 WiFi,输入密码登录网银。如果没有 TLS,中间的任何人都可以看到你的密码、银行卡号。TLS 提供了三个核心保护:

  1. 加密(机密性):数据在传输过程中是密文,别人看不懂
  2. 完整性校验:数据有没有被篡改,一验就知道
  3. 身份认证:你确实在和真正的银行服务器对话

但是,这三个保护并不是万能的。中间人攻击(MITM)就是专门针对这些保护机制的绕过方式。我们这门课从头到尾都在聊这个——如何检测、如何审计。

我的经验: 有一次去某银行做渗透测试,发现他们的 TLS 配置虽然用了 TLS 1.2,但证书链校验没有做严格。这意味着如果有人伪造了一张证书,服务器可能会接受。细节咱们后面章节细聊。

1.3 TLS 协议栈结构

TLS 协议分为两层:上层是握手协议(Handshake Protocol),下层是记录协议(Record Protocol)。我画了个图,方便你理解这两层的关系:

TLS 协议栈分层结构 TLS 协议栈结构 上层:TLS 握手协议 Change Cipher Spec Alert 协议 Handshake 协议 Application Data 下层:TLS 记录协议 分段、压缩、加密、MAC 计算 底层传输层(TCP) 说明:握手协议协商加密参数,记录协议负责实际数据传输

你看这个分层结构,它其实挺像我们日常的邮件沟通:上层决定写什么内容,下层负责打包寄出去。握手协议协商好了密钥和算法,记录协议就拿着这些参数把数据塞进去、加密、扔给 TCP 发出去。

1.4 握手流程概览(以 TLS 1.2 为例)

握手流程是整个 TLS 协议里最影响性能和安全的部分。我来拆解一下全握手的过程:

  • ClientHello:客户端告诉服务器,我支持哪些 TLS 版本、密码套件、随机数
  • ServerHello:服务器从客户端提供的列表里挑一个版本和套件,发回自己的随机数
  • Certificate:服务器发送自己的证书链,让客户端验证身份
  • ServerKeyExchange:如果使用的密钥交换算法需要,服务器发额外参数
  • ClientKeyExchange:客户端生成预主密钥,用服务器的公钥加密后发过去
  • Change Cipher Spec:双方切换加密模式,此后所有消息都是加密的
  • Finished:发送握手消息的校验值,确认握手没有被篡改
💡 一个小技巧: 在做安全审计时,你可以通过抓包查看握手过程中的 ClientHello 和 ServerHello,快速判断服务器支持的密码套件版本。我曾经用 Wireshark 抓了一个客户的 HTTPS 流量,发现服务器竟然支持了 EXPORT 级别的弱加密——那不应该。

1.5 为什么安全审计要关注 TLS?

咱们这门课叫《TLS 中间人攻击审计检测案例》,你可能会想:我直接上 TLS 1.3 不就行了?

没那么简单。就算用了最新的协议,配置错误、证书管理不当、弱密码套件残留,都可能给攻击者留后门。我遇到过最典型的一个案例:某金融 APP 虽然用了 TLS 1.2,但证书固定(Certificate Pinning)没做好,攻击者挂个假证书就能把流量全部劫走。

另外,TLS 中间人攻击的检测方法因人而异。有人看证书,有人看延迟,有人抓包分析。咱们后面的章节会逐个拆解这些检测技术,从原理到实战。

🚨 审计核心点: 凡是你能检测到的 MITM,说明攻击手法比较初级。真正高水平的中间人攻击,往往能让 TLS “看起来安全”。这也是为什么我们需要系统学习审计技巧,而不是只靠某一个工具。