WAPI憑什麼跟802.11i博弈
如果說802.11i已經完美的解決了WLAN的安全問題,那就不存在WAPI跟802.11i的長達10年的博弈了,也就不存在中國標準在國際上的屢敗屢戰。那麼究竟是什麼原因使得802.11i質疑的聲音逐漸強硬,又是什麼原因使得WAPI站在風頭浪尖呢?
我們先來看看802.11i從實現機制上還存在那些不足呢?
首先,從鑑別機制考慮,802.11i採用了通用EAP over RADIUS實現終端STA跟AAA服務器之間的單向或雙向鑑別,終端卻無法實現對AP的合法性鑑別。
其次,從鑑別方法來考慮,鑑別過程較爲複雜,用戶身份常爲用戶名+口令方式,採用AP端的RADIUS等AAA服務器對用戶進行認證,而且身份憑證簡單,易被盜用。
再次,從密鑰管理方面看,AP跟RADIUS之間需要手工設共享密鑰,AP跟STA之間只定義了認證體系結構,不同廠商的具體設計可能不兼容,如此實現兼容代價不菲。
從上面三方面來看,802.11i雖沒有致命之傷,但也並非完美。
也許是覺得從技術角度上仍有完善的前景,也許從國家專利長期受美歐壓迫的不爽考慮,也可能更多的是市場的需要。這樣便有了WAPI的面世。
WAPI是WLAN Authentication and private infrastructure即無線局域網鑑別與保密架構的簡稱。WAPI其實是由兩部分組成,WAI(WLAN鑑別架構)和WPI(WLAN保密架構)兩部分,其中WAI負責無線鏈路接入用戶的身份認證即單播及組播密鑰協商,而WPI則利用WAI協商出來的密鑰對無線MPDU數據進行加解密處理。
下圖是WAPI典型的組網架構:
整個WAPI的環境由三個主要部分組成,移動接入終端工作站STA,在WAPI中稱爲ASUE(鑑別請求者實體),接入服務之前請求進行鑑別操作的實體。AP(無線接入點)有時是一個獨立的胖設備,有時則是由性能更高的瘦AP+AC擔任。這部分在WAPI中稱爲AE(鑑別實體),主要負責爲鑑別請求者接入服務之前提供鑑別操作的實體。該實體駐留在AP或AC中。另外在WAPI中存在一個AS鑑別服務器及AAA認證服務器,這兩個通常集成在一起,爲ASUE及AE提供雙向的身份認證鑑別。
上面實際的環境在WAPI中被抽象爲如下圖中的三個部分:
圖 WAI鑑別基礎架構
下面我們將把WAPI的整個處理流程按照功能進行劃分爲五部分:
1. STA跟AP關聯的過程
圖 安全關聯的建立
一般來說STA接入WLAN時會被動偵聽信標幀或採取主動探尋的方式獲取AP的安全策略(WAPI信息元素)。
然後STA會發送鏈路驗證請求,我們知道WLAN鏈路驗證一般由開放式和PSK兩種,WAPI則採用了開放式,及來者不拒來響應鏈路驗證,然後STA向AP發送關聯請求,其中也同樣包含了WAPI的協商後的信息元素,AP如協商成功則會返回關聯響應報文完成整個關聯過程。
2. STA(ASUE)跟AP(AE)的雙向鑑別
圖 證書鑑別過程
WAI的身份鑑別一般由兩種,一種爲簡單的PSK,一種則採用了公鑰架構的非對稱密鑰證書機制實現身份的鑑別。以證書鑑別爲例。當STA跟AP成功關聯之後,AP便會向STA發送鑑別激活分組,該分組中攜帶了本地可信任的AS的身份及AE的身份證書,證書攜帶了AP的身份列表和屬性簽名。STA受到鑑別激活分組後根據分組中AP信任的ASU身份選擇由該ASU頒發的證書或本地策略選項證書,產生用於ECDH交換的臨時私鑰x,臨時公鑰x*P和其ASUE挑戰,生成接入鑑別請求分組,發送給AP。接入鑑別激活分組中包含了如下的字段:STA和AP的證書,STA的挑戰碼及密鑰以及用於ECDH交換的參數,另外也包含了可信任的第三方ASU身份列表及簽名。
當AE接受到鑑別請求分組後,查詢AP身份字段是否跟自己的一致,以及ECDH參數字段是否與自己在鑑別激活分組中的ECDH參數一致,一致則驗證ASUE的數字簽名,如果AE本地策略中要求使用第三方ASU鑑別STA證書,則AE會生成證書鑑別請求分組,發給ASU。
3. AS(RADIUS)服務器對AP(AE)進行證書鑑別
AE鑑別策略要求需要AS服務器來鑑別STA的證書,便產生證書鑑別請求分組給AS服務器,該分組中將包含如下字段:
由AE和ASUE的MAC組成的ADDID,AE跟ASUE的挑戰碼,AE和ASUE的證書以及ASUE信任的ASU列表。
ASU接受到證書鑑別請求分組後處理如下:
ASU對AE及ASUE證書進行驗證,一般鑑別過程是這樣的,ASU對證書做簽名認證,確認該證書是由合法的CA辦法的,是可信的即可。鑑別結束之後會根據AE和ASUE的證書驗證結果,構造證書鑑別響應分組,並附加響應的簽名發往AE。
AE受到證書鑑別響應分組後,根據ADDID確認對應的證書鑑別請求分組,檢查證書的驗證結果字段,並查找自身信任的ASU的簽名,驗證其簽名。若ASUE證書鑑別結果爲成功,本地生成用於ECDH交換的臨時密鑰y和臨時公鑰y*p,使用自己的臨時私鑰y和ASUE的臨時公鑰x*p進行ECDH計算,得到密鑰種子(x*y*p)acscissa,然後對其進行KD-HMAC-SHA256擴展,生成長度爲16個八位位組的基密鑰BK和長度爲32個八位位組的下一次證書鑑別過程的鑑別表示種子。在PSK中基密鑰BK則直接來自設置的Pre-shared key。然後將利用證書鑑別結果,雙方挑戰,雙方證書及簽名等構造接入鑑別響應分組發給ASUE。下圖描述了基密鑰BK是如何導出的:
圖 證書認證過程中BK導出
圖 預共享密鑰協商過程中BK的導出
ASUE受到鑑別響應分組後判斷上方的身份信息,比較挑戰碼是否和鑑別請求分組中一致,比較ASUE密鑰數據是否和鑑別請求分組中一致,驗證AE簽名的正確性,若鑑別相應分組中鑑別結果爲成功,則AE和ASUE的鏈路驗證。
4. AP跟STA間單播組播密鑰協商
一種好的密碼學算法,必然包括完善且高效的密鑰管理及協商機制。WAI也是一樣的,用於數據加解密的密鑰是由多個分組協商,通過密鑰擴展算法擴展而得到的。跟802.11i一樣,WAPI用於數據加解密的密鑰可以分爲兩種,一種是用於STA之間獨立處理的單播密鑰,另一種則是用於無線鏈路廣播用的組播密鑰。單播密鑰USK來源於BK,而組播密鑰MSK則由USK協商而來,這樣環環相扣,擁有較高的安全性。
圖 USK協商過程
鑑別完成之後AE會向ASUE發送單播密鑰協商請求分組,開始於STA協商單播密鑰,該分組格式大致如下:
會話算法標識 |
BKID |
USKID |
ADDID |
AE簽名 |
ASUE收到單播密鑰協商請求分組之後會一次驗證安全參數索引ADDID,AP簽名信息,ASUE 利用隨機數產生器產生 ASUE 挑戰 N2,然後計算 KD-HMAC-SHA256(BK ,ADDID||
N1||N2||“pairwise key expansion for unicast and additional keys and nonce”) ,其中 N1 爲 AE 挑戰,N2 爲 ASUE 挑戰。生成 96 個八位位組,前 64 個八位位組爲單播會話密鑰(第一個 16個八位位組爲單播加密密鑰,第二個 16 個八位位組爲單播完整性校驗密鑰,第三個 16 個八位位組爲WAI協議消息鑑別密鑰,第四個 16個八位位組爲組播密鑰/站間密鑰加密密鑰) 。最後 32 個八位位組爲下一次單播會話密鑰協商過程的 AE 挑戰的種子, 然後對該種子使用 SHA-256 函數計算得到長度爲 32 個八位位組的下一次單播密鑰協商過程的 AE 挑戰並保存。用 WAI 協議消息鑑別密鑰通過 HMAC-SHA256 算法本地計算消息鑑別碼,構造單播密鑰協商響應分組發往 AE。
AE接收到如下單播密鑰協商響應分組之後也會計算 KD-HMAC-SHA256(BK,ADDID|| N1||N2||“pairwise key expansion for unicast and additional keys and nonce”) ,其中 N1 是 AE 挑戰,N2 是 ASUE 挑戰。生成 96 個八位位組,前 64個八位位組爲單播會話密鑰(第一個 16 個八位位組爲單播加密密鑰,第二個 16 個八位位組爲單播完整性校驗密鑰,第三個 16 個八位位組爲 WAI 協議消息鑑別密鑰,第四個 16 個八位位組爲組播密鑰/站間密鑰加密密鑰) 。 後 32 個八位位組爲下一次單播會話密鑰協商過程的 AE 挑戰的種子,然後對種子使用 SHA-256 函數計算得到長度爲 32 個八位位組的下一次單播會話密鑰協商用。 WAI 協議消息鑑別密鑰通過 HMAC-SHA256 算法本地計算消息鑑別碼,構造單播密鑰協商確認分組,發送給 AE。
ASUE收到單播密鑰確認分組之後便會檢查ASUE挑戰與自己在單播響應分組中的值是否相同,利用消息鑑別密鑰通過HMAC-SHA256算法計算本地消息鑑別碼,與分組中的值相比較,進而確認WAPI信息元素。以完成鏈路的驗證。下圖也進一步說明了單播密鑰的到處體系:
單播密鑰協商完成之後,便會利用單播密鑰的協商結果進一步協商出組播密鑰,整個過程如下:
圖 組播密鑰協商過程
組播密鑰的協商是通過AE向ASUE發送組播密鑰通告分組,然後返回組播密鑰響應分組來完成的。具體的過程有點類似單播密鑰的協商。不再贅述。另外下圖也進一步的描述了組播密鑰的到處體系:
圖 組播密鑰導出體系
從上面的密鑰協商過程可以看出協商結束之後我們分別將會得到如下的後續用於數據處理的密鑰:
單播數據加密密鑰UEK
單播數據完整性校驗密鑰UCK
組播數據加密密鑰MUK
組播數據完整性校驗密鑰MCK
而這些密鑰會根據用戶的具體要求進行週期性的更新。
5. WPI數據幀加密處理
WAI完成身份鑑別及密鑰協商,而WPI則負責MPDU的數據加解密機密性保護,以及完整性校驗處理。與WPA的TKIP不同,也與WPA2的CCMP也不同,WPI採用了全新的SMS-4套件算法對數據處理。其實整個SMS-4跟CCMP類似其實是由兩個獨立的算法組成,一種是OFB加密模式,另一種跟CCMP相同的CBC-MAC完整性校驗算法。
當數據要發送時就會首先採用OFB加密算法利用加密密鑰和數據分組序號PN對MSDU數據進行加密,得到MSDU密文。
圖 OFB加密模式
然後利用完整性校驗密鑰與數據分組序號PN,通過工作在CBC-MAC模式的校驗算法對數據進行完整性校驗計算,得到完整性校驗碼MIC。
圖 CBC-MAC模式
最後對加密後的數據進行封裝,封裝後便在無線接口發送出去。
圖 WPI數據封裝處理
可以發現WPI的數據封裝過程跟802.11i基本是一致的,MAC頭,key id,PN,加密載荷,MIC及FCS。
數據接收時,WPI的解封裝過程爲:1.判斷數據分組序號PN是否有效,若無效,則丟棄該數據;2.利用完整性校驗密鑰與數據分組序號PN,通過工作在CBC-MAC模式的校驗算法對完整性校驗數據進行本地計算,若計算得到的值與分組中的完整性校驗碼MIC不同,則丟棄該數據;。