1 概述
WPA的密鑰生成、管理系統(tǒng)結(jié)合了認證和數(shù)據(jù)私密功能,具有較強的健壯性,在STA和AP之間認證完成且四次握手成功后,各類密鑰就產(chǎn)生了。在ESS網(wǎng)絡中,RSNA定義了兩類密鑰層次結(jié)構(gòu):
1) Pairwise Key層次結(jié)構(gòu),用于保護單播流量(Unicast Traffic),支持CCMP或TKIP,通過將發(fā)送地址、接收地址與Pairwise Key的綁定,可以在解密(Decapsulation)過程中,有效地檢測出攻擊者偽造的MPDU,即允許接收端的STA檢測MAC欺騙及數(shù)據(jù)偽造,而GTK則不具備這樣的能力;
2) Group Key層次結(jié)構(gòu),用于保護多播(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。
在復雜網(wǎng)絡中(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。
在復雜網(wǎng)絡中,支持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會發(fā)一個WEP shared Key給STA作為Default Key 0使用,這個Key將會用于STA與AP之間單播幀的傳遞。
在TSN中,支持CCMP的STA將會同時支持Pairwise Keys和WEP Default Key 0,當配置使用CCMP時,STA協(xié)商為No Pairwise subfield是無效的。
密鑰層次的描述用到兩個函數(shù):
l L(Str, F, L):從Str的左邊開始,抽取從L到L+F-1的F bits;
l PRF-n:產(chǎn)生n bits輸出的偽隨機函數(shù)。
Pairwise Key層次結(jié)構(gòu)如下圖所示:
根據(jù)采用的密鑰管理協(xié)議(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),關(guān)于PSK的配置方法不屬于IEEE802.11i標準的內(nèi)容,其中常用的方法是系統(tǒng)與用戶交互來完成PSK的配置(且具體實現(xiàn)中,應該為每一對STA之間的通信生成一個PSK),例如,如果配置了pass-phrase,則256bit的PSK將會通過下面方式派生,并當作PMK使用,利用PMK便可以派生出PTK,流程如下圖所示:
l SNonce 是由Supplicant端(即STA端)生成的一個偽隨機數(shù);
l ANonce 是由Authenticator端(即AP端)生成的一個偽隨機數(shù)。
其中,pdkdf2_SHA1( ),SHA1_PRF( )在前述章節(jié)有所介紹。根據(jù)密鑰套類型(TKIP/CCMP),我們將PTK的肢解進行進一步細分:
l KCK,用于4-Way Handshake中對數(shù)據(jù)原始性認證進行保障,也就是MIC Key;
l KEK用于4-Way Handshake和Group Key Handshake中的EAPOL-Key幀的加解密;
l TEK,也就是TK,用于數(shù)據(jù)幀的加解密;
l TMK則是TKIP中的MIC校驗Key。
最后,作者對Pairwise Key層次結(jié)構(gòu)中不同密鑰資源在不同信息安全體系中的使用進行了一個總結(jié):
GMK的獲取在前述章節(jié)有所介紹,GTK作為一個臨時密鑰(TK)應該是一個偽隨機數(shù),也就是說AP中的GMK(Group Master Key )應該周期性地改變,Group Key層次結(jié)構(gòu)如下圖所示:
l Group nonce (GNonce) 是一個由IEEE 802.1X認證器生成的偽隨機數(shù);
l AA是IEEE 802.1X 認證器MAC 地址;
根據(jù)密鑰套選擇的類別,GTK被肢解為不同長度的TK(Temporal Key)用于保護多播與廣播通信(Multicast / Broadcast Communication),也就是說,GTK被用于一個認證器端與多個請求端之間,其中,TKIP的X = 256, CCMP的X = 128 ,WEP的X = 40或104。
類似地,作者也對Group Key層次結(jié)構(gòu)中不同密鑰資源在不同信息安全體系中的使用進行了一個總結(jié):
PeerKey Key層次結(jié)構(gòu)如下圖所示:
由于PeerKey Key用在IBSS網(wǎng)絡中,所以下面只進行簡單介紹:
l SMK為256bits;
l STKs 用于Initiator STA與Peer STA之間,即用于IBSS中STA與STA之間;
l TK 用于保護Initiator STA與Peer STA之間的單播通信(Unicast Communication);
l INonce 是一個由Initiator STA產(chǎn)生的偽隨機數(shù);
l PNonce 是一個由Peer STA 產(chǎn)生的偽隨機數(shù);
l SKCK 用于保護4-Way STK Handshake中的認證數(shù)據(jù);
l SKEK 用于保障4-Way STK Handshake 中EAPOL-Key幀的保密性。