首页 > 编程知识 正文

turn,dont fight the feeling音译

时间:2023-05-05 01:52:49 阅读:10598 作者:1056

上海交通大学密码与计算机安全实验室(LoCCS )软件安全组(GoSSIP )版权所有,转载请联系作者。

知名计算机学术安全会议CCS于2017年采用了一篇名为keyreinstallationattacks 3360 forcingnoncereuseinwpa 2的学术论文。 这与其他100篇同样将于11月1日在美国达拉斯喜来登酒店会议中心一起登场的报告论文看起来没有太大的差别。 但就在四天前,这篇论文的作者利用网站KRACK Attacks: Breaking WPA2点燃了网络世界。 我们打开的浏览器突然显示“WPA2加密协议被打破了”、“WiFi危机! ”的强烈新闻标题占满了。 WiFi漏洞。 随之而来的是,众多安全服务商、安全解决方案商借机激烈宣传,推出相关安全产品的速度惊人。 但是我们读了攻击发现者的网站和他的论文,还读了大部分新闻报道。 作者有意引起所有人的注意,觉得网络世界似乎把恐慌的气氛推向了高潮。 作为学术研究小组,我们总是在安全危机的表象下,问这个攻击事件本身的两个问题。 KRACK攻击的本质到底是什么? KRACK攻击会给哪些场景带来实质性的安全危险? 如果不能正确地向公众说明这两个问题,安全研究者和安全企业就必须反省自己的失职。 很遗憾,我们完全不能同意论文作者Mathy Vanhoef在相关网站上写的相关言论倾向。 面向学术界的论文,即使是最严格的强迫症和最轻微的安全问题也可以研究和处理。 为什么这么说,是因为学术研究者会以客观冷静的态度看待这些问题。 虽然面向公众的宣传需要传达危害的界限和不受影响的情况,但是只为了大新闻进行宣传,还是too young too simple吧。

现在,让我们来回答这篇论文导出的两个问题。 KRACK攻击的本质是什么? KRACK攻击会给哪些场景带来实质性的安全危险? 事实上,无论是论文还是很多分析文章都使用了很长的篇幅来说明这个漏洞,但这个漏洞可以用简单的一句话来概括。 WPA协议具有消息播放漏洞,并且“相同密钥”(Crypto Key )在不同的会话中重复使用。 这种攻击是作者所说的Key Reinstallation Attacks,重点是同一密钥在不同的会话中重复使用。 更简单地说,存在多个密文数据组,并由相同加密密钥(包括Nonce )加密。 这种加密模式背后的潜在安全破坏是KRACK攻击的本质危害。

那么,多组密文数据用同一加密密钥加密,有什么危害呢? 首先,即使在KRACK攻击的情况下,攻击者也知道多组密文数据是用同一密钥加密的,但不知道密钥是什么(特殊情况下,即全零密钥将在后面讨论)。 这里出现问题是因为WPA加密协议在这里采用了stream cipher加密。 具体而言,攻击的本质是拦截和播放握手的重要数据包,从而重新安装双方已经使用的密钥,随着相关参数的重置,用于加密明文的私钥流将被重用。 为了便于说明,以下使用稍微不严密的表现进行叙述。

` ciphertext=plaintextxorAES(key,IV||counter )。

如果key和iv原本不变,如果counter从0开始一个接一个地增加,则生成的密钥流不会重复,安全性没有任何问题。 但是,重新安装密钥后,key和iv没有变化,counter却重置为0。 这样生成的秘密密钥流与复位前的秘密密钥流完全相同。 stream cipher加密不应该重用私钥流。 如果有两组用同一密钥加密的密文,则可以通过相互异或来擦除密钥流。 如果攻击者已经知道与一个密文对应的明文,则与另一个密文对应的明文将通过此运算获得。

然而,这种称为key reuse attack的KRACK攻击的普遍形式的影响是有限的,因为key reuse窗口的大小受到限制,并且可以推测明文不确定性。 仅解码、播放和有条件地伪造具有秘密密钥流重用的消息的一部分。 一些设备的攻击窗口小,重用私钥流短,限制了可以解密的数据的长度。 例如,可以对某些将重发消息作为密文接收的设备执行的攻击如下图所示。 图中的红框中,是在重新安装key之前和之后使用相同密钥流的两个消息。 在重新安装key之前,只能发出图中所示的一条消息,因此可恢复的数据长度最多与此消息长度相同。

另外,即使再利用的秘密密钥流长,受解密原理的影响,能够解密的消息的内容仍然存在较大的不确定性。 如上所述,为了解密消息,使用了重复的私钥流。 也就是说,如果攻击者看到的两个密文c1、c2使用同一私钥流加密,则存在c1 xor c2=p1 xor p2。 如果知道c1和c2,则p1和p2需要做一些工作才能分别确定准确的内容。 上图的情况下是相对简单的一类,p1 (即msg4(r2 ) )可以指定其大部分内容,从而比较容易地确定p2 (即客户端发送的Data )中相应长度的内容。 如果没有关于其他p1和p2的已知信息,则难以恢复p1和p2。 然后,在这样的攻击场景中,攻击者可以在客户端或AP的任意一端(

据论文中提到的两种不同的攻击模型)发出的加密数据包产生威胁,而对没有产生key reuse的另一端是无法构成任何威胁的,这就限制了攻击者只能在通讯的最初阶段动一些手脚,而无法对稍微复杂的协议的后续数据进行攻击,例如一个HTTP通讯,还没有进入到TCP握手阶段,key reuse attack已经无法生效了,更不要提威胁后续的实质内容。

 

KRACK攻击中真正造成较为严重后果的,是一种可被称为 zero key attack 的特殊攻击形式(也是作者在其给出的DEMO中利用的攻击),这种攻击利用了Linux上wpa_supplicant版本为2.4、2.5、2.6的wifi客户端(包括Android 6.0及以上版本和Android Wear 2.0等安卓设备)上的一个代码实现的问题。由于编程安全实践要求程序在初始化密钥后,会将之前包含密钥材料的缓冲区内存清零,可是当发生重放攻击后,程序并没有“记住”自己已经将密钥材料缓冲区清零了,又回头去读取了那一块内存区域,这时候密钥一定是由全零的数据衍生而来,也就是说,攻击者可以完全预测之后wifi加密数据包所使用的密钥,那么设备发给wifi的所有数据包都可以被解密,进而导致一个AP替换的攻击。由于这是一种代码实现和协议问题结合导致的安全漏洞,因此在Windows、iOS等诸多平台上随着实现不同,这类攻击并没有办法生效。

特别值得指出的是,即使存在这样一种特殊情况,KRACK攻击也无法威胁端到端加密(TLS协议等用于安全通讯的加密),而demo中所演示的原本的https通信被替换为http通信,则是因为挑选的演示网站http://match.com本身配置存在问题,没有做好抵抗sslstrip攻击的防护,而实际上正确配置的TLS站点,即使zero key attack也是无法完成攻击的(再次感叹下作者的用心良苦!!!)

 

总结一下,KRACK攻击是针对WPA协议中非常短暂的连接协商部分的攻击,在普遍情况下,对后续的通讯的影响有限,而且这种攻击完全无法推导出wifi密码,也不能获取到会话密钥,更不能利用此攻击伪造已经建立了信任的两方(AP和客户端)中的任意一方。KRCAK攻击所声称的可以窃取敏感信息,诸如信用卡号、密码、聊天消息、邮箱、照片等,其需要的满足条件包括:

* 客户端版本是Linux wpa_supplicant v2.4, v2.5, v2.6,也就是Android版本是6.0及以上,以及Android Wear 2.0的设备。(只有以上设备在重新安装后key会被置为全零)

* 包含敏感信息(如信用卡号、密码、聊天消息、邮箱、照片等)的网络请求,没有被安全保护,如直接使用http发送(这种情况无需krack攻击,只要在网络链路的其他节点,就可以直接看到明文)、使用可被strip为http的https发送(同样攻击者可以无需在客户端与Wifi间的链路上进行,而可以在网络链路的其他节点进行strip攻击)

 

最后,作为安全学术研究人员,我们希望安全学术研究、安全学术会议在保持对现实系统一丝不苟、不放过一点点可能威胁的同时,也能够对公众更多地发出Don't Panic的声明。没有绝对安全的系统,我们的目标是让系统更安全的同时,也让大家能更有安全感^_^

转载于:https://www.cnblogs.com/h2zZhou/p/7716650.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。