WPA3也不安全啦?H2E了解一下

 一、背景

       借用权威大佬的一句话,这一切都是妥协。

       WPA2方法被称为Wi-Fi最先进的加密协议从2004年到2018年整整14个年头,但是这期间被各种花样攻击,各种被攻破。终于在2018年联盟推出了WPA3加密协议,协议一推出,各大媒体争相报道,被称为史上最安全的加密协议,一时间风头无二。谁料想,打脸来得很快,一年的时间里就被爆出存在缺陷,攻击方法还被挂在亚马逊网站上公开售卖。

       不得已,2020年12月,Wi-Fi联盟推出了被称为WPA3 R3版本,其中提出了Hash to Element(H2E)作为生成PWE的最新方法,接下来让我们看看H2E具体是什么,为何说它要比它的前辈们更安全。

二、离线字典攻击破解WPA2

      我们先来回忆一下WPA2 四次握手的过程:

WPA2 四次握手加密流程

       四次握手是WPA2 是STA和AP双方验证对方是否拥有正确密码并将密码转换成最终用于加密数据的TK的过程,首先是STA这边在收到AP的EAPOL 1后,利用AP发过来的Anoce和自己生成的Snoce加上双方的MAC地址,与PMK生成PTK,PTK是一串384bit的数字,这一串数字按照每128bit为限,分别是KCK,KEK和TK,KCK用于验证MIC值,KEK用于加密MIC值,TK则是双方验证通过后用于数据加密的最终秘钥。同理AP端也经过相似的步骤生成TK。

       在相当长的一段时间里,得益于WPA2基于的AES加密原理,WPA2相当的安全。可惜,四次握手过程中除了PMK,其他用于计算PTK的所有参数(Anoce, Snoce, MAC1, MAC2)都是可以通过抓包得到的,并且由password推到PTK的所有数学方程都是公开的,那么我们如果能找到一种方法验证自己猜测的密码是正确的,那么我们就找到了密码。

       从整个四次握手的过程来看,除了EAPOL-1以外,剩下的三帧数据都带有一个MIC值,这个MIC值是对数据包的完整性进行校验的,通过KEK加密,然后对端用计算得到的KCK进行校验,那么如果我们能够用一个密码经过一步步计算得到同样的MIC值,是不是就意味着就找到了正确的密码呢?

       答案是肯定的,这也就是所谓的离线字典攻击的原理。通过记录整个四次握手,然后不断用字典库中的密码进行计算比对MIC值,直到计算出相同的MIC值,最终得到正确的密码。整个过程如下图所示:

离线字典攻击WPA2加密

       由于大多数人都习惯使用有规律的密码方便记忆,并且随着密码库的不断升级,所以我们的密码被攻破的速度越来越快,而且被攻破的速度远远超过你的想象。 

三、WPA3 SAE

       为了解决WPA2遭受离线字典攻击的问题,IEEE802.11协议组在2018年推出了WPA3协议用于升级WPA2,其中SAE(Simultaneous authentication of equals)这个原本用于Mesh协议中的对等认证协议最终被确立用来由password产生PMK。SAE的好处是它所基于的数学原理,有不可逆性。让我们先来看看整个WPA3 SAE加密的流程是什么样的。

WPA3 SAE 生成加密密钥流程

       WPA3相比于WPA2,生成PMK的方法发生了改变,需要先通过密码生成PWE,然后经过对等加密后才能生成PMK,接着进行四次握手,那么相比于WPA2生成PMK的方法,为什么WPA3会更安全呢,这一切都是因为非对称加密,椭圆曲线加密方程的数学性质决定的,关于椭圆曲线加密方程,大家可以自行上网百度,这里就不花太多时间了。

       这里大家只需要知道一点结论,在椭圆曲线上可以找到两个点,满足P = k*G,我们可以通过k乘以G点,得到P点,但是即使我们知道P点和G点的坐标,但是却不能通过P/G得到k。即椭圆加密曲线满足加法和乘法,但是不满足减法和除法,这也就是我们整个SAE加密的数学理论。

       就像我们上图所示的那样,PWE就是曲线上的G点,经过双方协商出来的K就是曲线上的另一个点P,其中u1*v1就是的k,由于数学性质,决定u1*v1很难被推算出来。这样攻击者只能通过不断的尝试密码,这样被攻破的时间也大大被加长。但是,通过整个流程我们之前在commit message中的v1和u1都是在每次协商的时候随机生成的,所以如果密码出错,再试下一次密码的时候,v1和u1又发生了变化,所以即便再尝试了n次后,好不容易找到了正确的密码,生成的TK和你想破解的用户的TK也会不一样,这样即便你缓存了所有的数据包,也解不出来。能解出来的数据包也只是之后的数据,这样也就保证了之前的数据,也就是所谓的前向保护。

三、Side Channel攻击破解PWE

       虽然SAE的整个过程看起来没有什么可以下手的机会,但是百密一疏,把密码映射到椭圆曲线上过程却留下了可乘之机,即找到PWE点的过程是不够安全的。

        我们先来看下把密码映射到椭圆曲线上的方法是怎么做的:

Looping方式生成PWE

        最初的WPA3方法寻找PWE的方法是通过不断进行hash(password || MAC1 || MAC2)来寻找PWE, 但是为了迷惑攻击者,需要固定进行40次,就是说如果PWE的x坐标在40次中提前被找到了,也会先被存起来,然后生成了一个随机值,然后用这个随机值替代password进行剩下的hash运算。

       这个过程,就会发现用密码和随机值进行hash运算的时间会不同,这样就留给了黑客通过计算两者的时间差来寻找密码的过程。所以这也就是IETF组织一直没有用SAE作为任何正式的加密协议的原因。但是通过时间差来计算密码,这种事想想还是很难的,至少我到现在也没弄清楚这是个怎样的操作。所以,WPA3协议的制定者尽管在协议制定之初就收到了警告,但他也认为这是种只存在于理论上的攻击方式,依旧按照原方案进行了协议的制定。

        所以这也就出现了协议被推出了一年后被打脸的情况。于是,H2E应运而生。

四、H2E

       H2E是Hash to Element的缩写,即采用直接进行hash的方法找到PWE。虽然依然是在椭圆曲线上,但是椭圆曲线需要满足特定的条件,这个特定的方程被叫做SSWU。

H2E方法生成PT
由PT生成PWE

       由于hash运算只进行一次,所以通过时间差进行攻击的路也被堵上了,目前看总算安全了。

 五、总结

       综合来看,我们的密码演变从WPA2开始到WPA3 R3,发生了不少变化:

       WPA2: Password -> PMK -> PTK

       WPA3 v1: Password -> PWE -> PMK -> PTK

       WPA3 r3: Password -> PT -> PWE -> PMK -> PTK

       虽然目前看,加密方法总算安全了,但是密码学从来都不是一个一成不变的学科,如果有一天新的攻击方法出现,那么我们的加密方法就又不得不升级了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值