家里换了路由器之后忘了 WiFi 密码,或者公司前任网管离职了没交接 WiFi 密码——这些场景比想象中更常见。这篇文章从技术角度讲解 WiFi 密码的加密原理和恢复方案,同时也会谈谈 WPA3 带来的安全改进。
WiFi 加密协议演进
WiFi 安全协议时间线:
WEP (1997) → 已被完全破解,几分钟即可恢复密钥
WPA (2003) → TKIP 加密,存在已知漏洞
WPA2 (2004) → AES-CCMP,目前主流,安全性较高
WPA3 (2018) → SAE 握手,抗离线字典攻击
WPA2 的认证机制:四次握手
WPA2 使用「四次握手」(4-Way Handshake)来验证客户端和路由器是否知道相同的密码:
WPA2 四次握手流程:
路由器 (AP) 客户端 (Client)
│ │
│ ── 1. ANonce (随机数) ──────────→ │
│ │
│ ←── 2. SNonce + MIC ───────────── │
│ (客户端的随机数 + 消息完整性校验) │
│ │
│ ── 3. GTK + MIC ────────────────→ │
│ (组密钥 + 确认) │
│ │
│ ←── 4. 确认 ───────────────────── │
│ │
关键点:
- 密码本身不在网络上传输
- 握手过程使用密码派生的 PMK (Pairwise Master Key) 来生成加密密钥
- PMK = PBKDF2(密码, SSID, 4096, 256)
- 攻击者可以捕获握手包,然后离线尝试猜测密码
为什么 WPA2 可以被离线恢复?
WPA2 的安全模型:
PMK = PBKDF2(HMAC-SHA1, 密码, SSID, 4096, 256位)
↑ ↑ ↑
密码学哈希函数 WiFi名 迭代次数
PMK 是固定的(同一个密码 + 同一个 SSID = 同一个 PMK)
四次握手中的 Nonce 是随机的
攻击者的思路:
1. 捕获一次完整的四次握手包
2. 离线计算:对每个候选密码,计算 PMK,然后验证是否能生成正确的 MIC
3. 如果 MIC 匹配 → 密码正确
这就是为什么只需要捕获一次握手包,就可以无限次地离线尝试密码
第一步:捕获握手包
要恢复 WiFi 密码,首先需要捕获一次完整的四次握手。