1 概述
WPA的密鑰生成、管理系統(tǒng)結(jié)合了認(rèn)證和數(shù)據(jù)私密功能,具有較強(qiáng)的健壯性,在STA和AP之間認(rèn)證完成且四次握手成功后,各類密鑰就產(chǎn)生了。在ESS網(wǎng)絡(luò)中,RSNA定義了兩類密鑰層次結(jié)構(gòu): 1) Pairwise Key層次結(jié)構(gòu),用于保護(hù)單播流量(Unicast Traffic),支持CCMP或TKIP,通過將發(fā)送地址、接收地址與Pairwise Key的綁定,可以在解密(Decapsulation)過程中,有效地檢測出攻擊者偽造的MPDU,即允許接收端的STA檢測MAC欺騙及數(shù)據(jù)偽造,而GTK則不具備這樣的能力; 2) Group Key層次結(jié)構(gòu),用于保護(hù)多播(Multicast Traffic)和廣播流量(Broadcast Traffic),由單個(gè)密鑰組成。 在ESS中,AP的BSSID就是IEEE 802.1X 認(rèn)證器的AA(MAC 地址),而請(qǐng)求者的MAC地址(SPA)也就是STA的MAC地址,在RSN中,使用CCMP的STA在每個(gè)<TA, RA>對(duì)中,應(yīng)該至少支持一個(gè)Pariwise Key,同時(shí)可以用<TA ,RA>來標(biāo)識(shí)Pariwise Key。 在復(fù)雜網(wǎng)絡(luò)中(ESS與IBSS混合),當(dāng)AP同時(shí)與使用WEP(用共享WEP密鑰)的STA以及使用CCMP或TKIP(用Pairwise Key)的STA通信時(shí),使用WEP的STA使用Default Key 0~3 作為shared WEP Key,問題在于,若AP設(shè)置成使用WEP Default Key 0與使用WEP的STA通信,那些不支持WEP Default 0但支持TKIP或者CCMP的STA將會(huì)在RSN Capabilites field里頭指定為No Pairwise subfield,由此,AP也會(huì)配置成與WEP-STA及No Pairwise-STA(No Pairwise的使用僅為了在RSNA中支持WEP)通信,也就是說四次握手的時(shí)候AP不會(huì)安裝Pairwise Temporal Key,而是在所有類型的通信流量中使用WEP Default Key 0。 在復(fù)雜網(wǎng)絡(luò)中,支持TKIP的STA都應(yīng)該支持一個(gè)Pairwise Key,無論這個(gè)Pairwise Key是通過Key mapping Key(由PTK映射)方式獲取,還是通過mapping to Default Key 0(由Default Key 0映射)的方式獲取,這樣,AP就會(huì)使用Pairwise Key用于保護(hù)AP與STA之間的單播流量,如果支持Key mapping Key的方式,那么<TA ,RA>可以用來標(biāo)識(shí)pariwise Key,如果不支持,則幀中的密鑰索引(Key index)將會(huì)置0,也就是說會(huì)使用Default Key 0保護(hù)通信流量。 同時(shí)不支持TKIP和WEP Default Key 0的STA通過設(shè)置RSN IE的No Pairwise域來廣播這一信息,在四次握手的message3中,AP將會(huì)清除install bit通知STA不要安裝Pairwise Key,相應(yīng)地,AP會(huì)發(fā)一個(gè)WEP shared Key給STA作為Default Key 0使用,這個(gè)Key將會(huì)用于STA與AP之間單播幀的傳遞。 在TSN中,支持CCMP的STA將會(huì)同時(shí)支持Pairwise Keys和WEP Default Key 0,當(dāng)配置使用CCMP時(shí),STA協(xié)商為No Pairwise subfield是無效的。 密鑰層次的描述用到兩個(gè)函數(shù): l L(Str, F, L):從Str的左邊開始,抽取從L到L+F-1的F bits; l PRF-n:產(chǎn)生n bits輸出的偽隨機(jī)函數(shù)。 2 Pairwise Key層次結(jié)構(gòu)Pairwise Key層次結(jié)構(gòu)如下圖所示: 根據(jù)采用的密鑰管理協(xié)議(AKMP)的不同,PMK的獲取有兩種情況: l 802.1X+EAP模式下,PMK從MSK中派生而來,取MSK的前256 bits (bits 0–255)用來計(jì)算PMK :PMK =L(MSK, 0, 256),也就是說,在這種模式下,MSK的長度至少要是256bits,且PTK的的生命周期應(yīng)該短于PMK的生命周期(lifetime),其中生命周期由認(rèn)證服務(wù)器(AS)決定:lifetime = Session-Timeout + dot1xAuthTxPeriod 或者取MIB里頭的變量: lifetime = dot11RSNAConfigPMKLifetime。 l WPA-PSK模式下,一個(gè)256bits的PSK將會(huì)直接配置到STA和AP中,或者將pass-phrase(如用戶輸入的密碼)配置到請(qǐng)求端(Supplicant)與認(rèn)證器端(Authenticator),關(guān)于PSK的配置方法不屬于IEEE802.11i標(biāo)準(zhǔn)的內(nèi)容,其中常用的方法是系統(tǒng)與用戶交互來完成PSK的配置(且具體實(shí)現(xiàn)中,應(yīng)該為每一對(duì)STA之間的通信生成一個(gè)PSK),例如,如果配置了pass-phrase,則256bit的PSK將會(huì)通過下面方式派生,并當(dāng)作PMK使用,利用PMK便可以派生出PTK,流程如下圖所示:
l SNonce 是由Supplicant端(即STA端)生成的一個(gè)偽隨機(jī)數(shù); l ANonce 是由Authenticator端(即AP端)生成的一個(gè)偽隨機(jī)數(shù)。 其中,pdkdf2_SHA1( ),SHA1_PRF( )在前述章節(jié)有所介紹。根據(jù)密鑰套類型(TKIP/CCMP),我們將PTK的肢解進(jìn)行進(jìn)一步細(xì)分:
l KCK,用于4-Way Handshake中對(duì)數(shù)據(jù)原始性認(rèn)證進(jìn)行保障,也就是MIC Key; l KEK用于4-Way Handshake和Group Key Handshake中的EAPOL-Key幀的加解密; l TEK,也就是TK,用于數(shù)據(jù)幀的加解密; l TMK則是TKIP中的MIC校驗(yàn)Key。 最后,作者對(duì)Pairwise Key層次結(jié)構(gòu)中不同密鑰資源在不同信息安全體系中的使用進(jìn)行了一個(gè)總結(jié): 3 Group Key層次結(jié)構(gòu)GMK的獲取在前述章節(jié)有所介紹,GTK作為一個(gè)臨時(shí)密鑰(TK)應(yīng)該是一個(gè)偽隨機(jī)數(shù),也就是說AP中的GMK(Group Master Key )應(yīng)該周期性地改變,Group Key層次結(jié)構(gòu)如下圖所示:
l Group nonce (GNonce) 是一個(gè)由IEEE 802.1X認(rèn)證器生成的偽隨機(jī)數(shù); l AA是IEEE 802.1X 認(rèn)證器MAC 地址; 根據(jù)密鑰套選擇的類別,GTK被肢解為不同長度的TK(Temporal Key)用于保護(hù)多播與廣播通信(Multicast / Broadcast Communication),也就是說,GTK被用于一個(gè)認(rèn)證器端與多個(gè)請(qǐng)求端之間,其中,TKIP的X = 256, CCMP的X = 128 ,WEP的X = 40或104。 類似地,作者也對(duì)Group Key層次結(jié)構(gòu)中不同密鑰資源在不同信息安全體系中的使用進(jìn)行了一個(gè)總結(jié): 4 PeerKey Key 層次結(jié)構(gòu)PeerKey Key層次結(jié)構(gòu)如下圖所示:
由于PeerKey Key用在IBSS網(wǎng)絡(luò)中,所以下面只進(jìn)行簡單介紹: l SMK為256bits; l STKs 用于Initiator STA與Peer STA之間,即用于IBSS中STA與STA之間; l TK 用于保護(hù)Initiator STA與Peer STA之間的單播通信(Unicast Communication); l INonce 是一個(gè)由Initiator STA產(chǎn)生的偽隨機(jī)數(shù); l PNonce 是一個(gè)由Peer STA 產(chǎn)生的偽隨機(jī)數(shù); l SKCK 用于保護(hù)4-Way STK Handshake中的認(rèn)證數(shù)據(jù); l SKEK 用于保障4-Way STK Handshake 中EAPOL-Key幀的保密性。 |
|