AES算法的快速硬件設計與實(shí)現
2.3 輪函數優(yōu)化設計
本文引用地址:http://dyxdggzs.com/article/85545.htm優(yōu)化輪函數設計,減少輪函數的延時(shí),是提高算法時(shí)鐘頻率的關(guān)鍵。本文通過(guò)對輪函數中Substitute Byte、Shift Row和Mix Column變換進(jìn)行優(yōu)化來(lái)提高 算法的時(shí)鐘頻率。
輪函數中Substitute Byte(S-Box)是對一個(gè)字節的非線(xiàn)性操作。使用Verilog HDL描述S-Box通常有兩種方法:(1)使用case語(yǔ)句進(jìn)行行為描述,綜合后占用LE資源;(2)使用FPGA中的存儲器資源。AES算法的S- Box是一個(gè)8入8出的查找表,如果用LE實(shí)現,則在Cyclone芯片中每個(gè)S-Box需要208個(gè)LE,AES算法的并行運算需要32個(gè)S-Box,共6656個(gè)LE,不但占用大量的硬件資源,而且使結構復雜,增加了延時(shí)。而用存儲器資源實(shí)現S-Box,不需占用其他硬件資源,并且可以減少延時(shí),是個(gè)很好的選擇。本文即采用這種方法,并充分利用器件資源:Cyclone器件中每個(gè)memory block可以設計為一個(gè)256×16bit的ROM,將加/解密過(guò)程的S-Box設計在同一個(gè)ROM內,加密S-Box內容置于ROM的前8bit,解密S-Box內容置于ROM的后8bit,這樣可以使memory block的數目比分別使用ROM設計時(shí)減少一半,大幅提高了資源利用率。Shift Row的硬件實(shí)現非常簡(jiǎn)單,只是連線(xiàn)操作。為了進(jìn)一步降低由于連線(xiàn)引起的延時(shí),將Substitute Byte與Shift Row合為一體,使兩部分延時(shí)僅取決于S-Box的ROM。Mix Column變換被定義為系數在有限域GF(28)上的四次多項式矩陣乘法[4],輸入列向量(X0,X1,X2,X3),輸出列向量(Y0,Y1,Y2,Y3),加密過(guò)程是在GF(28)上乘以01、02、03,解密過(guò)程相對復雜,是在GF(28)上乘以09、0E、0B、0D。為了簡(jiǎn)化設計以便于FPGA實(shí)現,可將矩陣乘法展開(kāi)并整理,得到以下結果:
加密Mix Column:
解密Mix Column:
式中a是對一個(gè)字節的變換函數,其Verilog HDL描述為:
a={b[6:0],1′b0}^(8′h1b&{8{b[7]}});
經(jīng)過(guò)整理,簡(jiǎn)化了Mix Column實(shí)現過(guò)程,節約了硬件資源。Add Round Key只是簡(jiǎn)單的異或,占用資源較少。優(yōu)化設計后輪函數的最大延時(shí)僅8.6ns,為提高整個(gè)設計的時(shí)鐘頻率提供了保障。
3 AES算法的快速實(shí)現
3.1 AES算法的硬件實(shí)現方式
AES算法的輪操作特點(diǎn)使得其硬件實(shí)現可以有多種方式[3]:(1) 串行運算:輪函數用組合邏輯實(shí)現,10輪迭代過(guò)程直接相連,前一輪結果直接作為下一輪的輸入,1個(gè)時(shí)鐘周期內完成一個(gè)分組運算,吞吐量可以達到最佳狀態(tài)。 (2)基本迭代:采用反饋模式,所有迭代只用一個(gè)輪函數,10個(gè)時(shí)鐘周期完成一個(gè)分組運算。(3)輪內流水線(xiàn):在每一個(gè)輪函數中插入寄存器,將一輪運算分成多個(gè)操作段,每個(gè)時(shí)鐘完成一個(gè)操作段,這種方式被很多人討論并使用,其優(yōu)點(diǎn)是可以提高算法運行的時(shí)鐘頻率。
在以上幾種AES算法實(shí)現方式中,方式(1)由于10個(gè)輪函數同時(shí)工作,不但需要大量的寄存器資源和組合邏輯資源的支持,而且還增加了延時(shí),一般的FPGA芯片難以滿(mǎn)足容量的要求,時(shí)鐘頻率也非常低,所以這種方法不適合加密算法的硬件實(shí)現。方式(2)實(shí)現簡(jiǎn)單,資源占用較少,但每個(gè)分組運算時(shí)間比較長(cháng),吞吐量仍然相對較低。在方式 (3)中,由于加密算法的輪操作特點(diǎn)使得輪內各級流水部件不能同時(shí)執行,增加了算法運行的時(shí)鐘數目。輪內流水線(xiàn)級數越多,時(shí)鐘數目也越多。雖然算法仿真頻率可以達到很高,但由于受硬件加密系統全局時(shí)鐘的影響,吞吐量并沒(méi)有明顯提高。
在對以上算法的幾種實(shí)現方式進(jìn)行分析后,本文基于流水線(xiàn)技術(shù),提出一種更快速的AES算法的FPGA實(shí)現方案。該方案即使在全局時(shí)鐘頻率較低的情況下,也能獲得很高的吞吐量。
評論