WPA2协议新攻击方法(KRACK)—WPA2密钥重安装漏洞

来源:互联网 发布:java调用com组件 编辑:程序博客网 时间:2024/06/06 01:57


Key Reinstallation Attacks
Breaking WPA2 by forcing nonce reuse

今年9月份CCS公布了一篇新论文,该论文提出了一种新的攻击方法:Key Reinstallation Attacks,这种攻击方法对WPA2危害甚大。本文简单介绍该攻击方法。

我们都知道所有WiFi网络都是靠WiFi Protected Access 协议的某个实现版本来保证安全性的。这些技术需要经过802.11i协议定义的4次握手来协商会话密钥。而在Key Reinstallation Attacks中,攻击者会构造出与4次握手相关的一些工作流,这些构造的工作流对于WPA和WPA协议来说都是有重大影响的。

在WPA2协议中,4次握手提供身份认证和会话密钥协商功能,而机密性和完整性是加密协议(比如AES-CCMP协议)来保证的。自从2003年以来,实现了802.11i所有安全要求的WPA2协议一直被证明是安全的。目前仅知的802.11i的一个安全漏洞是WPA-TKIP协议的不安全性。WPA-TKIP是一种加密协议,用于保证数据的机密性。然而TKIP协议本身就是一个用于替代wep协议的临时性的加密协议,802.11i就没有打算长久地用这个加密协议。除此之外,虽然有很人研究人员在研究如何攻击WPS协议(Wi-Fi protected Setup),但是很少有人能发现4次握手和CCMP加密协议的漏洞。

注意:
1. WPS(Wi-Fi Protected Setup,Wi-Fi保护设置)(别名AOSS、QSS,)是简化无线局域网的安装及安全性能配置工作的一个协议。在传统方式下,用户新建一个无线网络时,必须在接入点手动设置网络名(SSID)和安全密钥,然后在客户端验证密钥以阻止“不速之客”的闯入。这整个过程需要用户具备Wi-Fi设备的背景知识和修改必要配置的能力。Wi- Fi Protected Setup能帮助用户自动设置网络名(SSID)、配置强大的WPA数据编码及认证功能,用户只需输入个人信息码(PIN方法)或按下按钮(按钮设置,或称PBC),即能安全地连入WLAN。
之前网上有很有方法都是抓取WPS的握手报文,像典型的水滴呀, 然后穷举8位来PIN码来破解wifi,这个方法相当有效。但是现在很多无法路由器都默认关闭此功能了。
2. CCMP:AES的CCMP模式下的加密算法。

尽管WPA2的历史和安全性证明都很牛逼,然而4次握手却极易受这种新攻击——Key reinstallation attack 攻击的影响.而且研究人员发现,其它类似的握手过程也存在这种安全脆弱性。也就是说也用这种攻击方法去去攻击PeerKey 握手包,组密钥握手包,快速BSS交互握手包,而且都可能攻击成功。

其实这种攻击的原始思路其实并不复杂,它可以总结如下。当客户端加入一个无线网络的时候,它将与AP进行4次握手来协商他们之间的会话密钥。客户端在接收到第三个握手包时将会安装该密钥。一旦这个密钥安装完毕,客户端就会使用这个密钥去加密普通的数据块。但是,我们都知道在无线网络中,数据包是很容易丢失的。当AP在长时间内没有收到客户端发来的ACK消息,AP就会认为该数据包丢失了,于是AP就会重传该数据包。客户端每收到一个重传的第三握手包,它都会去重新安装这个握手包里面的密钥,同时重置自增型的包序号(transmit packet number,这是一个很重要的随机数)以及接收到重传计数器。这两个参数是加密协议需要使用到的。研究人员发现,攻击者可以通过收集和重传第三条握手包来迫使用户重置随机数。通过强迫用户重用一个随机数,加密协议可能变得很脆弱,比如 所有的数据包可能被重放、解密、甚至是被篡改。

当四次握手或者快速BSS交互握手包被成功攻击后,具体的危险程度由取决于所使用的加密协议是什么。如果使用CCMP加密协议,那么任意的加密报文可能被解密,同时TCP的SYN报文也可能被解密 攻击者于是可以劫持TCP连接 然后可以在不被加密的HTTP连接中注入恶意构造的HTTP报文。

如果使用TKIP来做加密协议,那攻击者可以同时解密任意密文和构造任意报文。


研究者尤其针对wpa_supplicant的2.4和2.5实现版本进行了研究,这两个实现版本在Linux中普遍被WiFi客户端使用。在这个版本中,客户端在受该攻击时会安装一个全为0的初始向量而不是重新安装真实的密钥。这个缺陷源于802.11标准建议当会话密钥被安装后需要将内存中的已经保留好的会话密钥给清空。因为安卓系统使用了修改后的wpa_supplicant ,安卓6.0 也会受这个攻击的影响。据估计,目前大约有31.2%的安卓设备都会受到该攻击的影响。

在使用wpa_supplicant 2.4和2.5版本的客户端上,攻击者能够迫使用户的随机数变成0。结果导致相同的加密密钥和已经使用到的随机数一起被使用。这可能导致wpa2的使用加密协议在加密报文的时候都复用同一个已经使用过的密钥序列。假设一条使用这种复用的密钥序列的明文是已知的,那么这个秘钥序列是可以计算出来的。攻击者就可以用这个已经使用过的密钥序列再配上一个相同的随机数Nonce 来解密相应的数据包。

但是! 该攻击并不是完全否定WPA2的四次握手安全属性。实际上,会话密钥依然是安全的,同时AP和客户端的身份认证功能也是安全的。攻击者实际上在握手过程中是无法冒充客户端或都AP。这个攻击只是给大家提了一个醒:人们没有对密钥安全行为进行建模研究,并没有重视密钥的安装过程。这就导致了相同的密钥可能被安装多次,因些重置随机数和重放计数器,而这两个参数又是加密协议使用的关键参数。

Q&A:

我重新设置很复杂的wifi密码能不能抵抗这个攻击呢?

没卵用。修改密码是无法预防此类攻击的。所以你没必要改wifi密码。相反你应该升级wifi设备像手机、电脑啊,同时更新防火墙设置。

我的设备也容易受攻击吗?
可能;所有使用WiFi的设备都可能受影响。

如果路由厂商不发布安装补丁怎么办
我们攻击的是4次握手,重点不是无线路由器而是使用wifi的手机、电脑。所以路由器是不用更新的。

四次握手在数学上被证明是安全的,这种攻击为什么可以实现?
四次握手的数学证明并没保证密钥会被重安装。四次握手保证了密钥协商是安全的、握手信息无法被篡改。

设备发布补丁前,我需要使用wep协议不?
别傻啦,用wep不如用wpa2.!

人们可以察觉此类攻击吗?
不行。第三条报文可能由于环境的噪声、电磁干扰而被重传,当处理这种重传的消息时,密钥可能被重新安装然后造成随机数的复用,这种过程和真实的攻击过程特别相似,不易区分。

参与文献
论文链接
[攻击效果视频]需要访问youtube.