3. WPA/WPA2协议:TKIP与CCMP、4次握手过程、PSK与802.1X模式
WPA/WPA2 协议,说白了就是 Wi-Fi 的「门禁系统」。WEP 被破解后,IEEE 802.11i 工作组紧急推出了 WPA 作为过渡方案,后来才有了完整的 WPA2。我最早接触 WPA2 是在 2006 年做企业无线覆盖项目时,那时候很多设备还不支持 CCMP,只能跑 TKIP,性能差得让人头疼。
这一章我们重点拆解三个核心模块:加密协议(TKIP vs CCMP)、四次握手流程、以及认证模式(PSK vs 802.1X)。
3.1 TKIP 与 CCMP:加密协议的「老将」与「主力」
WPA 定义了两种加密协议:TKIP 和 CCMP。前者是 WEP 的「打补丁」方案,后者是真正的 AES 加密。
| 特性 | TKIP | CCMP |
|---|---|---|
| 加密算法 | RC4 + 混合密钥 | AES-CCM |
| 密钥长度 | 128 位 | 128 位 |
| 完整性校验 | Michael MIC | CBC-MAC |
| 抗重放攻击 | IV 序列 + 重放计数器 | PN 包序号 |
| 性能开销 | 较低(软件实现) | 较高(硬件加速) |
| 安全性 | 已淘汰(有已知攻击) | 目前安全 |
关键结论:TKIP 是 WPA 的强制要求,CCMP 是 WPA2 的强制要求。WPA2 可以兼容 TKIP,但我不建议你这么做——兼容模式会降低整体安全性。
3.1.1 TKIP:WEP 的「急救包」
TKIP 的设计目标很明确:在现有 WEP 硬件上通过固件升级实现安全增强。它保留了 RC4 算法,但做了三件事:
- 密钥混合:将临时密钥与发送方 MAC 地址、IV 混合,生成每包不同的加密密钥。
- Michael MIC:一个简单的完整性校验算法,防止数据包被篡改。
- 重放保护:使用 IV 序列和重放计数器,拒绝旧包重放。
嗯,这里要注意——Michael MIC 有个致命弱点:攻击者如果连续两次伪造 MIC 失败,AP 会断开所有关联的客户端,持续 60 秒。这就是所谓的「MIC 错误攻击」。我在某酒店项目里遇到过,攻击者利用这个漏洞导致整个楼层无线瘫痪,最后只能强制升级到 CCMP。
3.1.2 CCMP:真正的 AES 加密
CCMP 基于 AES-CCM 模式,同时提供加密和完整性校验。它使用 128 位 AES 密钥,每个数据包都有一个唯一的 PN 包序号(48 位),几乎不可能被重放攻击。
我个人习惯在部署 WPA2 时,只启用 CCMP,关闭 TKIP 兼容模式。你想想看,既然硬件都支持 AES 了,为什么还要保留一个「后门」呢?
实战建议:在企业级 AP 上,配置 WPA2-AES(即 CCMP)时,记得检查客户端兼容性。2010 年以后的设备基本都支持 CCMP。如果遇到老设备,单独开一个 SSID 跑 TKIP,不要混用。
3.2 四次握手过程:密钥协商的「灵魂」
四次握手是 WPA/WPA2 的核心机制。它发生在客户端(STA)和 AP 之间,目的是生成用于加密数据的临时密钥(PTK)。
为什么会需要四次握手?因为双方需要在不安全的信道上安全地交换密钥材料。说白了,就是「你证明你知道密码,我证明我知道密码,然后我们一起算出一个只有我俩知道的密钥」。
3.2.1 握手前的准备:PMK 的由来
四次握手的前提是双方已经拥有一个共享的成对主密钥(PMK)。PMK 的来源取决于认证模式:
- PSK 模式:PMK = PBKDF2(Passphrase, SSID, SSID长度, 4096, 256)。说白了,就是密码经过 4096 次哈希迭代生成的 256 位密钥。
- 802.1X 模式:PMK 由认证服务器(RADIUS)通过 EAP 协商生成,然后下发给 AP。
3.2.2 四次握手详解
- 消息 1(AP → STA):AP 发送 ANonce(AP 随机数)。STA 收到后,结合 PMK 和 SNonce(自己生成的随机数),计算出 PTK。
- 消息 2(STA → AP):STA 发送 SNonce 和 MIC(用 PTK 的前 128 位计算)。AP 收到后,用同样的方式计算 PTK,验证 MIC 是否正确。如果正确,说明 STA 知道 PMK。
- 消息 3(AP → STA):AP 发送 GTK(组临时密钥)和 MIC。GTK 用于广播/组播数据的加密。STA 验证 MIC 后,安装 PTK 和 GTK。
- 消息 4(STA → AP):STA 发送确认 ACK。AP 收到后,安装 PTK 和 GTK。握手完成。
避坑指南:我曾经在部署 802.1X 时遇到一个问题——STA 一直卡在消息 2 之后,AP 不发送消息 3。排查后发现是 RADIUS 服务器返回的 PMK 超时了。记住,四次握手的超时时间默认是 100ms,如果 RADIUS 响应慢,客户端就会反复重试,导致连接失败。
3.3 PSK 与 802.1X 模式:家庭 vs 企业
WPA/WPA2 支持两种认证模式:PSK(预共享密钥)和 802.1X(企业级认证)。它们的核心区别在于密钥管理方式。
| 特性 | PSK 模式 | 802.1X 模式 |
|---|---|---|
| 密钥来源 | 预共享密码(8~63 字符) | RADIUS 服务器动态生成 |
| 用户管理 | 所有用户共享同一密码 | 每个用户独立凭证 |
| 密钥更新 | 手动更改密码 | 自动定期更新(GTK 更新) |
| 安全性 | 密码泄露后所有用户受影响 | 单个用户泄露不影响其他人 |
| 部署复杂度 | 低(适合家庭/小办公室) | 高(需要 RADIUS 服务器) |
| 典型场景 | 家庭 Wi-Fi、小型店铺 | 企业、学校、医院 |
3.3.1 PSK 模式:简单但脆弱
PSK 模式最大的问题在于:所有客户端共享同一个密码。如果有人知道了密码,他就能解密所有历史流量(前提是捕获了四次握手包)。这就是所谓的「离线字典攻击」——攻击者拿到握手包后,可以暴力破解密码。
我记得有一次做渗透测试,客户用的是 WPA2-PSK,密码是「password123」。我用 aircrack-ng 跑了不到 5 分钟就破解了。嗯,这种密码在字典里排前 100 位。
PSK 安全建议:
- 密码长度至少 12 位,包含大小写字母、数字和特殊字符。
- 避免使用常见单词、生日、公司名。
- 定期更换密码(建议每 3 个月一次)。
- 如果设备支持,启用 WPA3-SAE 替代 WPA2-PSK。
3.3.2 802.1X 模式:企业级的安全保障
802.1X 模式引入了 RADIUS 服务器,每个用户使用独立的凭证(用户名/密码、证书等)进行认证。认证通过后,RADIUS 服务器生成唯一的 PMK 下发给 AP,AP 再通过四次握手与客户端协商 PTK。
802.1X 的核心优势在于:
- 独立密钥:每个用户的 PMK 不同,即使一个用户的凭证泄露,也不会影响其他人。
- 动态密钥更新:AP 可以定期触发 GTK 更新,防止密钥被长期使用。
- 可审计性:RADIUS 服务器记录所有认证日志,方便追踪异常行为。
我在做某大型园区网项目时,部署了 802.1X + PEAP-MSCHAPv2 认证。初期遇到的最大问题是客户端配置复杂——用户需要手动安装证书、配置 EAP 方法。后来我们改用 EAP-TLS(证书认证),配合 MDM 自动下发配置,才解决了用户体验问题。
802.1X 部署要点:
- RADIUS 服务器建议使用 FreeRADIUS 或 Windows NPS。
- EAP 方法推荐 EAP-TLS(证书认证)或 PEAP-MSCHAPv2(密码认证)。
- AP 与 RADIUS 之间使用 RADIUS 共享密钥加密通信。
- 配置 RADIUS 超时时间(建议 5 秒),避免握手失败。
3.4 本章小结
WPA/WPA2 协议虽然已经服役多年,但理解它的核心机制对排查无线问题仍然至关重要。TKIP 已经淘汰,CCMP 是目前的主流;四次握手是密钥协商的基石,任何一步失败都会导致连接中断;PSK 适合简单场景,802.1X 才是企业级的安全选择。
你想想看,如果连四次握手的流程都不清楚,遇到「连接成功但无法上网」的问题时,你怎么定位是握手失败还是 DHCP 问题?