適用于嵌入式系統(tǒng)的AES加密IP核設(shè)計
Rijndael加密算法于2000年被確定為美國高級加密標準AES(Advanced Encryption Standard),現(xiàn)在己是工業(yè)界數(shù)據(jù)加密的通用標準之一。Rijndael算法無論從理論分析,還是在實踐應(yīng)用都表現(xiàn)出很好的抵抗各種攻擊的性能,其安全性是不容置疑的。
隨著計算機技術(shù)、微電子技術(shù)的不斷融合,嵌入式系統(tǒng)應(yīng)用得到了迅猛發(fā)展。近年來嵌入式技術(shù)廣泛用于解決保密信息的傳輸、存儲和管理方面的問題。而這些都需要嵌入式系統(tǒng)集成有可靠的加密模塊?,F(xiàn)有一些應(yīng)用中的加密模塊還不盡如人意。本文針對此應(yīng)用需求設(shè)計一種適用于嵌入式系統(tǒng)的加密IP核。
1 AES算法
1.1 AES算法描述
密鑰密碼體制分為流密碼和分組密碼兩種。分組密碼是信息與網(wǎng)絡(luò)安全中實現(xiàn)數(shù)據(jù)加密、數(shù)字簽名、認證及密鑰管理的核心體制,具有速度快、易于標準化和便于軟硬件實現(xiàn)等特點。AES采用分組密碼的加密方式,其分組長度分為128 bit、192 bit、256 bit三種,AES密碼在相同的輪函數(shù)作用下,迭代運算次數(shù)的不同可達到不同級別的安全強度。128 bit分組長度的情況下,循環(huán)輪數(shù)指定為11次,目前還沒有可行的算法可以對該模型進行有效攻擊[1]。每一輪處理均為作用在中間結(jié)果上的一批運算,該中間結(jié)果稱為狀態(tài),用4×4字節(jié)矩陣表示,其中,數(shù)據(jù)矩陣稱為State、密鑰矩陣稱為Key。AES加密涉及5種運算,分別是字節(jié)代換(SubBytes)、行移變換(ShiftRows)、列混合變換(MixColumns)、密鑰加法(AddRoundKey)和密鑰擴展(ExpandedKey)。
字節(jié)代換是對State每個字節(jié)進行獨立非線性變換,由字節(jié)在GF(28)域中求其乘法逆并外加一個仿射變換完成[2]。具體實現(xiàn)中廣泛使用查表方式完成該步變換(實現(xiàn)該功能單元被稱為Sbox),以避免復(fù)雜的乘法運算。
行移變換是對State進行按行移位操作,第0行不移位,第1行循環(huán)左移一位,第2行循環(huán)左移兩位,第3行循環(huán)左移三位。
密鑰加法是將輪密鑰Key和狀態(tài)State中對應(yīng)字節(jié)按位“異或”。
密鑰擴展提供輪變換對應(yīng)密鑰加法用到的各輪密鑰。各輪運算中使用到的輪密鑰都不相同,密鑰擴展運算通過控制迭代運算次數(shù)計算出對應(yīng)輪所需輪密鑰[3]。
加密過程由11輪運算組成,其中首輪只進行密鑰加法,接著進行9次輪變換,輪變換由字節(jié)代換、行移變換、列混合變換及密鑰加法4個步驟構(gòu)成,再進行末輪變換,在末輪中跳過列混合變換。末輪完成后輸出密文數(shù)據(jù)。AES加密過程如圖1所示。
1.2 常用AES優(yōu)化實現(xiàn)
AES算法的輪操作特點看似更適合于在通用CPU平臺下編程實現(xiàn),而實際上,此種實現(xiàn)方式在性能方面存在加密速度慢等先天局限性。AES加密處理單元一般處于數(shù)據(jù)主干道上,其處理數(shù)據(jù)能力直接影響整個應(yīng)用系統(tǒng)的外在性能表現(xiàn),因此,研究數(shù)據(jù)處理能力強的硬件加密實現(xiàn)方式具有重要的意義。如何實現(xiàn)高性價比的硬件AES加密一直是加密算法應(yīng)用領(lǐng)域研究的熱點問題。
常見的硬件優(yōu)化實現(xiàn)有如下幾種方式:(1)串行方式。將輪函數(shù)展平,每輪對應(yīng)一級組合邏輯,11輪迭代過程直接相連,前一級輸出作為次一級的輸入,每一個時鐘周期均可完成一個分組處理;(2)迭代方式。各輪迭代只用一個對應(yīng)輪函數(shù)功能的組合邏輯實體實現(xiàn),每11個時鐘周期完成一個分組處理;(3)流水線方式。用于提高系統(tǒng)工作時鐘周期的流水線技術(shù),一般僅在局部使用,或是與串行方式并用,可提高工作時鐘頻率,使其滿足極大帶寬的應(yīng)用要求;(4)輪內(nèi)實現(xiàn)流水線。在輪函數(shù)對應(yīng)實體中插入寄存器,將一輪運算分至多個邏輯段完成,每個時鐘周期仍能完成一個數(shù)據(jù)分組處理。
以上AES算法實現(xiàn)方式各有優(yōu)缺點,但總體來說缺乏靈活性。當前應(yīng)用于嵌入式系統(tǒng)的AES加密模塊在靈活性、資源占用上還不是很理想。在對常用優(yōu)化方法進行研究后,本文針對嵌入式系統(tǒng)設(shè)計一種AES加密IP核、實現(xiàn)低資源占用、高性能要求、32位數(shù)據(jù)位寬、且能方便進行并行連接,實現(xiàn)數(shù)據(jù)位寬擴展。
2 IP核設(shè)計
2.1 系統(tǒng)架構(gòu)設(shè)計
IP系統(tǒng)分為時序控制、密鑰處理、數(shù)據(jù)處理三個主要單元,其系統(tǒng)結(jié)構(gòu)如圖2所示。系統(tǒng)的工作模式分為閑置模式、密鑰輸入模式、單輪加密模式及連續(xù)加密模式。復(fù)位后系統(tǒng)處于閑置模式,單輪加密模式可以直接切換為連續(xù)加密模式,而連續(xù)加密模式需進入到閑置模式至少一個時鐘周期后才可切換到單輪加密工作模式。
密鑰處理單元在系統(tǒng)進入密鑰輸入模式后的連續(xù)4個時鐘周期從數(shù)據(jù)輸入端口讀入總共128位密鑰數(shù)據(jù),在第5個時鐘周期到來時完成第一輪密鑰的計算,然后系統(tǒng)返回閑置模式。在加密模式中密鑰處理單元按算法需求實時計算各輪密鑰,并按32位為一組輸出,與數(shù)據(jù)通道中32位數(shù)據(jù)進行“異或”運算。在系統(tǒng)模式由加密模式轉(zhuǎn)為閑置模式時,完成密鑰處理單元的歸位動作,使得單元狀態(tài)與密鑰輸入后的狀態(tài)相同,為下一次加密做準備。
數(shù)據(jù)處理單元在加密模式下對明文數(shù)據(jù)進行迭代運算。該單元檢測到當前是最末輪數(shù)據(jù)處理時自動跳過列混合運算。在系統(tǒng)進入加密模式后,數(shù)據(jù)處理單元從輸入端口分4次讀入128位明文數(shù)據(jù),經(jīng)過接下來的40個時鐘周期數(shù)據(jù)運算過程后,得到密文中的第一個32位數(shù)據(jù)段。
時序控制單元負責整個系統(tǒng)關(guān)鍵控制信號的生成,控制信號集中由一個單元負責產(chǎn)生,不僅利于軟件綜合出較高的時鐘頻率,而且輸出的時鐘相位也有較優(yōu)的一致性。
系統(tǒng)正常工作狀態(tài)為先進行一次密鑰載入操作,然后觸發(fā)進入加密模式進行多次的數(shù)據(jù)加密。在需要時可以在閑置狀態(tài)下再次進行密鑰模式對密鑰進行更新。
在系統(tǒng)閑置狀態(tài)下,密鑰加載信號被檢測為有效時,系統(tǒng)進入密鑰輸入模式,對密鑰數(shù)據(jù)進行讀入、保存及生成第一輪密鑰待用,而忽略密鑰處理單元中是否先前已存在密鑰數(shù)據(jù)。數(shù)據(jù)加載引腳指示系統(tǒng)由閑置模式輸入單輪加密模式,因為128位數(shù)據(jù)要在4個時鐘周期完成讀入,加密后數(shù)據(jù)也需要4個時鐘周期時間才能完成輸出。因此,從明文數(shù)據(jù)輸入到密文數(shù)據(jù)輸出共需要等待40個時鐘周期。如果此時檢測到數(shù)據(jù)加載引腳信號有效則在輸出密文的同時進行下一輪明文的讀入,系統(tǒng)進入到連續(xù)加密模式,否則在接下來的4個時鐘周期將密文輸出后系統(tǒng)由單輪加密模式切換到閑置模式。連續(xù)加密模式適合用于進行批量數(shù)據(jù)加密處理,系統(tǒng)每40個時鐘周期會從輸入端口讀入128位明文數(shù)據(jù),同時在這40個時鐘周期中將提供密文數(shù)據(jù)。在進行大量數(shù)據(jù)處理時,載入密鑰及載入第一組加密數(shù)據(jù)的幾個時鐘周期均可忽略,系統(tǒng)性能為每40個時鐘周期處理128位數(shù)據(jù)。在讀入明文時,若檢測到載入數(shù)據(jù)信號無效,則退出連續(xù)加密模式,系統(tǒng)回復(fù)到閑置狀態(tài)。
2.2 設(shè)計要點
嵌入式系統(tǒng)中資源相對較少,一般數(shù)據(jù)位寬為32位或更少,如果設(shè)計的AES數(shù)據(jù)通道位寬達到128位或更多,雖然輪處理時間較短,但數(shù)據(jù)通道在I/O接口段必然利用率不高,而且占用資源難以降低,故本設(shè)計采用主通道數(shù)據(jù)位寬為32位的結(jié)構(gòu)。由于每輪中列混合變換需要的32位數(shù)據(jù)與前4個時鐘周期的行移變換輸出結(jié)果相關(guān),因此在行移與列混合單元間使用128位數(shù)據(jù)位寬,每4個時鐘周期進行一次State0到State1轉(zhuǎn)換。
從AES加密方法流程圖中可見首輪與末輪均有特殊處理,未經(jīng)過完整的4個輪處理過程,在一些設(shè)計中將首輪與末輪使用單獨硬件實現(xiàn),這樣可使硬件代價減少2輪的運算時間。首輪結(jié)構(gòu)簡單,與標準輪處理過程差異較大,單獨實現(xiàn)只需要在輸入端加上32個“異或”門,能以較小的代價換取一輪的運算時間。而末輪與標準處理過程僅差列混合運算,單獨實現(xiàn)需要將近多一倍的輪處理硬件,所以在本設(shè)計中由時序控制單元控制末輪處理時跳過列混合運算。
Sbox作為非線性運算部分,必需具有良好的差分特性和比較復(fù)雜的代數(shù)結(jié)構(gòu),如果使用獨立邏輯電路實現(xiàn),面積優(yōu)化空間不大,多采用查表法實現(xiàn)。AES實現(xiàn)中的密鑰擴展與數(shù)據(jù)處理都需要多個Sbox,通過分析綜合軟件資源消耗結(jié)果報告可知單個Sbox占用資源為208個LCs或是2KB RAM。減少Sbox的使用無疑成為降低資源占用的主要手段。經(jīng)過調(diào)研,一般嵌入式系統(tǒng)對AES加密性能要求在160 Mb/s到480 Mb/s之間,考慮到本設(shè)計可靈活擴展的特性,設(shè)計中在數(shù)據(jù)處理路徑使用4個Sbox進行時分復(fù)用,另采用4個Sbox進行密鑰實時擴展。
3 硬件實現(xiàn)
本硬件實現(xiàn)在QuartusII8.0下使用 Verilog HDL語言進行描述,在ModelSim6.2環(huán)境下進行調(diào)試與仿真,使用Synplify9協(xié)助完成綜合與關(guān)鍵路徑分析工作。主要分析該IP核綜合到目標器件EP1C4F324C6中在80 MHz頻率的性能表現(xiàn)及資源占用情況。同時在更高性能的目標器件EP2S15F484C3中也進行了綜合及后仿真,以作縱向?qū)Ρ取?/P>
在QuartusII環(huán)境下選定目標器件為低成本Cyclone系列EP1C4F324C6設(shè)置速度與面積均衡優(yōu)化模式,目標工作頻率為90 MHz,使用邏輯單元實現(xiàn)Sbox查找表功能。綜合報告顯示實際綜合頻率為87.82 MHz(period=11.387 ns),本IP核占用資源2 647(Logic Cells),其中密鑰擴展單元占用1 388(LCs),時序控制單元占用45(LCs)。文中均以此IP核運行于80 MHz時鐘頻率進行性能分析。
選定綜合到StratixII系列中EP2S15F484C3器件,綜合頻率FMAX達到169.12 MHz時占用資源Logic utilization 9%,其中Combinational ALUTS 834/12 480(7%),Dedicated logic registers 598/12 480(5%)。將此綜合結(jié)果在ModelSim中用133 MHz時鐘驅(qū)動進行后仿真。
4 數(shù)據(jù)分析
仿真結(jié)果見表1,No.1采用常用測試數(shù)據(jù),密鑰為:2b7e1516_28aed2a6_abf71588_09cf4f3c,輸入明文為3243f6a8_885a308d_313198a2_e0370734時,得到輸出密文3925841d_02dc09fb_dc118597_196a0b32,結(jié)果正確無誤。
該IP核工作在80 MHz時鐘頻率下時,數(shù)據(jù)吞吐量為128 bit×80 MHz/40 clk=256 Mb/s。速度/資源比(Mb/s)/Slice=256/(2647/2)=0.193。當并行連接IP核進行位寬擴展時,密鑰擴展單元與時序控制單元可共用,進一步提高資源利用率。當擴展為128位數(shù)據(jù)位寬時,數(shù)據(jù)吞吐量成倍增加,而速度/資源比也有所提高,幾乎能達到 (Mb/s)/Slice=1024/((2647×4-(1388+45)×3)/2)=0.326。
表2中數(shù)據(jù)顯示本設(shè)計在32位數(shù)據(jù)位寬的同類設(shè)計中有一定的優(yōu)勢,從適用于嵌入式系統(tǒng)應(yīng)用的角度考慮,本設(shè)計更具優(yōu)越性。128位數(shù)據(jù)位寬的設(shè)計[6]中原文計算速度/資源比值時未考慮所占用的RAMs資源,而且文中設(shè)計為25 MHz時鐘頻率,進行數(shù)據(jù)分析時卻將工作頻率直接換算為54 MHz,而未對其設(shè)計是否可正常工作于此頻率進行論證。其設(shè)計主要考慮建立流水作業(yè)以提高性能。參考文獻[6]中采用6級流水線技術(shù)及復(fù)合域方法優(yōu)化Sbox,達到了較優(yōu)的設(shè)計指標,但其固定的128位數(shù)據(jù)位寬在嵌入式系統(tǒng)中應(yīng)用有一定的局限性。
在Synplify9下選定目標器件EP2S15F484C3,優(yōu)先考慮提高速度,綜合結(jié)果報告最高時鐘頻率超過240 MHz,說明本IP核設(shè)計合理,較好地利用了目標器件資源。如果將本IP核應(yīng)用在更高性能目標器件上或是設(shè)計為ASIC將會有更大的性能提升。
本文設(shè)計的IP核在低端FPGA能以較低的資源消耗提供I/O性能,AES實現(xiàn)達到256 Mb/s,并提供適合應(yīng)用于嵌入式系統(tǒng)中32位數(shù)據(jù)界面。在輸入、輸出端加FIFO數(shù)據(jù)緩存器可減少主器件被中斷數(shù)據(jù)傳輸?shù)拇螖?shù),提供標準通信界面、簡化主器件的操作時序。該IP核具有一定的靈活性,可將數(shù)據(jù)位寬擴展為64位或128位等,滿足多種數(shù)據(jù)位寬應(yīng)用的要求,是一種低成本高性能的AES加密實現(xiàn)方法。
p2p機相關(guān)文章:p2p原理
評論