网络通信 频道

从技术看烽烟已过的WAPI

  基于上述的理由,为了安全地使用无线网络,我们必须有一种有效的办法解决上述的问题。所谓有效的方法可以归结为两点:


1、  
认证。即AP能够确认终端用户的身份,并控制用户的使用;反过来,终端用户也需要确认AP的身份,以避免被欺骗。
2、 加密。既然我们不能防止监听,那我们就必须让监听者不能理解监听到的内容。


  目前无线局域网通信(802.11
)中使用的一个标准算法是Wired Equivalent Privacy (有线等效加密,简称WEP),其认证和数据加密均依赖于一个AP和通信终端间共享的密钥,只有密钥相同的AP和终端之间才可以相互通信。老实说,这算不上一种认证方式,顶多算一种分组方法,因为这个密钥很容易泄露。而且,同一个AP的用户必然使用相同的密钥,这样在提供公共接入的地方就不能使用这种方法了。

而在加密方面,WEP也是不可靠的。这个算法是基于RC4,我们配置的密钥,并不是直接用来加密的。这个密钥将和一个随机数(在WEP中称之为初始矩阵)一起生成一个和发送数据等长的加密密钥。在通信的时候,使用这个加密密钥和原文进行异或运算,得到密文,并且和初始矩阵的明文一起发送出去。使用原文和密钥进行异或进行加密的方法有一个要求,就是密钥不能重复,否则只要得到两段使用相同加密密钥的密文,就可以进行破解。但在网络通信过程中,数据总是有不少固定内容,如端口,协议命令的等等,这大大方便了破译。WEP使用初始矩阵的方式减少加密密钥重复的可能,每一个初始矩阵对应着一个不同的加密密钥,但是初始矩阵只有24位长度,在一个通信量比较大的网络里,2个小时左右就肯定有一个密钥重复。

 

另外,WEP没有强制规定设备必须每个包都使用不同的初始矩阵。有些厂家的设备会一直使用相同的初始矩阵,有的则不是使用随机数而是使用简单的序列。遇到上述这两种厂家的设备,破译的时间将大大缩短。

 

此外,为了防止数据被篡改,WEP还使用了CRC算法对数据进行验证。但是CRC是一种线性算法,修改数据中某几位之后,可以改变CRC校验中的某几位来得到正确的校验,在这个操作中我们不需要原文的完整知识。而且,WEP的异或计算令我们很容易完成这些位的修改。通过这种方式我们可以做很多事情,比如重放用户发送邮件的全过程,修改其中收件人的地址。这样,我们就可以轻易得到文件的原文,反过来得到这些数据包对应的密钥,再以此破译所有使用这些密钥加密的数据。

上述这些问题,在网上已经公开讨论的非常多,而且清清楚楚。一个合格的程序员不难根据这些内容编写相应的破解程序,然后就是提着一个带无线网卡的手提电脑逛街,一天下来收获一定不少。可以打赌,在一个城市里不难得到一两个信用卡的资料。

0
相关文章