崔 超, 趙 云, 肖 勇, 林偉斌, 徐 迪
南方電網科學研究院有限責任公司, 廣州 510663
2004 年, IEEE 無線標準小組公布了802.11i 無線局域網安全補充標準[1], 其中定義了基于AES 的全新加密協議CCM 協議, 滿足了當時無線局域網安全性的迫切需求, 推動工業4.0、物聯網、智能家居、智能駕駛等技術從概念階段逐漸走向成熟. 目前AES-CCM 加密協議已廣泛被802.11、802.15、802.16、Bluetooth、Zigbee 等無線通訊協議采用.
CCM 協議主要由經典的密文塊連接CBC 分組模式和計數器CTR 分組模式構成. CBC 分組模式主要用于生成消息完整性校驗值(MAC), CTR 分組模式主要用于對傳輸數據加解密. 因此AES-CCM 加密協議同時具備驗證數據完整性、真實性和保障數據安全性的功能.
基于上述安全高效的優點, AES-CCM 加密協議已普遍實現于可穿戴設備、車載網絡設備, 智能監控設備中. 然而現在無線網絡傳輸速度不斷提高, 2013 年發布的802.11ac 通訊標準推出4×4 多輸入多輸出(multiple input multiple output, MIMO) 技術, 將傳輸速率提高到1.3 Gbps, 2019 年發布的802.11ax通訊標準使用8×8 MIMO 技術, 在5 GHz 頻段上可以帶來高達4.8 Gbps 的第6 代Wi-Fi 連接速度, 而適用于無線VR 頭戴和流媒體投屏應用的802.11ay 標準在60 GHz 的頻段下, 傳輸速率可高達20 Gbps,這使得AES-CCM 加密協議處理數據的速度成為無線網絡高速發展的瓶頸之一.
此外, 無線終端設備諸如可穿戴設備、智能報警設備等普遍為低功耗設備, 鏈路層數據加解密以及認證產生的功耗會成為設備的主要功耗. 很多IP 設計者會在數據發送前或接收后, 對數據加解密, 以降低峰值功耗, 這就產生額外的存儲和速度開銷. 因此AES-CCM 加密協議的低功耗、小面積硬件實現成為無線終端設備在實際應用場景中的另一個技術瓶頸.
為了攻克以上技術難點, 國內外在AES-CCM 的高吞吐率、低功耗實現方面做了很多研究[2–4].Nguyen 等人將CBC 和CTR 并行計算, 提出了雙AES 核、高吞吐率的電路實現, 在269 MHz 的最高頻率下, 吞吐率能達到2.69 Gbps[5]. 然而該文獻并沒有注意到CBC 和CTR 具備相同密鑰的特性,粗粒度的并行實現致使電路中存在大量的冗余計算, 增加了功耗和面積的開銷. Hoang 等人給出了8-bit單核AES-CCM 的超低功耗實現[6], 但是該方案的AES 計算周期數太大, 僅能適用于低速、低功耗產品. Pammu 等人提出9-Core 并行方案[7], 在數據加密時多路并行計算; 在校驗值生成時, 利用有限域GF(28) 上的乘法將每16×128 比特轉換為128 比特再送進CBC 模塊計算校驗值, 如此使得原標準中的每128 比特一反饋, 轉換為每16×128 比特一反饋, 打破了由于密文反饋導致CBC 不能并行計算的局限性, 將數據處理速率提高至8.32 Gbps. 但是該方案改變了AES-CCM 加密協議的標準, 并不具備通用性.
本文對AES-CCM 加密協議作了深入研究, 利用其鏈路加密與解密都只用到AES 加密模式的特點,提出了5-Core AES-CCM 高吞吐率低功耗硬件實現方案, 該實現支持半雙工通訊方式以及全雙工同步計算通訊方式. 在全雙工通訊方式下, 5 個Core 參與計算, 吞吐率可達4.23 Gbps. 同時該方案利用其鏈路加密與解密過程中驗證值生成和數據加解密密鑰相同的特點, 提出多Core 輪密鑰共享方案, 有效減少了冗余電路的實現和計算,與傳統實現方式相比,AES-CCM 的電路面積和功耗分別減少14.88%和20.00%.此外, 為了降低功耗, 在S 盒實現時, 該方案利用同構映射, 將復合域GF(28) 上的求逆運算逐步映射到GF(((22)2)2) 上, 并對GF((22)2) 域上的邏輯表達式化簡, 使得電路中僅涉及與或非基本單元庫, 同時將相鄰同構逆映射和仿射變換相結合化簡, 從而降低功耗, 縮小關鍵路徑的延時.
本文結構如下: 第2 節介紹了AES-CCM 加密協議、AES 加密算法;第3 節闡述了5-Core AES-CCM加密協議的實現方案; 第4 節給出AES 加密算法的S 盒實現方案; 第5 節介紹仿真環境與結果以及綜合環境與結果, 并將本方案與其他方案作對比分析; 第6 節對方案進行總結.
本節第一部分簡要介紹AES-CCM 加密協議并概述其特點; 第二部分介紹AES 加密算法.
無線通訊網絡的安全性保證包括三方面: 密鑰管理、數據驗證以及數據保密.
密鑰管理一般結合隨機數的生成與傳輸, 利用根密鑰、讀取密鑰、會話密鑰三級密鑰體制實現主從設備的身份驗證、密鑰分發以及會話密鑰的更新.
數據驗證一般由哈希函數或者對稱加密算法的特定分組模式構成, 如圖1 所示, 數據發送前, 發送方對明文數據壓縮, 生成消息驗證碼MAC 值附于明文后, 發送給接收方. 接收方收到數據后用同樣的算法壓縮明文得到另一個MAC 值, 并將兩個MAC 值比較, 若一致, 則接收數據無誤.
數據保密一般由加密算法結合分組模式共同實現對數據的分組與加解密, 在圖1 中, 發送方將明文數據和MAC 值拼接起來并分成等長度的數據組, 接收方接到密文數據后用同樣的加密算法和分組模式的逆過程, 以及相同的密鑰對數據進行分組解密, 以得到明文和MAC 值.

圖1 鏈路層數據驗證與數據保密Figure 1 Validation and confidentiality of link layer data
AES-CCM 主要用于保護物聯網的數據安全傳輸, 由AES 分組密碼算法和CCM 分組模式構成.CCM 是一種比較新的分組模式, 主要由CBC 分組模式和CTR 分組模式構成. 其結構如圖2 所示.
隨著教學改革的步伐不斷邁進,老師在課堂中不但要傳授學生知識,還需要把學生的探索精神與創造能力培養起來,但是由于受到根深蒂固的傳統教育觀念所影響,很多的老師在教學過程中并沒有把提升學生的綜合素質重視起來。在教學的過程中老師必須改變這種傳統的教學觀念,充分應用新課改背景下的現代化教學理念,尊重學生學習過程中的主觀能動性,引導每個學生都能夠主動深入思考,并能夠展現自己的個性。

圖2 AES-CCM 結構圖Figure 2 AES-CCM architecture
MAC 值主要借鑒CBC 分組模式生成, AES 的輸入為包含數據包頭、數據長度、數據明文等信息的特定分組與前一組AES 密文輸出Yi?1的異或值. 其計算過程如下, 其中B0、B1為包含數據包頭和數據長度的128 bits 數據,Pi為128 bits 的明文分組.

數據的加解密主要借鑒CTR 分組模式完成, 該分組模式的加密流程和解密流程完全一樣. AES 的輸入為包含數據組計數值信息的數據Ai, AES 的密鑰key 同生成校驗值使用的密鑰key 相同, 其計算過程如下:

AES 是美國國家標準技術局(NIST) 于2001 年發布的一個新的分組加密算法, 用來取代DES 算法.分組長度固定為128 比特, 密鑰長度在128、192、256 中可選, 分別對應AES-128、AES-192、AES-256.AES-128 的加密流程如圖3 所示, 總體由兩部分組成: 密鑰擴展和輪迭代. 每一輪的輪密鑰擴展由移位操作、異或操作和字節替換操作構成; 輪迭代由字節替換、行移位、列混合、密鑰加組成.

圖3 AES 算法結構Figure 3 AES architecture
通過對AES-CCM 加密協議進行分析, 我們歸納出該協議的3 個特點:
(1) 無論設備作為數據的發送方還是數據的接收方, AES-CCM 加密協議中僅用到AES 的加密模式,因此硬件實現中為減小設備的功耗和面積可以省去AES 解密模式的實現.
(2) AES-CCM 加密協議中MAC 值的生成和數據的加解密可以并行計算.
(3) AES 在MAC 值生成以及數據加解密時所用到的密鑰相同, 因此為減小功耗, 多個輪迭代函數可以共享一個密鑰擴展模塊.
根據以上AES-CCM 加密協議的特點分析, 本文實現了5-Core AES-CCM 硬件模塊, 該模塊以高性能5-Core AES 加密模塊為運算核心, 在外圍CCM 模塊的協同控制下來實現AES-CCM 加密協議.
5-Core AES 模塊的模塊結構如圖4 所示, Core_4 實現密鑰擴展的輪操作, Core_0–Core_3 為4 個完全一樣的輪迭代函數, 并行實現4×128 比特的數據加密. 5-Core AES 模塊根據需要可配置為2-Core、3-Core、4-Core、5-Core 模式, 用于AES-CCM 半雙工或全雙工同通訊場景下, 也可用于非CCM 模式的AES 多路并行加密場景.

圖4 5-Core AES 結構圖Figure 4 5-Core AES architecture
CCM 模塊主要由狀態機構成, 在半雙工通訊方式下, 僅實現RX 狀態操作或TX 狀態操作, 其狀態跳轉和狀態操作如圖5 所示, 各狀態含義參照圖2 AES-CCM 結構框圖理解, CIPHER_B0 狀態表示對B0數據加密, 調用一個加密核, 將5-Core AES 加密模塊配置成2-Core 模式; CIPHER_B1Y0_A1狀態表示對B1⊕Y0數據和A1計數值加密, CIPHER_PXYX_AX1 狀態表示對Px ⊕Yx和計數值Ax+1加密, CIPHER_MAC_A0 狀態表示對最后一組明文Pn ⊕Yn加密生成MAC 值, 同時對A0加密.CIPHER_B1Y0_A1 狀態、CIPHER_PXYX_AX1 狀態、CIPHER_MAC_A0 狀態調用兩個并行的加密核, 將5-Core AES 加密模塊配置成3-Core 模式. 每個加密狀態的跳出條件為加密完成, 每個WAIT狀態的跳出條件為數據獲取完成.

圖5 半雙工通訊方式CCM 狀態控制Figure 5 CCM state control of half-duplex communication
在全雙工通訊方式下, RX 數據包處理和TX 數據包處理并行實現, 狀態跳轉如圖6 所示. CIPHER_0 狀態加密一組數據, 將5-Core AES 加密模塊配置成2-Core 模式; CIPHER_01 狀態同時加密兩組數據, 將5-Core AES 加密模塊配置成3-Core 模式; CIPHER_012 狀態同時加密三組數據, 將5-Core AES 加密模塊配置成4-Core 模式; CIPHER_0123 狀態同時加密四組數據, 將5-Core AES 加密模塊配置成5-Core 模式.
狀態跳轉有4 種情況, 其狀態跳轉如圖6 的右側所示. 1 為先處理一個數據包, 隨后又開啟另一個數據包的處理, 兩個數據包同時結束的情況; 2 為先處理一個數據包, 隨后開啟另一個數據包的處理, 兩個數據包不同時結束的情況; 3 為兩個數據包同時開始, 同時結束的情況; 4 為兩個數據包同時開始, 不同時結束的情況. flg_packet0_cmp 信號和flg_packet1_cmp 信號分別代表兩個數據包處理中的指示信號, 根據以上4 種情況, 結合每個數據包的分組長度和計數值Ax產生高電平信號. 狀態跳轉條件在flg_packet0_cmp 和flg_packet1_cmp 不同值下結合加密完成信號和數據獲取完畢信號產生.
S 盒在RTL 實現時主要有查找表方式和基于有限域運算方式[8]. S 盒的查找表方式快捷直接, 但是電路面積非常大, 不適合高速低功耗應用實現. 有限域實現S 盒, 計算公式為:

先將a在有限域GF(28) 上進行乘法逆運算, 再對其乘法逆元進行仿射變換. 該種方式實現的S 盒電路結構緊湊, 資源消耗少[9,10], 但是其關鍵在于有效實現有限域GF(28) 上的乘法逆元. 本文利用復合域的同構映射, 將GF(28) 上的運算逐步映射到GF(((22)2)2) 上進行, 以降低運算的復雜度. 方案中GF(28) 和GF((24)2) 之間的同構映射為:

GF(24) 和GF((22)2) 之間的同構映射為:

各復合域中的不可約多項式為:

在以上代數背景下得出(ahx+al)?1在GF((24)2) 上的乘法逆元a′hx+a′l為:

上式中v={1001}, 從上式可以看出GF(28) 上的求逆運算經過同構映射轉化為GF(24) 上的求逆運算、乘法運算、平方運算、平方乘運算和異或運算. 利用同樣的計算方式可以將GF(24) 上的運算同構映射到GF((22)2) 上進行, 從而將邏輯表達式逐步分解. 圖7 給出GF(28) 上求逆和GF(24) 上乘積的電路結構.

圖7 GF(28) 上的乘法逆元電路和GF(24) 上的乘法電路Figure 7 Circuits of multiplicative inverse in GF(28) and multiplication in GF(24)
為了簡化電路的運算路徑, 本方案將GF(24) 與GF((22)2) 之間的同構映射T1、同構逆映射分別與GF((22)2) 上的乘積運算、逆運算、平方運算、平方乘運算的邏輯表達式結合化簡, 得到GF(24) 上的求逆運算、乘法運算、平方運算和平方乘運算簡化后的邏輯表達式如下所示:



為了對方案的功能進行驗證, 我們對方案進行RTL 代碼實現, 利用VCS 仿真軟件結合Testbench 驗證腳本和測試激勵, 完成各模塊的前仿功能驗證.
由于 5-Core AES 模塊由 4 個完全一樣的輪函數并行實現, 故我們在此只需分析一個輪函數的仿真結果, 設置加密密鑰為: 66c6_c227_8e3b_8e05_3e7e_a326_521b_ad99, 明文輸入為:0400_deaf_babe_badc_ab24_0000_0000_0101, 實驗結果仿真的密文輸出為: d824_88ba_3df3_896d_bfb0_ba38_e55e_5e26. 為了驗證RTL 代碼功能正確性, 我們對算法進行了軟件實現, 并將RTL仿真結果與軟件加密模型對比, 經對比密文輸出一致, 輪函數功能正確. 同時通過仿真可知完成AES-128的完整計算需要11 個周期.
CCM 模塊在狀態機的控制下完成數據讀寫以及5-Core AES 模塊的數據和使能配置,使其完成AESCCM 協議的數據處理.
在半雙工通訊方式下, 假設需要發送或接收的數據包有效數據長度為256×128 比特, 完成256×128比特的RX_DATA 或TX_DATA 數據傳輸需要加密(2×(256+1)+1)×128 比特的數據, 至少需要12×(256+2) 個周期(每組數據需要11 個周期的加密, 至少1 個周期的數據獲取). 故在200 MHz 的時鐘頻率下, 吞吐率為(256×128)×200 M/(12×(256+2))=2.12 Gbps.
在全雙工通訊方式下, 若傳輸設備需要發送和接收各256×128 比特數據, 由于發送數據包和接收數據包存在3.2 節描述的四種情況, 故吞吐率不恒定. 考慮最差的情況, 兩個數據包僅交疊128 比特,則CIPHER_0 狀態執行1 次, CIPHER_01 狀態執行255×2 次, CIPHER_012 狀態執行1 次, CIPHER_0123 狀態執行1 次, 完成2× 256× 128 比特的rx_data 和tx_data 數據傳輸至少需要12×(1+255×2+1+1) 個周期. 故在200 MHz 的時鐘頻率下, 吞吐率為2×256×128×200 M/12×(1+255×2+1+1) = 2.13 Gbps. 考慮最好的情況, 兩個數據包完全同步, 則CIPHER_01 狀態執行1 次,CIPHER_0123 狀態執行256+1 次, 完成2×256×128 比特的RX_DATA 和TX_DATA 數據傳輸至少需要12×(1+257)個周期. 故在200 MHz 的時鐘頻率下,吞吐率為2×256×128×200 M/12×(1+257)=4.23 Gbps. 因此全雙工通訊方式下的吞吐率在2.13 Gbps 和4.23 Gbps 之間, 該協處理器能達到的峰值吞吐率為4.23 Gbps.
將該方案與其他方案的性能進行對比, 結果見表1, 對比發現Multi GF(28) 方案[7]的數據處理速度最快, 但是該方案將不可并行的CBC 分組模式做了調整, 將128 比特分組改為16×128 比特分組, 并對16×128 比特數據在GF(28) 上壓縮成128 比特, 再送入CBC 分組模式, 以此提高數據并行處理的速度, 實際上這種方式已經改變了標準的AES-CCM 加密協議, 并不具備廣泛的適用性. 其他方案中的最高吞吐率方案為Parallel two AES[5], 考慮到實現工藝不同, 我們對該文獻做了最大相似度電路實現, 并在TSMC 65 nm、tt_1p0v_25c 的工藝下綜合, 發現其最高頻率能達到320 MHz, 對應吞吐率為3.26 Gbps,故本論文方案是其他方案中歸一化后最高速率3.26 Gbps 的1.30 倍.

表1 5-Core AES-CCM 方案與其他方案AES-CCM 的性能對比Table 1 Comparison of proposed 5-Core AES-CCM with other AES-CCM techniques
為了對方案的功耗和面積進行評估, 我們在TSMC 65 nm、tt_1p0v_25c 的工藝下用Design Compiler 軟件對AES-CCM 模塊進行綜合,在200 MHz 的時鐘約束下,綜合所得電路面積為39.59 kgates,功耗為6.89 mW. 為了對比, 我們對傳統非輪密鑰共享, 粗粒度4 個AES 并行實現AES-CCM 加密協議方案進行了電路實現(外圍CCM 控制模塊基本不變, 5-Core AES 模塊替換成4 個并行的AES 模塊), 并在相同工藝和約束下進行綜合, 電路的面積為46.51 kgates, 功耗為8.62 mW, 具體各模塊的面積和功耗分布情況如表2 所示. 因此本方案中的密鑰共享方案能夠使電路的面積和功耗分別減小14.88% 和20.00%.

表2 5-Core AES-CCM 方案與Traditional parallel four AES 的功耗面積對比Table 2 Comparison of proposed 5-Core AES-CCM with traditional parallel four AES
本文根據AES-CCM 鏈路層數據加密與解密都只用到AES 加密模式, 且數據校驗值生成與數據加解密密鑰相同的特點, 給出5-Core AES-CCM 加密協議的硬件實現方案, 方案采用4 個輪函數并行計算的方式同時實現TX 與RX 兩個數據包的處理, 提高了數據吞吐率. 同時方案采用輪密鑰共享機制, 以及AES 算法S 盒復合域化簡實現方法, 有效去除冗余電路, 減小了電路面積和功耗.