【加密PMF】psk-pmk-ptk
密钥类型
PSK
Pre-Share Key ,预共享密钥。静态配置的共享密钥。
通过SSID和password生成;
长度256位(32字节);
存储在AP和sta的配置中;
对于同一个SSID和password组合,PSK总是相同的;
计算公式PSK = PBKDF2(passphrase, ssid, 4096, 256);
wpa_supplicat接口sha1-pbkdf2.c:pbkdf2_sha1_f()
PMK
Pairwise Master Key,成对主密钥。认证阶段生成的中间密钥,在四次握手前存在。
如果是WPA2-PSK模式,PMK=PSK;
如果是WPA3-PSK模式,PMK=SAE协商PMK(输入“密码 + SSID,通过 Dragonfly 算法”;
长度256位(32字节);
缓存机制可缓存加快重连;
PTK
Pairwise Transient Key,成对临时密钥。会话专用加密密钥,通过四次握手生成。
使用PRF(Pseudo-Random Function)函数:
WPA2-PSK:PTK = HMAC-SHA1(PMK, “Pairwise key expansion” + MACs + Nonces)
WPA3-PSK:PTK=HMAC-SHA256(WPA3)
PTK组成可分解成多个子密钥作用如下:
• KCK(Key Confirmation Key, 16字节):用于计算 MIC(消息完整性校验)。
• KEK(Key Encryption Key, 16字节):加密 EAPOL 密钥消息。
• TK(Temporal Key, 16字节):加密单播数据帧(不用于管理帧)
• KCK(Key Confirmation Key, 16字节):用于计算 MIC(消息完整性校验)。
• KEK(Key Encryption Key, 16字节):加密 EAPOL 密钥消息。
• TK(Temporal Key, 16字节):加密单播数据帧(不用于管理帧)
三者之间的关系
IGTK
在 Group Key Handshake 阶段生成,IGTK = PRF-HMAC-SHA1(PMK, “Group expansion”, AP_MAC + GroupNonce)
PMF
Protect Management Frames,受保护的管理帧,旨在保护管理帧免受干扰。
功能
加密保护单播管理帧(如解除认证、解除关联帧、Action帧);
为组播/广播管理帧提供完整性保护;
防御常见的Wi-Fi拒绝服务(DoS)攻击;
实现
单播管理帧加密算法:WPA2-PSK(AES-128-CCMP);WPA3(AES-256-GCMP)
组播\广播帧:BIP
使用PTK或IGTK派生管理帧的加密密钥:PTK:用于保护单播管理帧(如解除关联帧);IGTK:用于保护组播/广播管理帧(如 Beacon 帧中的部分信息)
完整性校验每个管理帧添加MIC;MIC = HMAC(Key, Frame_Content),密钥为 PTK/IGTK 的子密钥KCK
解除认证\关联帧
对于de-asso/de-auth
加密数据:2字节reason code;8字节MIC
1.使用PTK的子密钥KCK计算MIC放到帧的末尾,MIC = HMAC-SHA1(KCK, 帧头 + 帧体 + Nonce)
2.加密帧体,使用加密算法加密frame;使用KEK解密
3.设置Protected Frame 标志位“帧头->Frame Control Field”
wireshark解密
WPA2-PSK使用 wpa-pwd:passward:SSID
WPA3-PSK使用wpa-psk:PMK
编辑=>首选项=>Protocols=>IEEE802.11=>Edit···=》Enable decryption
PMK通过wpa_supplicant日志里获取wpa_sm_set_pmk()