不管是用WEP加密,還是用WPA,一般如果我們要和AP建立一個連接,要經(jīng)過兩個階段認證(Authentic)和關聯(lián)(Association)的過程,下面我只說說WEP加密的情況下,是如何和AP建立連接的(WPA的基本原理是差不多的,但加密算法比WEP的復雜)。如果采用WEP加密,我們會有兩種選擇(開放式和共享式),如果選擇開放式,那AP和客戶端的認證過程是在關聯(lián)過程之后的,也就是說,不需要正確的密碼,就能連接上AP,但你無法傳輸數(shù)據(jù)(會顯示連接受限,具體看我以前的帖子),所以這個我們也不討論。如果我們采用WEP加密,而且,又選擇了共享式,那要想和AP建立連接,就會有四次握手(4-way-handshake)的過程: 第一次握手:客戶端發(fā)送認證請求給AP,如下圖
我們圖中的內容,前面的內容是幀(frame)控制頭,里面記錄了源地址,目的地址等信息,IEEE 802.11 wireless LAN management frame說明這是802.11的管理幀,下面有6個字節(jié)的參數(shù),Authentication Algorithm是用來確定是開放式或者是共享式(1共享式,0開放式),我們這里是共享式,Authentication SEQ說明四次握手的步驟,現(xiàn)在是第一次握手,說以是1,最后的status code是狀態(tài)碼,現(xiàn)在是成功。第二次握手:
我們再看AP的請求響應幀,里面的Authentication SEQ已經(jīng)變成2了,狀態(tài)也是成功,但幀的最后,我們發(fā)現(xiàn)了128字節(jié)的隨機數(shù)列。第三次握手:客戶端收到AP的響應幀后,用自己的密鑰加3個字節(jié)的IV,用RC4算法,產(chǎn)生加密流,用異或操作加密128字節(jié)的隨機數(shù)列,然后發(fā)給AP,如下圖**
我們看到,這個幀比較特殊,我們看不到序列號,而是多了一個Initialization Vector(初始向量)這個就是我們經(jīng)常說的IV(注意是明文的,沒有加密),最后data中的內容就是加密后的隨機數(shù)列第四次握手:AP用自己的密鑰加客戶端發(fā)過來的IV,用RC4算法,產(chǎn)生加密流,用異或操作加密那段隨機數(shù)列(challenge text),如果客戶端的密鑰和AP的密鑰相同,那么,兩端加密后的數(shù)據(jù)應該是相同的。如下圖:
最后一次握手的序列號是4,狀態(tài)是成功,到此,四次握手的過程就全部完成了??赐晟厦娴膬热?,我想大家發(fā)現(xiàn)了一個問題,在WEP加密方式下,AP和客戶端認證的過程中,challenge text和加密后的數(shù)據(jù)都是可以得到的,而且3個字節(jié)的IV也是明文的,而WEP采用的,只是簡單的異或運算:明文(異或)加密流=密文,而異或運算是可逆的,也就是說,密文(異或)明文=加密流。