WEP,WPA-PSK,WPA2-PSK握手深入分析1
1 WEP 暫時沒時間去梳理,後期會給出。
2 WPA-PSK,WPA2-PSK
2.1 握手過程:
握手圖解:
1)Station發出一個Proble Request廣播,尋找周圍的AP
2)AP收到Proble Request廣播後回覆Proble Response
3)Station發出一個Auth,宣告Auth Algorithm是Open System;
4)AP收到Station發出一個Auth後,回覆一個Auth,認可Auth Algorithm是Open System,置Status Code為0
5)Station發出一個Association Request,請求是否匹配相關引數
6)AP收到Association Request後,會仔細核查基本速率等引數;匹配的話回覆一個Association Response。
7)AP與Station 進行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地址
GMK(Group Master Key,組主金鑰):認證者用來生成組臨時金鑰(GTK)的金鑰,通常是認證者生成的一組隨機數。
GTK(Group Transient Key,組臨時金鑰):由組主金鑰(GMK)通過雜湊運算生成,是用來保護廣播和組播資料的金鑰。