WPA/WPA2 安全协议

WPA(Wi-Fi Protected Access)

WPA 是 Wi-Fi Alliance 在 802.11i 标准完成之前推出的过渡性安全方案(2003年)。

TKIP(Temporal Key Integrity Protocol)

WPA 使用 TKIP 替代 WEP 的 RC4:

  • 每帧密钥混合:将传输密钥与发送方 MAC 地址和包计数器结合,生成唯一的每帧密钥

  • 消息完整性检查:MIC(Michael)算法,检测篡改

  • 重放攻击防护:每帧包含序列号,接收端丢弃旧序号的帧

TKIP 密钥派生:
Per-Packet Key = PRF+((TA || TxTLK || PacketNumber) mod 4096, "TKIP", 128)

加密:
Ciphertext = RC4(TKIP_Key) ⊕ Plaintext
MIC = Michael(Key_MIC, Plaintext)

TKIP 的局限

  • 仍基于 RC4:只是增加了密钥混合层,未解决 RC4 根本问题

  • 向后兼容 WEP 硬件:通过固件升级实现

  • 已被攻破:Klein(2008)和 Pyshkin(2008)攻击可恢复 TKIP 密钥

WPA2(Wi-Fi Protected Access II)

WPA2 基于完整的 IEEE 802.11i 标准(2004年),使用 AES-CCMP 替代 TKIP。

AES-CCMP(Counter Mode with CBC-MAC Protocol)

特性

CCMP

加密模式

AES-CTR(计数器模式)

完整性保护

AES-CBC-MAC(CMAC)

密钥长度

128-bit / 256-bit

安全关联

PTW(Pairwise Transient Key)+ GTK(Group Temporal Key)

CCMP 帧格式

┌──────────┬──────────────┬───────────┬──────────┐
│ PN (8B)  │ Ciphertext   │ MIC (4/8B)│ Header   │
│          │              │           │ (明文)   │
└──────────┴──────────────┴───────────┴──────────┘

PN = Packet Number(64-bit,防止重放)
MIC = Message Integrity Code(CCMP-128: 4B, CCMP-256: 8B)

四次握手(4-Way Handshake)

WPA/WPA2 使用 EAPOL(Extensible Authentication Protocol over LAN)完成密钥协商:

Personal 模式(PSK)

Step 1: AP → STA
  ANonce (AP 生成的随机数)

Step 2: STA → AP
  STNonce (STA 生成的随机数)
  MIC(ANonce || STNonce || ... )
  ── STA 已计算 PTK = PRF(PMK, "PTK", AA || SA || ANonce || SNonce)

Step 3: AP → STA
  GTK (Group Temporal Key,用于组播/广播加密)
  MIC(...)
  ── AP 已验证 STA 的 MIC(确认 STA 拥有正确的 PMK)
  ── AP 安装 PTK 用于解密

Step 4: STA → AP
  Acknowledge (确认收到 GTK)
  ── STA 安装 PTK 用于加密

密钥层次结构

                        PSK / Authenticator
                           │
                         PMK (Pairwise Master Key)
                           │
              ┌────────────┴────────────┐
              ▼                         ▼
         PTK (Pairwise               GTK (Group
         Transient Key)              Temporal Key)
              │                         │
    ┌─────────┼─────────┐              │
    ▼         ▼         ▼              ▼
 KCK(128)  KEK(128)  TK(128/256)   组播加密
 (MIC密钥) (密钥封装) (数据加密)     (所有STA共享)

Enterprise 模式(802.1X)

Enterprise 模式的四次握手与 Personal 相同,区别在于 PMK 的来源:

Personal:    PMK = PBKDF2-PRF(password, SSID, 4096 iterations)
Enterprise:  PMK = MSK[0:128] (来自 EAP 认证过程,由 RADIUS 服务器提供)

WPA2 的已知漏洞

KRACK(Key Reinstallation Attack, 2017)

  • 原理:强制 STA 重新安装已使用的 PTK,将重放计数器重置为零

  • 影响:可解密部分流量、注入数据包

  • 修复:补丁确保密钥只安装一次(不重复安装)

PMKID Attack(2019)

  • 原理:利用 802.11w PTSA(Pairwise Transient SA)建立过程中的 PMKID

  • 影响:无需捕获完整四次握手即可离线破解 PSK

  • PMKID = PRF(PMK, "PMK Name", Min(AA,SPA) || Max(AA,SPA))

Dragonblood(2019)

  • 针对 GCMP(WPA3 使用的加密模式)的实现漏洞

  • 影响部分 WPA3 设备的实现

WPA2 配置建议

设置

推荐值

加密套件

AES-CCMP(禁用 TKIP)

密钥长度

192-bit 或 256-bit PSK

PMF (802.11w)

Required(强制)

WPS

Disabled(禁用)

Beacon 间隔

100 TU(默认)