《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 基于內(nèi)外混合流水線的高吞吐率AES結(jié)構(gòu)
基于內(nèi)外混合流水線的高吞吐率AES結(jié)構(gòu)
2015年電子技術(shù)應(yīng)用第6期
江 磊,魏震楠,劉 明
東南大學(xué) 信息科學(xué)與工程學(xué)院,江蘇 南京211100
摘要: 提出了一種基于加解密輪內(nèi)外流水線的、高性能及高吞吐率的128 bit AES算法的硬件實(shí)現(xiàn)方法。在此之前人們多采用查找表來實(shí)現(xiàn)AES算法中的SubBytes和InvSubBytes轉(zhuǎn)換過程,本設(shè)計(jì)則僅僅使用了進(jìn)行復(fù)合域運(yùn)算的組合邏輯單元,硬件面積得以縮小,同時(shí)還可以將組合邏輯單元劃分為6級次級流水線,輪外和輪內(nèi)流水線得到更深層次的利用。使用本設(shè)計(jì)方案,在Altera DE2-115設(shè)備上以570 MHz頻率實(shí)現(xiàn)的加密器可以達(dá)到73.562 Gb/s的吞吐率。
中圖分類號: TN47
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2015)06-0114-04
中文引用格式:江磊,魏震楠,劉明.基于內(nèi)外混合流水線的高吞吐率AES結(jié)構(gòu)[J].電子技術(shù)應(yīng)用,2015,41(06):114-117.
High throughput rate AES algorithm structure based on the pipelining and subpipelining
Jiang Lei,Wei Zhennan,Liu Ming
School of Information Science and Engineering, Southeast University,Nanjing 211100,China
Abstract: This paper presents a design for high-performance and high throughput rate hardware implementation of the 128-bit Advanced Encryption Standard(AES) algorithm based on the employment of pipelining and subpipelining in and between the rounds of encryption and decryption rounds. As most of the previous works rely on look-up tables(LUTs) to implement SubBytes and InvSubBytes transformations of the AES, our design, however, only employs combinational logic units which are designed for composite field arithmetic. As a result, the area requirements of the circuits are reduced accordingly, and it also gives chance to divide the composite field arithmetic into 6 rounds. As the advantage of pipelining and subpipelining are further developed, the throughput rate is much higher than before. By using the proposed design, the encryptor can achieve a throughput rate of 73.562 Gb/s at 570 MHz on an Altera DE2-115 device.
Key words : Advanced Encryption Standard(AES);composite field arithmetic;pipelining and sub-pipelining

    

0 引言

    密碼學(xué)在保證數(shù)據(jù)傳送的安全中扮演了重要角色。1997年1月,美國國家標(biāo)準(zhǔn)及技術(shù)研究所(NIST)發(fā)起征集高級加密標(biāo)準(zhǔn)(AES)的活動,以替換數(shù)據(jù)加密算法(DES)。在對15個(gè)候選加密算法進(jìn)行兩輪測試和評比后,NIST最終于2000年10月選擇Rijindael算法作為高級加密標(biāo)準(zhǔn)算法。

    目前,AES算法在智能卡、移動電話、萬維網(wǎng)服務(wù)器、ATM機(jī)以及云存儲等領(lǐng)域有著廣泛的應(yīng)用。同軟件實(shí)現(xiàn)相比,AES算法的硬件實(shí)現(xiàn)提供了更好的物理安全性,而且處理的速度也更快。在大數(shù)據(jù)時(shí)代,AES已經(jīng)廣泛地用于保護(hù)云存儲數(shù)據(jù)的安全,為了滿足數(shù)千萬用戶的同時(shí)需求,與減少芯片面積、減小消耗相比,提高AES算法的吞吐率就變得更為重要。本文主要研究利用流水線結(jié)構(gòu)提高硬件上的AES加密算法的吞吐率。

    目前有3種主流的AES結(jié)構(gòu)優(yōu)化方法可以提高其在硬件上的處理速度:輪外流水線結(jié)構(gòu),輪內(nèi)流水線結(jié)構(gòu),循環(huán)迭代結(jié)構(gòu)。流水線結(jié)構(gòu)是在各級運(yùn)算中間插入寄存器。內(nèi)部流水線與其相似,是在輪運(yùn)算內(nèi)部復(fù)合域邏輯運(yùn)算中插入寄存器。

    Zhang[1]利用等價(jià)的復(fù)合域GF(((2)2)2)2算法來實(shí)現(xiàn)一個(gè)快而緊湊的AES字節(jié)代換操作所要求的復(fù)合域乘法逆,但其設(shè)計(jì)的輪內(nèi)各級流水線路徑長度劃分不夠最優(yōu)。Hodjat[3]利用完全環(huán)展開的高度輪內(nèi)流水線架構(gòu),提出兩種字節(jié)代換方案:一個(gè)是對于字節(jié)代換操作利用BlockRAMs來實(shí)現(xiàn)查找表,另一個(gè)是利用復(fù)合域GF((2)4)2算法。利用復(fù)合域算法是由Rijmen[2]建議并且由Wolkerstorfer[3]證明。同樣Hodjat[4]在7級流水線設(shè)計(jì)中各級關(guān)鍵路徑劃分也不是最優(yōu),并且循環(huán)展開結(jié)構(gòu)導(dǎo)致AES的吞吐率/面積比率比較小。Zambreno[5]同樣采用完全環(huán)展開流水線設(shè)計(jì),其中最深流水線設(shè)計(jì)是完全展開3級流水線,關(guān)鍵路徑相對比較長。Good[6]根據(jù)級聯(lián)的FPGA查找表(LUT)數(shù)來劃分關(guān)鍵路徑,進(jìn)行完全環(huán)展開流水線設(shè)計(jì),雖然增加了吞吐率,但更多的流水級劃分增加了更多的寄存器而增加了面積。本文同樣采取復(fù)合域GF((2)4)2算法替換查表法,而在輪內(nèi)運(yùn)算中重新劃分展開為6級的流水線,從而更好地平衡了吞吐率和面積的關(guān)系。

1 AES高級加密標(biāo)準(zhǔn)

1.1 加密主體

    AES算法是一種對稱加密算法,加密服務(wù)器和解密服務(wù)器運(yùn)用相同的密鑰進(jìn)行加密和解密,一次數(shù)據(jù)位加密長度是128 bit,128 bit的數(shù)據(jù)加密長度可以被分成一個(gè)的狀態(tài)矩陣,其中每一個(gè)字節(jié)可以用Sij(0<i<4,0<j<4)表示。AES所有的算法均可視作基于對這個(gè)狀態(tài)矩陣進(jìn)行操作。

    AES算法由主體迭代部分和密鑰擴(kuò)展算法構(gòu)成。每一次的迭代運(yùn)算稱為一輪,而AES算法的總輪數(shù)可以為10輪、12輪或14輪,分別對應(yīng)128 bit、196 bit或256 bit的密鑰長度。每一輪迭代運(yùn)算分為4個(gè)不同的步驟,分別是S盒置換、行位移、列混合和密鑰加法。AES算法加密解密流程圖如圖1所示。

wl3-t1.gif

1.1.1 S盒置換

    S盒置換是將狀態(tài)矩陣中每一個(gè)元素視作有限域GF(28)中的一個(gè)元素,首先進(jìn)行求逆變換,再將其在GF(28)域中的逆元素進(jìn)行一次仿射變換,得到新的狀態(tài)矩陣。由于在GF(28)域中求逆運(yùn)算過于復(fù)雜,所以在具體實(shí)現(xiàn)中,通常會使用查表法實(shí)現(xiàn)S盒置換,從而減少運(yùn)算時(shí)間。

1.1.2 行位移

    行位移描述矩陣的行操作。在此步驟中,每一行都向左循環(huán)位移某個(gè)偏移量。在AES中(區(qū)塊大小128 bit),第一行維持不變,第二行里的每個(gè)字節(jié)都向左循環(huán)移動一格。同理,第三行及第四行向左循環(huán)位移的偏移量就分別是2和3。128 bit和192 bit的區(qū)塊在此步驟的循環(huán)位移的模式相同。經(jīng)過行位移之后,矩陣中每一豎列,都是由輸入矩陣中的每個(gè)不同列中的元素組成。對于長度256 bit的區(qū)塊,第一行仍然維持不變,第二行、第三行、第四行的偏移量分別是1 B、3 B、4 B。

1.1.3 列混合

    在列混合步驟,每一列的4個(gè)字節(jié)通過線性變換互相組合。每一列的4個(gè)元素分別當(dāng)作1、x、x2、x3的系數(shù),合并即為GF(28)中的一個(gè)多項(xiàng)式,接著將此多項(xiàng)式和一個(gè)固定的多項(xiàng)式c(x)=3x3+x2+x+2在mod(x4)+1下相乘。列混合函數(shù)接收4個(gè)字節(jié)的輸入,輸出4個(gè)字節(jié),每一個(gè)輸入的字節(jié)都會對輸出的4個(gè)字節(jié)造成影響。

1.1.4 輪密鑰加法

    輪密鑰加步驟,回合密鑰將會與原矩陣合并。在每次的加密循環(huán)中,都會由主密鑰產(chǎn)生一把回合密鑰,這把密鑰大小會跟原矩陣一樣,以與原矩陣中每個(gè)對應(yīng)的字節(jié)作異或(wl3-gs1-s1.gif)加法。

1.1.5 密鑰擴(kuò)展算法

    密鑰擴(kuò)展算法主要進(jìn)行密鑰擴(kuò)展操作,初始密鑰和擴(kuò)展后的整個(gè)密鑰表可以看作是一個(gè)字序列。在密鑰擴(kuò)展過程中完成了字旋轉(zhuǎn)和字替代兩個(gè)操作。字旋轉(zhuǎn)操作時(shí)將字的4個(gè)字節(jié)循環(huán)右移一個(gè)單位,如(W[0],W[1],W[2]W[3])經(jīng)過旋轉(zhuǎn)后得到字(W[3],W[0],W[1]W[2])。

1.2 復(fù)合域計(jì)算法實(shí)現(xiàn)S盒置換

    由于S盒置換的數(shù)學(xué)過程十分復(fù)雜,所以這個(gè)過程通常采用查表法實(shí)現(xiàn),這樣雖然執(zhí)行速度快,但是會消耗的大量硬件資源,而且查表法無法細(xì)分為更小的過程。單純地在GF(28)有限域中計(jì)算S盒置換的結(jié)果至少要使用620個(gè)門,同樣會消耗大量的硬件資源。然而,通過使用復(fù)合域算法可以顯著地降低運(yùn)算中所需要邏輯門的數(shù)量,即將GF(28)中的運(yùn)算轉(zhuǎn)換到GF((24)2)中。在復(fù)合域運(yùn)算中,實(shí)現(xiàn)將GF(28)域中的元素轉(zhuǎn)換到GF((24)2)域中的同構(gòu)映射可以用12個(gè)異或門實(shí)現(xiàn),關(guān)鍵路徑上只有4個(gè)異或門。同時(shí),同構(gòu)映射的逆變換,以及仿射變換都只需要19個(gè)異或門來實(shí)現(xiàn),關(guān)鍵路徑上也只有4個(gè)異或門。在復(fù)合域GF((24)2)中,一個(gè)元素可以被表示為shx+sl,sh,sl∈GF(24)。

    使用擴(kuò)展歐幾里得算法,shx+sl的逆變換可以計(jì)算得:

wl3-gs1.gif

    所以S盒置換可以由圖2結(jié)構(gòu)通過運(yùn)算來代替,因?yàn)橥ㄟ^復(fù)合域運(yùn)算將GF(28)中的運(yùn)算轉(zhuǎn)換到GF((24)2)中,GF((24)2)中的運(yùn)算可以進(jìn)一步分解到GF(22)中,進(jìn)而被分解至GF(2)中。在GF(2)域中一次乘法運(yùn)算就是一個(gè)簡單的邏輯與運(yùn)算,減輕了電路的開銷。同時(shí)這樣的結(jié)構(gòu)也為接下來內(nèi)部流水線的建立提供了可能。

wl3-t2.gif

2 內(nèi)外混合流水線

    流水線技術(shù)就是在邏輯電路中插入流水線寄存器,以縮短組合邏輯路徑長度,達(dá)到提高工作頻率、實(shí)現(xiàn)高吞吐率的目的。由于總體的延時(shí)取決于延時(shí)最長的一級,因此要使流水線結(jié)構(gòu)的功能最優(yōu)化,就必須使得流水線中各級的延遲時(shí)間相等。下面分別闡述本文實(shí)現(xiàn)內(nèi)外流水線的方法。

2.1 外部流水線結(jié)構(gòu)

    外部循環(huán)流水線結(jié)構(gòu)由循環(huán)展開結(jié)構(gòu)發(fā)展而來。具體方法是在組合電路與每一輪加密運(yùn)算對應(yīng)的部件之間都插入額外的寄存器。該方法可以在同一時(shí)刻處理多個(gè)數(shù)據(jù)分組,提高系統(tǒng)在單位時(shí)間內(nèi)處理數(shù)據(jù)的速度。圖3為外部10輪流水線流程圖。

wl3-t3.gif

    根據(jù)AES算法結(jié)構(gòu),容易發(fā)現(xiàn)該算法具有以下幾個(gè)顯著的特點(diǎn):

    (1)AES算法加解密過程的核心是10次輪操作,前一輪操作的輸出是下一輪操作的輸入。

    (2)AES算法每次輪操作需要一組子密鑰,而一組子密鑰的產(chǎn)生僅與上一組子密鑰相關(guān)。

    根據(jù)上述特點(diǎn)可知,AES算法可以采用流水線形式實(shí)現(xiàn),把子密鑰的生成插入到每一次輪操作的過程中,將10次輪操作解開為一個(gè)10級的流水線。用外部循環(huán)結(jié)構(gòu)實(shí)現(xiàn)的加解密算法,模塊的面積與流水線級數(shù)成正比。AES加密算法展開為10級的流水線后效率提高為原來的10倍。 

2.2 內(nèi)部流水線

    內(nèi)部流水線是在內(nèi)部復(fù)合域邏輯運(yùn)算中插入寄存器,可以使其邏輯長度更為縮短,從而大大提高吞吐率。采用輪內(nèi)流水線技術(shù)進(jìn)行高性能AES硬件實(shí)現(xiàn)設(shè)計(jì)的關(guān)鍵就是如何利用最簡單的組合電路實(shí)現(xiàn)AES的輪單元及如何進(jìn)行流水線劃分使得關(guān)鍵路徑最短。本文對每一輪加密過程進(jìn)行改動,做如圖4劃分,分成6級的流水線。

wl3-t4.gif

    由表1可以看出,輪內(nèi)劃分的六部分的關(guān)鍵路徑都基本相等,所以各部分延時(shí)也基本相同,因而將輪內(nèi)操作分成6輪是合理的。與文獻(xiàn)[1]中將輪內(nèi)流水分成7輪相比,分成6輪雖然損失了部分速度,但是面積利用率更高。

wl3-b1.gif

3 測試方法和結(jié)果

3.1 仿真與測試

    本文采用硬件描述語言Verilog HDL代碼編寫了128 bit的AES算法,經(jīng)過外部10輪流水線改進(jìn)以后的加密算法,改進(jìn)S盒置換步驟后的AES算法,實(shí)現(xiàn)內(nèi)部流水線后的AES算法和內(nèi)外混合流水線的AES算法,并用Modelsim對每個(gè)算法逐個(gè)進(jìn)行仿真。

    本文采用Altera Quarters II工具在芯片為Cyclone IV的FPGA上進(jìn)行驗(yàn)證,所獲得的數(shù)據(jù)已在表1中給出。

3.2 性能分析

    測試所得結(jié)果與同類論文研究結(jié)果的比較見表2。

wl3-b2.gif

    由表2可以看出,本文完成的工作使得吞吐率較同類論文結(jié)果平均提升197.5%,最高提升241.3%,取得顯著進(jìn)步。同時(shí),就內(nèi)外流水線而言,使用外部10輪流水線的吞吐率較原始結(jié)果提升10倍。同時(shí)使用內(nèi)外流水線相比只使用外部流水線而言,吞吐率增加5.5倍。這與理論基本相符。當(dāng)然,吞吐率的增加伴隨著面積的增加,但可以看出,由于增加內(nèi)部流水線省去了占據(jù)面積巨大的S盒查找表,一定程度上抑制了面積的增加。因而,使用內(nèi)外混合流水線,對于提升吞吐率面積比,也有積極的作用。

4 結(jié)論

    本文提出了一種可以高效地實(shí)現(xiàn)AES算法的流水線結(jié)構(gòu),不同于以往采用查找表的方法實(shí)現(xiàn)S盒轉(zhuǎn)換,本文采用組合邏輯電路實(shí)現(xiàn)這一步驟。采用查找表的方法,雖然可以使處理速度得到提升,但是占用硬件面積過大;采用組合邏輯電路,雖然增加了電路的復(fù)雜程度,但是可以顯著減少占用的硬件面積,此外,通過使用復(fù)合域算法化簡域內(nèi)的轉(zhuǎn)換,電路的復(fù)雜度也可以得到降低。為了獲得更高的處理速度,本文在用于S盒轉(zhuǎn)換的組合邏輯電路內(nèi)部進(jìn)行了內(nèi)部流水線劃分,最終設(shè)計(jì)了6段流水線,進(jìn)一步提高了處理速度。

參考文獻(xiàn)

[1] Zhang Xinmiao,Keshab K.Parhi.High-speed VLSI architectures for the AES algorithm[J].IEEE Transactions on Very Large Scale Integration(VLSI) Systms,2004,12(9):957-967.

[2] RIJMEN V.Efficient implementation of the rijindael S-box[J].Katholieke Universiteit Leuven,Dept.ESAT.Belgium,2000.

[3] WOLKERSTORFER J,OSWALD E,LAMBERGER M.An ASIC implementation of the AES SBoxes[M].Topics in  Cryptology-CT-RSA 2002.Springer Berlin Heidelberg,2002:67-68.

[4] HODJAT A,VERBAUWHEDE I.A 21.54 Gbits/s fully pipelined AES processor on FPGA[C].Field-Programmable Custom Computing Machines,2004.FCCM 2004.12th Annual IEEE Symposium on.IEEE,2004:308-309.

[5] ZAMBRENO J,NGUYEN D,CHOUDHARY A.Exploring area/delay tradeoffs in an AES FPGA implementation[M].Field Programmable Logic and Application.Springer Berlin Heidelberg,2004:575-585.

[6] GOOD T,BENAISSA M.Pipelined AES on FPGA with support for feedback modes(in a multi-channel environment)[J].IET Information Security,2007,1(1):1-10.

[7] FU Y,HAO L,ZHANG X,et al.Design of an extremely high performance counter mode AES reconfigurable processor[C].Embedded Software and Systems,2005.Second International Coference on IEEE,2005:7.

[8] FAN C P,HWANG J K.Implementations of high throughput sequential and fully pipelined AES processors on FPGA[C].Intelligent Signal Processing and Communication Systems,2007.ISPACS 2007.International Symposium on.IEEE,2007:353-356.

[9] VANITHA M,SAKTHIVEL R,SUBHA S.Highly secured high throughput VLSI architecture for AES algorithm[C].Devices,Circuits and Systems(ICDCS),2012 International Conference on IEEE,2012:403-407.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。