IEEE 802.11 所制定的是技術(shù)性標(biāo)準(zhǔn) ,Wi-Fi 聯(lián)盟所制定的是商業(yè)化標(biāo)準(zhǔn) , 而 Wi-Fi 所制定的商業(yè)化標(biāo)準(zhǔn)基本上也都符合 IEEE 所制定的技術(shù)性標(biāo)準(zhǔn)。 WPA(Wi-Fi Protected Access) 事實(shí)上就是由 Wi-Fi 聯(lián)盟所制定的安全性標(biāo)準(zhǔn) , 這個(gè)商業(yè)化標(biāo)準(zhǔn)存在的目的就是為了要支持 IEEE 802.11i 這個(gè)以技術(shù)為導(dǎo)向的安全性標(biāo)準(zhǔn)。而 WPA2 其實(shí)就是 WPA 的第二個(gè)版本。 WPA 之所以會(huì)出現(xiàn)兩個(gè)版本的原因就在于 Wi-Fi 聯(lián)盟的商業(yè)化運(yùn)作。 我們知道 802.11i 這個(gè)任務(wù)小組成立的目的就是為了打造一個(gè)更安全的無(wú)線局域網(wǎng) , 所以在加密項(xiàng)目里規(guī)范了兩個(gè)新的安全加密協(xié)定 – TKIP 與 CCMP 。其中 TKIP 雖然針對(duì) WEP 的弱點(diǎn)作了重大的改良 , 但保留了 RC4 演算法和基本架構(gòu) , 言下之意 ,TKIP 亦存在著 RC4 本身所隱含的弱點(diǎn)。因而 802.11i 再打造一個(gè)全新、安全性更強(qiáng)、更適合應(yīng)用在無(wú)線局域網(wǎng)環(huán)境的加密協(xié)定 -CCMP 。所以在 CCMP 就緒之前 ,TKIP 就已經(jīng)完成了。但是要等到 CCMP 完成 , 再發(fā)布完整的 IEEE 802.11i 標(biāo)準(zhǔn) , 可能尚需一段時(shí)日 , 而 Wi-Fi 聯(lián)盟為了要使得新的安全性標(biāo)準(zhǔn)能夠盡快被布署 , 以消弭使用者對(duì)無(wú)線局域網(wǎng)安全性的疑慮 , 進(jìn)而讓無(wú)線局域網(wǎng)的市場(chǎng)可以迅速擴(kuò)展開來 , 因而使用已經(jīng)完成 TKIP 的 IEEE 802.11i 第三版草案 (IEEE 802.11i draft 3) 為基準(zhǔn) , 制定了 WPA 。而于 IEEE 完成并公布 IEEE 802.11i 無(wú)線局域網(wǎng)安全標(biāo)準(zhǔn)后 ,Wi-Fi 聯(lián)盟也隨即公布了 WPA 第 2 版 (WPA 2) 。所以: WPA = IEEE 802.11i draft 3 = IEEE 802.1X/EAP + WEP( 選擇性項(xiàng)目 )/TKIP WPA2 = IEEE 802.11i = IEEE 802.1X/EAP + WEP( 選擇性項(xiàng)目 )/TKIP/CCMP ( 有些無(wú)線網(wǎng)路設(shè)備中會(huì)以 AES 、 AES-CCMP 的字眼來取代 CCMP) 在有些無(wú)線網(wǎng)路設(shè)備的規(guī)格中會(huì)看到像 WPA-Enterprise / WPA2-Enterprise 以及 WPA-Personal / WPA2-Personal 的字眼 , 其實(shí) WPA-Enterprise / WPA2-Enterprise 就是 WPA / WPA2 ; WPA-Personal / WPA2-Personal 其實(shí)就是 WPA-PSK / WPA2-PSK, 也就是以 ”pre-share key” 或 ” passphrase” 的驗(yàn)證 (authentication) 模式來代替 IEEE 802.1X/EAP 的驗(yàn)證模式 ,PSK 模式下不須使用驗(yàn)證服務(wù)器 ( 例如 RADIUS Server), 所以特別適合家用或 SOHO 的使用者。
1 WPA的技術(shù)實(shí)現(xiàn):
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)過程中,有效地檢測(cè)出攻擊者偽造的MPDU,即允許接收端的STA檢測(cè)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,無(wú)論這個(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是無(wú)效的。 密鑰層次的描述用到兩個(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的長(zhǎng)度至少要是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被肢解為不同長(zhǎng)度的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)行簡(jiǎ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幀的保密性。
中國(guó)的保密技術(shù),已經(jīng)被丟棄了: 無(wú)線局域網(wǎng)鑒別與保密基礎(chǔ)結(jié)構(gòu)WAPI(WLAN Authentication and Privacy Infrastructure)是中國(guó)針對(duì)IEEE 802.11協(xié)議中的安全問題,提出的擁有自主知識(shí)產(chǎn)權(quán)的WLAN安全解決方案。WAPI已由ISO/IEC授權(quán)的IEEE Registration Authority審查獲得認(rèn)可,并分配了用于該機(jī)制的以太類型號(hào)(IEEE EtherType Field)0x88b4,這是我國(guó)在這一領(lǐng)域向ISO/IEC提出并獲得批準(zhǔn)的唯一的以太類型號(hào)。 WAPI由無(wú)線局域網(wǎng)鑒別基礎(chǔ)結(jié)構(gòu)WAI(WLAN Authentication Infrastructure)和無(wú)線局域網(wǎng)保密基礎(chǔ)結(jié)構(gòu)WPI(WLAN Privacy Infrastructure)組成,其中,WAI采用基于橢圓曲線的公鑰證書體制,無(wú)線客戶端STA和接入點(diǎn)AP通過鑒別服務(wù)器AS進(jìn)行雙向身份鑒別;WPI采用國(guó)家商用密碼管理委員會(huì)辦公室提供的對(duì)稱分組算法SMS4進(jìn)行加解密,實(shí)現(xiàn)了保密通信。 WAPI的協(xié)議流程總共有十個(gè)步驟,如下圖所示:
WAI鑒別基礎(chǔ)結(jié)構(gòu)在BSS中,當(dāng)STA關(guān)聯(lián)或重關(guān)聯(lián)至AP時(shí),必須進(jìn)行相互身份鑒別。若鑒別成功,則AP允許STA接入,否則解除其鏈路驗(yàn)證。整個(gè)鑒別過程包括證書鑒別、單播密鑰協(xié)商與組播密鑰通告。 下圖給出了與WAI相關(guān)的STA的狀態(tài)轉(zhuǎn)換圖,同802.11狀態(tài)圖相比,該狀態(tài)圖將原有的“鑒別”改為了“鏈路驗(yàn)證”:
若在上圖基礎(chǔ)上再增加專用于處理WAI過程的“鑒別狀態(tài)”。這樣,STA總共需要維護(hù)三個(gè)狀態(tài)變量: l 鏈路驗(yàn)證狀態(tài); l 關(guān)聯(lián)狀態(tài); l 鑒別狀態(tài)。 由此決定了STA將會(huì)有四種本地狀態(tài): l 狀態(tài)1:鏈路未驗(yàn)證、未關(guān)聯(lián)、未鑒別狀態(tài); l 狀態(tài)2:鏈路已驗(yàn)證、未關(guān)聯(lián)、未鑒別狀態(tài); l 狀態(tài)3:鏈路已驗(yàn)證、已關(guān)聯(lián)、未鑒別狀態(tài); l 狀態(tài)4:鏈路已驗(yàn)證、已關(guān)聯(lián)、已鑒別狀態(tài)。 其中STA和AP之間的WAI鑒別過程處于狀態(tài)3,各個(gè)狀態(tài)中傳輸?shù)膸愋鸵卜譃榭刂茙、管理幀、?shù)據(jù)幀,具體可以參考標(biāo)準(zhǔn)。 WAPI定義了若干新的名詞,考慮到全文描述的規(guī)范性,WAPI中各名詞對(duì)比介紹如下: l 鑒別請(qǐng)求者系統(tǒng),類似于802.11的認(rèn)證請(qǐng)求端(STA); l 鑒別器系統(tǒng),類似于802.11的認(rèn)證端(AP); l 鑒別服務(wù)系統(tǒng),類似于802.11的認(rèn)證服務(wù)器(如RADIUS); l 鑒別器實(shí)體(AE):駐留在AP中,在接入服務(wù)前,提供鑒別操作; l 鑒別請(qǐng)求者實(shí)體(ASUE):駐留在STA中,需通過鑒別服務(wù)單元ASU進(jìn)行鑒別; l 鑒別服務(wù)實(shí)體(ASE):駐留在ASU中,為鑒別器和鑒別請(qǐng)求者提供相互鑒別; l 基密鑰(BK):用于導(dǎo)出單播會(huì)話密鑰的密鑰,基密鑰由證書鑒別過程協(xié)商得到或由預(yù)共享密鑰導(dǎo)出,類似于PMK; l 基密鑰安全關(guān)聯(lián)(BKSA),證書鑒別過程的結(jié)果或預(yù)共享密鑰導(dǎo)出的結(jié)果,類似于PMKSA; l 消息鑒別密鑰(MAK),提供密鑰管理協(xié)議數(shù)據(jù)源鑒別和完整性校驗(yàn)的密鑰,類似于KCK; l 組播會(huì)話密鑰(MSK),用于保護(hù)站點(diǎn)發(fā)送的組播MPDU的隨機(jī)值,組播會(huì)話密鑰由組播主密鑰導(dǎo)出,類似于GTK; l 組播會(huì)話密鑰安全關(guān)聯(lián)(MSKSA),組播密鑰通告過程的結(jié)果,類似于GTKSA; l 通告主密鑰(NMK),用于導(dǎo)出組播/站間加密密鑰和組播/站間完整性校驗(yàn)密鑰的輔助密鑰。在組播密鑰通告過程中,通告主密鑰為組播主密鑰;在站間密鑰通告過程中,通告主密鑰為站間主密鑰,類似于GMK; l 站間密鑰(STAKey),用來保護(hù)基礎(chǔ)結(jié)構(gòu)模式下一個(gè)基本服務(wù)集中站與站之間的直接通信的對(duì)稱密鑰,類似于STK; l 站間密鑰安全關(guān)聯(lián)(STAKeySA),基礎(chǔ)結(jié)構(gòu)模式下基本服務(wù)集中的站與站之間單播密鑰協(xié)商的結(jié)果。一個(gè)站間密鑰安全關(guān)聯(lián)包含一個(gè)站間密鑰,類似于STKSA; l 單播會(huì)話密鑰(USK),由基密鑰通過偽隨機(jī)函數(shù)導(dǎo)出的隨機(jī)值。它分為4個(gè)部分:?jiǎn)尾ゼ用苊荑、單播完整性校驗(yàn)密鑰、消息鑒別密鑰、密鑰加密密鑰,類似于PTK; l 單播會(huì)話密鑰安全關(guān)聯(lián)(USKSA),單播密鑰協(xié)商過程的結(jié)果,類似于PTKSA。 WAPI中添加ASUE、AE、ASE的概念是為了考慮WAPI應(yīng)用的靈活性,WAPI主要的用戶使用場(chǎng)景有: l 企業(yè)級(jí)用戶應(yīng)用場(chǎng)景:有AP和獨(dú)立的AS(鑒別服務(wù)器),內(nèi)部駐留ASU(鑒別服務(wù)單元),實(shí)現(xiàn)多個(gè)AP和STA證書的管理和用戶身份的鑒別; l 小公司和家庭用戶應(yīng)用場(chǎng)景:有AP,ASU可駐留在AP中; l 公共熱點(diǎn)用戶應(yīng)用場(chǎng)景:有AP,ASU駐留在接入控制服務(wù)器中; l 自組網(wǎng)用戶應(yīng)用場(chǎng)景:無(wú)AP,各STA在應(yīng)用上是對(duì)等的,采用共享密鑰來實(shí)現(xiàn)鑒別和保密。
2、WAI原理 類似于802.1X,WAI采用的三元結(jié)構(gòu)和對(duì)等鑒別訪問控制方法也是一種基于端口認(rèn)證方法,如下圖所示:
鑒別器的受控端口處于未鑒別狀態(tài)時(shí),鑒別器系統(tǒng)拒絕提供服務(wù),鑒別器實(shí)體利用非受控端口和鑒別請(qǐng)求者通信。受控與非受控端口可以是連接到同一物理端口的兩個(gè)邏輯端口,所有通過物理端口的數(shù)據(jù)都可以到達(dá)受控端口和非受控端口,并根據(jù)鑒別狀態(tài)決定數(shù)據(jù)的實(shí)際流向。 l 受控端口:只有當(dāng)該端口的鑒別狀態(tài)為已鑒別時(shí),才允許協(xié)議數(shù)據(jù)通過,只有通過鑒別的STA才能使用的AP提供的數(shù)據(jù)端口為受控端口,受控端口狀態(tài)由系統(tǒng)鑒別控制參數(shù)確定; l 非受控端口:協(xié)議數(shù)據(jù)的傳送不受當(dāng)前鑒別狀態(tài)的限制,AP提供STA連接到鑒別服務(wù)單元ASU的端口即為非受控端口。 一個(gè)重要概念是鑒別服務(wù)單元ASU,在整個(gè)WAI鑒別過程中,ASU作為第三方起著提供鑒別服務(wù)的作用。此外,ASU還為STA和AP提供證書的頒發(fā)、認(rèn)證、吊銷等功能。一個(gè)ASU可以管理一個(gè)或多個(gè)BSS,在同一個(gè)ASU的管理范圍內(nèi),STA與AP之間需通過ASU實(shí)現(xiàn)證書的雙向認(rèn)證。 STA與AP之間的鑒別數(shù)據(jù)分組利用以太類型字段為0x88B4的WAPI協(xié)議傳送,AP與ASU之間的鑒別數(shù)據(jù)報(bào)文通過端口號(hào)為3810的UDP套接字傳輸。在WAI的整個(gè)過程中,涉及到數(shù)種加/解密和消息摘要等算法,具體可參考標(biāo)準(zhǔn)文檔,限于篇幅,文章不深入詳細(xì)介紹WAI的技術(shù)細(xì)節(jié)。
3、WPI原理 WPI-SMS4 的MPDU格式如下:
上圖中各字段的含義可以參考標(biāo)準(zhǔn)文檔。 WPI的封裝過程為: l 利用完整性校驗(yàn)密鑰與數(shù)據(jù)分組序號(hào)PN,通過工作在CBC-MAC模式的校驗(yàn)算法對(duì)完整性校驗(yàn)數(shù)據(jù)進(jìn)行計(jì)算,得到完整性校驗(yàn)碼MIC; l 利用加密密鑰和數(shù)據(jù)分組序號(hào)PN,通過工作在OFB模式的加密算法對(duì)MSDU數(shù)據(jù)及MIC進(jìn)行加密,得到MSDU數(shù)據(jù)以及MIC密文; l 封裝后再組幀發(fā)送。 WPI的解封裝過程為: l 判斷數(shù)據(jù)分組序號(hào)PN是否有效,若無(wú)效,則丟棄該數(shù)據(jù); l 利用解密密鑰與數(shù)據(jù)分組序號(hào)PN,通過工作在OFB模式的解密算法對(duì)分組中的MSDU數(shù)據(jù)及MIC密文進(jìn)行解密,恢復(fù)出MSDU數(shù)據(jù)以及MIC明文; l 利用完整性校驗(yàn)密鑰與數(shù)據(jù)分組序號(hào)PN,通過工作在CBC-MAC模式的校驗(yàn)算法對(duì)完整性校驗(yàn)數(shù)據(jù)進(jìn)行本地計(jì)算,若計(jì)算得到的值與分組中的完整性校驗(yàn)碼MIC不同,則丟棄該數(shù)據(jù); l 解封裝后將MSDU明文進(jìn)行重組處理并遞交至上層。 其中,加解密算法采用的是SMS4算法(128bits密鑰長(zhǎng)度、分組長(zhǎng)度),MIC計(jì)算采用的是SMS4-CBC-MAC模式,數(shù)據(jù)加密采用的是SMS4-OFB模式,分別介紹如下: 
|