不管是用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的請求響應幀,里面的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采用的,只是簡單的異或運算:明文(異或)加密流=密文,而異或運算是可逆的,也就是說,密文(異或)明文=加密流。