WPA3是Wi-Fi联盟组织发布的新一代Wi-Fi加密协议,在WPA2的基础上增加了新的功能,以简化Wi-Fi安全保障方法、实现更可靠的身份验证,提高数据加密强度。所有的WPA3网络都必须进行管理帧保护PMF(Protected Management Frame),保证数据的安全性。
根据Wi-Fi网络的用途和安全需求的不同,WPA3又分为WPA3个人版、WPA3企业版,即WPA3-SAE和WPA3-802.1X。WPA3为不同网络提供了额外功能:WPA3个人版增强了对密码安全的保护,而WPA3企业版的用户可以选择更高级的安全协议,保护敏感数据。
WPA3个人版
对比WPA2个人版,WPA3个人版能提供更可靠的基于密码的身份验证。这是由于WPA3个人版使用了更安全的协议——对等实体同时验证SAE(Simultaneous Authentication of Equals)。SAE取代了WPA2个人版的PSK认证方式,可以有效地抵御离线字典攻击,增加暴力破解的难度。SAE能够提供前向保密,即使攻击者知道了网络中的密码,也不能解密获取到的流量,大大提升了WPA3个人网络的安全。WPA3个人版只支持AES加密方式。
SAE在WPA/WPA2-PSK原有的四次握手前增加了SAE握手,实质上是为了动态协商成对主密钥PMK。WPA/WPA2-PSK的PMK只与SSID和预共享密钥有关,而SAE引入了动态随机变量,每次协商的PMK都是不同的,提升了安全性。SAE交互流程如图1。
图1 SAE交互流程
SAE握手可以由任意一方发起,主要分两个阶段:
交换密钥阶段 (SAE Commit)
这个阶段的主要目的是生成四次握手的PMK,由认证的两个实体(AP和STA)各自发送一个包含了用随机数封装起来的PWE(password element of an ECC group)。PWE是由密码和协商对象的MAC衍生出来的密钥,最终通过运算得出PMK。Commit阶段结束后,两个认证实体都生成了PMK,但是并不知道两者的PMK是否一致。
验证密钥阶段 (SAE Confirm)
这个阶段的主要目的是校验两个实体是否拥有相同的PMK,通过使用PMK的一部分来对上一轮发送的Commit报文进行完整性校验。如果双方都可以校验通过,说明两端的PMK是一致的,可以进行四次握手过程。
SAE交互完成后生成PMK作为四次握手的输入,四次握手的过程与WPA2-PSK认证类似。
SAE攻击防御
由于SAE握手使用了大量的复杂算法,如果攻击者不停使用大量不同的MAC来发送SAE Commit报文,将会频繁触发SAE握手,耗费大量计算资源,从而达到拒绝服务攻击的目的。
针对这种方式的攻击,WPA3协议规定SAE交互报文的并发量达到阈值后,如果有新的SAE握手,则SAE Commit报文中必须携带token,token对于用户MAC唯一标示用户,如果不携带token则不能进行SAE交互,从而达到防止攻击的作用。
终端闪断后快速重新连接
WPA3个人版支持终端闪断后快速重新连接,掉线后重新连接的终端使用OPEN认证而不是进行SAE交互,在重关联请求报文中携带PMKID,AP对PMKID进行匹配校验,如果校验成功则可以直接使用之前的PMK进行四次握手协商,无需进行SAE协商,从而实现闪断后快速重新连接。
过渡模式
由于WPA2仍在广泛使用,为了能兼容暂时不支持WPA3的终端能接入WPA3网络,Wi-Fi联盟规定了WPA3个人版的过渡模式,即WPA3和WPA2在未来的一段时间里可以共存。过渡模式只支持AES加密方式,不支持TKIP加密方式。
WPA3过渡模式中,对于使用WPA2接入的用户,接入流程和WPA2-PSK认证一致,不强制使用PMF。使用WPA3接入的用户,接入流程使用WPA3-SAE认证流程,必须使用PMF。
WPA3企业版
企业、政府和金融机构为了更高的安全性可以采用WPA3企业版。WPA3企业版基于WPA2企业版,提供一种可选模式——WPA3-Enterprise 192bit,该模式有以下优点:
数据保护:使用192位的Suite-B安全套件,增加密钥的长度。
密钥保护:使用HMAC-SHA-384在4次握手阶段导出密钥。
流量保护:使用伽罗瓦计数器模式协议GCMP-256(Galois Counter Mode Protocol)保护用户上线后的无线流量。
管理帧保护:使用GMAC-256(GCMP的伽罗瓦消息认证码,Galois Message Authentication Code)保护组播管理帧。
WPA2企业版支持多种EAP方式的身份验证,但是WPA3企业版仅支持EAP-TLS的方式。WPA3企业版支持的EAP密码套件有以下几种:
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384