AES加解密算法IP核的設(shè)計(jì)與實(shí)現(xiàn)
計(jì)算機(jī)科學(xué)技術(shù)中的數(shù)據(jù)加密是信息安全的重要手段。Rijndael加密算法由比利時(shí)密碼學(xué)家JoanDaemen和VincentRijmen發(fā)明的一種迭代型分組加密算法,2000年被確定為美高級(jí)加密標(biāo)準(zhǔn)AES的最終算法。本文通過(guò)對(duì)AES算法的流程進(jìn)行改進(jìn),提高IP核的性能,從而獲得低成本高性能的AES加密實(shí)現(xiàn)方法。
1 AES算法流程
AES算法是一個(gè)迭代型分組密碼, 將輸入的明文( 或密文)分成16個(gè)字節(jié),在第一個(gè)輪密鑰加變換后進(jìn)入1O輪迭代。前9輪完全相同,依次經(jīng)過(guò)字節(jié)代替、行移位、列混合、輪密鑰加,最后一輪不同,跳過(guò)了列混合,解密與加密過(guò)程類(lèi)似,但執(zhí)行順序與描述內(nèi)容有所不同,因此AES算的加解密過(guò)程需要分別實(shí)現(xiàn)。
我們可以調(diào)整操作順序,先進(jìn)行密鑰加操作,再進(jìn)行列混合操作,密鑰擴(kuò)展部分的列混合操作就可去掉,從而密鑰擴(kuò)展模塊被簡(jiǎn)化,AES IP核的硬件復(fù)雜度得到降低。
2 IP核設(shè)計(jì)方案
筆者將IP系統(tǒng)的工作模式設(shè)計(jì)為閑置模式、密鑰輸入模式、單輪加密模式及連續(xù)加密模式,其結(jié)構(gòu)包括時(shí)序控制、密鑰處理、數(shù)據(jù)處理三個(gè)主要單元。
2.1 密鑰處理單元。
① 在系統(tǒng)進(jìn)入密鑰輸入模式后,從數(shù)據(jù)輸入端口連續(xù)四個(gè)時(shí)鐘周期讀入總共一百二十八位密鑰數(shù)據(jù),系統(tǒng)完成第一輪密鑰的計(jì)算,回到閑置模式。② 密鑰處理單元處于加密模式時(shí),按算法需求實(shí)時(shí)計(jì)算各輪密鑰,以三十二位為一單元輸出,與數(shù)據(jù)通道中三十二位數(shù)據(jù)結(jié)合進(jìn)行運(yùn)算。③ 為利于下一輪加密的進(jìn)行,密鑰處理單元的復(fù)位環(huán)節(jié)是在系統(tǒng)模式由加密狀態(tài)轉(zhuǎn)為閑置狀態(tài)時(shí)結(jié)束。
2.2 數(shù)據(jù)處理單元。
① 加密模式的主要工作是迭代運(yùn)算明文數(shù)據(jù)。數(shù)據(jù)處理單元承擔(dān)檢測(cè)動(dòng)能,當(dāng)處于最后一輪數(shù)據(jù)運(yùn)算時(shí),會(huì)直接跳過(guò)列混合這一環(huán)節(jié)。② 加密模式下數(shù)據(jù)處理單元讀取一百二十八位明文數(shù)據(jù)連續(xù)四次,再通過(guò)四十個(gè)時(shí)鐘周期數(shù)據(jù)運(yùn)算,密文之首個(gè)三十二位數(shù)據(jù)段得以產(chǎn)生。
2.3 時(shí)序控制單元。
該單元負(fù)責(zé)生成整個(gè)系統(tǒng)關(guān)鍵控制信號(hào),因控制信號(hào)集中由一個(gè)單元負(fù)責(zé)產(chǎn)生,所以使得軟件綜合出較高的時(shí)鐘頻率,輸出的時(shí)鐘相位也趨于一致。從AES加密方法流程圖中可以看到,第一輪與最后一輪都進(jìn)行了特殊處理,雖然未經(jīng)過(guò)完整的四輪處理過(guò)程,但在設(shè)計(jì)中將第一輪與最后一輪使用單獨(dú)硬件實(shí)現(xiàn),減少了兩輪的運(yùn)算時(shí)間。而且,降低資源占用的主要手段主要是減少Sbox的使用。
3 硬件實(shí)現(xiàn)方式
為使本硬件在上述設(shè)計(jì)的基礎(chǔ)上得以實(shí)現(xiàn),筆者采用的方式是: 應(yīng)用QuartusII8.0軟件形成Verilog HDL語(yǔ)言, 應(yīng)用ModelSim6.2系統(tǒng)軟件進(jìn)行測(cè)試,路徑與綜合的分析工作應(yīng)用FPGA綜合工具Synplify9.pro輔助完成。
主要目的是:1)考察80 MHz頻率下,目標(biāo)器件EP1C4F324C6所綜合的IP核的資源占用及性能。2)在EP2S15F484C3目標(biāo)器件的高性能狀態(tài)中再一次綜合及后仿真,以便將測(cè)試結(jié)果縱向比較,得出測(cè)試結(jié)論。
3.1 測(cè)試過(guò)程。
密鑰為:2b7e1516_28aed2a6_abf71588_09cf4f3c,輸入明文:3243f6a8_885a308d_313198a2_e0370734輸出密文3925841d_02dc09fb_dc118597_196a0b32,結(jié)果與預(yù)期吻合。
從建立流水作業(yè)以提高性能的目的出發(fā),32位和128位數(shù)據(jù)位寬的設(shè)計(jì)中原文計(jì)算速度/資源比值時(shí)未考慮所占用的RAMs資源,而且文中設(shè)計(jì)為25MHz時(shí)鐘頻率,進(jìn)行數(shù)據(jù)分析時(shí)卻將工作頻率直接換算為54MHz,而未對(duì)其設(shè)計(jì)是否可正常工作于此頻率進(jìn)行論證。得到數(shù)據(jù)見(jiàn)表1:
表1 硬件實(shí)現(xiàn)的比較
3.2 數(shù)據(jù)分析。
IP核在80MHz時(shí)鐘頻率下工作時(shí),數(shù)據(jù)吞吐量為256Mb/s,速度/資源值為0.193。在位寬擴(kuò)展時(shí),采用并行連接IP核的辦法,時(shí)序控制單元與密鑰擴(kuò)展單元可實(shí)現(xiàn)共用,進(jìn)一步提高資源利用率。當(dāng)擴(kuò)展為128位數(shù)據(jù)位寬時(shí),數(shù)據(jù)吞吐量成倍增加,而速度/資源比提高到0.326(見(jiàn)表1)。
3.3 實(shí)驗(yàn)結(jié)論。
本設(shè)計(jì)在32位數(shù)據(jù)位寬的同類(lèi)設(shè)計(jì)中有一定的優(yōu)勢(shì),采用6級(jí)流水線技術(shù)及復(fù)合域方法優(yōu)化Sbox,達(dá)到了較優(yōu)的設(shè)計(jì)指標(biāo)。
在Synplify9下選定目標(biāo)器件EP2S15F484C3,優(yōu)先考慮提高速度,綜合結(jié)果報(bào)告最高時(shí)鐘頻率超過(guò)240MHz,說(shuō)明本IP核設(shè)計(jì)合理,較好地利用了目標(biāo)器件資源。
本文設(shè)計(jì)的IP核硬件在輸入、輸出端加FIFO數(shù)據(jù)緩存器使從AES加密主器件被中斷數(shù)據(jù)傳輸次數(shù)減少,而且在實(shí)際應(yīng)用中、簡(jiǎn)化了方法流程圖中可以看到,第一輪與最后一輪都進(jìn)行了特殊處主器件操作時(shí)序,形成了標(biāo)準(zhǔn)通信界面,是一種低成本高性能理,雖然未經(jīng)過(guò)完整的四輪處理過(guò)程,但在設(shè)計(jì)中將第一輪與的AES加密實(shí)現(xiàn)方法,整個(gè)設(shè)計(jì)具有較強(qiáng)的實(shí)用性,運(yùn)行穩(wěn)最后一輪使用單獨(dú)硬件實(shí)現(xiàn),減少了兩輪的運(yùn)算時(shí)間。而且, 定,效果良好。降低資源占用的主要手段主要是減少Sbox的使用。