1. 程式人生 > >WEP,WPA-PSK,WPA2-PSK握手深入分析1

WEP,WPA-PSK,WPA2-PSK握手深入分析1

1 WEP 暫時沒時間去梳理,後期會給出。

2 WPA-PSK,WPA2-PSK

2.1 握手過程:


握手圖解:


1Station發出一個Proble Request廣播,尋找周圍的AP

2)AP收到Proble Request廣播後回覆Proble Response

3)Station發出一個Auth,宣告Auth AlgorithmOpen System;

4)AP收到Station發出一個Auth後,回覆一個Auth,認可Auth AlgorithmOpen System,置Status Code0

5)Station發出一個Association Request,請求是否匹配相關引數

6)AP收到Association Request後,會仔細核查基本速率等引數;匹配的話回覆一個Association Response

7)APStation 進行WPA-4HANDSHAKE,完成單播和組播/廣播的金鑰的生成。(重頭戲)


WPA-4HANDSHAKE

WPA-4HANDSHAKE是基於802.1X 協議,使用eapol key進行封裝傳輸。

AP初始化:

使用 SSID 和passphares作為入參,通過雜湊演算法產生PSK。在WPA-PSK 中PMK=PSK。

l  第一次握手:

AP廣播SSID,AP_MAC;

STATION 端使用接受到的SSID,AP_MAC和passphares使用同樣演算法產生PSK。

l 第二次握手

STATION 傳送一個隨機數SNonce,STATION_MAC(SA)給AP;

AP端接受到SNonce,STATION_MAC(SA)後產生一個隨機數ANonce,然後用PMK,AP_MAC(AA),STATION_MAC(SA),SNonce,ANonce 用以下SHA1_PRF演算法產生PTK,提取這個PTK 前16 個位元組組成一個MIC KEY。

l 第三次握手:

AP傳送上面產生的ANonce給STATION

STATION 端用接收到ANonce 和以前產生PMK,SNonce,AP_MAC(AA),STATION_MAC(SA)用同樣的演算法產生PTK。提取這個PTK 前16 個位元組組成一個MIC KEY使用以下演算法產生MIC值用這個MIC KEY 和一個802.1X資料幀使用以下演算法得到MIC值

MIC = HMAC_MD5(MIC Key,16,802.1X data)

l 第四次握手:

 STATION 傳送802.1X  資料幀,MIC給AP;STATION 端用上面那個準備好的802.1X 資料幀在最後填充上MIC值和兩個位元組的0(十六進位制)然後傳送這個資料幀到AP。

 AP端收到這個資料幀後提取這個MIC。並把這個資料幀的MIC部分都填上0(十六進位制)這時用這個802.1X資料幀,和用上面AP產生的MIC KEY 使用同樣的演算法得出MIC’。如果MIC’等於STATION 傳送過來的MIC。那麼第四次握手成功。若不等說明則AP 和STATION 的金鑰不相同,握手失敗了。

通過四次握手和經過相關演算法得到以下金鑰,用於加密不同的資料型別


 EAPOL KCK(key confirmation key):金鑰確認金鑰,用來計算金鑰生成訊息的完整性

 EAPOL KEK(key Encryption key):金鑰加密金鑰,用來加密金鑰生成訊息

 TKIP TK(CCMP TK):這部分用來對單播資料的加密

 TKIP MIC key:用於Michael完整性校驗的(只有TKIP有)


2.組金鑰GMK主組金鑰(group master key)以作為臨時金鑰的基礎
     和成對金鑰一樣擴充套件獲得GTK (groupTransient Key) 
     公式如下:
     GTK=PRF-X(GMK,"Group key expansion",AA||GN)
     GN - AP 生成的 Nonce 
     AA - AP  MAC地址

GMKGroup Master Key,組主金鑰):認證者用來生成組臨時金鑰(GTK)的金鑰,通常是認證者生成的一組隨機數。

GTKGroup Transient Key,組臨時金鑰):由組主金鑰(GMK)通過雜湊運算生成,是用來保護廣播和組播資料的金鑰。