0 引 言
在各種通信設備和終端電子產品設計方法中,為使產品具有更強大的功能,越來越多地采用了嵌入式系統,WiMAX無線通信設備亦是如此。因此設計和開發現代網絡和通信技術中的安全技術時,必須和嵌入式技術結合在一起。本文提出和實現了一種基于AES-CCM加密算法和ARM+VxWorks嵌入式系統的WiMAX無線接入設備加密技術解決方案,并給出了算法模塊在設備中的應用方法。
1 算法實現原理
AES對稱密碼已經廣泛應用于數據的保密和數據完整性認證。在具體運用時,都會選擇一種具體的工作模式。目前AES算法已有多種工作模式,例如:ECB,CBC,CFB,OFB,CRT,CCM,GCM和AESKW。其中CCM(Counter with Cipher Block Chaining-Message Authentication Code)模式是一種同時提供加密和鑒別服務的全新操作模式。
1.1 CCM模式原理
使用CCM模式的基本條件包括,發送方和接收方定義相同的分組密碼算法Ek()(這里為AES加密算法)、密鑰K、記數器發生函數、格式化函數F()和鑒別標記長度Tlen、有效載荷長度Plen、隨機值N。加密算法過程如下:
Step 1:計算格式化函數F(N,A,P),產生數據塊序列B0,B1,…,Br(每塊為128 b);
格式化函數F將N,A,P整合在一起,并分組為r個數據塊。對數據塊加密,得到MAC值T,加密計數器發生函數產生的計數塊,加密所得sj和P與T異或得到密文C。解密過程則相反。
1.2 AES算法原理
AES算法加密過程由4個不同的處理階段組成,稱為:字節代換、行移位、列混淆、輪密鑰加。輸入數據數組state進行10輪上述處理后,得到加密密文。結構如圖1所示。
2 WiMAX中CCM應用規則改進
在802.16協議中規定PDU數據包加密后結構如圖2所示。
6個字節的包頭和4個字節的PN不需要經過加密處理。PN(Packet Number)在協議中規定用于防止重放攻擊,如當前收到的數據包的PN小于前一個數據包的PN時,當前收到的數據包將被丟棄。PN在發第一個包時值為1,以后每發一個包則加1。由于PN和包頭都未經加密處理,當竊聽者得到一個PDU時,將得到當前PN,并推導出以后各個數據包的PN值。因此引進CCM模式雖然能提高攻擊者進行重放攻擊的難度和成本,但并不能在技術上徹底防止重放攻擊。這里采用對PN進行加密處理來防止由于PN值泄露而遭受可能的重放攻擊。加密算法選擇AES算法,密鑰為802.16協議中的密鑰加密密鑰(KEK)。AES,KEK在系統中是用于對傳輸加密密鑰(TEK)進行加密處理的,本身已經存在于系統中,而且被良好地設計,在控制信息交互過程中,KEK定時更新。因此采用該方法不會給系統帶來額外的開銷,不需要引入新的加密算法,不需要維護密鑰。采用該方法PDU加密后結構如圖3所示。
由于對PN進行AES加密處理,因此加密后的PN長度將為16個字節。這降低了傳輸數據中有效載荷DATA的百分比,不過在實際應用中DATA往往達到上千或上萬個字節。因此為提高安全性和抗攻擊性,犧牲如此少的傳輸效率是值得的。
3 AES-CCM算法實現及結果分析
算法模塊基于富士通3400 wiMAx開發板ARM+VxWorks平臺開發,采用通用C庫函數,可以方便地移植到各種需要安全加密處理的嵌入式產品中。程序提供兩個接口,AES算法接口和AES-CCM算法接口。前者可以用于對傳輸加密密鑰TEK的加密處理,后者可以用于對傳輸數據的加密處理,使用者只需簡單的調用函數即可。程序框圖如圖4所示。
程序中實現了802.16 MAC PDU的構建、8 bCRC報頭校驗、32 bC2RC PDU校驗、CCM加密模塊、CCM解密模塊、AES加密模塊。
3.1 算法關鍵模塊實現
3.1.1 CCM加密模塊
AES-CCM算法中,加密函數使用128 b密鑰長度的AES算法。加密前后WiMAX MAC PDU結構變化如圖5所示。
CCM加密模塊流程如圖6。該模塊輸入為密鑰K和明文P。在計算MAC T和計數塊S時,調用AES加密程序。
3.1.2 密鑰K
在密鑰生成方法中,采用了隨即函數rand()和系統時鐘函數tickGet(),可以保證密鑰的惟一性和更高的不可推測性。程序如下:
3.1.3 計數器發生函數
計數器發生函數產生的計數塊,由PDU報頭,PN,遞增的整數i構造,長16個字節即128 b。函數如下:ctr preload為數組名,該數組用于存放生成的計數塊;modu為指向PDU數據的指針;pn vector為PN;i為遞增的整數,每計算一次計數塊后加1。
3.2 算法模塊應用方法設計和實現
算法模塊的應用方法主要根據TEK(傳輸加密密鑰)和CID(連接標志)的對應關系設計。在802.16協議中每一個CID都對應惟一的密鑰資源,因此可以根據CID找到對應的密鑰。在系統中創建兩個表,一個是TEK表:用于存放加密密鑰;另一個是CID表:用于存放CID值和對應密鑰索引。CID表中記錄結構如圖7所示。Type字段表示使用的加密方法,O表示DES-CBC,1表示AES-CCM;Key index字段值表示該CID標志對應的密鑰信息,在TEK表中的索引位置;CID字段表示CID標志值。
3.3 算法測試
測試密鑰Key和數據PDU如下:
發送端加密后的密文,一共包含3個部分。起始的10個字節為6個字節的PDU報頭和4個字節的PN;從末尾算起的4個字節為32 b的CRC校驗碼;其余分別是33個字節的凈荷密文和8個字節的分組鏈接模式校驗碼密文。
接收端解密后的PDU起始10個字節為報頭和PN;其后的33個字節和明文P的33個字節的數據凈荷相同;最后的4個字節為CRC校驗碼,用于接收端的CRC校驗。
第44個到51個字節為解密后的8個字節的分組鏈接模式校驗碼。在CCM解密程序中,對解密后得到的PDU,計算分組鏈接模式校驗碼,將計算結果和解密所得的分組鏈接模式校驗碼相比較,若相同則表示密文在傳輸過程中沒有被篡改破壞,這樣可以校驗傳輸數據的完整性。
上述結果表明本文設計的AES-CCM模塊和模塊應用方法,能正常工作,能滿足WiMAX設備的實際需要。
4 方案比較
當前,WiMAX設備方案提供商,對數據加密模塊主要有2種實現方案:
(1)采用專門的硬件算法模塊;
(2)采用高速DSP芯片。
方法(1)的優點是速度快,價格便宜但可擴展性和可升級性不強;方法(2)既有速度快的優點,也有很好的可擴展性和可升級性,但成本比較高。在采用這2種方案的設備中,通常需要一個額外的嵌入式系統來控制通信設備的運行,因此系統會比較復雜,成本較高。
本文的設計方法,將算法設計成嵌入式系統的一個軟件模塊,使用時只需直接調用即可。優點是:使用方便,而且由于系統沒有外接獨立的加密模塊,可以有效地降低系統的復雜度和成本。缺點是:加密工作由主控CPU來完成,會占用相當一部分系統資源,因此適用于那些沒有復雜功能的通信設備,例如端口較少的無線接入設備或WiMAX網卡等。
5 結 語
目前在IEEE 802.16和802.11i協議中,都采用AES-CCM算法為數據加密算法,并被包含在RFC3610中。在這種情形下,本文在對該算法深入分析后,對AES算法和CCM模式的隱患給出了改進,并給出了嵌入式WiMAX開發板平臺下的AES-CCM算法實現和應用方法的設計及實現。