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)。

为什么会需要四次握手?因为双方需要在不安全的信道上安全地交换密钥材料。说白了,就是「你证明你知道密码,我证明我知道密码,然后我们一起算出一个只有我俩知道的密钥」。

WPA/WPA2 四次握手流程 STA(客户端) AP(认证者) ① ANonce(AP 随机数) ② SNonce + MIC(客户端随机数 + 完整性校验) ③ GTK + MIC(组密钥 + 完整性校验) ④ ACK(确认) 密钥生成过程 PTK = PRF(PMK, ANonce || SNonce || MAC_AP || MAC_STA) GTK 由 AP 随机生成,通过消息 3 加密传递给 STA

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. 消息 1(AP → STA):AP 发送 ANonce(AP 随机数)。STA 收到后,结合 PMK 和 SNonce(自己生成的随机数),计算出 PTK。
  2. 消息 2(STA → AP):STA 发送 SNonce 和 MIC(用 PTK 的前 128 位计算)。AP 收到后,用同样的方式计算 PTK,验证 MIC 是否正确。如果正确,说明 STA 知道 PMK。
  3. 消息 3(AP → STA):AP 发送 GTK(组临时密钥)和 MIC。GTK 用于广播/组播数据的加密。STA 验证 MIC 后,安装 PTK 和 GTK。
  4. 消息 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 问题?