e-works数字化企业网  »  文章频道  »  基础信息化  »  移动应用

无线网络(WI-FI)保护协议标准WPA2漏洞综合分析报告

2017/11/1    来源:漏洞分析    作者:佚名      
关键字:无线网络  准WPA2  
欧洲鲁汶大学的博士后安全研究员 Mathy Vanhoef 在10月15日披露无线网络(Wi-Fi)保护协议标准 WPA2 的高危漏洞。漏洞允许在 Wi-Fi 范围内的攻击者监听计算机和接入点之间的 Wi-Fi 流量。该漏洞影响协议本身,且对 WPA 和 WPA2 均有效,因此支持 WPA/WPA2 协议的软件或硬件均受到影响。
    1 概述
 
    欧洲鲁汶大学的博士后安全研究员 Mathy Vanhoef 在10月15日披露无线网络(Wi-Fi)保护协议标准 WPA2 的高危漏洞[1,2]。漏洞允许在 Wi-Fi 范围内的攻击者监听计算机和接入点之间的 Wi-Fi 流量。该漏洞影响协议本身,且对 WPA 和 WPA2 均有效,因此支持 WPA/WPA2 协议的软件或硬件均受到影响。
 
    漏洞披露后,安天与炼石的工程师迅速响应,对该漏洞展开联合分析,形成此报告。
 
    2 漏洞分析
 
    WPA全名为 Wi-Fi Protected Access,有 WPA 和 WPA2 两个标准,是一种保护无线网络(Wi-Fi)安全的协议[3]。WPA 实现了IEEE 802.11i标准的大部分,是在802.11i完备之前替代WEP的过渡方案,后被 WPA2 取代。由于 WPA 和 WPA2 均基于802.11i,因此在技术层面上几乎是相同的,主要区别在于WPA2要求支持更安全的CCMP。WPA 和 WPA2 均使用802.11i中定义的四次握手,客户端(Station, STA)和接入点(Access Point, AP)通过四次握手相互验证和协商名为成对临时密钥(Pairwise Transient Key, PTK)的会话密钥。PTK 通过成对主密钥(Pairwise Master Key, PMK)、AP 随机数 ANonce、STA 随机数 SNonce 和双方 MAC 地址等计算生成,其中 PMK 由登录密码等双方均已知的信息计算生成。而后续正常数据加密所使用的临时密钥(Temporal KEY, TK)即派生自 PTK。各密钥、参数的关系如下图所示。
 
四次握手中各密钥、参数关系
 
图 2  1 四次握手中各密钥、参数关系
 
    四次握手的过程可概括如下:
 
    1.AP 发送自己的随机数 ANonce 给 STA;
 
    2.STA 生成随机数 SNonce,计算出 PTK,并将 SNonce 和信息完整性校验码 MIC 发送给 AP;
 
    3.AP 收到 SNonce,计算出 PTK(此时双方都已有 PTK),将组密钥GTK加密后连同 MIC 发给 STA;
 
    4.STA 收到 GTK,安装 PTK 和 GTK,发送 ACK 确认。AP 收到确认后安装 PTK。
 
 四次握手过程
 
图 2 - 2 四次握手过程
 
    Vanhoef 将披露的漏洞攻击命名为 KRACK(Key Reinstallation Attack),攻击者通过在 Wi-Fi 范围内利用中间人的手段对 WPA/WPA2 协议的四次握手交互验证的第三阶段进行攻击。此时受害者已经安装了密钥,通过中间人手段进行增量式重放攻击后,迫使受害者使用攻击之前的密钥流加密数据。鉴于 WPA/WPA2 为对称加密,因此可以通过简单的明文密文得到可重复利用的密钥流。攻击者一旦获得密钥流就可以对 Wi-Fi 流量数据解密。
 
    2.1 利用原理
 
    此漏洞利用的核心在于密钥重装,该模式基于WPA/WPA2协议中建立连接时的四次握手流程。在四次握手过程中,AP和客户端将会协商一个用于加密接下来通信数据的加密密钥,客户端在收到AP发来的第三次握手的信息(消息3)后会核实MIC,若正确将会安装加密密钥key,用于加密正常的数据帧,并向AP发送响应作为确认。根据协议规则,若AP无法正确接收到确认,将引发数据重传,重新发送消息3。客户端每次接收到消息3时都会重装相同的会话密钥。攻击者可利用此次握手过程,暴力增量式发送消息3,从而强制重置数据保密协议使用的增量传输数据包数(nonce)和接收重放计数器,导致密钥重用。攻击者可以通过这种方法重放、解密和/或伪造数据包。
 
    KRACK攻击可分为4种场景:
 
    1.客户端(受害者)接受消息3的明文重传时的密钥重装攻击;
 
    2.受害者仅接受消息3的加密重传时的密钥重装攻击;
 
    3.对组密钥握手攻击即时密钥安装;
 
    4.对组密钥握手攻击延迟密钥安装。
 
 接受消息3明文重传时执行密钥重装攻击示意图
 
图 2 - 3 接受消息3明文重传时执行密钥重装攻击示意图
 
    图2-3中展示了攻击者解密一个密文数据包的攻击流程。如果攻击者已知第一个发送的密文数据包的明文,则可以恢复出用于加密该明文数据的密钥流。由于四次握手协议的设计允许通过重传消息3来重装密钥PTK和GTK,并重置待发送数据包的nonce值,导致客户端使用相同的密钥流加密下一个数据包,进而导致攻击者可以解密客户端发送的下一个密文数据包。
 
    上述解密过程是基于攻击者知道第一个数据包明文这一前提,然而攻击者有时无法预知数据包中的全部字段值(比如可能存在的随机字段), 所以攻击者可能需要多次重传消息3以收集更多数据来进行解密。图2-3中仅展示了恢复一个密文数据包的攻击过程,但是攻击者可以通过多次重传并合理选择重传时机(等待客户端在重传之前发送足够多的数据),甚至通过解除对客户端的认证来迫使客户端重新执行四次握手协议,实现解密多个数据包的目的。
 
 接受消息3明文重传时使用全0替换真实密钥攻击示意图
 
图 2 - 4 接受消息3明文重传时使用全0替换真实密钥攻击示意图
 
    由于2.4和2.5版本的 wpa_supplicant(Android 6及以上的版本)在收到重传的消息3后对密钥重装过程的错误实现,使得在客户端接收到攻击者重传的消息3后,数据加密密钥 TK 被置为全0。这一错误实现极大的简化了密文恢复攻击,利用数据加密密钥为全0这个信息,攻击者不再需要已知明文条件就可以解密客户端发送的后续数据包。基于上述背景,攻击者通过中间人攻击迫使客户端改用全0的密钥之后,就可实现对客户端流量劫持,监控并篡改客户端发出的全部数据。
 
    2.2 KRACK攻击中nonce重用的密码分析
 
    Nonce 重用引发的后果与所采用的数据保密协议密切相关。三种数据保密协议TKIP、CCMP和GCMP所采用的数据加密算法分别为流密码RC4、认证加密算法AES-CCM和认证加密算法AES-GCM,其中AES-CCM和AES-GCM的加密部分都是基于CTR模式的流式加密。即可认为TKIP、CCMP和GCMP三种协议均采用流式加密,即明文数据与算法生成的密钥流按比特逐位异或后得到密文数据。流式加密的问题是在密钥固定的条件下重用nonce时总会生成相同的密钥流。这一特性可以被利用来解密数据包。
 
 CTR模式下加密过程示意图
 
图 2 - 5 CTR模式下加密过程示意图
 
    上图展示了CTR模式下用密钥k和计数器ctr加密明文消息无线网络(WI-FI)保护协议标准WPA2漏洞综合分析报告的过程,其中无线网络(WI-FI)保护协议标准WPA2漏洞综合分析报告分别表示一个分组长度(采用AES算法时为128比特,明文消息长度并不一定是分组长度的整数倍)。注意图中没有展示CCM和GCM模式中应用CTR模式进行加密时所涉及到的一些细节。正确使用的情况下,计数器ctr的值不断累加(值不重复!!)并在算法和密钥的作用下生成具有强伪随机特性的密钥流,无线网络(WI-FI)保护协议标准WPA2漏洞综合分析报告则对应的密文无线网络(WI-FI)保护协议标准WPA2漏洞综合分析报告为TKIP中基于RC4流密码的加密过程与此类似不再赘述。
 
    在KRACK的攻击中,通过重放消息3能够达到迫使受害者重用nonce,导致上述加密过程中相同计数器ctr值的重复出现。相同密钥相同计数器ctr条件下,生成的密钥流无线网络(WI-FI)保护协议标准WPA2漏洞综合分析报告值相同,攻击者可据此解密数据包。用KeyStream表示该密钥流,P1和P2表示两组明文数据,假设KeyStream,P1,P2具有相同的比特长度,则两组明文对应的密文分别为:
 
    C1 = P1 ^ KeyStream
 
    C2 = P2 ^ KeyStream
 
    其中 ^ 表示逐比特异或操作。攻击者可以通过网络收集到密文C1和C2,如果攻击者知道密文C1对应的明文P1,则可以据此恢复明文P2的信息:
 
    P2 = C2 ^ keystream = C2 ^ (P1 ^ C1)
 

责任编辑:李欢
本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。
e-works
官方微信
掌上
信息化
编辑推荐
新闻推荐
博客推荐
视频推荐