1. WPA3-Personal连接全流程拆解
记得第一次用Wireshark抓取WPA3握手包时,看到密密麻麻的十六进制数据差点崩溃。但当我理清SAE认证和四次握手的逻辑后,突然发现这就像两个特工用密语接头的过程。咱们就以手机连接路由器为例,看看WPA3-Personal如何用五次关键对话建立安全通道。
先说说背景:WPA3-Personal用SAE(对等同时认证)替代了WPA2的PSK预共享密钥。最大的改进是防暴力破解——即使你用"123456"这种弱密码,黑客抓包也解不出原始密码。这是因为SAE采用Dragonfly密钥交换算法,整个过程不传输密码明文,而是通过数学运算生成PMK主密钥。
抓包时会看到两个重要阶段:SAE认证生成PMK,四次握手衍生PTK/GTK。这就像先交换秘密配方(PMK),再根据配方调配具体调料(PTK)。实测发现个细节:WPA3设备在Probe Response帧的RSN字段会明确标注AKMP类型为00-0F-AC:8,这是识别SAE认证的重要标志。
2. SAE认证:PMK生成的秘密握手
2.1 Commit Message交换
当手机扫描到WPA3热点时,会发起两次Commit交换。这就像双方各自拿出一部分原料:
- STA发送的Commit包含椭圆曲线参数和随机数
- AP回复的Commit携带自己的曲线参数
关键点在于双方都用密码+SSID作为种子,通过PWE(密码元素)生成机制创建临时密钥材料。我曾在测试中故意输错密码,发现SAE流程会立即终止——这说明在Commit阶段就已开始密码验证。
2.2 Confirm Message确认
接下来两个Confirm Message才是真正的较量:
- 手机用接收到的AP参数+本地密码计算确认值
- AP用同样方式验证这个值
这个过程实现了双向认证,既防止伪造AP也杜绝非法STA接入。有趣的是,Confirm报文中的Advertisement Protocol字段会携带KCK(密钥确认密钥),用于验证对方是否拥有正确的PMK。
3. 四次握手:动态密钥的诞生
3.1 EAPOL-1/2:随机数交锋
完成SAE认证后,AP会发送包含Anonce的EAPOL-1帧。这里有个坑:早期WPA2设备可能忽略Key MIC校验,但WPA3严格要求从EAPOL-2开始校验MIC。手机收到Anonce后:
- 生成自己的Snonce
- 结合双方MAC和PMK计算PTK
- 用KCK计算Key MIC
3.2 EAPOL-3/4:密钥安装
当AP收到EAPOL-2时,会做三件事:
- 验证MIC确认PMK正确性
- 生成相同的PTK和GTK
- 通过EAPOL-3下发GTK
最后手机回复EAPOL-4完成安装,此时数据通道才真正加密。测试中发现如果跳过EAPOL-4,AP会丢弃所有加密数据帧——这就是为什么DHCP请求必须在四次握手之后。
4. 密钥体系:安全通信的基石
4.1 PMK:主密钥的诞生
SAE认证产生的PMK具有两个重要特性:
- 会话独立性:每次连接生成不同PMK
- 前向安全性:即使PMK泄露,也无法反推密码
这得益于SAE的PWE机制,它使得每次认证都像首次见面一样生成全新密钥。实测用同一手机重复连接,抓到的PMK每次都不同。
4.2 PTK/GTK:数据保护实战
四次握手生成的密钥对各有使命:
- PTK(128位):加密单播帧,包含KCK/KEK/TK三个子密钥
- GTK(128位):加密组播/广播帧
特别要注意的是,WPA3强制使用AES-128-GCM加密,相比WPA2的CCMP更抗重放攻击。在路由器后台能看到这样的配置项:
bash复制wpa=3
wpa_key_mgmt=SAE
rsn_pairwise=CCMP
5. 安全增强:WPA3的防护铠甲
5.1 管理帧保护
WPA3要求所有管理帧必须加密(MFPC=1),这解决了WPA2时代常见的解除关联攻击。在抓包中可以看到:
- 未加密的管理帧会被标记为"Unprotected"
- 合法帧都有完整的MIC校验
5.2 抗暴力破解设计
SAE的防暴力特性体现在:
- 每次失败认证都需完整交互
- 服务器可实施速率限制
- 没有密码哈希值被暴露
这就像银行金库,不仅门锁牢固(SAE),还有震动报警(速率限制)和自毁机制(会话独立密钥)。
6. 实战排坑指南
去年调试WPA3设备时踩过几个典型坑:
- 兼容性问题:某些旧设备虽然标称支持WPA3,实际只能用WPA3/WPA2混合模式。这时要在路由器设置:
bash复制wpa=2+3
wpa_key_mgmt=SAE WPA-PSK
- 抓包技巧:用wlan.fc.type_subtype==0x08过滤EAPOL帧时,注意WPA3的EAPOL-1的MIC可能为0
- 密码要求:部分厂商要求WPA3密码至少8字符,但标准其实无此限制
现在我的工作流已经固定:先用airodump-ng确认AP能力,再用wireshark过滤eapol分析握手过程。遇到异常时,重点检查RSN字段和Key MIC值——这两个是诊断认证问题的关键指标。