新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AES算法的快速硬件設(shè)計(jì)與實(shí)現(xiàn)

AES算法的快速硬件設(shè)計(jì)與實(shí)現(xiàn)

作者:北京電子科技學(xué)院 李雪梅 時(shí)間:2008-07-10 來源:電子設(shè)計(jì)應(yīng)用 收藏

  2.3 輪函數(shù)優(yōu)化設(shè)計(jì)

本文引用地址:http://butianyuan.cn/article/85545.htm

  優(yōu)化輪函數(shù)設(shè)計(jì),減少輪函數(shù)的延時(shí),是提高算法時(shí)鐘頻率的關(guān)鍵。本文通過對輪函數(shù)中Substitute Byte、Shift Row和Mix Column變換進(jìn)行優(yōu)化來提高 算法的時(shí)鐘頻率。

  輪函數(shù)中Substitute Byte(S-Box)是對一個(gè)字節(jié)的非線性操作。使用Verilog HDL描述S-Box通常有兩種方法:(1)使用case語句進(jìn)行行為描述,綜合后占用LE資源;(2)使用中的存儲器資源。算法的S- Box是一個(gè)8入8出的查找表,如果用LE實(shí)現(xiàn),則在Cyclone芯片中每個(gè)S-Box需要208個(gè)LE,算法的并行運(yùn)算需要32個(gè)S-Box,共6656個(gè)LE,不但占用大量的硬件資源,而且使結(jié)構(gòu)復(fù)雜,增加了延時(shí)。而用存儲器資源實(shí)現(xiàn)S-Box,不需占用其他硬件資源,并且可以減少延時(shí),是個(gè)很好的選擇。本文即采用這種方法,并充分利用器件資源:Cyclone器件中每個(gè)memory block可以設(shè)計(jì)為一個(gè)256×16bit的ROM,將加/解密過程的S-Box設(shè)計(jì)在同一個(gè)ROM內(nèi),加密S-Box內(nèi)容置于ROM的前8bit,解密S-Box內(nèi)容置于ROM的后8bit,這樣可以使memory block的數(shù)目比分別使用ROM設(shè)計(jì)時(shí)減少一半,大幅提高了資源利用率。Shift Row的硬件實(shí)現(xiàn)非常簡單,只是連線操作。為了進(jìn)一步降低由于連線引起的延時(shí),將Substitute Byte與Shift Row合為一體,使兩部分延時(shí)僅取決于S-Box的ROM。Mix Column變換被定義為系數(shù)在有限域GF(28)上的四次多項(xiàng)式矩陣乘法[4],輸入列向量(X0,X1,X2,X3),輸出列向量(Y0,Y1,Y2,Y3),加密過程是在GF(28)上乘以01、02、03,解密過程相對復(fù)雜,是在GF(28)上乘以09、0E、0B、0D。為了簡化設(shè)計(jì)以便于實(shí)現(xiàn),可將矩陣乘法展開并整理,得到以下結(jié)果:

  加密Mix Column:

  解密Mix Column:

  式中a是對一個(gè)字節(jié)的變換函數(shù),其Verilog HDL描述為:

  a={b[6:0],1′b0}^(8′h1b&{8{b[7]}});

  經(jīng)過整理,簡化了Mix Column實(shí)現(xiàn)過程,節(jié)約了硬件資源。Add Round Key只是簡單的異或,占用資源較少。優(yōu)化設(shè)計(jì)后輪函數(shù)的最大延時(shí)僅8.6ns,為提高整個(gè)設(shè)計(jì)的時(shí)鐘頻率提供了保障。

  3 算法的快速實(shí)現(xiàn)

  3.1 AES算法的硬件實(shí)現(xiàn)方式

  AES算法的輪操作特點(diǎn)使得其硬件實(shí)現(xiàn)可以有多種方式[3]:(1) 串行運(yùn)算:輪函數(shù)用組合邏輯實(shí)現(xiàn),10輪迭代過程直接相連,前一輪結(jié)果直接作為下一輪的輸入,1個(gè)時(shí)鐘周期內(nèi)完成一個(gè)分組運(yùn)算,吞吐量可以達(dá)到最佳狀態(tài)。 (2)基本迭代:采用反饋模式,所有迭代只用一個(gè)輪函數(shù),10個(gè)時(shí)鐘周期完成一個(gè)分組運(yùn)算。(3)輪內(nèi)流水線:在每一個(gè)輪函數(shù)中插入寄存器,將一輪運(yùn)算分成多個(gè)操作段,每個(gè)時(shí)鐘完成一個(gè)操作段,這種方式被很多人討論并使用,其優(yōu)點(diǎn)是可以提高算法運(yùn)行的時(shí)鐘頻率。

  在以上幾種AES算法實(shí)現(xiàn)方式中,方式(1)由于10個(gè)輪函數(shù)同時(shí)工作,不但需要大量的寄存器資源和組合邏輯資源的支持,而且還增加了延時(shí),一般的芯片難以滿足容量的要求,時(shí)鐘頻率也非常低,所以這種方法不適合加密算法的硬件實(shí)現(xiàn)。方式(2)實(shí)現(xiàn)簡單,資源占用較少,但每個(gè)分組運(yùn)算時(shí)間比較長,吞吐量仍然相對較低。在方式 (3)中,由于加密算法的輪操作特點(diǎn)使得輪內(nèi)各級流水部件不能同時(shí)執(zhí)行,增加了算法運(yùn)行的時(shí)鐘數(shù)目。輪內(nèi)流水線級數(shù)越多,時(shí)鐘數(shù)目也越多。雖然算法仿真頻率可以達(dá)到很高,但由于受硬件加密系統(tǒng)全局時(shí)鐘的影響,吞吐量并沒有明顯提高。

  在對以上算法的幾種實(shí)現(xiàn)方式進(jìn)行分析后,本文基于流水線技術(shù),提出一種更快速的AES算法的FPGA實(shí)現(xiàn)方案。該方案即使在全局時(shí)鐘頻率較低的情況下,也能獲得很高的吞吐量。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉