家里换了路由器之后忘了 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 密码,首先需要捕获一次完整的四次握手。