曾小波,易志中,焦 歆
(1.湖南理工職業(yè)技術(shù)學(xué)院 太陽(yáng)能工程系,湖南 湘潭 411104;2.上海滕維信息科技有限公司,上?!?00072)
基于51核的AES算法高速硬件設(shè)計(jì)與實(shí)現(xiàn)
曾小波1,易志中2,焦歆2
(1.湖南理工職業(yè)技術(shù)學(xué)院 太陽(yáng)能工程系,湖南 湘潭411104;2.上海滕維信息科技有限公司,上海200072)
摘要為提高算法的效率,降低密鑰運(yùn)算的復(fù)雜度,提升密鑰抵抗強(qiáng)力攻擊和時(shí)間攻擊能力,提出一種AES的算法方案。闡述了AES算法原理及片上系統(tǒng)執(zhí)行AES的工作流程,基于8051軟核AES算法IP原理、設(shè)計(jì)流程以及硬件模塊的實(shí)現(xiàn)方案,并給出了效率分析及在硬件平臺(tái)上的驗(yàn)證結(jié)果。仿真結(jié)果顯示,用查表法實(shí)現(xiàn)AES,其IP核具有高效性,并可為密碼SoC產(chǎn)品的開發(fā)體統(tǒng)算法引擎支持。相比較于以往的算法模型,該方案用少量面積換取速度,大幅提高了算法的效率,因此具備良好的應(yīng)用價(jià)值。
關(guān)鍵詞對(duì)稱加密;AES算法;IP核;片上系統(tǒng);解密
High-Speed Hardware Design and Implementation of AES Algorithm Based on 51 Core
ZENG Xiaobo1,YI Zhizhong2,JIAO Xin2
(1.Department of Solar Engineering,Hunan Vocational College of Science and Technology,Xiangtan 411104,China;
2.Shanghai Tengwei Information Technology Co.,Ltd.,Shanghai 200072,China)
AbstractAn AES algorithm scheme is proposed for higher algorithm efficiency,lower complexity of key operations and better resistance of the key against brute-force attack and time attack.The AES principles and its on-chip implementation based on 8051 soft-core are presented with workflow system and hardware modules design given.The efficiency analysis and verification results on the hardware platform are provided.Simulation results show that the AES IP core by look-up table method has high efficiency,and offers support for algorithm engine in the SoC decency password product development.A substantial increase in the efficiency of the algorithm is achieved at the mere cost of a small area of the exchange rate compared with conventional algorithms.
Keywordssymmetric encryption;AES algorithm;IP core;system on chip;decryption
AES(Advanced Encryption Standard)是由美國(guó)聯(lián)邦政府采用的一種區(qū)塊對(duì)稱加密標(biāo)準(zhǔn),以此來(lái)取代之前的DES,截止至2006年,高級(jí)加密標(biāo)準(zhǔn)已成成為最流行的對(duì)稱算法[1]。其在軟硬件實(shí)現(xiàn)過(guò)程中均表現(xiàn)出良好的性能:建立密鑰時(shí)間短、靈敏性高、能夠抵抗強(qiáng)力攻擊和時(shí)間攻擊[2]。本文利用Ncverilog研究查表法AES算法[3]高速硬件的實(shí)現(xiàn),并采用8051軟核為控制器,將AES作為可移植的IP進(jìn)行了頂層調(diào)試,并給出其相應(yīng)Verilog模型的仿真結(jié)果。本文中所采用的Verilog行為模型為RTL級(jí)(Register Transfer Level),是用寄存器這一級(jí)別的描述方式來(lái)描述電路的數(shù)據(jù)流方式,即可綜合的。模型接口為標(biāo)準(zhǔn)的Wishbone總線及51接口。相比較于以往的算法模型,該方案用少量面積換取速度,大幅提升了算法的效率。
1算法描述
從算法應(yīng)用的流程上來(lái)可將其分為兩大步驟:(1)密鑰擴(kuò)展;(2)加密或解密的實(shí)現(xiàn)。AES IP的端口簡(jiǎn)略描述如圖1所示。AES_D_I為AES算法數(shù)據(jù)輸入端口,為明文或者密文。KEY為密鑰輸入端口長(zhǎng)度可為128,192或256 bit。AES_D_O為數(shù)據(jù)輸出端口,即完成加密的數(shù)據(jù)或解密完成的數(shù)據(jù)。本文選用128 bit作為密鑰長(zhǎng)度。
圖1 AES IP端口簡(jiǎn)略圖
以128 bit數(shù)據(jù)按字節(jié)(Byte)輸入為例,輸入為in0,in1,…,in15,復(fù)制到圖2所示狀態(tài)矩陣中。加密或解密的運(yùn)算均在該狀態(tài)舉證上進(jìn)行,最終結(jié)果將被復(fù)制到輸出字節(jié)數(shù)組out0,out1,…,out15。
圖2 狀態(tài)矩陣、輸入和輸出
對(duì)于AES算法,數(shù)據(jù)輸入分組、數(shù)據(jù)輸出分組、狀態(tài)長(zhǎng)度均為128 bit。Nb=4,該值反應(yīng)了狀態(tài)中32 bit的個(gè)數(shù)。在加密和解密的初始階段,輸入數(shù)組in按照下述規(guī)則復(fù)制到狀態(tài)舉證中
S[r,c]=in[r+4c] for 0≤r<4 and 0≤c<4
(1)
在加密和解密的結(jié)束階段,狀態(tài)舉證將按照下述規(guī)則被復(fù)制到輸出數(shù)組out中
out[r+4c]=S[r,c] for 0≤r<4 and 0≤c<4
(2)
狀態(tài)矩陣中每一列的4Byte可看作一個(gè)32bit字,行號(hào)r可作為每一個(gè)字中4Byte的索引。因此,狀態(tài)可看作32bit字(列),w0,…,w3的一維數(shù)組,列號(hào)c是該數(shù)組的索引。因此對(duì)于圖2的例子,該狀態(tài)可看作4個(gè)字組成的數(shù)組,為:W0=s0,0s1,0s2,0s3,0,W1=s0,1s1,1s2,1s3,1,W2=s0,2s1,2s2,2s3,2,W3=s0,3s1,3s2,3s3,3。
對(duì)于密鑰K的長(zhǎng)度可為128、192或256bit,也按密鑰長(zhǎng)度表示為Nk=4、6或8。AES加密的輪依賴于密鑰的長(zhǎng)度。將輪數(shù)表示為Nr,當(dāng)Nk=4時(shí)Nr=10;當(dāng)Nk=6時(shí)Nr=12;當(dāng)Nk=8時(shí)Nr=14。該標(biāo)準(zhǔn)符合一切密鑰長(zhǎng)度-分組長(zhǎng)度-輪數(shù)組合,如表1所示。
表1 密鑰長(zhǎng)度-分組長(zhǎng)度-輪數(shù)組合
以128 bit密鑰加密為例的流程圖,如圖3所示。首先將明文按式(1)所描述的管理將輸入復(fù)制到狀態(tài)矩陣中,與初始子密鑰K0相加。然后經(jīng)過(guò)Nr-1次輪函數(shù)來(lái)變換狀態(tài)矩陣,最后一輪與前Nr-1輪略有不同。最后狀態(tài)按式(2)所描述復(fù)制到輸出。
圖3 加密流程圖(128 bit)
1.2.1Sub Bytes()
字節(jié)替代(Sub Bytes())是一個(gè)非線性的字節(jié)替代,將狀態(tài)陣列中的字節(jié)看做GF(28)域上的元素,映射到自身的乘法逆,然后再通過(guò)圖4所示的仿射變換。
圖4SubBytes()變換在狀態(tài)上的作用效果
1.2.2ShiftRows()
在行移位(ShiftRows())變換中,狀態(tài)的最后3行循環(huán)移位不同的位移r。具體方法按照式(3)進(jìn)行
s’r,c=sr,(c+shift(r,Nb))mod Nbfor0 (3) 移位量shift(r,Nb)依賴于行號(hào)r,如下所示(Nb=4) shift(1,4)=1;shift(2,4)=2;shift(3,4)=3 (4) 作用效果如圖5所示。 圖5 ShiftRow()作用效果 1.2.3列混合(MixColumn()) MixColumn變換中,把狀態(tài)的列看做GF(28)上的多項(xiàng)式,并與固定的多項(xiàng)式c(x)相乘后模X4+1,如圖6所示,其中c(x)={03}x3+{01}x2+{01}x+{02},寫成矩陣乘法,令s’(x)=a(x)×s(x)。 圖6MixColumn變換 AES的密鑰擴(kuò)展[4]工作是將初始密鑰擴(kuò)展為Nb(Nr+1)個(gè)字,現(xiàn)以128bitAES為例,需要將原始4個(gè)字(128bit)的密鑰擴(kuò)展為44個(gè)字的新序列,每個(gè)字32bit3,記為w[0],w[1],w[2],…,w[43]。首先按式(1)將密鑰輸入到矩陣中,每一列的4個(gè)字節(jié)組成一個(gè)字。接著對(duì)初始4個(gè)列為w[0],w[1],w[2],w[3],進(jìn)行擴(kuò)充,構(gòu)成40個(gè)新列。新列是以遞歸的方式產(chǎn)生的,具體原則是:如果i不是4的倍數(shù),使用w[i]=w[i-4]⊕w[i-1]方程式,如果i是4的倍數(shù),使用w[i]=w[i-4]⊕T(w[i-1])方程式[3]。T是一個(gè)復(fù)雜的函數(shù),由3個(gè)部分組成:字循環(huán),字節(jié)代換和輪常量異或。字循環(huán)是將1個(gè)字中的4個(gè)字節(jié)循環(huán)左移1個(gè)字節(jié)。字節(jié)代換將4Byte的數(shù)據(jù)分別使用SubByte()函數(shù)進(jìn)行字節(jié)代換。輪常量異或是將前兩步的結(jié)果同輪常量Rcon[j]進(jìn)行異或,其中j表示輪數(shù)。經(jīng)過(guò)以上步驟的運(yùn)算,最終產(chǎn)生44個(gè)字組成的密鑰,其中w[0],w[1],w[2],w[3]是原始密鑰,用于在第一輪加密操作之前對(duì)明文進(jìn)行加密,后40個(gè)字組成10組密鑰,在每輪加密過(guò)程中作為輪密鑰使用。 AES算法解密過(guò)程,即1.2加密變換逆轉(zhuǎn),然后以逆序執(zhí)行即可直接得到解密算法。解密算法中使用的變換主要包括InvShiftRows(),InvSubBytes()和InvMixColumns()這3種變換。且各個(gè)變換的使用順序也不同,首先對(duì)密文使用K10({w[40],w[41],w[42],w[43]})進(jìn)行輪密鑰加,然后進(jìn)行第一輪的解密,分別為InvShiftRows(),InvSubBytes(),輪密鑰加和InvMixColumns(),直到倒數(shù)第二輪解密,最后一輪操作只有3部InvShiftRows(),InvSubBytes()和使用K0(w[0],w[1],w[2],w[3])進(jìn)行輪密鑰加。以128bit為例的流程圖如圖7所示[5]。 圖7 解密流程圖(128 bit) 逆行運(yùn)算(InvShiftRows())是行移位(ShiftRows())變換的逆變換。第一行中r=0,即不移位。下面的3行將循環(huán)移動(dòng)Nb-shift(r,Nb) Byte,其中位移量shift(r,Nb)參照式(4)。作用效果圖如圖8所示。 圖8 InvShiftRow()作用效果 InvMixColumn()變換是MixColumn()的逆變換。將狀態(tài)的列看做GF(28)上的多項(xiàng)式且被一個(gè)固定的多項(xiàng)式a-1(x)模x4+1乘,a-1(x)={0b}x3+{0d}x2+{09}x+{0e}。寫成矩陣乘法,即s’(x)=a-1(x)×s(x)。 2系統(tǒng)框架結(jié)構(gòu)設(shè)計(jì) 由于AES IP由8051軟核控制,及考慮到消息尺寸及填充后的密鑰的尺寸較大,故在IP核上添加DMA bus,方便讀寫XRAM數(shù)據(jù)及節(jié)省硬件資源。IP的控制信號(hào)及信息地址數(shù)據(jù)由51軟核控制[6,9-10]。整個(gè)系統(tǒng)框架如圖9所示。 圖9 AES框架圖 如圖9所示,IP核內(nèi)由控制器來(lái)密鑰擴(kuò)展模塊、加密模塊還有解密模塊。當(dāng)這3個(gè)模塊使能時(shí)可通過(guò)DMA總線從XRAM中抓取相對(duì)應(yīng)的數(shù)據(jù),進(jìn)行擴(kuò)展、加密或解密工作,完成后再通過(guò)DMA總線將數(shù)據(jù)寫到XRAM中。 3IP的實(shí)現(xiàn) 首先,通過(guò)以上討論可發(fā)現(xiàn)Sub Byte()和InvSubByte()函數(shù)就是一個(gè)8 bit輸入/輸出的S盒,由于這個(gè)S盒與密鑰無(wú)關(guān),在硬件實(shí)現(xiàn)時(shí),為了提高速度??捎?jì)算出8 bit輸入所包含256種組合的結(jié)果,將其制成表格,進(jìn)行替換操作時(shí)通過(guò)查表實(shí)現(xiàn)。另外在一次密鑰變換中,有32位數(shù)據(jù)要進(jìn)行替換,故需要使用4次S盒。加密或解密算法若一次處理128 bit數(shù)據(jù),就需要使用16次S盒。雖然S盒可重復(fù)使用,但其吞吐量太小??紤]到AES通常均是對(duì)大數(shù)據(jù)進(jìn)行加密,本文在設(shè)計(jì)時(shí)以速度優(yōu)先的為前提,同時(shí)使用16個(gè)Sbox,雖然占用相對(duì)較多的硬件資源但速度提升了16倍[6,9-10]。 通過(guò)以上對(duì)Mix Column和InvMixColumn的描述可發(fā)現(xiàn)一個(gè)特點(diǎn),就是相乘的兩個(gè)操作數(shù)中,有一個(gè)是常數(shù)。例如圖6中的{02},{03},{01},{01}。此外,再通過(guò)GF(28)域中乘法規(guī)則和域中乘x規(guī)則可知,{03}x={02}x+x。因此可以再計(jì)算出x×Sbox的表。以解密為例,由以上兩種表格,完全可以在一個(gè)時(shí)間內(nèi)求得Sbox和x×Sbox的值。此外,ShiftRow(),InvShiftRows()和加法器也都由組合邏輯實(shí)現(xiàn)。因此,一個(gè)時(shí)鐘便可完成一輪密鑰的加密和解密運(yùn)算。 4基于NC-Verilog的仿真 該IP算法用RTL實(shí)現(xiàn)后,在Red-Hat Linux仿真環(huán)境下進(jìn)行了仿真,工具為NC-Verilog,測(cè)試向量從參考文獻(xiàn)[3]的附錄c選取。圖10為AES-128 加密仿真結(jié)果。系統(tǒng)仿真時(shí)鐘為40 MHz。從仿真結(jié)果顯示,從8051使能IP到IP完成解密并將結(jié)果寫入到XRAM一共用時(shí)7.7 ms。 圖10 AES-128 解密仿真結(jié)果 5結(jié)束語(yǔ) 對(duì)稱密碼算法主要用于保證數(shù)據(jù)的機(jī)密性。通信雙方在加密/解密過(guò)程中使用其共享的單一密鑰。本文闡述并驗(yàn)證了AES算法通過(guò)查表法實(shí)現(xiàn)的可行性,定義了CPU接口和XRAM數(shù)據(jù)接口,使IP核在商用密碼片上系統(tǒng)中占用資源更少,提高工作效率及其可移植性。密鑰擴(kuò)展及加密過(guò)程,每一輪擴(kuò)展生成的密鑰以及加密所需的密鑰輪次相同,可在加密過(guò)程采取流水線(Pipeline)結(jié)構(gòu),在生成密鑰的同時(shí)進(jìn)行加密,省去將密鑰寫入XRAM過(guò)程,提高算法實(shí)現(xiàn)速度。 參考文獻(xiàn) [1]弟宇鳴,陳榮樺,左廣霞.基于AES算法的加密模塊設(shè)計(jì)[J].電子設(shè)計(jì)工程,2013,21(2):53-55. [2]王威,劉百華,孟凡清.計(jì)算機(jī)網(wǎng)絡(luò)安全問題與防范方式[J].電子科技,2012,25(4):122-123,126. [3]曹曉麗,王愛強(qiáng).AES算法研究[J].洛陽(yáng)師范學(xué)院學(xué)報(bào),2011,30(8):74-76. [4]王小偉.AES加密算法的研究與IP核設(shè)計(jì)實(shí)現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2012. [5]Joan Daemen,Vincent Rijmen.高級(jí)加密標(biāo)準(zhǔn)(AES)算法-Rijndael的設(shè)計(jì)[M].谷大武,徐勝波,譯.北京:清華大學(xué)出版社,2003. [6]曾毅,魯欣,付宇卓.一種優(yōu)化可配置的AES密碼算法硬件實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),2004,21(12):34-37. [7]趙哲斐.AES算法IP核優(yōu)化與設(shè)計(jì)[D].西安:西安電子科技大學(xué),2013. [8]謝孝青,高琳.基于結(jié)構(gòu)共享和多級(jí)流水線的AES算法硬件實(shí)現(xiàn)[J].電子科技,2009,22(3):48-51. [9]李浪.Verilog HDL語(yǔ)言的AES密碼算法FPGA優(yōu)化實(shí)現(xiàn)[J].重慶大學(xué)學(xué)報(bào),2014,37(6):57-63. [10]葉劍,李立新.基于GPU的AES快速實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31(2):256-259. 作者簡(jiǎn)介:曾小波(1979—),男,講師。研究方向:嵌入式技術(shù)等。易志中(1980—),男,碩士,高級(jí)工程師。研究方向:視頻編解碼及圖像處理。 基金項(xiàng)目:湖南省教育廳科研基金資助項(xiàng)目(13C380) 收稿日期:2015- 03- 31 中圖分類號(hào)TN918.4;TP309.7 文獻(xiàn)標(biāo)識(shí)碼A 文章編號(hào)1007-7820(2016)01-036-04 doi:10.16180/j.cnki.issn1007-7820.2016.01.0101.3 密鑰擴(kuò)展
1.4 解密