無線局域網(wǎng)安全技術(shù)白皮書
資源天下 2019/8/28 18:57:35
(接上頁)的安全,其協(xié)商流程圖如下:
圖2.8 單播和組播密鑰協(xié)商過程
上面圖中的ptk與gtk即單播和組播加解密使用的密鑰。
2.7 CCMP加密
ccmp提供了加密,認證,完整性和重放保護。ccmp是基于ccm方式的,該方式使用了AES(Advanced Encryption Standard)加密算法。CCM方式結(jié)合了用于加密的 Counter Mode(CTR)和用于認證和完整性的加密塊鏈接消息認證碼(CBC-MAC、Ciphy Block Chaing Message Autentication Code)。CCM保護MPDU數(shù)據(jù)和IEEE802.11 MPDU幀頭部分域的完整性。
AES定義在FIPS PUB 197。所有的在ccmp中用到的AES處理都使用一個128位的密鑰和一個128位大小的數(shù)據(jù)塊。
CCM方式定義在RFC 3610。CCM是一個通用模式,它可以用于任意面向塊的加密算法。CCM有兩個參數(shù)(M和L),CCMP使用以下值作為CCM參數(shù):
---M = 8;表示MIC是8個字節(jié)。
---L = 2;表示域長度位2個字節(jié)。這有助于保持IEEE 802.11 MPDU的最大長度。
針對每個會話,CCM需要有一個全新的臨時密鑰。CCM也要求用給定的臨時密鑰保護的每幀數(shù)據(jù)有唯一的nonce值。CCM是用一個48位PN來實現(xiàn)的。對于同樣的臨時密鑰可以重用PN,這可以減少很多保證安全的工作。
CCMP處理用16個字節(jié)擴展了原來MPDU大小,其中8個為CCMP幀頭,8個為MIC效驗碼。CCMP幀頭由PN,ExtIV和Key ID域組成。PN是一個48位的數(shù)字,是一個6字節(jié)的數(shù)組。PN5是PN的最高字節(jié),PN0是最低字節(jié)。值得注意的是CCMP不使用WEP ICV。
圖2.9 CCMP MPDU擴展
Key ID字節(jié)的第五位,ExtIV域,表示CCMP擴展幀頭8個字節(jié)。如果是使用CCMP加密,則ExtIV位的值總是為1。Key ID字節(jié)的第六第七位是為Key ID準備的。保留的各個位值為0,而且在接收的時候被忽略掉。
檢查重放的規(guī)則如下:
(1)PN值連續(xù)計算每一個MPDU。
(2)每個發(fā)送者都應(yīng)為每個PTKSA,GTKSA和STAkeySA維護一個PN(48位的計數(shù)器)。
(3)PN是一個48位的單調(diào)遞增正整數(shù),在相應(yīng)的臨時密鑰被初始化或刷新的時候,它也被初始化為1。
(4)接收者應(yīng)該為每個PTKSA,GTKSA和STAKeySA維護一組單獨的PN重放計數(shù)器。接收者在將臨時密鑰復(fù)位的時候,會將這些計數(shù)器置0。重放計數(shù)器被設(shè)置為可接收的CCMP MPDU的PN值。
(5)接收者為每個PTKSA,GTKSA和STAKeySA維護一個獨立的針對IEEE 802.11 MSDU優(yōu)先級的重放計數(shù)器,并且從接收到的幀獲取PN來檢查被重放的幀。這是在重放計數(shù)器的數(shù)目時,不使用IEEE 802.11 MSDU優(yōu)先級。發(fā)送者不會在重放計數(shù)器內(nèi)重排幀,但可能會在計數(shù)器外重排幀。IEEE 802.11 MSDU優(yōu)先級是重排的一個可能的原因。
(6)如果MPDU的PN值不連續(xù),則它所在的MSDU整個都會被接收者拋棄。接收者同樣會拋棄任何PN值小于或者等于重放計數(shù)器值的MPDU,同時增加ccmp 的重放計數(shù) 的值。CCMP加密過程如下圖:
圖2.10 CCMP加密過程圖
CCMP加密步驟如下:
(1)增加PN值,為每個MPDU產(chǎn)生一個新的PN,這樣對于同一個臨時密鑰TK永遠不會有重復(fù)的PN。需要注意的是被中轉(zhuǎn)的MPDUs在中轉(zhuǎn)過程中是不能被修改的;
(2)MPDU幀頭的各個域用于生成CCM方式所需的Additional Authentication Data(AAD)。CCM 運算對這些包含在AAD的域提供了完整性保護。在傳輸過程中可能改變的MPDU頭部各個域在計算AAD的時候被置0;
(3)CCM Nonce 塊是從PN,A2(MPDU地址2)和優(yōu)先級構(gòu)造而來。優(yōu)先級作為保留值設(shè)為0;
(未完,下一頁)
|