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

著名的计算机学术安全会议CCS在2017年录用了一篇名为Key Reinstallation Attacks: Forcing Nonce Reuse in WPA2的学术论文,看起来,这和其他的上百篇同样将要在11月1日在美国达拉斯喜来登酒店会议中心一起登场报告的论文没有太大的差别,然而就在4天前,这篇论文的作者借助网站KRACK Attacks: Breaking WPA2点燃了整个网络世界,我们打开的浏览器突然被各种劲爆的新闻标题塞满了:“WPA2加密协议已被攻破”,“WiFi危机!”,“WiFi爆惊天漏洞”。随之而来的是大量的安全服务商、安全解决方案商借机狠狠地公关了一把,推出相关的安全防护产品的速度惊人。然而,我们阅读了攻击发现者的网站和他的论文,又把几乎所有的新闻报道浏览了一遍,感觉作者有意在引起所有人的注意力,而互联网世界又非常配合地把恐慌的气氛推向了高潮。作为一个学术研究团队,我们在安全危机的表象下,总是会质问这个攻击事件本身两个问题:KRACK攻击的本质到底是什么?KRACK攻击会对什么场景造成实质性的安全危险?如果不能精确地向公众去解释这两个问题,安全研究人员和安全企业就应该反省自己的失职。很遗憾,我们完全不能认同论文作者 Mathy Vanhoef 在相关网站上写下的相关言论的倾向:面向学术界的论文,可以最严谨的强迫症去研究和处理哪怕是最轻微的安全问题,因为学术研究人员会以客观冷静的态度来审视这些问题;而面向公众的宣传则需要告诉大家危害的边界和不受影响的情况,只为了一个大新闻而宣传,那还是too young too simple呐!

那么,让我们来试图回答一下这篇论文所导引到的两个问题:KRACK攻击的本质到底是什么?KRACK攻击会对什么场景造成实质性的安全危险?其实不论是论文还是诸多出现的分析文章,都用了冗长的篇幅去解释这个漏洞,但是这个漏洞可以用简单的一句话来总结:WPA协议存在一个消息重放漏洞,导致相同的密钥(Crypto Key)被反复使用在不同的会话(Session)上。这个攻击也就是作者所说的Key Reinstallation Attacks,重点就在于相同的密钥被反复用在不同的会话上。更简单一点,就是存在多组密文数据,被相同的加密密钥(包括Nonce)进行了加密。这种加密模式背后所关联的潜在安全性破坏,就是KRACK攻击的本质危害。

那么你可能要问,多组密文数据被相同的加密密钥加密,存在什么危害呢?首先我们要指出,即使在KRACK攻击的场景下,攻击者知道有多组密文数据被同一密钥加密,但是他并不知道这个密钥是什么(特殊情况即全零密钥后续会讨论)。这里之所以产生了问题,很大程度上是因为WPA加密协议在这里采用的是stream cipher加密(即用一个伪随机密钥流逐字节去异或明文),具体而言,攻击的本质是通过拦截和重放一些握手关键数据包,使得双方已经在使用的密钥被重新安装,同时伴随着相关参数的重置,就会导致用于加密明文的密钥流被重复使用。为说明方便,下面使用一个略不严谨的表达来进行阐述。

`ciphertext = plaintext xor AES(key, IV||counter)`

原本在key和iv不变的情况下,只要counter从0开始每次增加1,那么所产生的密钥流就不会重复,安全性没有任何问题。但由于重新安装密钥后,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(r+2))是可以确定其大部分内容的,这样就可以比较容易地得出p2(也就是客户端发送的Data)中相应长度的内容。而对于其他p1和p2都无已知信息的情况下,恢复p1和p2是比较困难的。而且,由于在这种攻击场景下,攻击者只能对client或者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

Don't Panic! KRACK 没你想象的那么糟相关推荐

  1. 阿里P8高级架构师:面试没你想象中的难,拿Offer也可以很轻松

    阿里P8高级架构师:面试没你想象中的难,拿Offer也可以很轻松 一.概述 面试,难还是不难?取决于面试者的底蕴(技能).心态和认知及沟通技巧.面试其实可以理解为一场聊天和谈判,在这过程中有心理.思想 ...

  2. 家长心态建设;一切都没想象的那么糟

    爱加壹教育魏琛琛博士从事了十几年的教育教学工作,期间接触了数不清的家长朋友,每每在和家长谈及孩子的教育问题时,每个家长都会倒不完的苦水,孩子的各种问题,让家长们操碎了心.魏琛琛博士非常理解家长的一片良 ...

  3. “ 很多事情根本没你想象的那么难,大胆一点去尝试,只要你尽了自己最大努力,其它就交给时间吧。有时候去是缘分,不去也不一定不好,说不定有更好的再后面等着你。我觉得上天给我的,总是比我要的多的多。 ”

    " 很多事情根本没你想象的那么难,大胆一点去尝试,只要你尽了自己最大努力,其它就交给时间吧.有时候去是缘分,不去也不一定不好,说不定有更好的再后面等着你.我觉得上天给我的,总是比我要的多的多 ...

  4. 1110 - 好像事情没我想的那么糟

    之前很长时间一直陷入这样一种担忧:自己目前做的产品,用户增加比较慢,进而收入增加也比较慢.于是,就开始各种怀疑了:是不是产品定位有问题?运营没做好?等等. 现在,慢慢开始觉得,思考这样的事情,是好的: ...

  5. 成长,没你想象的那么迫切

    20多岁,你迷茫又着急.你想要房子你想要汽车,你想要旅行你想要享受生活. 你那么年轻却窥觑整个世界,你那么浮躁却想要看透生活. 你不断催促自己赶快成长,却沉不下心来安静的读一篇文章:你一次次吹响前进的 ...

  6. 成长,没你想象得那么迫切

    20多岁,你迷茫又着急.你想要房子你想要汽车,你想要旅行你想要享受生活. 你那么年轻却窥觑整个世界,你那么浮躁却想要看透生活. 你不断催促自己赶快成长,却沉不下心来安静的读一篇文章:你一次次吹响前进的 ...

  7. 跳出误区:Java程序员进阶架构师真的没你想象的那么简单......

    小团队一般 10 人左右,其中常常是技术最牛的人做架构师(或TL).所以,架构师在广大码农中的占比大概平均不到 10%.而架构师也可以分为初级.中级.高级三档,江湖上真正高水平的软件架构师就更少了. ...

  8. word椭圆形标注怎么设置_轻松应对毕业季,搞定论文图表,word中处理原来没你想象的那么难...

    office 实战案例分享,做有意义的事情,每天进步一点点,今天比昨天好,这不就是希望么? 问题: 毕业季了,很多同学在忙碌的准备论文了.大多数情况下,为了支撑论文论点,就免不了会有数据以及表格.图表 ...

  9. 现代生活已经离不开的银行卡支付,背后原理其实没你想象的那么难!

    虽然现在我们主流的支付方式是使用支付宝/微信支付,但是当我们余额不足,或者选择从银行卡扣款时,将就会使用到银行卡支付. 所以今天我们就来来讲讲银行卡支付的相关原理,科普一下银行卡支付整个流程. 银行卡 ...

最新文章

  1. 基于BitBox的Wormhole SDK 已迭代至1.0.0版本
  2. tf记录 之 tf.boolean_mask函数
  3. git报ssh variant 'simple' does not support setting port解决办法
  4. 2018级软件秋季总结
  5. 9-算法 kmp算法
  6. Java 面向对象 之 静态内部类
  7. 数据库练习集1--读书笔记
  8. JS连接数据库(需配置odbc)
  9. Linux -- file 命令
  10. MyCat分片规则之取模分片
  11. ESP32 LVGL8.1 ——Style Text 设置文字样式 (Style 8)
  12. excel快速删除奇偶数行
  13. android menu 键值,Android KeyCode安卓手机按键对应键码键值
  14. axios封装需要注意的增删改查传参易混淆点
  15. 流程自动化(RPA)的发展和应用
  16. Modelsim仿真实验
  17. 刚刚,京东推出“小京鱼”平台和五款智能新品,全面押注IoT
  18. java递归把list菜单列表转为菜单树
  19. Harbor再次安装与使用
  20. 求三角形面积 ← 海伦公式

热门文章

  1. 河流淹没分析_【专题归纳】关于河流地貌的知识点整理!附中国十二条著名江河名称的由来...
  2. 安装2000数据库的时候挂起
  3. c语言上机实验作业答案,第十二次C语言上机实验参考答案
  4. linux 用户设密码,linux 上添加用户,设置密码
  5. python检测excel是否打开_Python判断远程服务器上Excel文件是否被人打开的方法_学领未来...
  6. 数据挖掘十大算法之C4.5
  7. http请求状态码表示的意义
  8. 计算机存储系统中,有哪些措施可以提高 CPU 访问存储系统的速度?
  9. 【知识索引】【Java程序设计】
  10. com.alibaba.fastjson.JSONArray cannot be cast to com.alibaba.fastjson.JSONObject