崔 超,趙 云,肖 勇,林偉斌,曾勇剛
南方電網(wǎng)科學(xué)研究院有限責(zé)任公司,廣州 510663
AES-CCM(advanced encryption standard-cipher block chaining and counter mode)加密協(xié)議作為無(wú)線局域網(wǎng)安全標(biāo)準(zhǔn),由IEEE無(wú)線標(biāo)準(zhǔn)小組于2004年公布[1],同時(shí)具備驗(yàn)證無(wú)線通信中鏈路層數(shù)據(jù)完整性、真實(shí)性和保障數(shù)據(jù)安全性的功能,目前已廣泛被802.11、802.15、802.16、Bluetooth、Zigbee等無(wú)線通訊協(xié)議采用.
基于AES-CCM加密協(xié)議在智能家居、可穿戴設(shè)備、智能駕駛等無(wú)線終端設(shè)備的廣泛應(yīng)用需求,AESCCM加密協(xié)議的實(shí)現(xiàn)方式逐漸成為研究熱點(diǎn).目前在工業(yè)領(lǐng)域,AES-CCM加密協(xié)議普遍采用CCM分組模式軟件實(shí)現(xiàn)、AES加密核硬件實(shí)現(xiàn)的方式,該方式實(shí)現(xiàn)簡(jiǎn)單靈活,但是運(yùn)算時(shí)產(chǎn)生的取指令、指令譯碼等操作占用本來(lái)就有限的CPU內(nèi)存資源,從而影響數(shù)據(jù)處理速度和系統(tǒng)功耗.在研究領(lǐng)域Nguyen等人將CBC(cipher block chaining mode)和CTR(counter mode)并行計(jì)算,提出了雙AES加密核的硬件高吞吐率實(shí)現(xiàn)方式,在269 MHz的最高頻率下,吞吐率能達(dá)到2.69 Gbps[2];Pammu等人提出9-core并行方案[3],在數(shù)據(jù)加密時(shí)多路并行計(jì)算,在校驗(yàn)值生成時(shí),利用有限域GF(28)上的乘法將每16×128比特轉(zhuǎn)換為128比特再送進(jìn)CBC模塊計(jì)算校驗(yàn)值,將數(shù)據(jù)處理速率提高至8.32 Gbps.以上研究大多是為了提高了數(shù)據(jù)吞吐率,而在實(shí)際應(yīng)用中如BLE產(chǎn)品、Zigbee產(chǎn)品等,有時(shí)候不需要太高的數(shù)據(jù)吞吐率,更關(guān)注產(chǎn)品的面積和功耗指標(biāo).因此,有必要對(duì)AES-CCM加密協(xié)議的低代價(jià)實(shí)現(xiàn)進(jìn)行研究.
本文給出AES-CCM通用協(xié)處理器的低功耗實(shí)現(xiàn)方案,該方案將傳統(tǒng)方法中粗粒度的雙AES并行或雙AES串行實(shí)現(xiàn)[4,5]細(xì)化為共享輪密鑰的雙輪并行或雙輪乒乓方式,如此能夠在保證吞吐率一致的前提下,減少冗余電路的實(shí)現(xiàn)和計(jì)算,從而降低面積和功耗的開(kāi)銷(xiāo).
本文結(jié)構(gòu)如下:第2節(jié)介紹了AES-CCM加密協(xié)議;第3節(jié)對(duì)AES-CCM通用協(xié)處理器的CCM控制模塊以及AES加密模塊的雙輪并行和雙輪乒乓實(shí)現(xiàn)方案進(jìn)行闡述;第4節(jié)介紹仿真綜合結(jié)果;第5節(jié)對(duì)方案進(jìn)行總結(jié).
AES-CCM協(xié)議的核心加密模塊主要由AES算法構(gòu)成,外圍控制模塊由經(jīng)典的密文塊連接CBC分組模式和計(jì)數(shù)器CTR分組模式構(gòu)成,其結(jié)構(gòu)如圖1所示.
圖1 AES-CCM結(jié)構(gòu)圖Figure 1 Structure diagram of AES-CCM
CBC分組模式主要用于壓縮數(shù)據(jù)生成消息完整性校驗(yàn)值(message authentication code,MAC),數(shù)據(jù)發(fā)送前,發(fā)送方對(duì)明文數(shù)據(jù)壓縮,生成消息驗(yàn)證碼MAC值附于明文后,發(fā)送給接收方.接收方收到數(shù)據(jù)后用同樣的CBC分組模式壓縮明文得到另一個(gè)MAC值,并將兩個(gè)MAC值比較,若一致,則接收數(shù)據(jù)無(wú)誤,以此來(lái)驗(yàn)證數(shù)據(jù)的完整性和真實(shí)性.CBC分組模式中AES的輸入為包含數(shù)據(jù)包頭、數(shù)據(jù)長(zhǎng)度、數(shù)據(jù)明文等信息的特定分組與前一組AES密文輸出Y i?1的異或值.其計(jì)算過(guò)程如下,其中B0、B1為包含數(shù)據(jù)包頭和數(shù)據(jù)長(zhǎng)度的128比特?cái)?shù)據(jù),P i為128比特的明文分組.
Y0=Enkey(B0)
Y1=Enkey(Y0⊕B1)
Y2=Enkey(Y1⊕P1)
...
Y n+2=Enkey(Y n+1⊕P n+1)
MAC=MSB(Y n+2)
CTR分組模式主要用于對(duì)傳輸數(shù)據(jù)加解密.發(fā)送方將明文數(shù)據(jù)和MAC值拼接起來(lái)并分成等長(zhǎng)度的數(shù)據(jù)組,每組與計(jì)數(shù)器加密結(jié)果進(jìn)行異或操作得到該組密文,接收方接到密文數(shù)據(jù)后用同樣的方法將密文分組分別與計(jì)數(shù)器的加密結(jié)果異或得到明文分組以及傳輸?shù)腗AC值.該分組模式的加密流程和解密流程完全一樣.AES的輸入為包含數(shù)據(jù)組計(jì)數(shù)值信息的數(shù)據(jù)A i,AES的密鑰key同生成校驗(yàn)值使用的密鑰key相同,其計(jì)算過(guò)程如下:
C1=Enkey(A1)⊕P1orP1=Enkey(A1)⊕C1
C2=Enkey(A2)⊕P2orP2=Enkey(A2)⊕C2
...
C n=Enkey(A n)⊕P norP n=Enkey(A n)⊕C n
CMAC=MSB(Enkey(A n))⊕MAC)
傳統(tǒng)的AES-CCM加密協(xié)議的全硬件實(shí)現(xiàn)技術(shù)有兩種:兩個(gè)AES加密核并行實(shí)現(xiàn)方案和一個(gè)AES加密核串行實(shí)現(xiàn)方案,分別如圖2中左右所示.AES-CCM加密協(xié)議并行實(shí)行實(shí)現(xiàn)方案采用兩個(gè)AES加密核并行分別實(shí)現(xiàn)CBC分組模式和CTR分組模式.CTR、CBC加密模式中被加密的明文互不相同,都由幾塊數(shù)據(jù)組成,所以需要Ai_gen和Bi_gen模塊按不同的階段產(chǎn)生CTR所需的A i和CBC所需的B i,分別輸入到兩個(gè)AES加密核中.
圖2 傳統(tǒng)AES并行實(shí)現(xiàn)AES-CCM方案(左)傳統(tǒng)AES串行實(shí)現(xiàn)AES-CCM方案(右)Figure 2 Traditional parallel implementation(left)and traditional serial implementation of AES-CCM(right)
AES-CCM加密協(xié)議串行實(shí)現(xiàn)方案采用一個(gè)AES加密核串行實(shí)現(xiàn),以時(shí)分復(fù)用的方式分別完成CBC和CTR分組模式的計(jì)算.A i和B i在CTRL模塊的控制下,交替輸入到AES加密核中.
對(duì)AES-CCM加密協(xié)議進(jìn)行分析,如圖3所示,當(dāng)設(shè)備作為數(shù)據(jù)發(fā)送方時(shí):
圖3 AES-CCM數(shù)據(jù)處理結(jié)構(gòu)圖Figure 3 AES-CCM data processing structure diagram
(1)CBC模式比CTR模式多計(jì)算一組數(shù)據(jù)B0;
(2)B1⊕Y0與A1的數(shù)據(jù)加密可以同步執(zhí)行;
(3)當(dāng)獲取到128比特明文數(shù)據(jù)P1且AES加密完成后,P1可以與A1的加密結(jié)果異或得到密文C1,繼而P1⊕Y1和A2數(shù)據(jù)加密可以同步執(zhí)行;
(4)當(dāng)獲取到明文P2且AES加密完成后,P2可以與A2的加密結(jié)果異或得到密文C2,繼而P2⊕Y2和A3數(shù)據(jù)加密仍然可以同步執(zhí)行;(
5)以此類(lèi)推,直到處理完所有明文數(shù)據(jù).
因此除了B0的AES加密運(yùn)算可以單獨(dú)執(zhí)行外,其他所有數(shù)據(jù)分組CBC和CTR的AES加密運(yùn)算都可以同步執(zhí)行.
當(dāng)設(shè)備作為數(shù)據(jù)接收方時(shí),
(1)同樣CBC模式比CTR模式多計(jì)算一組數(shù)據(jù)B0;
(2)B1⊕Y0與A1的數(shù)據(jù)加密可以同步執(zhí)行;
(3)當(dāng)接收到128比特密文數(shù)據(jù)C1且AES加密完成后,C1可以與A1的加密結(jié)果異或得到明文P1,繼而P1⊕Y1和A2數(shù)據(jù)加密可以同步執(zhí)行;
(4)當(dāng)接收到密文C2且AES加密完成后,C2可以與A2的加密結(jié)果異或得到明文P2,繼而P2⊕Y2
和A3數(shù)據(jù)加密仍然可以同步執(zhí)行;
(5)以此類(lèi)推,直到處理完所有密文數(shù)據(jù).
因此除了B0的AES加密運(yùn)算可以單獨(dú)執(zhí)行外,其他所有數(shù)據(jù)分組CBC和CTR的AES加密運(yùn)算也都可以同步執(zhí)行.
由以上分析,歸納出AES-CCM加密協(xié)議的3個(gè)特點(diǎn)如下:
(1)無(wú)論設(shè)備作為數(shù)據(jù)的發(fā)送方或者數(shù)據(jù)的接收方,AES-CCM加密協(xié)議中僅用到AES的加密模式,因此硬件實(shí)現(xiàn)中為減小設(shè)備的功耗和面積可以省去AES解密模式的實(shí)現(xiàn).
(2)AES-CCM加密協(xié)議中除了CBC模式第一組數(shù)據(jù),其他分組CBC模式和CTR模式的AES加密運(yùn)算可以同步執(zhí)行.
(3)AES在CBC模式和CTR模式中所用到的密鑰相同,因此為減小功耗,兩個(gè)同步執(zhí)行的AES計(jì)算可以在共享一個(gè)密鑰擴(kuò)展模塊的方式下以?xún)蓚€(gè)輪函數(shù)并行實(shí)現(xiàn)的方式計(jì)算,或以一個(gè)輪函數(shù)乒乓處理CBC模式和CTR模式數(shù)據(jù)的方式計(jì)算,3.2節(jié)與3.3節(jié)將給出并行實(shí)現(xiàn)和乒乓處理方式的具體過(guò)程.
根據(jù)以上AES-CCM加密協(xié)議的特點(diǎn),我們?cè)O(shè)計(jì)實(shí)現(xiàn)了AES-CCM通用協(xié)處理器,外圍控制模塊與傳統(tǒng)雙AES并行和單AES串行實(shí)現(xiàn)方案一致,AES加密模塊根據(jù)具體的應(yīng)用場(chǎng)景可以選擇性實(shí)現(xiàn).在高吞吐率要求的應(yīng)用場(chǎng)景選擇AES加密模塊雙輪并行實(shí)現(xiàn),在低電路面積要求的應(yīng)用場(chǎng)景選擇AES加密模塊雙輪乒乓實(shí)現(xiàn),其電路結(jié)構(gòu)如圖4所示.
圖4 AES雙輪并行實(shí)現(xiàn)AES-CCM方案(左)AES雙輪乒乓實(shí)現(xiàn)AES-CCM方案(右)Figure 4 Double wheel parallel(left)and double wheel ping-pang(right)implementation of AES-CCM
CCM模塊主要由狀態(tài)機(jī)構(gòu)成,其狀態(tài)跳轉(zhuǎn)如圖5所示.CCM的控制過(guò)程如下:
圖5 CCM控制模塊的狀態(tài)機(jī)Figure 5 Finite state machine of CCM control module
(1)在IDLE狀態(tài)下AES-CCM模塊的使能信號(hào)有效后,執(zhí)行第(2)步,狀態(tài)由IDLE狀態(tài)跳轉(zhuǎn)到GET_B0狀態(tài).
(2)在 GET_B0 狀態(tài)下,獲取數(shù)據(jù)B0,數(shù)據(jù)準(zhǔn)備好后,執(zhí)行第 (3)步,狀態(tài)跳轉(zhuǎn)到AES_ENCODE_S狀態(tài).
(3)在AES_ENCODE_S狀態(tài)下,使能AES加密模塊,AES的加密模式配置為單數(shù)據(jù)組加密模式,只執(zhí)行128比特?cái)?shù)據(jù)加密.AES加密完成后,執(zhí)行第(4)步,狀態(tài)跳轉(zhuǎn)到GET_BX_AX狀態(tài).
(4)在GET_BX_AX狀態(tài)下,獲取數(shù)據(jù)B x(P x?1)、A x,數(shù)據(jù)準(zhǔn)備好后,執(zhí)行第(5)步,狀態(tài)跳轉(zhuǎn)到AES_ENCODE_D狀態(tài).
(5)在AES_ENCODE_D狀態(tài)下,使能AES加密模塊,AES的加密模式配置為雙數(shù)據(jù)組加密模式,執(zhí)行2×128比特?cái)?shù)據(jù)加密.AES加密完成后,若當(dāng)前數(shù)據(jù)組不是最后一組數(shù)據(jù),則執(zhí)行第(4)步,狀態(tài)跳轉(zhuǎn)回GET_BX_AX狀態(tài),獲取下一組數(shù)據(jù);若當(dāng)前數(shù)據(jù)組是最后一組數(shù)據(jù),則執(zhí)行第(6)步,狀態(tài)跳轉(zhuǎn)到GET_PN_A0狀態(tài),進(jìn)行P n和A0數(shù)據(jù)獲取;若當(dāng)前數(shù)據(jù)組為MAC標(biāo)志的數(shù)據(jù)組,表示所有待加密數(shù)據(jù)組均完成加密,CBC模式的加密輸出生成MAC值,CTR模式的加密輸出異或MAC值,以完成對(duì)MAC值的加密,至此AES-CCM的所有數(shù)據(jù)處理完成,狀態(tài)跳轉(zhuǎn)回IDLE狀態(tài),等待下一次AES-CCM的使能.
(6)在GET_PN_A0狀態(tài)下,獲取數(shù)據(jù)P n和A0,當(dāng)P n和A0數(shù)據(jù)準(zhǔn)備好后,則執(zhí)行第(5)步,狀態(tài)跳轉(zhuǎn)回AES_ENCODE_D狀態(tài).
CCM狀態(tài)機(jī)執(zhí)行數(shù)據(jù)加密的狀態(tài)只有AES_ENCODE_S狀態(tài)和AES_ENCODE_D狀態(tài),AES_ENCODE_S狀態(tài)完成128比特?cái)?shù)據(jù)加密,每次啟動(dòng)AES-CCM加密協(xié)議,該狀態(tài)只執(zhí)行一次.AES_ENCODE_D狀態(tài)完成2×128比特?cái)?shù)據(jù)加密,每次啟動(dòng)AES-CCM加密協(xié)議,該狀態(tài)根據(jù)數(shù)據(jù)包的長(zhǎng)度多次重復(fù)執(zhí)行,因此AES_ENCODE_D狀態(tài)下的加密操作可以設(shè)計(jì)成兩個(gè)AES并行執(zhí)行或串行執(zhí)行的方式,同時(shí),由于CBC模式和CTR模式所使用的密鑰相同,為了減少功耗和電路面積,可以共享密鑰擴(kuò)展模塊,以輪并行和輪乒乓串行的方式替代兩個(gè)AES并行執(zhí)行或串行執(zhí)行的方式完成2×128比特?cái)?shù)據(jù)加密.
AES加密模塊雙輪并行實(shí)現(xiàn)的電路結(jié)構(gòu)如圖6所示,由兩個(gè)輪迭代模塊和一個(gè)密鑰擴(kuò)展模塊構(gòu)成.密鑰擴(kuò)展模塊完成輪密鑰的擴(kuò)展,并共享給兩個(gè)輪迭代模塊使用,輪迭代Core_0和輪迭代Core_1分別完成兩組數(shù)據(jù)的的輪迭代加密.兩個(gè)輪迭代模塊的使能信號(hào)單獨(dú)控制,當(dāng)只需要加密128比特?cái)?shù)據(jù)時(shí),只使能一個(gè)輪迭代模塊,另一個(gè)輪迭代模塊停止工作,以減小系統(tǒng)功耗;當(dāng)并行加密2×128比特?cái)?shù)據(jù)時(shí),使能信號(hào)en[0],en[1]都有效,并行加密兩組數(shù)據(jù).
圖6 AES雙輪并行實(shí)現(xiàn)電路結(jié)構(gòu)Figure 6 Circuit structure of AES double wheel parallel implementation
將該方案與傳統(tǒng)雙AES并行方案對(duì)比分析,我們發(fā)現(xiàn),該方案減少了一個(gè)密鑰擴(kuò)展模塊的電路實(shí)現(xiàn)和計(jì)算,從而減小了整體能耗和電路面積.
AES加密模塊雙輪乒乓實(shí)現(xiàn)的電路結(jié)構(gòu)如圖7所示,由一個(gè)輪迭代模塊和一個(gè)密鑰擴(kuò)展模塊構(gòu)成.當(dāng)執(zhí)行128比特?cái)?shù)據(jù)加密時(shí),AES配置成單數(shù)據(jù)組加密模式,完成一次128比特?cái)?shù)據(jù)加密需要10個(gè)周期,每個(gè)周期完成一次密鑰擴(kuò)展和一次輪迭代計(jì)算輪迭代模塊的輸出寄存器只用到reg_0,reg_1保持不變;當(dāng)執(zhí)行2×128比特?cái)?shù)據(jù)加密時(shí),AES配置成雙數(shù)據(jù)組加密模式,完成2×128比特?cái)?shù)據(jù)加密需要20個(gè)周期,每一輪函數(shù)計(jì)算由兩個(gè)周期完成,周期1完成當(dāng)前輪的密鑰擴(kuò)展和數(shù)據(jù)組0的輪迭代,并將輪迭代結(jié)果寄存至reg_0,周期2不需要執(zhí)行密鑰擴(kuò)展,只完成數(shù)據(jù)組1的輪迭代,并將輪迭代結(jié)果寄存至reg_1.
圖7 AES雙輪乒乓實(shí)現(xiàn)電路結(jié)構(gòu)Figure 7 Circuit structure of AES double wheel ping-pang implementation
將該方案與傳統(tǒng)雙AES串行方案對(duì)比分析,我們發(fā)現(xiàn),完成2×128比特?cái)?shù)據(jù)加密,該方案減少了10次密鑰擴(kuò)展的計(jì)算,從而減小了整體能耗,但是電路代價(jià)為多一組128比特的寄存器.
此外,以上兩種AES加密方案在輪迭代模塊和密鑰擴(kuò)展模塊的S盒實(shí)現(xiàn)時(shí)利用了同構(gòu)映射,將復(fù)合域GF(28)上的求逆運(yùn)算映射到GF(((22)2)2)上[6-8],并對(duì)GF((22)2)域上的邏輯表達(dá)式以及相鄰變換的表達(dá)式結(jié)合化簡(jiǎn),進(jìn)一步降低功耗,縮小關(guān)鍵路徑的延時(shí).
為了對(duì)方案的功能進(jìn)行驗(yàn)證,我們對(duì)方案進(jìn)行RTL代碼實(shí)現(xiàn),利用VCS仿真軟件結(jié)合Testbench驗(yàn)證腳本和測(cè)試激勵(lì),完成各模塊的功能驗(yàn)證.
AES的加密模式配置為單數(shù)據(jù)組加密模式時(shí),只執(zhí)行128比特?cái)?shù)據(jù)加密,此時(shí)設(shè)置加密密鑰為0x 66C6 C227 8E3B 8E05 3E7E A326 521B AD99,明文輸入為0x 1387 F41E DD57 F3FB 9B9C 5B10 B514 CAD2,AES加密模塊雙輪并行例化模塊和雙輪乒乓例化模塊的實(shí)驗(yàn)結(jié)果密文輸出均為0x 60F9 EEDF 7F87 4C92 0AB1 7BFE 827D 9E66.
AES的加密模式配置為雙數(shù)據(jù)組加密模式時(shí),執(zhí)行2×128比特?cái)?shù)據(jù)加密,此時(shí)設(shè)置加密密鑰為0x 66C6 C227 8E3B 8E05 3E7E A326 521B AD99,明文輸入分別為0x 1387 F41E DD57 F3FB 9B9C 5B10 B514 CAD2和0x 0200 DEAF BABE BADC AB24 8000 0000 0001,AES加密模塊雙輪并行例化模塊和雙輪乒乓例化模塊的實(shí)驗(yàn)結(jié)果相同,仿真波形分別如圖8、圖9所示,兩組明文對(duì)應(yīng)的密文輸出分別為0x 60F9 EEDF 7F87 4C92 0AB1 7BFE 827D 9E66和0x AF65 6CCD 00CA B319 5E03 F945 F97B 969E.
圖8 雙數(shù)據(jù)組AES雙輪并行加密實(shí)驗(yàn)結(jié)果Figure 8 Results of AES double wheel parallel implementation
圖9 雙數(shù)據(jù)組AES雙輪乒乓加密實(shí)驗(yàn)結(jié)果Figure 9 Results of AES double wheel ping-pang implementation
為了驗(yàn)證RTL代碼功能正確性,我們對(duì)AES算法進(jìn)行了軟件實(shí)現(xiàn),并將RTL仿真結(jié)果與軟件加密模型對(duì)比,經(jīng)對(duì)比密文輸出一致,驗(yàn)證了AES兩種例化方式的正確性.為了對(duì)方案的功耗和面積進(jìn)行評(píng)估,我們?cè)赥SMC 65 nm、tt_1p0v_25c的工藝下用Design Compiler軟件對(duì)不同方案的AES-CCM加密協(xié)議進(jìn)行綜合,在200 MHz的時(shí)鐘約束下,傳統(tǒng)雙AES并行實(shí)現(xiàn)AES-CCM加密協(xié)議綜合所得電路面積為25.83 kgates,功耗為4.62 mW;本方案所述AES雙輪并行實(shí)現(xiàn)AES-CCM加密協(xié)議綜合所得電路面積為23.45 kgates,功耗為4.05 mW;傳統(tǒng)AES串行實(shí)現(xiàn)AES-CCM加密協(xié)議綜合所得電路面積為15.49 kgates,功耗為2.31 mW;本方案所述AES雙輪乒乓實(shí)現(xiàn)AES-CCM加密協(xié)議綜合所得電路面積為16.45 kgates,功耗為2.03 mW.
表1 本方案與傳統(tǒng)方案實(shí)現(xiàn)AES-CCM加密協(xié)議數(shù)據(jù)對(duì)比Table 1 Comparison of AES-CCM encryption protocol data between proposed scheme and traditional scheme
由以上分析可得與傳統(tǒng)雙AES并行實(shí)現(xiàn)AES-CCM方案相比,AES雙輪并行實(shí)現(xiàn)AES-CCM方案的面積和功耗分別減小9.21%和12.34%;與傳統(tǒng)雙AES串行實(shí)現(xiàn)AES-CCM方案相比,AES雙輪乒乓實(shí)現(xiàn)AES-CCM方案的面積增加0.06%,功耗減小12.12%.
本文根據(jù)AES-CCM鏈路層數(shù)據(jù)加密與解密都只用到AES加密模式,且數(shù)據(jù)校驗(yàn)值生成與數(shù)據(jù)加解密密鑰相同的特點(diǎn),給出基于AES雙輪并行模塊、AES雙輪乒乓模塊的AES-CCM通用協(xié)處理器實(shí)現(xiàn)方案,用戶(hù)根據(jù)應(yīng)用需求選擇性例化實(shí)現(xiàn).方案中采用輪密鑰共享機(jī)制,以及AES算法S盒復(fù)合域化簡(jiǎn)實(shí)現(xiàn)方法,有效去除冗余電路,減小了電路功耗.