WPA/WPA2密鑰派生與分發

WPA/WPA2密鑰派生與分發


轉載來源:http://blog.csdn.net/lizzywu/article/details/5010902


AUTHOR:   Jeffrey.zhu

                                    BLOG:http://blog.csdn.net/gueter/

 

 

1 概述

 

WPA的密鑰生成、管理系統結合了認證和數據私密功能,具有較強的健壯性,在STA和AP之間認證完成且四次握手成功後,各類密鑰就產生了。在ESS網絡中,RSNA定義了兩類密鑰層次結構:

1)            Pairwise Key層次結構,用於保護單播流量(Unicast Traffic),支持CCMP或TKIP,通過將發送地址、接收地址與Pairwise Key的綁定,可以在解密(Decapsulation)過程中,有效地檢測出攻擊者僞造的MPDU,即允許接收端的STA檢測MAC欺騙及數據僞造,而GTK則不具備這樣的能力;

2)            Group Key層次結構,用於保護多播(Multicast Traffic)和廣播流量(Broadcast Traffic),由單個密鑰組成。

       在ESS中,AP的BSSID就是IEEE 802.1X 認證器的AA(MAC 地址),而請求者的MAC地址(SPA)也就是STA的MAC地址,在RSN中,使用CCMP的STA在每個<TA, RA>對中,應該至少支持一個Pariwise Key,同時可以用<TA ,RA>來標識Pariwise Key。

       在複雜網絡中(ESS與IBSS混合),當AP同時與使用WEP(用共享WEP密鑰)的STA以及使用CCMP或TKIP(用Pairwise Key)的STA通信時,使用WEP的STA使用Default Key 0~3 作爲shared WEP Key,問題在於,若AP設置成使用WEP Default Key 0與使用WEP的STA通信,那些不支持WEP Default 0但支持TKIP或者CCMP的STA將會在RSN Capabilites field裏頭指定爲No Pairwise subfield,由此,AP也會配置成與WEP-STA及No Pairwise-STA(No Pairwise的使用僅爲了在RSNA中支持WEP)通信,也就是說四次握手的時候AP不會安裝Pairwise Temporal Key,而是在所有類型的通信流量中使用WEP Default Key 0。

       在複雜網絡中,支持TKIP的STA都應該支持一個Pairwise Key,無論這個Pairwise Key是通過Key mapping Key(由PTK映射)方式獲取,還是通過mapping to Default Key 0(由Default Key 0映射)的方式獲取,這樣,AP就會使用Pairwise Key用於保護AP與STA之間的單播流量,如果支持Key mapping Key的方式,那麼<TA ,RA>可以用來標識pariwise Key,如果不支持,則幀中的密鑰索引(Key index)將會置0,也就是說會使用Default Key 0保護通信流量。

       同時不支持TKIP和WEP Default Key 0的STA通過設置RSN IE的No Pairwise域來廣播這一信息,在四次握手的message3中,AP將會清除install bit通知STA不要安裝Pairwise Key,相應地,AP會發一個WEP shared Key給STA作爲Default Key 0使用,這個Key將會用於STA與AP之間單播幀的傳遞。

       在TSN中,支持CCMP的STA將會同時支持Pairwise Keys和WEP Default Key 0,當配置使用CCMP時,STA協商爲No Pairwise subfield是無效的。

       密鑰層次的描述用到兩個函數:

l  L(Str, F, L):從Str的左邊開始,抽取從LL+F-1F bits;

l  PRF-n:產生n bits輸出的僞隨機函數。

 2 Pairwise Key層次結構

       Pairwise Key層次結構如下圖所示:

         根據採用的密鑰管理協議(AKMP)的不同,PMK的獲取有兩種情況:

l  802.1X+EAP模式下,PMK從MSK中派生而來,取MSK的前256 bits (bits 0–255)用來計算PMK :PMK =L(MSK, 0, 256),也就是說,在這種模式下,MSK的長度至少要是256bits,且PTK的的生命週期應該短於PMK的生命週期(lifetime),其中生命週期由認證服務器(AS)決定:lifetime = Session-Timeout + dot1xAuthTxPeriod 或者取MIB裏頭的變量: lifetime = dot11RSNAConfigPMKLifetime。

l  WPA-PSK模式下,一個256bits的PSK將會直接配置到STA和AP中,或者將pass-phrase(如用戶輸入的密碼)配置到請求端(Supplicant)與認證器端(Authenticator),關於PSK的配置方法不屬於IEEE802.11i標準的內容,其中常用的方法是系統與用戶交互來完成PSK的配置(且具體實現中,應該爲每一對STA之間的通信生成一個PSK),例如,如果配置了pass-phrase,則256bit的PSK將會通過下面方式派生,並當作PMK使用,利用PMK便可以派生出PTK,流程如下圖所示:

 

l  SNonce 是由Supplicant端(即STA端)生成的一個僞隨機數;

l  ANonce 是由Authenticator端(即AP端)生成的一個僞隨機數。

       其中,pdkdf2_SHA1( ),SHA1_PRF( )在前述章節有所介紹。根據密鑰套類型(TKIP/CCMP),我們將PTK的肢解進行進一步細分:

 

l  KCK,用於4-Way Handshake中對數據原始性認證進行保障,也就是MIC Key;

l  KEK用於4-Way Handshake和Group Key Handshake中的EAPOL-Key幀的加解密;

l  TEK,也就是TK,用於數據幀的加解密;

l  TMK則是TKIP中的MIC校驗Key。

       最後,作者對Pairwise Key層次結構中不同密鑰資源在不同信息安全體系中的使用進行了一個總結:

3 Group Key層次結構

       GMK的獲取在前述章節有所介紹,GTK作爲一個臨時密鑰(TK)應該是一個僞隨機數,也就是說AP中的GMK(Group Master Key )應該週期性地改變,Group Key層次結構如下圖所示:

 

l  Group nonce (GNonce) 是一個由IEEE 802.1X認證器生成的僞隨機數;

l  AA是IEEE 802.1X 認證器MAC 地址;

       根據密鑰套選擇的類別,GTK被肢解爲不同長度的TK(Temporal Key)用於保護多播與廣播通信(Multicast / Broadcast Communication),也就是說,GTK被用於一個認證器端與多個請求端之間,其中,TKIP的X = 256, CCMP的X = 128 ,WEP的X = 40或104。

       類似地,作者也對Group Key層次結構中不同密鑰資源在不同信息安全體系中的使用進行了一個總結:

                    

4 PeerKey Key 層次結構

         PeerKey Key層次結構如下圖所示:

 

 

         由於PeerKey Key用在IBSS網絡中,所以下面只進行簡單介紹:

l  SMK爲256bits;

l  STKs 用於Initiator STA與Peer STA之間,即用於IBSS中STA與STA之間;

l  TK 用於保護Initiator STA與Peer STA之間的單播通信(Unicast Communication);

l  INonce 是一個由Initiator STA產生的僞隨機數;

l  PNonce 是一個由Peer STA 產生的僞隨機數;

l  SKCK 用於保護4-Way STK Handshake中的認證數據;

l  SKEK 用於保障4-Way STK Handshake 中EAPOL-Key幀的保密性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章