WFA在2020年底发布了WPA3标准的第三版,其中又提出了一些新的feature。这里结合之前的版本简单总结一下。
1. BP
BP是Beacon Protection的缩写。
问:Beacon中的信息都是未加密的,所以可能存在攻击者会对AP发出的Beacon信息进行篡改。
解:BP这个feature引入了一个叫做BIGTK的key,它在4次握手时由AP与GTK一起发送给Client。Client在此后使用BIGTK去验证该AP广播的Beacon,如果Beacon验证失败,说明可能有Attacker AP存在,Client可以通过WNM帧通知到Genuine AP。

2. OCV
OCV是Operating Channel Validation的缩写,即操作信道验证。
问:攻击者通过模仿Genuine AP的行为,将所有往返于client和AP的帧都进行转发,但是改变channel,让client连接入Attacker AP。
解:在四次握手的第二和第三个帧加入一个OCI(operatiing channel information),client或者AP端都可以对OCI进行验证,如果失败,则结束4-way handshake(DOS???)。

3. SCV
SCV是Server Certificate Validation,即服务端证书认证[2]。
它本身不是什么新鲜玩意儿,只不过在wpa2 enterprise的认证中,SCV是可选的,到了WPA3的enterprise 模式下,它是必须的。
4. PK
PK就是public key。
问:它的应用场景比较有意思,是用于公共的wifi。因为公共wifi的密钥通常都是直接张贴在醒目的位置供大量群体使用,所以没什么安全可言,很容易就搞个evil twin AP出来。
解:作为公共的AP,其密码是经过精心设计的,长度和格式都有要求(可能需要用到特定的密码生成工具得到[5]),AP使用自己的私钥签名,并把公钥发送给client。client通过公钥验证签名。如果验证失败,那么SAE auth流程以失败告终。那么,有没有可能Attacker AP自己生成一对公私钥,用自己的私钥签名,把公钥给client去验签?答案是No,前边提到,AP配置的密码有特殊的格式。特殊在于,是可以通过public key逆推回去的。evil AP很难通过password生成另一对满足要求的公私钥。

5. H2E
H2E是Hash-To-Element的缩写。
问:虽然使用WPA3 SAE解决了offline dictionary破解密钥的问题,但是原先用于生成PMK的算法在计算时间上和密钥有关联性(这也行?),仍然存在所谓被side-channel方式破解。
解:新的算法,使用hash计算一次即可,堵死这个理论缺口[4]。
6. TD
TD是Transition Disable的缩写。表示禁止过渡模式。
问:WPA3的加密虽然很强大,但是也经不住使用transition mode。使用Transition mode的client可能受到downgrade 攻击。SAE的设计很安全,但是不用,反而连接WPA2,结果就是被offline-dictionary 破解密钥了。
解:对于相同的SSID,连过high security level的AP就禁止所有比它低security level的加密,简单粗暴。主要针对4种transition
- SAE-PK -- 禁止SAE,wpa2,etc.
- SAE -- 禁止wpa2, etc.
- WPA3-Enterprise -- 禁止wpa2 enterprise
- Enhanced Open -- 禁止open

7. 参考资料:
[1] https://www.wi-fi.org/beacon/thomas-derham-nehru-bhandaru/wi-fi-certified-wpa3-december-2020-update-brings-new-protections
[2] WPA3: The Ultimate Guide
[3] Wi-Fi CERTIFIED WPA3™ December 2020 update brings new protections against active attacks: SAE Public Key and Transition Disable | Wi-Fi Alliance
[4] WPA3也不安全啦?H2E了解一下_DX11的博客-CSDN博客_wpa3抓包
[5] hostap - hostapd/wpa_supplicant
[6] File Download | Wi-Fi Alliance
[7] File Download | Wi-Fi Alliance