翻译自http://www.isaac.cs.berkeley.edu/isaac/wep-faq.htmlhtml
这篇文章讲述了咱们对有线等效加密协议(WEP, 802.11标准的一部分)的一些分析, 由Nikita Borisov, Ian Goldberg, 和David Wagner 3人共同完成. 若是你有任何疑问, 请经过wep@isaac.cs.berkeley.edu与咱们联系.web
咱们已经在WEP中发现了一些的漏洞, 它们极大地削弱了系统的安全性. 具体来说, 咱们发现了下述几种攻击手法:算法
咱们的分析代表, 全部的这些攻击手法, 只须要使用便宜易得的设备, 能够很容易地实施起来. 咱们建议任何使用802.11无线网络的用户不要依赖WEP来提供安全性, 而应该使用其它安全措施来保护他们的无线网络.
注意, 咱们的攻击手法同时适用于40位和128位的WEP. 它们一样也适用于采用802.11b标准的无线网络(802.11b是对802.11的扩展, 能够支持更高的数据传输速率, 但仍然保留使用WEP协议).shell
802.11标准制订了无线局域网的通讯规范. 有线等效加密协议(WEP)被用来防止无线通讯被窃听. WEP的另一个功能是防止对无线网络的未受权访问; 该功能并不是802.11标准的明确目标, 但它经常被认为是WEP的一项特性.编程
WEP依赖于在移动站(例如,带有无线网卡的笔记本)和接入点(即基站)之间共享的密钥. 该密钥被用来在发送数据以前加密数据, 还有一个完整性检查被用来确保数据包在传输过程当中没有被篡改. 标准并未说明密钥是如何创建起来的. 在实践中, 大多数设施在全部移动站和接入点之间共享一个单一密钥. 更复杂的密钥管理技术能够帮助阻止咱们所描述的攻击; 可是, 据咱们所知, 尚未商业产品支持这种技术.安全
下面的两节内容分别说明了协议中存在的问题以及攻击的技术细节; 这些内容假设读者具有一些加密协议方面的背景知识. 你不妨直接跳转到下述章节, 它们讨论了攻击的可行性.服务器
WEP使用RC4加密算法, 这是一个流密码. 流密码的原理是将一个短密钥扩展为一个无限的伪随机密钥流. 发送者经过将密钥流与明文进行XOR操做获得密文. 接收者拥有一样的短密钥, 使用它能够获得一样的密钥流. 将密钥流与密文进行XOR操做, 便可获得原来的明文.网络
这种操做模式使得流密码容易遭受几个攻击. 若是攻击者翻转了密文中的一位, 解密以后, 明文中的相应位也将被翻转. 此外, 若是窃听者截获到了两份使用相同密钥流加密的密文, 则他也可以知道两个明文的XOR结果. 已知XOR能够经过统计分析恢复明文. 统计分析随着更多使用相同密钥流加密的密文被截获而变得更实用. 一旦其中一个明文已知, 很容易就能够恢复全部其它的.less
WEP对这些攻击均有防护策略. 为了确保数据包在传输过程当中未被修改, 它在数据包中使用了一个完整性检查(IC)的字段. 为了不使用相同的密钥流对两份明文进行加密, 一个初始化向量(IV)被用来与共享密钥一块儿, 针对每一个数据包产生不一样的RC4密钥. IV也被包括在数据包中. 然而, 它们均没有被正确实现, 致使了糟糕的安全性.ide
完整性校验字段被实现为一个CRC-32校验和, 它是数据包有效载荷的一部分. 然而, CRC-32是线性的, 这意味着能够根据数据包的位差别计算出它们的CRC-32之间的位差别. 换句话说, 翻转消息中的第n位, 能够明确推算出其CRC-32中必须被翻转的位, 以产生与修改以后的消息对应的校和. 由于位翻转在RC4解密以后被仍然生效, 这使得攻击者能够任意翻转加密消息中的位, 并正确调整它的校检和, 使最终获得的消息看起来合法.
WEP中的初始化向量是一个24位的字段, 做为消息的明文部分被发送. 初始化向量的取值空间如此之小必然会致使相同密钥流的重复使用. 对于一个繁忙的接入点, 它不断以11Mbps的速度发送1500字节的数据包, 将在1500 * 8 / (11 * 10^6) * 2^24 = ~18000秒, 或5小时耗尽IV. (时间可能会更少, 由于许多数据包小于1500字节.) 这容许攻击者收集以相同密钥流加密的密文, 而后经过统计分析来恢复明文. 更糟的是, 当全部移动站使用相同的密钥时, IV冲突的几率将会更高. 例如, Lucent的无线网卡在网卡初始化时将IV重置为0, 而且每发送一个包将IV递增1. 这意味着, 在大体相同的时间插入的两个网卡将为攻击者提供丰富的IV冲突机会. (更糟糕的是, 802.11标准规定, 改变与每一个数据包的IV是可选的!)
第一种攻击手法直接源自上面的分析结果. 一个被动的窃听者能够拦截全部的无线流量, 直到发生IV冲突. 经过对两个使用同一IV产生的密钥流加密的密文进行XOR操做, 攻击者便可得到两个明文消息的XOR结果. 所得XOR结果能够用来推断两个消息的明文内容. IP流量每每具备很好的可预测性, 并包括了不少的冗余数据. 这些冗余数据能够用来消除不少关于消息明文的可能性. 对消息内容的进一步可信猜想, 能够从统计上减小消息明文可能性的搜索范围, 在某些场景下, 甚至能够肯定明文的确切内容.
当仅基于两个数据包的统计分析还不能肯定结果时, 攻击者能够寻找更多的IV碰撞. 在多花一些时间的前提下, 彻底有可能恢复至关数量的使用相同密钥流加密的数据包, 而且统计分析的成功率将快速增加. 一旦有能够恢复其中一条消息的明文, 全部其它使用相同IV加密的消息之明文都可恢复, 由于全部的成对XOR结果是已知的.
对这种攻击手法的一个扩展方法是, 使用互联网上某处的一台主机从外部向无线网络内部的一台主机发送数据流量. 这种流量的内容对攻击者而言是已知的, 即明文是已知的. 当攻击者在802.11上拦截到由他发送的加密消息时, 他将可以解密全部使用相同的初始化向量加密的报文.
下面的攻击手法也是直接源自上面的分析结果. 假设攻击者知道了一条加密消息对应的明文. 他能够利用这些知识来伪造合法的加密数据包. 该过程包括构造一条新的消息, 计算其CRC-32, 并在原来的加密消息之上进行位翻转, 将明文消息变为新消息. 这里的原理是, RC4(X) xor X xor Y = RC4(Y). 这一数据包如今能够发送给接入点或移动站, 它将做为一个有效的数据包而被接受.
经过细小的变形, 这种攻击手法能够变得更加阴险. 即便不能彻底知道分组的内容, 也能够翻转消息中选定的部分位, 并正确调整其加密形式的CRC(如前一节中描述的), 获得一个通过篡改可是仍然正确的加密数据包. 若是攻击者知道某个数据包的部份内容, 他能够拦截它, 并在其上执行选择性地修改. 例如, 能够修改经过telnet会话发送给shell的命令, 或者修改与文件服务器之间的交互命令.
上面的攻击手法能够被进一步扩展, 以解密任意数据流量. 在这里, 攻击者并不是猜想数据包的内容, 而是数据包的包头. 一般来说, 这些内容是很容易知道或者猜想的; 实际上, 咱们只须要猜想目标IP地址. 借由这一点, 攻击者经过翻转某些位来改变目标IP地址, 经过恶意移动站进行传送, 来将数据包发送到在互联网上某处由他控制的机器上. 大多数无线设施都链接到了互联网之上; 数据包将被接入点解密, 并将解密以后的包经过合适的网关和路由器转发到攻击者的机器上, 获得明文. 若是还能够猜想到TCP报头, 甚至能够修改数据包的目标端口号为80, 这使得它能够经过大多数防火墙.
狭小的IV取值空间容许攻击者构建一个解密字典. 一旦他知道了某个数据包的明文, 他就能够计算出该IV对应的RC4密钥流. 该密钥流能够用来解密其它全部使用相同IV的数据包. 随着时间的推移, 使用上面的技术, 攻击者能够构建一个IV-密钥流字典. 这个表只须要极少的存储空间(~15GB); 一旦构建成功, 攻击者能够解密该无线链路上任何一个数据包.
尽管解码2.4GHz的数字信号有难度, 可是监听802.11数据传输的硬件对于攻击者来讲则是现成的, 即普通的802.11消费者产品. 这些产品具有全部必要的监听能力, 攻击者所须要作的即是让它物尽其用.
尽管大多数802.11设备被设计为忽略那些它们未知的加密内容, 可是经过修改网卡驱动的配置, 咱们仍是可以成功地截取到使用WEP加密的数据流量. 咱们可使用混杂模式让网卡固件将未知的密文返回到咱们这里来以便进行进一步的检查和分析.
主动攻击(这种手法要求传输数据, 而不仅是监听数据)看起来更困难一些, 但并不是不可能. 大多数802.11产品拥有可编程固件, 能够逆向工程并修改它来向攻击者提供注入数据流量的能力. 固然, 这样的逆向工程须要投入至关长的时间(咱们本身没有这样作过), 但须要注意的是, 这是一个一次性投入. 一群有能力的人能够共同致力于此, 而后经过地下圈子分发恶意固件, 或将其出售给对间谍活动有兴趣的团体. 这是一个高利润的业务, 因此投入的时间能够很容易地赚回来.
有线等效加密协议(WEP)不安全. 这个协议的问题在于, 设计者错误地理解了密码学原语, 致使以一种不安全的方式来组合使用它们. 这里的攻击手法代表, 邀请密码协议设计方面的专业人士进行公开审稿是多么地重要; 只有这样作了以后, 才能真正地避免这里指出的问题.