国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

AES-CCM通用協(xié)處理器的優(yōu)化設(shè)計實現(xiàn)*

2021-11-20 02:13林偉斌曾勇剛
密碼學(xué)報 2021年5期
關(guān)鍵詞:明文密鑰比特

崔 超,趙 云,肖 勇,林偉斌,曾勇剛

南方電網(wǎng)科學(xué)研究院有限責(zé)任公司,廣州 510663

1 引言

AES-CCM(advanced encryption standard-cipher block chaining and counter mode)加密協(xié)議作為無線局域網(wǎng)安全標準,由IEEE無線標準小組于2004年公布[1],同時具備驗證無線通信中鏈路層數(shù)據(jù)完整性、真實性和保障數(shù)據(jù)安全性的功能,目前已廣泛被802.11、802.15、802.16、Bluetooth、Zigbee等無線通訊協(xié)議采用.

基于AES-CCM加密協(xié)議在智能家居、可穿戴設(shè)備、智能駕駛等無線終端設(shè)備的廣泛應(yīng)用需求,AESCCM加密協(xié)議的實現(xiàn)方式逐漸成為研究熱點.目前在工業(yè)領(lǐng)域,AES-CCM加密協(xié)議普遍采用CCM分組模式軟件實現(xiàn)、AES加密核硬件實現(xiàn)的方式,該方式實現(xiàn)簡單靈活,但是運算時產(chǎn)生的取指令、指令譯碼等操作占用本來就有限的CPU內(nèi)存資源,從而影響數(shù)據(jù)處理速度和系統(tǒng)功耗.在研究領(lǐng)域Nguyen等人將CBC(cipher block chaining mode)和CTR(counter mode)并行計算,提出了雙AES加密核的硬件高吞吐率實現(xiàn)方式,在269 MHz的最高頻率下,吞吐率能達到2.69 Gbps[2];Pammu等人提出9-core并行方案[3],在數(shù)據(jù)加密時多路并行計算,在校驗值生成時,利用有限域GF(28)上的乘法將每16×128比特轉(zhuǎn)換為128比特再送進CBC模塊計算校驗值,將數(shù)據(jù)處理速率提高至8.32 Gbps.以上研究大多是為了提高了數(shù)據(jù)吞吐率,而在實際應(yīng)用中如BLE產(chǎn)品、Zigbee產(chǎn)品等,有時候不需要太高的數(shù)據(jù)吞吐率,更關(guān)注產(chǎn)品的面積和功耗指標.因此,有必要對AES-CCM加密協(xié)議的低代價實現(xiàn)進行研究.

本文給出AES-CCM通用協(xié)處理器的低功耗實現(xiàn)方案,該方案將傳統(tǒng)方法中粗粒度的雙AES并行或雙AES串行實現(xiàn)[4,5]細化為共享輪密鑰的雙輪并行或雙輪乒乓方式,如此能夠在保證吞吐率一致的前提下,減少冗余電路的實現(xiàn)和計算,從而降低面積和功耗的開銷.

本文結(jié)構(gòu)如下:第2節(jié)介紹了AES-CCM加密協(xié)議;第3節(jié)對AES-CCM通用協(xié)處理器的CCM控制模塊以及AES加密模塊的雙輪并行和雙輪乒乓實現(xiàn)方案進行闡述;第4節(jié)介紹仿真綜合結(jié)果;第5節(jié)對方案進行總結(jié).

2 AES-CCM加密協(xié)議

AES-CCM協(xié)議的核心加密模塊主要由AES算法構(gòu)成,外圍控制模塊由經(jīng)典的密文塊連接CBC分組模式和計數(shù)器CTR分組模式構(gòu)成,其結(jié)構(gòu)如圖1所示.

圖1 AES-CCM結(jié)構(gòu)圖Figure 1 Structure diagram of AES-CCM

CBC分組模式主要用于壓縮數(shù)據(jù)生成消息完整性校驗值(message authentication code,MAC),數(shù)據(jù)發(fā)送前,發(fā)送方對明文數(shù)據(jù)壓縮,生成消息驗證碼MAC值附于明文后,發(fā)送給接收方.接收方收到數(shù)據(jù)后用同樣的CBC分組模式壓縮明文得到另一個MAC值,并將兩個MAC值比較,若一致,則接收數(shù)據(jù)無誤,以此來驗證數(shù)據(jù)的完整性和真實性.CBC分組模式中AES的輸入為包含數(shù)據(jù)包頭、數(shù)據(jù)長度、數(shù)據(jù)明文等信息的特定分組與前一組AES密文輸出Y i?1的異或值.其計算過程如下,其中B0、B1為包含數(shù)據(jù)包頭和數(shù)據(jù)長度的128比特數(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分組模式主要用于對傳輸數(shù)據(jù)加解密.發(fā)送方將明文數(shù)據(jù)和MAC值拼接起來并分成等長度的數(shù)據(jù)組,每組與計數(shù)器加密結(jié)果進行異或操作得到該組密文,接收方接到密文數(shù)據(jù)后用同樣的方法將密文分組分別與計數(shù)器的加密結(jié)果異或得到明文分組以及傳輸?shù)腗AC值.該分組模式的加密流程和解密流程完全一樣.AES的輸入為包含數(shù)據(jù)組計數(shù)值信息的數(shù)據(jù)A i,AES的密鑰key同生成校驗值使用的密鑰key相同,其計算過程如下:

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é)議的全硬件實現(xiàn)技術(shù)有兩種:兩個AES加密核并行實現(xiàn)方案和一個AES加密核串行實現(xiàn)方案,分別如圖2中左右所示.AES-CCM加密協(xié)議并行實行實現(xiàn)方案采用兩個AES加密核并行分別實現(xiàn)CBC分組模式和CTR分組模式.CTR、CBC加密模式中被加密的明文互不相同,都由幾塊數(shù)據(jù)組成,所以需要Ai_gen和Bi_gen模塊按不同的階段產(chǎn)生CTR所需的A i和CBC所需的B i,分別輸入到兩個AES加密核中.

圖2 傳統(tǒng)AES并行實現(xiàn)AES-CCM方案(左)傳統(tǒng)AES串行實現(xiàn)AES-CCM方案(右)Figure 2 Traditional parallel implementation(left)and traditional serial implementation of AES-CCM(right)

AES-CCM加密協(xié)議串行實現(xiàn)方案采用一個AES加密核串行實現(xiàn),以時分復(fù)用的方式分別完成CBC和CTR分組模式的計算.A i和B i在CTRL模塊的控制下,交替輸入到AES加密核中.

3 AES-CCM通用協(xié)處理器的優(yōu)化設(shè)計

對AES-CCM加密協(xié)議進行分析,如圖3所示,當設(shè)備作為數(shù)據(jù)發(fā)送方時:

圖3 AES-CCM數(shù)據(jù)處理結(jié)構(gòu)圖Figure 3 AES-CCM data processing structure diagram

(1)CBC模式比CTR模式多計算一組數(shù)據(jù)B0;

(2)B1⊕Y0與A1的數(shù)據(jù)加密可以同步執(zhí)行;

(3)當獲取到128比特明文數(shù)據(jù)P1且AES加密完成后,P1可以與A1的加密結(jié)果異或得到密文C1,繼而P1⊕Y1和A2數(shù)據(jù)加密可以同步執(zhí)行;

(4)當獲取到明文P2且AES加密完成后,P2可以與A2的加密結(jié)果異或得到密文C2,繼而P2⊕Y2和A3數(shù)據(jù)加密仍然可以同步執(zhí)行;(

5)以此類推,直到處理完所有明文數(shù)據(jù).

因此除了B0的AES加密運算可以單獨執(zhí)行外,其他所有數(shù)據(jù)分組CBC和CTR的AES加密運算都可以同步執(zhí)行.

當設(shè)備作為數(shù)據(jù)接收方時,

(1)同樣CBC模式比CTR模式多計算一組數(shù)據(jù)B0;

(2)B1⊕Y0與A1的數(shù)據(jù)加密可以同步執(zhí)行;

(3)當接收到128比特密文數(shù)據(jù)C1且AES加密完成后,C1可以與A1的加密結(jié)果異或得到明文P1,繼而P1⊕Y1和A2數(shù)據(jù)加密可以同步執(zhí)行;

(4)當接收到密文C2且AES加密完成后,C2可以與A2的加密結(jié)果異或得到明文P2,繼而P2⊕Y2

和A3數(shù)據(jù)加密仍然可以同步執(zhí)行;

(5)以此類推,直到處理完所有密文數(shù)據(jù).

因此除了B0的AES加密運算可以單獨執(zhí)行外,其他所有數(shù)據(jù)分組CBC和CTR的AES加密運算也都可以同步執(zhí)行.

由以上分析,歸納出AES-CCM加密協(xié)議的3個特點如下:

(1)無論設(shè)備作為數(shù)據(jù)的發(fā)送方或者數(shù)據(jù)的接收方,AES-CCM加密協(xié)議中僅用到AES的加密模式,因此硬件實現(xiàn)中為減小設(shè)備的功耗和面積可以省去AES解密模式的實現(xiàn).

(2)AES-CCM加密協(xié)議中除了CBC模式第一組數(shù)據(jù),其他分組CBC模式和CTR模式的AES加密運算可以同步執(zhí)行.

(3)AES在CBC模式和CTR模式中所用到的密鑰相同,因此為減小功耗,兩個同步執(zhí)行的AES計算可以在共享一個密鑰擴展模塊的方式下以兩個輪函數(shù)并行實現(xiàn)的方式計算,或以一個輪函數(shù)乒乓處理CBC模式和CTR模式數(shù)據(jù)的方式計算,3.2節(jié)與3.3節(jié)將給出并行實現(xiàn)和乒乓處理方式的具體過程.

根據(jù)以上AES-CCM加密協(xié)議的特點,我們設(shè)計實現(xiàn)了AES-CCM通用協(xié)處理器,外圍控制模塊與傳統(tǒng)雙AES并行和單AES串行實現(xiàn)方案一致,AES加密模塊根據(jù)具體的應(yīng)用場景可以選擇性實現(xiàn).在高吞吐率要求的應(yīng)用場景選擇AES加密模塊雙輪并行實現(xiàn),在低電路面積要求的應(yīng)用場景選擇AES加密模塊雙輪乒乓實現(xiàn),其電路結(jié)構(gòu)如圖4所示.

圖4 AES雙輪并行實現(xiàn)AES-CCM方案(左)AES雙輪乒乓實現(xiàn)AES-CCM方案(右)Figure 4 Double wheel parallel(left)and double wheel ping-pang(right)implementation of AES-CCM

3.1 CCM控制模塊的實現(xiàn)

CCM模塊主要由狀態(tài)機構(gòu)成,其狀態(tài)跳轉(zhuǎn)如圖5所示.CCM的控制過程如下:

圖5 CCM控制模塊的狀態(tài)機Figure 5 Finite state machine of CCM control module

(1)在IDLE狀態(tài)下AES-CCM模塊的使能信號有效后,執(zhí)行第(2)步,狀態(tài)由IDLE狀態(tài)跳轉(zhuǎn)到GET_B0狀態(tài).

(2)在 GET_B0 狀態(tài)下,獲取數(shù)據(jù)B0,數(shù)據(jù)準備好后,執(zhí)行第 (3)步,狀態(tài)跳轉(zhuǎn)到AES_ENCODE_S狀態(tài).

(3)在AES_ENCODE_S狀態(tài)下,使能AES加密模塊,AES的加密模式配置為單數(shù)據(jù)組加密模式,只執(zhí)行128比特數(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í)行第(5)步,狀態(tài)跳轉(zhuǎn)到AES_ENCODE_D狀態(tài).

(5)在AES_ENCODE_D狀態(tài)下,使能AES加密模塊,AES的加密模式配置為雙數(shù)據(jù)組加密模式,執(zhí)行2×128比特數(shù)據(jù)加密.AES加密完成后,若當前數(shù)據(jù)組不是最后一組數(shù)據(jù),則執(zhí)行第(4)步,狀態(tài)跳轉(zhuǎn)回GET_BX_AX狀態(tài),獲取下一組數(shù)據(jù);若當前數(shù)據(jù)組是最后一組數(shù)據(jù),則執(zhí)行第(6)步,狀態(tài)跳轉(zhuǎn)到GET_PN_A0狀態(tài),進行P n和A0數(shù)據(jù)獲取;若當前數(shù)據(jù)組為MAC標志的數(shù)據(jù)組,表示所有待加密數(shù)據(jù)組均完成加密,CBC模式的加密輸出生成MAC值,CTR模式的加密輸出異或MAC值,以完成對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,當P n和A0數(shù)據(jù)準備好后,則執(zhí)行第(5)步,狀態(tài)跳轉(zhuǎn)回AES_ENCODE_D狀態(tài).

3.2 AES加密模塊雙輪并行實現(xiàn)

CCM狀態(tài)機執(zhí)行數(shù)據(jù)加密的狀態(tài)只有AES_ENCODE_S狀態(tài)和AES_ENCODE_D狀態(tài),AES_ENCODE_S狀態(tài)完成128比特數(shù)據(jù)加密,每次啟動AES-CCM加密協(xié)議,該狀態(tài)只執(zhí)行一次.AES_ENCODE_D狀態(tài)完成2×128比特數(shù)據(jù)加密,每次啟動AES-CCM加密協(xié)議,該狀態(tài)根據(jù)數(shù)據(jù)包的長度多次重復(fù)執(zhí)行,因此AES_ENCODE_D狀態(tài)下的加密操作可以設(shè)計成兩個AES并行執(zhí)行或串行執(zhí)行的方式,同時,由于CBC模式和CTR模式所使用的密鑰相同,為了減少功耗和電路面積,可以共享密鑰擴展模塊,以輪并行和輪乒乓串行的方式替代兩個AES并行執(zhí)行或串行執(zhí)行的方式完成2×128比特數(shù)據(jù)加密.

AES加密模塊雙輪并行實現(xiàn)的電路結(jié)構(gòu)如圖6所示,由兩個輪迭代模塊和一個密鑰擴展模塊構(gòu)成.密鑰擴展模塊完成輪密鑰的擴展,并共享給兩個輪迭代模塊使用,輪迭代Core_0和輪迭代Core_1分別完成兩組數(shù)據(jù)的的輪迭代加密.兩個輪迭代模塊的使能信號單獨控制,當只需要加密128比特數(shù)據(jù)時,只使能一個輪迭代模塊,另一個輪迭代模塊停止工作,以減小系統(tǒng)功耗;當并行加密2×128比特數(shù)據(jù)時,使能信號en[0],en[1]都有效,并行加密兩組數(shù)據(jù).

圖6 AES雙輪并行實現(xiàn)電路結(jié)構(gòu)Figure 6 Circuit structure of AES double wheel parallel implementation

將該方案與傳統(tǒng)雙AES并行方案對比分析,我們發(fā)現(xiàn),該方案減少了一個密鑰擴展模塊的電路實現(xiàn)和計算,從而減小了整體能耗和電路面積.

3.3 AES加密模塊雙輪乒乓實現(xiàn)

AES加密模塊雙輪乒乓實現(xiàn)的電路結(jié)構(gòu)如圖7所示,由一個輪迭代模塊和一個密鑰擴展模塊構(gòu)成.當執(zhí)行128比特數(shù)據(jù)加密時,AES配置成單數(shù)據(jù)組加密模式,完成一次128比特數(shù)據(jù)加密需要10個周期,每個周期完成一次密鑰擴展和一次輪迭代計算輪迭代模塊的輸出寄存器只用到reg_0,reg_1保持不變;當執(zhí)行2×128比特數(shù)據(jù)加密時,AES配置成雙數(shù)據(jù)組加密模式,完成2×128比特數(shù)據(jù)加密需要20個周期,每一輪函數(shù)計算由兩個周期完成,周期1完成當前輪的密鑰擴展和數(shù)據(jù)組0的輪迭代,并將輪迭代結(jié)果寄存至reg_0,周期2不需要執(zhí)行密鑰擴展,只完成數(shù)據(jù)組1的輪迭代,并將輪迭代結(jié)果寄存至reg_1.

圖7 AES雙輪乒乓實現(xiàn)電路結(jié)構(gòu)Figure 7 Circuit structure of AES double wheel ping-pang implementation

將該方案與傳統(tǒng)雙AES串行方案對比分析,我們發(fā)現(xiàn),完成2×128比特數(shù)據(jù)加密,該方案減少了10次密鑰擴展的計算,從而減小了整體能耗,但是電路代價為多一組128比特的寄存器.

此外,以上兩種AES加密方案在輪迭代模塊和密鑰擴展模塊的S盒實現(xiàn)時利用了同構(gòu)映射,將復(fù)合域GF(28)上的求逆運算映射到GF(((22)2)2)上[6-8],并對GF((22)2)域上的邏輯表達式以及相鄰變換的表達式結(jié)合化簡,進一步降低功耗,縮小關(guān)鍵路徑的延時.

4 仿真綜合驗證

為了對方案的功能進行驗證,我們對方案進行RTL代碼實現(xiàn),利用VCS仿真軟件結(jié)合Testbench驗證腳本和測試激勵,完成各模塊的功能驗證.

AES的加密模式配置為單數(shù)據(jù)組加密模式時,只執(zhí)行128比特數(shù)據(jù)加密,此時設(shè)置加密密鑰為0x 66C6 C227 8E3B 8E05 3E7E A326 521B AD99,明文輸入為0x 1387 F41E DD57 F3FB 9B9C 5B10 B514 CAD2,AES加密模塊雙輪并行例化模塊和雙輪乒乓例化模塊的實驗結(jié)果密文輸出均為0x 60F9 EEDF 7F87 4C92 0AB1 7BFE 827D 9E66.

AES的加密模式配置為雙數(shù)據(jù)組加密模式時,執(zhí)行2×128比特數(shù)據(jù)加密,此時設(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加密模塊雙輪并行例化模塊和雙輪乒乓例化模塊的實驗結(jié)果相同,仿真波形分別如圖8、圖9所示,兩組明文對應(yīng)的密文輸出分別為0x 60F9 EEDF 7F87 4C92 0AB1 7BFE 827D 9E66和0x AF65 6CCD 00CA B319 5E03 F945 F97B 969E.

圖8 雙數(shù)據(jù)組AES雙輪并行加密實驗結(jié)果Figure 8 Results of AES double wheel parallel implementation

圖9 雙數(shù)據(jù)組AES雙輪乒乓加密實驗結(jié)果Figure 9 Results of AES double wheel ping-pang implementation

為了驗證RTL代碼功能正確性,我們對AES算法進行了軟件實現(xiàn),并將RTL仿真結(jié)果與軟件加密模型對比,經(jīng)對比密文輸出一致,驗證了AES兩種例化方式的正確性.為了對方案的功耗和面積進行評估,我們在TSMC 65 nm、tt_1p0v_25c的工藝下用Design Compiler軟件對不同方案的AES-CCM加密協(xié)議進行綜合,在200 MHz的時鐘約束下,傳統(tǒng)雙AES并行實現(xiàn)AES-CCM加密協(xié)議綜合所得電路面積為25.83 kgates,功耗為4.62 mW;本方案所述AES雙輪并行實現(xiàn)AES-CCM加密協(xié)議綜合所得電路面積為23.45 kgates,功耗為4.05 mW;傳統(tǒng)AES串行實現(xiàn)AES-CCM加密協(xié)議綜合所得電路面積為15.49 kgates,功耗為2.31 mW;本方案所述AES雙輪乒乓實現(xiàn)AES-CCM加密協(xié)議綜合所得電路面積為16.45 kgates,功耗為2.03 mW.

表1 本方案與傳統(tǒng)方案實現(xiàn)AES-CCM加密協(xié)議數(shù)據(jù)對比Table 1 Comparison of AES-CCM encryption protocol data between proposed scheme and traditional scheme

由以上分析可得與傳統(tǒng)雙AES并行實現(xiàn)AES-CCM方案相比,AES雙輪并行實現(xiàn)AES-CCM方案的面積和功耗分別減小9.21%和12.34%;與傳統(tǒng)雙AES串行實現(xiàn)AES-CCM方案相比,AES雙輪乒乓實現(xiàn)AES-CCM方案的面積增加0.06%,功耗減小12.12%.

5 結(jié)論

本文根據(jù)AES-CCM鏈路層數(shù)據(jù)加密與解密都只用到AES加密模式,且數(shù)據(jù)校驗值生成與數(shù)據(jù)加解密密鑰相同的特點,給出基于AES雙輪并行模塊、AES雙輪乒乓模塊的AES-CCM通用協(xié)處理器實現(xiàn)方案,用戶根據(jù)應(yīng)用需求選擇性例化實現(xiàn).方案中采用輪密鑰共享機制,以及AES算法S盒復(fù)合域化簡實現(xiàn)方法,有效去除冗余電路,減小了電路功耗.

猜你喜歡
明文密鑰比特
幻中邂逅之金色密鑰
幻中邂逅之金色密鑰
Android密鑰庫簡析
奇怪的處罰
比特幣還能投資嗎
比特幣分裂
比特幣一年漲135%重回5530元
奇怪的處罰
奇怪的處罰