无线局域网的目标(5)
撰写于2011年10月25日
作者:silex Wi-Fi专家
什么是WEP
WEP的加密机制非常简单,只需要将您的密钥提供给被称为RC4的算法,并让其对数据包进行加密即可。但是为了避免因重复使用相同的密钥而导致被人推测出密钥信息的问题,我们会在数据的开头附加一种被称为IV(Initialization Vector)的随机数信息,并且每次传输时,此数据都会改变,这样的话密钥被推测出的概率也会变小。
但是,WEP的问题不仅在于IV周期短,还在于IV和私钥的组合是通过简单的组合运算完成的。因此,在特定的IV模式中,有可以容易推定出密匙信息的情况,这被称为“Weak IV“。在2001年左右,通过选择性等待Weak IV,可以通过几个小时左右的窃听就能破解出密钥信息。此后,WEP的安全漏洞陆续被指出,甚至有消息称市面上的笔记本电脑几分钟就可以被破解,这令人们对WEP的信任度一落千丈。如今,WEP的安全性只被认为是一种“安慰”了。
TKIP 的功过
WPA 是基于 802.11i 草案来制定的,旨在尽可能接近未来的802.11i 标准(尽可能完全相同)。 WPA 被要求弥补当时已知的 WEP 的弱点,并且只需更新驱动程序/固件即可在现有硬件上使用。因此采用与WEP相同的RC4作为加密算法,但采用了一种称为TKIP(Temporal Key Integrity Protocol)的机制,使得私钥和加密密钥的关系更加复杂,以至于无法轻易进行逆向推算出密钥信息。
但是“WPA”和“WPA2”这两个安全“标准”的推出,也给用户带来了一定的混乱。WPA和WPA2是否具备兼容性?如果没有兼容性有什么区别?对比来说WPA2是更好的吗?如果是这样的话,那么使用WPA的意义何在?等等疑问…。WPA-TKIP是为了尽快解决WEP脆弱性而提出的标准,但也许是在不成熟的时期引进了不成熟的规格,才会导致了这种功过相抵的结果。
WPA 和 WPA2“相似但不同”。由于标头格式和密钥交换方法的差异,无法直接兼容。但是,两者所定义的功能基本相同。作为加密算法,虽然在WPA中安装使用RC4(TKIP),而WPA2之中使用 AES(CCMP),已经是一种的必须的事情,但作为选项,WPA-AES和WPA2-TKIP的存在也被认可。只要是使用同样的加密算法,那么两者的安全性方面并没有太大的差距,所以类似“同样是AES, WPA2的密钥长度更长”“WPA2使用双重加密”“WPA2具有数据篡改检查功能,WPA没有”等说明都是误解或错误的。
(※注)首先,可支持 WPA2-TKIP的产品并不多,而且在可以使用 AES 的情况下使用 TKIP 的意义值得怀疑。虽说如此,但一些著名的案例... 比如Windows7可支持WPA2-TKIP。[显示]
Personal版本有时也被称为PSK(Pre Shared Key),是指在AP端和客户端都需要手动设置加密密钥的模式。而另一方面,Enterprise版使用了一种称为“认证服务器”的方式,是把密钥集中管理在单个服务器之中的模式。因为设置和运行认证服务器并不是一件容易的事情,所以如果你只需要处理十几台设备的话,使用 PSK 模式单独设置和管理密钥比较好,反之如果需要处理数百台设备的话,设置认证服务器后,集中管理密钥会比较好。
救星?WPS
针对这个问题,各公司从2005年开始提出了各种各样的方式,一度呈现出各种标准层出不穷的混乱局面,直到2007年通过Wi-Fi联盟成功标准化此规格并称为WPS(Wi-FiProtected Setup)(※注)。WPS当初讨论了“USB存储方式”、“近距离无线方式(NFC)”、“按钮方式(PBC)”、“密码方式(PIN)”四种方式,但最终缩小到PBC和PIN两种方式。
PBC方式的情况下,需要接入点和终端“几乎同时(30秒~ 3分钟左右)”按下按钮,即可识别出“有想连接的对象”,并会交换特殊数据包来共享密钥信息。
另外,Wi-Fi联盟在2010年末公开了WPS 2.0规范。这是对原有的WPS规范进一步进行了重新定义,使定义更为明确化,加入了一些可支持Wi-Fi Direct等的新功能,也不存在像WPA/WPA2的“相似但不兼容”的问题。
WPA2-AES + WPS2.0是Wi-Fi问世10年后终于到来的里程碑。我认为今后一段时间内不会发布“WPA3”和“WPS3.0”,就算是真的发布也会考虑与现有产品的兼容性。
目前,我们需要等待WEP和WPA-TKIP退出历史舞台,同时需要等待WPA2+ WPS2.0这一标准普及并成为事实上的标准,并让人们认为“无线局域网设定很简单”。
(※注)在WEP/TKIP上运用的RC4的密钥长度为128bit,看起来其加密强度好像可以与AES相媲美,但是由于内部机制比较简单,所以很容被逆推出密码,可以使用“暴力破解”以外的统计或差分比较的方法来破解此加密算法。
就个人而言,我认为是时候停止将加密统一委托给网络特定的数据链路层硬件,而是通过传输层和网络层的软件(IPsec和TLS)来动态确保安全通道。否则,每当安全标准发生变化时,您将不得不为向后兼容性或设备更换而烦恼。