淺析AES加密算法的硬件設(shè)計(jì)方法
在信息安全領(lǐng)域,美國(guó)一直處于集成電路IP核[1-6]的壟斷地位,近年,美國(guó)對(duì)華“斷供”事件愈演愈烈,“中興”、“華為”事件等美對(duì)華霸權(quán)行徑也再次讓全世界聚焦到芯片等處理器相關(guān)的信息安全領(lǐng)域[7]。
目前在安全領(lǐng)域,加密算法[14-17]主要通過(guò)軟硬件方式設(shè)計(jì)實(shí)現(xiàn),其中軟件易受設(shè)備限制且較不穩(wěn)定,容易降低數(shù)據(jù)傳輸質(zhì)量,而通過(guò)設(shè)計(jì)專(zhuān)用芯片的方式實(shí)現(xiàn)加密算法是當(dāng)前信息安全領(lǐng)域的主流,該方法更易于嵌入,適用于完成復(fù)雜功能,IP核復(fù)用性強(qiáng),具有高可靠性、高加密速率、總體成本較低等優(yōu)點(diǎn)[7]。
本文主要介紹基于FPGA(Field Programmable Gate Array,現(xiàn)場(chǎng)可編程門(mén)陣列)的一種AES(Advanced Encryption Standard,高級(jí)加密標(biāo)準(zhǔn))算法的流水線(xiàn)結(jié)構(gòu)設(shè)計(jì),并完成其功能驗(yàn)證與性能評(píng)估[7-8]。
1引 言
1.1研究背景和意義
美國(guó)國(guó)家標(biāo)準(zhǔn)局于1977年將DES[15](Data Encryption Standard,數(shù)據(jù)加密標(biāo)準(zhǔn))確定為FIPS(Federal Information Processing Standards,聯(lián)邦信息處理標(biāo)準(zhǔn)),隨后將DES應(yīng)用于各行各業(yè)。隨著密碼破譯技術(shù)[16]的不斷發(fā)展,DES的安全性與應(yīng)用前景面臨極大的挑戰(zhàn),研究人員證明采用DES加解密不再是安全可靠的算法,因此,國(guó)際廣泛需要設(shè)計(jì)一個(gè)安全等級(jí)更高、公開(kāi)的、免費(fèi)的加密算法-AES[14,30](Advanced Encryption)來(lái)適用各大信息敏感領(lǐng)域。NIST(National Institute of Standards and Technology,美國(guó)國(guó)家標(biāo)準(zhǔn)技術(shù)研究機(jī)構(gòu))于1997年向全世界征集新一代的加密算法,該算法需滿(mǎn)足如下(如圖1.1所示)條件:
圖1.1 新一代加密算法需滿(mǎn)足的條件
2000年,來(lái)自比利時(shí)的Joan Daemaen 和Vincent Rijmen以Square算法為原型設(shè)計(jì)的Rijndael算法通過(guò)最終評(píng)選。2001年,NIST將Rijndael設(shè)計(jì)的AES算法發(fā)布于FIPS PUB 197[14],次年成為新一代美國(guó)聯(lián)邦政府的區(qū)塊加密標(biāo)準(zhǔn),從2006年起,AES廣泛應(yīng)用到于各行各業(yè)[7],該算法具備以下優(yōu)點(diǎn):
1)在不同環(huán)境中(有無(wú)反饋)軟硬件實(shí)現(xiàn)后的性能表現(xiàn)優(yōu)異。
2)較短的密鑰拓展時(shí)間。
3)使用很小的內(nèi)存就可以實(shí)現(xiàn)該算法,適合在內(nèi)存較小的環(huán)境中使用。
4)抗攻擊能力強(qiáng)。
5)內(nèi)部循環(huán)結(jié)構(gòu)有益于指令級(jí)并行處理器提升性能。
1.2研究意義
圖1.2 AES加密算法應(yīng)用領(lǐng)域
如圖1.2,當(dāng)今互聯(lián)網(wǎng)高速發(fā)展,加之WiFi與藍(lán)牙的成本與功耗逐漸降低,智能穿戴設(shè)備與智能家居極度普及,消費(fèi)者越來(lái)越頻繁地進(jìn)行在線(xiàn)網(wǎng)絡(luò)支付、電子商務(wù)、通信等日常事務(wù),因此大量的重要數(shù)據(jù)會(huì)通過(guò)各種計(jì)算機(jī)網(wǎng)絡(luò)與移動(dòng)終端等通信設(shè)備進(jìn)行傳輸。但在互聯(lián)網(wǎng)絡(luò)帶來(lái)高效便利的同時(shí),個(gè)人數(shù)據(jù)的安全問(wèn)題也隨之加劇,為避免個(gè)人數(shù)據(jù)遭受不法分子的竊取與攻擊,除了在軟件層面要進(jìn)行安全防御外,更要重視硬件層面的安全防御。因此對(duì)處理器硬件加密速度與安全性的提升,是處理器硬件安全方面不可或缺的一部分[7, 23-28]。
在CPU處理器等硬件領(lǐng)域,隨著加州大學(xué)伯克利分校對(duì)RISC-V[7,14]指令集的開(kāi)源,一個(gè)降低門(mén)檻的精簡(jiǎn)指令集的CPU設(shè)計(jì),例如加州大學(xué)伯克利分校的BOOM[18-19]、劍橋大學(xué)的LowRISC[20]、蘇黎世聯(lián)邦理工學(xué)院與意大利博洛尼亞大學(xué)的PULPino[21]、俄羅斯的RISC-V VHDL[22]等類(lèi)似的處理器,勢(shì)必會(huì)在5G高速通信領(lǐng)域、AI(人工智能)、工業(yè)機(jī)器人、IOT物聯(lián)網(wǎng)、智能自動(dòng)化甚至國(guó)防等領(lǐng)域大面積應(yīng)用,與此同時(shí)這些處理器的信息安全問(wèn)題也必然會(huì)引起用戶(hù)的重視[7]。
2AES算法原理
AES加密算法(又稱(chēng)Rijndael算法)采用對(duì)稱(chēng)密碼體制,密鑰分為128bits/192bits/256bits三種長(zhǎng)度,簡(jiǎn)稱(chēng)為AES-128/AES-192/AES-256(如表2.1)。該算法使用SP結(jié)構(gòu)(替代/置換),密鑰長(zhǎng)度分為128bits、192bits、256bits三種模式,加密過(guò)程的輪函數(shù)由4層組成(字節(jié)替換、行位移、列混淆、輪密鑰加),其中S-box使用有限域上GF()的乘法逆運(yùn)算,使其具備優(yōu)異的線(xiàn)性偏差與差分均勻性[7,14]。
本章簡(jiǎn)要介紹了AES的算法中涉及到的參數(shù)等、加密過(guò)程、密鑰拓展等。
表2.1 AES三種模式下對(duì)應(yīng)的密鑰長(zhǎng)度、分組長(zhǎng)度、迭代次數(shù)
2.1 AES算法中參數(shù)、符號(hào)和函數(shù)介紹
SubBytes( ):使用對(duì)每個(gè)狀態(tài)矩陣中字節(jié)獨(dú)立操作的非線(xiàn)性字節(jié)替換表(S-box)完成對(duì)狀態(tài)矩陣中的密碼轉(zhuǎn)換。
ShiftRow( ):通過(guò)用不同的偏移量循環(huán)移動(dòng)狀態(tài)矩陣的最后三行來(lái)完成狀態(tài)矩陣的密碼轉(zhuǎn)換。
Mixcolumns( ):列混淆,是加密過(guò)程中的轉(zhuǎn)換步驟,它獲取狀態(tài)矩陣的所有列并混合它們的數(shù)據(jù)(彼此獨(dú)立)以生成新列。
AddRoundKey( ):輪密鑰加,在AES加密/解密的過(guò)程中,通過(guò)輪數(shù)據(jù)與輪密鑰的異或,完成狀態(tài)矩陣的構(gòu)建時(shí), 其中狀態(tài)矩陣與輪密鑰長(zhǎng)度相等。
InvsubBytes( ):解密過(guò)程中的轉(zhuǎn)換,即SubBytes( )的逆變換。
InvShiftRows( ):解密過(guò)程中的轉(zhuǎn)換,即ShirtRows( )的逆變換。
InvMixColumns( ):解密過(guò)程中的轉(zhuǎn)換,即MixColumns( )的逆變換。
RotWord( ):在輪密鑰拓展過(guò)程中使用的函數(shù),它接受一個(gè)四字節(jié)的字并執(zhí)行循環(huán)排列。
Rcon [ ] : 輪常量,Rcon[j]為一個(gè)字,j為輪數(shù),如表2.2所示:[7,14]
表2.2 輪常量Rcon[j]
2.2加密過(guò)程
AES加密/解密流程如圖2.1所示,以“AES-128”模式為例。
加密過(guò)程中第1至9輪的操作完全一致,輪函數(shù)由四個(gè)步驟組成:字節(jié)替換、行位移、列混合、輪密鑰加,第10輪沒(méi)有列混合這一環(huán)節(jié)。其中函數(shù)是密鑰調(diào)度的一個(gè)函數(shù)[7]。
圖2.1 AES加密/解密流程圖
圖2.2 密鑰分組
2.2.1 字節(jié)替換
字節(jié)替換(SubBytes( ))是獨(dú)立的非線(xiàn)性字節(jié)替換,使用S-box對(duì)狀態(tài)矩陣中的每個(gè)字節(jié)進(jìn)行替換,如圖2.3與2.4。S-box通過(guò)RAM實(shí)現(xiàn)[13]是可逆的,作為字節(jié)代換的“查找表”,狀態(tài)矩陣中的元素(字節(jié))在進(jìn)行替換時(shí),可將該字節(jié)的高4bits看作“行坐標(biāo)”,低4bits作為“列坐標(biāo)”,將對(duì)應(yīng)坐標(biāo)的值作為替換后的值輸出。例如加密時(shí)狀態(tài)矩陣輸出的字節(jié)為0xAB(左邊),則查S盒的第0xA行和0xB列,得到值為0x62(右邊),然后用0x62替換原有的0xAB[7,29]。
圖2.3 S-box
圖2.4狀態(tài)矩陣的字節(jié)替換過(guò)程
2.2.2 行移位
如圖2.5所示,在行變換(ShiftRow( ))中,狀態(tài)矩陣的第2、3、4行字節(jié)是循環(huán)的,每行有不同的偏移量。第1行不用移位,第2行左移一位,第3行左移兩位,第4行左移三位。
圖2.5行變換中循環(huán)移動(dòng)狀態(tài)矩陣的后三行
2.2.3 列混合
如圖2.6,狀態(tài)矩陣進(jìn)行列混合(MixColumns( ))變換時(shí),是逐列進(jìn)行的,每列均會(huì)被處理成上的一個(gè)4項(xiàng)式,并用一個(gè)特定的矩陣去與該列相乘。
圖2.6 狀態(tài)矩陣中列混合的操作
2.2.4 輪密鑰加
如圖2.1、2.7,輪密鑰狀態(tài)矩陣中的列與輪密文狀態(tài)矩陣中對(duì)應(yīng)的列進(jìn)行異或操作(按列進(jìn)行),生成新的輪密文狀態(tài)矩陣,作為下一次加密的輸入狀態(tài)矩陣。
圖2.7 狀態(tài)矩陣的輪密鑰加變換圖
2.3密鑰拓展
圖2.8 密鑰拓展
2.4 AES解密過(guò)程
AES-128解密過(guò)程本質(zhì)是加密的逆過(guò)程(如圖2.1,2.2),因此解密也需要進(jìn)行10輪變換,篇幅有限,這里不展開(kāi)介紹,具體請(qǐng)參考文獻(xiàn)[7]。
3AES流水線(xiàn)結(jié)構(gòu)RTL實(shí)現(xiàn)
3.1 流水線(xiàn)AES電路結(jié)構(gòu)
圖3.1流水線(xiàn)結(jié)構(gòu)的AES整體結(jié)構(gòu)圖
如圖3.1所示,流水線(xiàn)設(shè)計(jì)將AES的加密與解密單獨(dú)分開(kāi),并且各自做流水線(xiàn)處理,主要使用大量的組合邏輯,采用“犧牲面積換取速度”的策略[7]。
3.2 AES流水線(xiàn)結(jié)構(gòu)加密電路
如圖3.2為流水線(xiàn)結(jié)構(gòu)AES加密電路,現(xiàn)對(duì)其端口信號(hào)說(shuō)明,如表3.1:
表3.1 加密單元端口信號(hào)
圖3.2 流水線(xiàn)結(jié)構(gòu)AES加密電路模塊圖
AES-128需要加密迭代10輪(Round_0至Round_9),在迭代之前,輸入的128bits明文會(huì)與初始的128bits密鑰進(jìn)行AddRoundKey( )(輪密鑰加)操作,其結(jié)果會(huì)作為迭代的第一輪(Round_0)輸入;從第1-9輪每輪的變換次序與步驟相同,第1輪列混合產(chǎn)生的狀態(tài)矩陣會(huì)與第1輪產(chǎn)生的輪密鑰進(jìn)行異或,其運(yùn)算結(jié)果會(huì)作為第2輪的輸入,以此類(lèi)推;第10輪則少一個(gè)列混合的環(huán)節(jié),但是為了和其它輪的操作時(shí)間對(duì)齊,使得其結(jié)果和第10輪產(chǎn)生的輪密鑰異或不會(huì)出錯(cuò),所以特意使用一個(gè)寄存器Shiftrow_delay延時(shí)一拍來(lái)代替少了的列混合環(huán)節(jié),這樣從Shiftrow_delay出來(lái)的結(jié)果再進(jìn)行輪密鑰加時(shí),就剛好與第10輪產(chǎn)生的輪密鑰對(duì)齊(在某種意義上可以有效的防止側(cè)信道攻擊)[7]。
KeyExpantion是密鑰拓展模塊,它也是需要10輪運(yùn)算(RoundkeyGen_0至RoundkeyGen_9),它每輪都依次進(jìn)行三個(gè)步驟:Rotword()、SubByte()、Rcon[j]異或,在第1到第9輪,每輪密鑰在進(jìn)行輪常量異或完之后產(chǎn)生的狀態(tài)矩陣會(huì)與數(shù)據(jù)列混合之后的狀態(tài)矩陣進(jìn)行異或操作,第10輪則是密鑰的輪常量異或完的狀態(tài)矩陣與數(shù)據(jù)的延時(shí)寄存器出來(lái)的狀態(tài)矩陣進(jìn)行異或,此時(shí)會(huì)拉高valid_out信號(hào),輸出密文[7]。
解密電路設(shè)計(jì)請(qǐng)參考文獻(xiàn)[7]。
3.3 性能評(píng)估
通過(guò)FPGA的測(cè)試與驗(yàn)證,采用tt28nm工藝對(duì)該設(shè)計(jì)進(jìn)行綜合,流水線(xiàn)結(jié)構(gòu)的AES設(shè)計(jì)面積為0.17mm2,這大約是循環(huán)迭代結(jié)構(gòu)(0.018mm2)的10倍,這也是情理之中的結(jié)果。該結(jié)構(gòu)的AES數(shù)據(jù)從輸入到寄存器的關(guān)鍵路徑用時(shí)為0.39ns,從寄存器到輸出的關(guān)鍵路徑用時(shí)也是0.39ns,因此理論上該結(jié)構(gòu)的最大頻率為:1GHz/0.39ns=2.56GHz[7]。
【結(jié)語(yǔ)】
本文簡(jiǎn)要介紹了一種AES的流水線(xiàn)結(jié)構(gòu)的IP核設(shè)計(jì)方法,目前采用的是與CPU同源同頻[2]的時(shí)鐘,當(dāng)然,推薦與處理器時(shí)鐘做異步處理,并且配合DMA(Direct Memory Access,直接存儲(chǔ)器訪(fǎng)問(wèn) )使用,這會(huì)使得AES工作在接近自身最大頻率(當(dāng)然這也是一個(gè)功耗與速度的折中),從而能夠最大化緩解CPU的壓力,進(jìn)一步的提升吞吐量與加密效率。
參考文獻(xiàn)
[1] 科普中國(guó). IP核. [EB/OL].https://baike.baidu.com/item/
IP%E6%A0%B8#reference-[1]-677617-wrap
[2] Mohit Arora. The Art of Hardware Architecture: Design Methods and Techniques for Digital Circuits[M]. 李海東,來(lái)萍,師謙等譯. 北京:機(jī)械工業(yè)出版社,2014.2
[3] Michael D Ciletti. Verilog HDL高級(jí)數(shù)字設(shè)計(jì)[M]. 張雅綺,譯. 北京:電子工業(yè)出版社,2005
[4] ZainalabedinNavabi. Verilog HDL數(shù)字設(shè)計(jì)與綜合[M]. 夏宇聞,譯. 北京:電子工業(yè)出版社,2009
[5] J Bhasker. Verilog HDL入門(mén)[M]. 夏宇聞,譯. 北京:北京航空航天大學(xué)出版社,2008
[6] 蔡覺(jué)平.Verilog HDL數(shù)字集成電路高級(jí)程序設(shè)計(jì)[M].西安:西安電子科技大學(xué)出版社,2015.
[7] 馬浩. 高性能處理器安全模塊的設(shè)計(jì)與優(yōu)化[D]. 西安:西安電子科技大學(xué)碩士論文,2020.
[8] 張春生, 面向SOPC的IP核設(shè)計(jì)與IP核復(fù)用技術(shù)研究[D].長(zhǎng)沙:國(guó)防科技大學(xué)學(xué)位論文,2006:7-10.
[9] 梁穎. SOPC中FPGA IP核配置方案研究與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué)學(xué)位論文,2010:5-8.
[10] 孫濤. IP軟核驗(yàn)證方法研究[D].北京:北京交通大學(xué)學(xué)位論文,2009:5-13.
[12] 任愛(ài)鋒,羅豐,宋士權(quán)等.基于FPGA的嵌入式系統(tǒng)設(shè)計(jì)[M].西安:西安電子科技大學(xué)出版社,2014:100-114.
[13] 戴強(qiáng),戴紫彬,李偉.基于增強(qiáng)型延時(shí)感知CSE算法的AES S盒電路優(yōu)化設(shè)計(jì)[J].電子學(xué)報(bào),2019,47(01):129-136.
[14] Secretary of Commerce. Federal Information Processing Standards Publication-197-2001. ADVANCED ENCRYPTION STANDARD (AES) [S]. America:National Institute of Standards and Technology (NIST),2001.Available at http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf
[15] 谷利澤,鄭世慧,楊義先.現(xiàn)代密碼學(xué)教程(第2版)[M].北京:北京郵電大學(xué)出版社,2015:73-85.
[16] 鄭東,趙慶蘭,張應(yīng)輝.密碼學(xué)綜述[J].西安郵電大學(xué)學(xué)報(bào),2013,18(06):1-10.
[17] 胡向東,魏琴芳,胡蓉.應(yīng)用密碼學(xué)(第3版)[M].北京:清華大學(xué)出版社,2014:108-130.
[18] Celio, Christopher and Patterson, et al. The Berkeley Out-of-Order Machine (BOOM): An Industry-Competitive, Synthesizable, Parameterized RISC-V Processor[R], EECS Department, University of California, Berkeley, June 2015.
[19] Christopher Celio, David Patterson, and Krste Asanovi′c, The Berkeley Out-of-Order Machine (BOOM) Design Specification[R],EECS Department, University of California, Berkeley,December 2016.
[20] Gavin Ferris, Robert Mullins, Wei Song et al. Open source 64-bit SoC[EB/OL],
https://www.lowrisc.org/, 2020-3
[21] PULPino User Manul[EB/OL], http://www.pulp-platform.org/documentation/, 2016-8
[22] Russia GNSS Sensor Company, RISC-V VHDL: System-on-chip[EB/OL],
https://github.com/sergeykhbr/riscv_vhdl/, 2020-3
[23] Christopher Schmitz,Sebastian Pape. LiSRA: Lightweight Security Risk Assessment for decision support in information security[J]. Computers & Security,2020,90.
[24] 劉陽(yáng).2019年國(guó)外信息安全態(tài)勢(shì)綜述[J].保密科學(xué)技術(shù),2019(12):8-13.
[25] 張煥國(guó),林東岱,馬建峰等.網(wǎng)絡(luò)空間安全綜述[J].中國(guó)科學(xué):信息科學(xué),2016,46(02):125-164.
[26] 雷新鋒,宋書(shū)民,薛銳等.計(jì)算可靠的密碼協(xié)議形式化分析綜述[J].計(jì)算機(jī)學(xué)報(bào),2014,37(05):
993-1016.
[27] 馮登國(guó),徐靜,蘭曉.5G移動(dòng)通信網(wǎng)絡(luò)安全研究[J].軟件學(xué)報(bào),2018,29(06):1813-1825.
[28] 洪澤,洪鋒,陳振嬌.針對(duì)車(chē)聯(lián)網(wǎng)信息安全的加密引擎芯片設(shè)計(jì)[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2020(02):36-38.
[29] TimeShatter. AES加密算法的詳細(xì)介紹與實(shí)現(xiàn)[EB/OL]. https://blog.csdn.net/qq_28205153/
article/details/55798628.html/2017-02-19
[30] J.Daemen, V.Rijmen著.高級(jí)加密標(biāo)準(zhǔn)(AES)算法:Rijndael的設(shè)計(jì)[M].谷大武,徐勝波譯,北京:清華大學(xué)出版社,2003:216-220