WPA2-PSK的取代者:WPA3-SAE

第一章 简述  

  2018年10月3日,802.11 ax被正式定义为新一代的WLAN(Wireless LocalArea Network)标准即Wi-Fi 6。基于 IEEE 802.11ax 标准,Wi-Fi 6将最大物理速率提升到9.6Gbps[1],提供了更高的整体效率,而且通过引入双向MU-MIMO技术和OFDMA(正交频分多址)技术,有效提高了吞吐量和电源效率,降低了设备之间噪音的相互影响。

  除了网络增强,Wi-Fi 6还具有重要的安全性增强功能,即WPA3,用于个人和企业网络安全。截至 2020年7月1日,所有经Wi-Fi联盟认证的设备必须支持WPA3。

  在WPA3出现之前,各种Wi-Fi设备普遍使用的安全协议是WPA2。但是经过十几年的研究,WPA2已经被相关领域的专家学者指出存在多种漏洞。借助这些漏洞攻击者可以轻易实现取消认证攻击、离线字典攻击和KRACK(密钥重装攻击)等多种攻击。这些攻击的方式的出现意味着WPA2已经不再安全,Wi-Fi网络的安全性也受到了广大用户的质疑。

  鉴于Wi-Fi技术目前空前庞大的应用体量与应用场景,为了保障广大Wi-Fi应用领域与用户的隐私与通信安全,Wi-Fi联盟在2018年迅速推出了新一代Wi-Fi加密技术WPA3(Wi-Fi Protected Access 3),WPA3的密码算法提升至192位的CNSA等级算法,并通过引入SAE(Simultaneous Authentication of Equals)握手协议增加了字典法暴力破解的难度和提供前向保密。

  WPA3作为最新的无线网络安全协议,具有重要的研究价值。一些研究文献已经指出了WPA3存在的一些安全漏洞,但是国内对于WPA3的研究主要以简述和安全优势分析为主,分析安全漏洞的较少。随着技术的进步,越来越多的无线网络设备都已经开始支持WPA3,在不远的将来WPA3技术将会很快的普及,因此对WPA3的安全防护研究迫在眉睫。

第二章 WPA3-SAE协议综述

  SAE握手是RFC 7664中蜻蜓密钥交换协议的一个变种[4],同时也是WPA3与WPA2之间的主要区别。WPA3-SAE在传统四步握手之前添加了SAE握手以取代WPA2中使用的开放系统认证。SAE握手共有四次信息交换以安装密钥,前两次是Commit(提交)阶段,后两次是Confirm(确认)阶段。在SAE四步握手成功后,STA和AP通过握手中的信息生成高熵主密钥PMK,以保护后续通信数据。通过SAE握手不仅可以很好的抵御离线字典攻击更可以提供很好的前向保密性。SAE握手的基本原理如图2-1所示。

图2-1 SAE握手

  SAE握手的具体流程以及与之相关的安全机制我们将在下面的内容中进行详细介绍。

2.1 SAE握手密钥交换流程

一、生成密钥元素P

  SAE握手支持使用ECC(椭圆曲线离散对数密码)和FFC(具有素数模乘群的有限域密码)两种方式生成密钥元素P。下面以ECC(椭圆曲线离散对数密码)为例介绍密钥元素P的生成过程。在交互双方进行Commit阶段之前需要先生成一个密钥元素P。交互双方通过计算将PSK(预共享密钥)转换为椭圆曲线上的一个有效点,而这个有效点就被称为密钥元素P。

  密钥元素P来自蜻蜓密钥交换,它的生成条件是:

  •双方在带外机制中建立的共享密钥PSK;

  •协商好的相同域参数集;

  •双方的MAC地址。

  生成过程:密钥元素P的生成过程源于蜻蜓密钥交换中的搜索与啄食(hunting-and-pecking)技术。首先使用交互双方的MAC、增量计数器Counter以及预共享密钥PSK进行散列计算,并将散列计算的结果作为Seed的输入。在得到Seed后,将Seed作为密钥衍生函数KDF的输入,使用密钥衍生函数KDF计算出一个椭圆曲线上可能的点的x坐标。如果将这个x坐标输入椭圆曲线方程后检查y值在方程中是否存在有效解(点(x,y)满足方程且在椭圆曲线上生成一个有效的点)并且增量计数器Counter大于40(为了抵御侧信道攻击与定时攻击),则密钥元素P为(x,y)。否则递增增量计数器Counter,并尝试使用新生成的Seed来找到y。

算法1:密钥元素P的产生

found=0

counter=1

Length=len(p)

base=password

do{

       pwd-seed=Hash(MAX(A-MAC,B-MAC)||MIN(A-MAC,B-MAC)),base||counter)

       pwd-value=KDF (pwd-seed,"SAE Hunting and Pecking",p)

       if (pwd-value<p)

       then

              if (pwd-value+a×pwd-value+b)is a quadractic residue module p

              then

                     x=pwd-value

                     save=pwd-seed

                     found=1

                     base=a new random number

       counter+=1

}while((counter≤k)or(found==0))

  其中:

  •Hash:哈希函数

  •KDF:密钥导出函数

  •符号G来表示群的生成函数,符号q来表示G函数的阶数。

  •素数p确定一个素数域GF(p),椭圆曲线定义方程为

  y2=x3+ax+b mod p

   其中a、b、p的取值取决于所使用的椭圆曲线。

  •对于点(x,y),要求0<x<p, 0<y<p,且x与y满足方程 y2=x3+ax+b mod p,并且生成的点是曲线上一个有效点(即该点不是无穷远处的点),满足以上要求则认为点(x,y)有效。(验证过程见算法2)

算法2:有效点的验证

y=sqrt(x3+ax+b) mod p

if (LSB(save)==LSB(y))

then

PWE=(x,y)

else

PWE=(x,p-y)

  生成的密钥元素P将用于下一步  Commit阶段中某些关键信息的生成。

  假设交互双方分别为Alice和Bob,SAE交互过程如图2-2所示。

图2-2 SAE交互过程

二、 Commit(提交)阶段

  在SAE握手中,认证请求可以被参与交互的任何一方主动发起。但在实际的无线网络交互过程中,通常由STA发起认证请求。以Alice与Bob之间的交互为例,Alice发出认证请求,并使用一个随机数rA∈[2,q-1]和随机生成的掩码mA∈[2,q-1]生成SA标量和EA元素。生成过程如下:

  SA=rA+mAmod q

  EA=-mA*P

  Alice在生成标量SA与元素EA之后随即将掩码mA进行不可逆地删除,并自动将标量SA与元素EA通过一个Commit(提交)帧(如图2-3所示)发送给Bob。

图2-3 Commit帧

  Bob在接收到Commit帧之后首先验证接收到的标量SA是否在有效范围[2,q-1]内,元素EA是否是椭圆曲线上的有效点,并据此判断元素EA是否包含非负整数和任何小于P的坐标。只要其中有一项被验证失败,握手将立刻被中止。基于椭圆曲线离散对数难解问题,仅通过给定的密钥元素P与元素EA无法逆向计算求出掩码mA。同样的,通过给定的q与标量SA也无法逆向计算求出rA+mA。

  Bob用同样的方法利用随机数rB与掩码mB计算标量SB与元素EB后将掩码mB进行不可逆删除,并将标量SB与元素EB通过一个Commit帧发送给Alice。Alice验证通过后,双方计算出密钥点K。

  K=rA•(SBP+EB= rB•(SAP+EA =rA rBP

三、 Confirm(确认)阶段

  交互双方分别计算出密钥点K后,Alice将密钥点K对应的x坐标经过哈希运算后得到密钥κ,同时通过SA、SB、EA、EB计算握手概要值tr,Alice使用密钥κ对trA进行哈希变换生成cA,并通过一个Confirm帧(如图2-4所示)发送给Bob进行验证。Alice的计算过程如下:

  κ=Hash(K)

  trA=SAEASBEB

  cA=HMAC(κ,tr)

  Bob收到握手包后,用计算求出的κ和trA进行哈希运算,将哈希结果与cA进行对比,如一致则表示验证通过,否则表示验证失败,终止SAE握手。

图2-4 Confirm帧

  Bob用同样的方法生成trB和κ,用κ对trB进行哈希计算得到cB,通过一个Confirm帧发给Alice验证。双方验证成功无误后,用κ作为PMK主密钥值,进行传统的四步握手生成会话密钥PTK和组密GTK进一步保护通信双方的数据。

  在SAE握手包中,字段Authentication Algorithm(认证算法),使用SAE时字段值为3。字段Status Code(状态码)为0时表示成功,1-107分别表示不同原因的故障,107-65535为保留值。字段Authentication SEQ(认证序列号)为1表示Commit帧,2表示Confirm帧,2-65535保留。字段Group ID表示加密组号,在SAE握手中,交互双方会首先通过字段Group ID协商有限循环组的特定域参数集,并根据双方协商的参数集进行下一步交互,目前19组为唯一强制要求实现的组,所有WPA3设备都必须支持19组。Commit帧中Anti_clogging_token(防阻塞令牌)的作用将在2.3节中具体介绍。Commit帧中Scalar、Finite Field Element分别代表标量S和元素E,是握手中用于产生密钥的必要字段。Confirm帧中Send-confirm字段是已经发送的Confirm帧的计数器,其值在1-65535之间。Confirm帧中Confirm字段是用于判断密钥是否正确推导的必要字段。

  图2-5为SAE握手交互过程。

图2-5 SAE握手交互过程

2.2 PMF管理帧保护

  PMF(Protected Management Frame)管理帧保护通过添加安全关联保护机制来防止连接的STA受到取消关联攻击。这个机制包括关联恢复时间和SA(安全关联)查询两个部分,在完成四步握手后生效。PMF管理帧保护的工作机制如下:

  四步握手成功后,受到PMF保护的STA与AP会协商并建立一个IGTK组播密钥来保护解除认证和取消关联帧等管理帧以抵御取消关联攻击。

  以取消关联帧为例,假设一个连接状态的STA收到来自攻击者的未加密的取消关联帧,它并不会直接删除安全关联SA而是会自动发送一个加密的SA查询请求给AP以验证这个取消关联帧的真伪。这个加密的SA查询请求由4个字节的加密数据和8个字节的MIC组成,以确保SA查询中的关键信息不被第三方获取。在发送完SA查询之后STA会在指定时间内等待AP响应,如果STA在指定时间内收到了来自AP加密的回复,STA则会忽略攻击者发送的取消关联帧。

  PMF能够有效地保证特定管理帧的来源是真实并可信的,同时有效地抵御取消关联类型的拒绝服务攻击。

2.3 WPA3-SAE中的防阻塞机制

  从SAE握手步骤中可以看出,AP在接收Commit请求帧(即握手的第一条消息)时执行计算开销很大的操作,这为拒绝服务攻击(Dos)留下了可乘之机。为了降低这种风险,SAE包含了一个防阻塞机制(Anti-Clogging Mechanism),其中包括一个简单的防阻塞令牌交换过程。[6]该防御在正在进行的连接数量达到或超过阈值后启动,即已经接收到第一条消息(STA发出的Commit请求帧)但尚未接收到第三条消息(STA发出的Confirm帧)的连接。防阻塞机制被激活后,AP收到STA发来的Commit请求帧后,会回复一个最多256字节的防阻塞令牌(anti_clogging_token)。这种防阻塞令牌由STA的MAC地址、AP的计数器和密钥使用SHA256算法计算生成。STA需要返回带有相同的防阻塞令牌(anti_clogging_token)的Commit请求帧,否则AP将拒绝Commit请求消息。因此,防阻塞机制可以防止攻击者使用伪造的MAC地址不断生成新的连接。然而,如果对手能够获得AP发送给某些MAC地址的防阻塞令牌,并随后使用相同的MAC地址将其包含在SAE Commit消息中,则防阻塞机制可能是不够的。触发防阻塞机制的阈值称为dot11RSNASAEAntiCloggingThreshold,这个阈值并不是一个固定值而是会根据每个AP的能力进行调整,其原理如图2-6所示。

图2-6 防阻塞机制(Anti-Clogging Mechanism)

  值得一提的是,在本章3节中的机制并不是所有的AP设备共同拥有的机制,AP设备所拥有的安全机制是由AP的生产厂商、AP的处理能力、AP的生产时间等多种因素共同决定的,在一部分AP设备中并没有观测到上述机制。

下面我将介绍WPA3-SAE中的安全隐患与安全优势,请大家继续关注

  

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kerberos333

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值