基于FPGA的AES算法芯片設(shè)計(jì)實(shí)現(xiàn)
引言
本文引用地址:http://cafeforensic.com/article/191956.htm密碼模塊作為安全保密系統(tǒng)的重要組成部分,其核心任務(wù)就是加密數(shù)據(jù)。分組密碼算法AES以其高效率、低開(kāi)銷、實(shí)現(xiàn)簡(jiǎn)單等特點(diǎn)目前被廣泛應(yīng)用于密碼模塊的研制中。密碼模塊一般被設(shè)計(jì)成外接在主機(jī)串口或并口的一個(gè)硬件設(shè)備或是一塊插卡,具有速度快,低時(shí)延的特點(diǎn)。而從整體發(fā)展趨勢(shì)來(lái)看,嵌入式密碼模塊由于靈活,適用于多種用戶終端、通信設(shè)備和武器平臺(tái),將會(huì)得到更加廣泛的應(yīng)用?;?a class="contentlabel" href="http://cafeforensic.com/news/listbylabel/label/FPGA">FPGA實(shí)現(xiàn)的嵌入式密碼模塊與以往的主流硬件實(shí)現(xiàn)方式(如DSP芯片、單片機(jī))相比,具有低成本、高速度、微功耗、微小封裝以及保密性強(qiáng)等優(yōu)點(diǎn),與ASIC相比具有設(shè)計(jì)靈活、成本低、周期短等優(yōu)點(diǎn)。另一個(gè)明顯的優(yōu)點(diǎn)在于:在對(duì)時(shí)間代價(jià)和空間代價(jià)的取舍上,基于FPGA實(shí)現(xiàn)的加密技術(shù)提供了多種實(shí)現(xiàn)方案,分別對(duì)時(shí)間代價(jià)和空間代價(jià)有不同的偏重,有利于在各種應(yīng)用環(huán)境中進(jìn)行優(yōu)化。硬件實(shí)現(xiàn)無(wú)論是ASIC方案還是FPGA方案,數(shù)據(jù)處理速度的提高都離不開(kāi)優(yōu)化技術(shù),包括算法輪函數(shù)和設(shè)計(jì)結(jié)構(gòu)的優(yōu)化。AES算法的快速實(shí)現(xiàn)方案包括:優(yōu)化 S盒的結(jié)構(gòu)(如使用復(fù)合域、查表等方法),列混合與密鑰加的結(jié)合,以及采用流水線技術(shù)等。表1為幾種典型的AES算法實(shí)現(xiàn)性能對(duì)比情況。
AES算法結(jié)構(gòu)
AES是一個(gè)迭代型的分組密碼,包含了輪變換對(duì)狀態(tài)的重復(fù)作用。用State表示待加密狀態(tài),CipherKey表示初始加密密鑰,ExpandedKey表示擴(kuò)展密鑰,其加密過(guò)程描述如下:
Round(State,ExpandedKey) --輪變換
{
SubByte(State); --字節(jié)代替
表1幾種典型的AES算法實(shí)現(xiàn)性能對(duì)比
ShiftRow(State); --行移位
MixColumn(State); --列混合
AddRoundKey(State,ExpandedKey[i]); --密鑰加
}
AES(State,CipherKey)--主函數(shù)
{
KeyExpansion(CipherKey,ExpandedKey); --密鑰擴(kuò)展
AddRoundKey(State,ExpandedKey[0]); --模加輪密鑰
For(i=1;i FinalRound(State,ExpandedKey[Nr]); --末輪運(yùn)算
}
在AES的單輪運(yùn)算中包含了SubByte(字節(jié)代替)、ShiftRow(行移位)、MixColumn(列混合)、AddRoundKey(密鑰加)四個(gè)步驟。圖1所示為單輪運(yùn)算的加/脫密結(jié)構(gòu)。
圖1 單輪運(yùn)算的加/脫密結(jié)構(gòu)
AES算法芯片IP核的完整結(jié)構(gòu)包括:接口模塊,密鑰擴(kuò)展模塊,控制模塊,加/脫密模塊。各模塊之間的統(tǒng)一調(diào)度、協(xié)調(diào)配合是芯片性能的保證。然而制約芯片吞吐率的瓶頸是加/脫密模塊的實(shí)現(xiàn)。本文在第三部分著重分析了加/脫密模塊實(shí)現(xiàn)方案。
評(píng)論