最近出现的对无线互联网安全标准,特别是对Wi-Fi受保护访问(WPA)安全标准的破解,给企业的网络和敏感商业信息或数据带来了新的威胁。本文介绍了 避免遭受这种密码攻击的最佳手段。同时解释了WEP,WPA,WPA2之间的区别,以及对WEP的破解如何导致802.11标准的进化。

802.11的有线等效加密标准(WEP)已经在7年前就被破解了。Wi-Fi受保护访问(WPA)标准是WEP的第一个替代品。从2003年底开始,所 有经过Wi-Fi认证的产品都必须使用WPA。但在2008年底公布的WPA被破解的消息,确切地说是一个对临时密钥完整性协议(TKIP)所使用的消息 完整性检查(MIC)的攻击。尽管出现了这次攻击,但并不代表使用WPA的无线局域网络(WLAN)走到了尽头,只能说明该标准存在安全问题,值得我们注 意,并需要采取措施避免其所带来的影响。


预备知识

要应对最新的这次攻击,我们首先要了解WEP、WPA和WPA2之间的区别,以及对WEP的破解是如何推动802.11标准的发展的。

WEP使用RC4对无线接入点(AP)和客户端之间交换的数据进行编码,即加密。同时利用循环冗余校验(CRC)来发现错误。任何人都可以记录用WEP加 密的数据包,但要想读懂这些数据包的内容,则需要用WEP密钥进行解密。但不幸的是,黑客们很快就掌握了通过分析用WEP加密的数据包来猜出所用的密钥 (即破解)的方法。因为对一个特定的无线接入点来说,所有向它发送数据的客户端都使用相同的WEP密钥对全部传送的数据包进行加密。这样,一但破解出数据 传送所用的密钥就可以对以后收到的任何人发送的任何数据包进行解密。也就是说802.11标准不能通过使用WEP真正的阻止数据泄露。

TKIP作为补丁很快就出现了,它弥补了早期无线接入点(AP)和客户端被WEP削弱的安全性。TKIP不再使用相同的密钥来加密每一个数据包,它使用的 RC4对每一个数据包分配了不同的密钥。这些随数据包而变的密钥化解了黑客们对WEP加密方法的破解。另外,TKIP还使用了带密钥的消息完整性检查 (MIC)技术来发现那些被重放和仿冒的数据包。虽然谁都可以从网络中截获经过TKIP加密的数据包,然后对这些数据包进行修改,最后再将它们发送到网络 中去(注入),但这些数据包最终都会被丢弃,因为在对MIC和校验和进行检查时就会发现它们与数据包所携带的数据不匹配。当采用TKIP的无线接入点收到 第一个不正确的MIC时,就会发送一个错误报告。如果在60秒内又收到了第二个不正确的数据包,则无线接入点就会停止监听1分钟,然后再为无线局域网更换 密钥,即要求所有的客户端都开始使用新的“成对主密钥”去生成MIC密钥和用于每个数据包的各不相同的加密密钥。

这样就弥补了WEP留下的多个漏洞。任何经过WPA认证的产品都可以利用TKIP和它所使用的MIC抵御对802.11的各种窃听、仿冒和重放攻击 (replay attack)。其实早在2003年IEEE就已经知道了还有多种更有效和更鲁棒的方法来实现这种安全性。这就是为什么802.11i定义了基于先进加密 标准(AES)的密码块链信息认证码协议(CCMP)来代替TKIP和MIC。现在所有经过Wi-Fi认证的产品都必须支持Wi-Fi保护访问版本 2(WPA2),它要求由用户来选择适用于自己的无线局域网的安全方案。经过WPA2认证的无线接入点在与旧的客户端交互时,可以接受TKIP或AES- CCMP安全方案,但在与新的客户端交互时,只支持AES-CCMP。


挑战WPA的完整性


如果有读者对密码攻击及其背后的数学问题感兴趣,建议他们去读一读“对WEP和WPA的实际攻击”(Practical attacks against WEP and WPA)这篇文章,这是由研究人员Martin Beck 和Erik Tews撰写并于2008年11月提交到PacSec2008会议上的论文。但我们在这里只是对相关知识作一简单介绍,解释一下最近这次攻击能够实现什 么,不能实现什么,以指导读者如何避免成为这种攻击的受害者。

随着时间的推移,WEP的破解者变得越来越聪明了,他们使用一些名称古怪的新方法,如:Korek、PTW和Chopchop就可以更快地恢复出WEP密 钥来。Tews和Beck在十一月份提交的论文中描述了如何应用Chopchop风格的攻击很快地恢复出MIC密钥,而不是WEP密钥或者TKIP成对主 密钥。当攻击者获取了用户的MIC密钥后就可以对发往无线客户端的经TKIP加密的数据包进行修改,并重新发送出去。例如,攻击者可以向你的客户端发送一 份伪造的ARP应答,使得这些客户端将数据包指向错误的局域网设备。

那么这种攻击是如何实施的呢?首先,要抓取一个使用TKIP加密的数据包,数据包的内容应该是事先完全知道的。ARP消息就比较合适。因为这种数据包很容 易识别,而且它所携带的数据基本上是可以预知的,除了源和目的IP地址的最后一个字节,当然也不包括MIC及校验和。

然后,对这个加密的数据包进行重放,以试图猜出正确的MIC和校验和。如果校验和出错了,无线接入点会认为是传输错误造成的,只是简单地将这个数据包丢 弃。如果校验和是正确的,而MIC出错了,无线接入点就会发送一个MIC错误报告帧。攻击者必须重复这一过程,直到猜出正确的MIC。这时,攻击者同时获 得了数据和相应的MIC,可以很容易地计算出MIC密钥。

但对于一次实际的攻击,攻击者必须能在很短的时间内猜出那个密钥,以免触发了防护机制对密钥进行更换。为了避免触发密钥更新,攻击者在每分钟内只能造成一 个错误的MIC。可是,在支持Wi-Fi多媒体(WMM)服务质量(QoS)的无线接入点中,要为每一个优先级分配一个不同的计数器,使得在每分钟出现8 个错误的MIC(每个优先级一个)时也不会触发密钥更新。这样,猜出全部12个未知字节(MIC和校验和)的时间也就是12分钟多一点,远远小于大多数通 过WPA认证的无线接入点所使用的缺省密钥更新间隔。

Tews和Beck除了对这种方法进行了定义,还实现了攻击工具的概念验证版——tkiptun-ng。攻击者可以利用tkiptun-ng工具从一个基 本了解的数据包中恢复出MIC密钥,然后再利用其它aircrack-ng工具将这个被修改的能够躲过WPA完整性防护机制的数据包重新注入。请注意这个 被恢复出来的MIC密钥只能用在无线接入点向目标客户端发出的数据包上,而且只能在下一次更新密钥前使用。另外,攻击者不能使用这个MIC密钥去破解其它 TKIP数据包,因为每个数据包的加密密钥是不一样的。


战胜WPA攻击


有一点是显而易见的:要想避免成为这种攻击的受害者,最好的方法就是停止使用TKIP。CCMP就没有用在这次攻击中被利用的MIC。所以现在最保险的一 种方法就是开始使用WPA2,并将其配置成只允许AES-CCMP。WPA2混合模式允许在命名相同的网络(SSID)中同时存在TKIP和AES- CCMP的客户端。用户要想知道如何避免使用WPA2混合模式,可以参考名为“在企业中部署WPA和WPA2”的白皮书。

WPA2对于多数无线局域网来说都被看作是一个富有生命力的选择。WPA2作为Wi-Fi产品认证的必要条件已有多年。如果用户一直都是通过常规的设备更 新周期来使旧的客户端远离TKIP,那么刚发生的这次对完整性的攻击可以看作是抛弃那些旧的牵连、完全丢掉TKIP的良好机会。

如果用户无法很快将无线局域网中存在的那些只支持WPA的旧设备替换成支持WPA2的设备,仍可以采用下列措施来应对这次完整性攻击:

1、 如果用户的无线接入点(即无线局域网控制器)可以通过选项关闭MIC错误报告,那么只要重新配置用户的无线接入点将其关闭即可。这次的完整性攻击需要利用 MIC错误报告来区分是校验和错误还是MIC错误,关掉了报告功能就等于击退了这次攻击。而且关掉报告功能不会对用户的无线局域网产生任何实际的影响。

2、 如果用户的无线接入点(即无线局域网控制器)中支持对WPA密钥更新的时间间隔进行配置,就可以通过将该时间间隔减小,使得成对主密钥(pairwise master key)可以在攻击者猜出完整的MIC密钥之前进行更新。Tews和Beck建议将时间间隔调整到120秒;而Cisco则建议将时间间隔调整到300秒,以减少对应用802.1X(WPA企业版)的无线局域网中的RADIUS服务器的影响。

3、 如果用户的无线接入点(即无线局域网控制器)可以通过选项关闭WMM或将发往禁用优先级的数据包丢弃,就可以延长攻击者猜出MIC密钥所需的时间。但这种方法不足以预防此次攻击,对于用户的无线局域网来说并不是一种有效的安全性/可用性折中方案。

为了进一步减少由于频繁更新密钥所带来的额外开销,可以考虑将WPA客户端与WPA2客户端分开。让WPA客户端使用自己专有的SSID,这样用户就更容易安排何时撤换它们,同时也更容易发现哪些设备可能会被完整性攻击所利用。

对于那些突然出现大量校验和错误及MIC错误的SSID,如果这些错误是由某一个特定终端引起的,用户就应该对这些SSID进行更密切的监视。这些错误在 无线局域网中是经常可以看到的,是不会引起报警的。但对于无线入侵防御系统(IPS)来说,会很快发现tkiptun-ng攻击的特征。

最后,要记住WPA和WPA2并不是确保消息完整性的唯一方式。象IPsec、SSL等更高层次的VPN协议可以利用他们自身的密钥消息认证代码来检测仿 冒。尽管更高层次的VPN协议不能用于象ARP这样的局域网广播数据包,但仍可以用它们来保护所有的TCP/IP数据包免受完整性攻击,而不是只依赖 WPA完整性检查。