转自:http://zhaoxiaobu.blog.51cto.com/878176/407130/
不管是用WEP加密,还是用WPA,一般如果我们要和AP建立一个连接,要经过两个阶段认证(Authentic)和关联(Association)的过程,下面我只说说WEP加密的情况下,是如何和AP建立连接的(WPA的基本原理是差不多的,但加密算法比WEP的复杂)。
如果采用WEP加密,我们会有两种选择(开放式和共享式),如果选择开放式,那AP和客户端的认证过程是在关联过程之后的,也就是说,不需要正确的密码,就能连接上AP,但你无法传输数据(会显示连接受限,具体看我以前的帖子),所以这个我们也不讨论。
如果我们采用WEP加密,而且,又选择了共享式,那要想和AP建立连接,就会有四次握手(4-way-handshake)的过程:
第一次握手:客户端发送认证请求给AP,如下图
我们图中的内容,前面的内容是帧(frame)控制头,里面记录了源地址,目的地址等信息,IEEE 802.11 wireless LAN management frame说明这是802.11的管理帧,下面有6个字节的参数,Authentication Algorithm是用来确定是开放式或者是共享式(1共享式,0开放式),我们这里是共享式,Authentication SEQ说明四次握手的步骤,现在是第一次握手,说以是1,最后的status code是状态码,现在是成功。
第二次握手:AP收到请求后,发送一个认证响应帧,里面包含一个128字节的随机数列,如下图
我们再看AP的请求响应帧,里面的Authentication SEQ已经变成2了,状态也是成功,但帧的最后,我们发现了128字节的随机数列。
第三次握手:客户端收到AP的响应帧后,用自己的密钥加3个字节的IV,用RC4算法,产生加密流,用异或操作加密128字节的随机数列,然后发给AP,如下图
我们看到,这个帧比较特殊,我们看不到序列号,而是多了一个Initialization Vector(初始向量)这个就是我们经常说的IV(注意是明文的,没有加密),最后data中的内容就是加密后的随机数列
第四次握手:AP用自己的密钥加客户端发过来的IV,用RC4算法,产生加密流,用异或操作加密那段随机数列(challenge text),如果客户端的密钥和AP的密钥相同,那么,两端加密后的数据应该是相同的。如下图:
最后一次握手的序列号是4,状态是成功,到此,四次握手的过程就全部完成了。
看完上面的内容,我想大家发现了一个问题,在WEP加密方式下,AP和客户端认证的过程中,challenge text和加密后的数据都是可以得到的,而且3个字节的IV也是明文的,而WEP采用的,只是简单的异或运算:明文(异或)加密流=密文,而异或运算是可逆的,也就是说,密文(异或)明文=加密流。
本文出自 “赵小布的博客” 博客,请务必保留此出处http://zhaoxiaobu.blog.51cto.com/878176/407130