WPA3已沦陷?解读Dragonblood Vulnerabilities

 

WPA3可提供个人和企业版本,将逐步取代WPA2,但它可能需要几年时间才能被广泛采用,没想到时隔不到1年,WPA3这么快就沦陷了。...



一、前言



今天早上一觉醒来,按照往常的习惯刷了一下 ZDNet,惊奇的发现了一篇名为《Dragonblood vulnerabilities disclosed in WiFi WPA3 standard》,我的妈呀,如果我没有记错的话,记得WPA3是Wi-Fi联盟组织于2018年1月8日在Las Vegas的国际消费电子展(CES)上发布的Wi-Fi新加密协议,是Wi-Fi身份验证标准WPA2技术的的后续版本,旨在提供更好的保护,防止脱机字典攻击和密码猜测尝试,即使使用不太复杂的密码也能提高安全性,并提前保密即使密码已被泄露,也可以保护通信。

2018年6月26日,WPA3协议最终完成,WPA3将提供个人和企业版本,将逐步取代WPA2,但它可能需要几年时间才能被广泛采用,与此同时,WPA2将继续得到维护和改进。时隔不到1年,WPA3这么快就沦陷了!

我英语水平还不是很渣,那就研究研究喽,《Dragonblood vulnerabilities disclosed in WiFi WPA3 standard》是由一位叫 卡塔琳·西帕努的安全记者报道的,这哥们是ZDNet的一名安全记者,他报道过网络安全、数据泄露、黑客攻击以及其他相关话题。他曾在Bleeping Computer and Softpedia担任安全记者。

两位安全研究人员(Mathy Vanhoef)、(Eyal Ronen)于2019-4-10披露了一组被统称为Dragonblood的漏洞的细节,值得注意的是,Vanhoef,这哥们还是发现WPA2漏洞的研究人员之一,称为KRACK(密钥重新安装攻击),这也是WiFi联盟最先开发WPA3的主要原因, 一人的研究成果影响了WiFi联盟开发WPA3,足见他真的是这方面的大内高手哈;Dragonblood漏洞影响了WiFi联盟发布的WPA3 Wi-Fi安全和认证标准。

最重要的是,这个漏洞一旦被利用,将允许攻击者在受害者网络范围内恢复Wi-Fi密码,并渗透到目标网络,可以获取密码并获取敏感信息,例如密码,电子邮件,支付卡号码以及通过即时消息应用程序发送的数据。

二、关于“龙血”漏洞

总共有5个Dragonblood漏洞需要注意的点,分别是:

1>拒绝服务攻击

2>两个降级攻击和两个侧通道信息泄漏。他们还发现了一个漏洞,可以利用这个漏洞在绕过WPA3中的DoS保护机制后在接入点(AP)上导致拒绝服务(DoS)条件。

3>然而拒绝服务攻击并不严重,因为它只会导致兼容wpa3的访问点崩溃,并不会引发信息泄露,但其他四个攻击可以用来恢复用户密码,造成信息泄露。

4>两次降级攻击和两个侧通道泄漏都利用了WPA3标准的Dragonfly密钥交换中的设计缺陷引起(客户端在WPA3路由器或接入点上进行身份验证的机制)。

那什么是Dragonfly密钥交换协议?直接查对应的RFC研究呗!

三、Dragonfly Key Exchange

我查了一下RFC 7664—-Dragonfly Key Exchange。

1.简介



它是使用离散对数的密钥交换,使用密码或口令进行身份验证的密码学。更重要的是它可以抵抗主动攻击、被动攻击和离线攻击字典攻击。想必大家对离散对数一定不陌生,它是是一种基于同余运算和原根的一种对数运算。

2.假设

为了避免攻击Dragonfly 协议,作了一些基本假设:

2.1 函数H是一个随机oracle,这个随机oracle是不定长度的二进制字符映射到一个固定的x位的二进制字符串:

    H:{0,1}^* -->{0,1}^x


    2.2 函数F是映射函数,它从群组中获得一个元素并返回一个整数。对于ECC组,函数F()返回元素X的坐标,这个坐标点位于椭圆曲线上;对于FFC组,函数F()是恒等函数,因为在FFC组中的所有元素都是整数小于素数。表达式如下:

      ECC:

      x=F(P),

      where P=(x,y)FFC: x=F(x)


      2.3 KDF是一个键值推导函数,它是将一个键值赋值给stretch,并将一个label绑定到这个键值上,label,和期望的输出表明:

        n:stretch= KDF-n (k,label), so,

        len(stretch)=n。


        2.4 所选群的离散对数问题比较困难,也就是说,给定G,P和Y = G ^ mod P,为确定x,在计算上是不可行的。同样,我们为ECC也给定了曲线的定义,一个G和Y = x * G,为确定x的值,在计算上是不可行的。

        2.5 存在一个密码的密码共享池的两对。这个池可以由单词组成字典,每个密码在这池都有一个相同的概率被共享密码。所有潜在的攻击者可以访问该池的密码,这应该就是造成此漏洞的元凶。

        2.6 这些“对”有能力产生高质量的随机数。

        3.密码的派生

        3.1 算法的实现如下:

          [code]found = 0

          counter = 1

          n = len(p) + 64

          do {

          base = H(max(Alice,Bob) | min(Alice,Bob) | password | counter)

          temp = KDF-n(base, "Dragonfly Hunting And Pecking")

          seed = (temp mod (p - 1)) + 1

          if ( (seed^3 + a*seed + b) is a quadratic residue mod p)

          then

          if ( found == 0 )

          then

          x = seed

          save = base

          found = 1fi fi

          counter = counter + 1

          } while ((found == 0) || (counter


              关注 黑客与极客


          微信扫一扫关注公众号

          0 个评论

          要回复文章请先登录注册