文獻標識碼: A
文章編號: 0258-7998(2015)04-0116-03
中文引用格式:彭海,高俊雄,王耘波.一種應用于生物識別領(lǐng)域的AES算法[J].電子技術(shù)應用,2015,41(04):116-118
0 引言
生物識別技術(shù)方便、快捷,、安全可靠,,已被廣泛應用于部隊、政府機關(guān),、高檔小區(qū)等對安全系數(shù)要求較高的場合,,并且呈快速發(fā)展的趨勢。然而隨著生物識別技術(shù)的大量應用,,人們對生物識別技術(shù)的安全性和隱私問題的關(guān)注也越來越多[1],。生物識別技術(shù)一般對生物特征(如指紋、虹膜等)進行取樣,,提取其唯一特征并且轉(zhuǎn)化為特征模板,,根據(jù)特征模板進行匹配。特征模板就像生物識別技術(shù)里的“鑰匙”,,一旦被修改將直接影響其識別結(jié)果,。因此,采集模板時利用AES加密算法對模板數(shù)據(jù)進行加密,,進行識別時取出加密后的模板并將其解密,。這種以AES算法實現(xiàn)對模板數(shù)據(jù)的加密可大大提高生物識別的安全性,。生物識別系統(tǒng)在識別時往往要遍歷所有模板,而由于用戶基數(shù)龐大,,數(shù)據(jù)庫中一般存在大量的特征模板,,因此系統(tǒng)對解密的速度要求非常高。
AES加密算法由美國國家標準與技術(shù)研究所(NIST)在2002年建立,,它可以使用128 bit,、192 bit或256 bit密鑰,并用128 bit(16 B)分組加密和解密數(shù)據(jù)?,F(xiàn)階段AES加密主要通過軟件編程或硬件邏輯實現(xiàn),。采用軟件編程實現(xiàn)的方法具有成本低、靈活的特點,,但軟件實現(xiàn)的AES易被修改,,且速度較慢;采用硬件邏輯實現(xiàn)的AES加密算法除了高效和安全外,,還保證了很高的速度,,所以在生物識別領(lǐng)域十分適用。本文主要論述了在FPGA硬件平臺下實現(xiàn)的一種大吞吐量256 bit密鑰的AES算法,,因AES加密與解密的過程基本相同,,故主要論述了AES算法的解密過程在FPGA上的實現(xiàn)。
1 AES算法簡介
AES算法是基于置換和代替的,。置換是指數(shù)據(jù)的重新排列,,而代替是用一個單元數(shù)據(jù)替換另一個。圖1顯示了AES(256 bit)加密解密的完整流程,。
AES加密算法把輸入的128 bit數(shù)據(jù)看成是一個名為State狀態(tài)矩陣的4×4的字節(jié)矩陣,。加密過程就是對State狀態(tài)矩陣進行多輪操作[2]。算法開始前首先構(gòu)造用于加密的兩個表,,一個是用于字節(jié)替換的S-box表,,另一個是用于產(chǎn)生輪密鑰的密鑰調(diào)度表。算法首先進行AddRoundKey(輪密鑰加),,即用密鑰調(diào)度表中的前4行對State矩陣進行異或操作,。然后是AES加密算法的主循環(huán),循環(huán)的次數(shù)由輸入密鑰的長度決定,,如密鑰位數(shù)為256 bit,,則循環(huán)總輪數(shù)為14輪。AES算法的加密主循環(huán)每輪對State狀態(tài)矩陣執(zhí)行4個不同的操作,,分別是SubBytes(字節(jié)替換),、ShiftRows(行移位變換)、MixColums(列混淆變換)和AddRoundKey(輪密鑰加),其中最后一輪不進行ShiftRows(行移位變換),。字節(jié)替換是指通過S盒對狀態(tài)矩陣進行替換,,行移位變換是指狀態(tài)矩陣的每一行進行循環(huán)移位,列混淆變換主要用到了GF28域上的乘法和加法運算,,而輪密鑰加是簡單的異或運算,。AES解密主循環(huán)是加密循環(huán)的逆過程,解密主循環(huán)中也有對應的逆變換:Inv_SubBytes(逆字節(jié)替換),、Inv_ShiftRows(逆行移位變換),、Inv_MixColumns(逆列混淆變換),這些變換均可看成加密主循環(huán)中4個變換的逆變換,。
2 AES算法的FPGA實現(xiàn)
2.1 FPGA技術(shù)簡介
現(xiàn)場可編程門陣列FPGA(Field Programmable Gate Array)是美國Xilinx公司于1984年首次開發(fā)的一種通用型用戶可編程器件,。FPGA既具有門陣列器件的高集成度和通用性,又有可編程邏輯器件的靈活性,。
FPGA結(jié)構(gòu)靈活,,其邏輯單元、可編程內(nèi)部連線和I/O單元都可由用戶編程,,可實現(xiàn)任何邏輯功能,滿足各種設計需求,。其速度快,、功耗低、通用性強的特點適用于復雜系統(tǒng)的設計[3],。FPGA技術(shù)還可以實現(xiàn)動態(tài)配置,、在線系統(tǒng)重構(gòu)(可以在系統(tǒng)運行的不同時刻,按需要改變電路的功能,,使系統(tǒng)具備多種空間相關(guān)或時間相關(guān)的任務)及硬件軟化,、軟件硬化等功能。
2.2 使用FPGA實現(xiàn)AES算法
2.2.1 系統(tǒng)的總體結(jié)構(gòu)
根據(jù)AES算法輪操作的特點,,本文采取基本迭代與串行緩存相結(jié)合的方法,,系統(tǒng)總體實現(xiàn)框圖如圖2所示。通過14個AES解密模塊并行使用,,大大提高了吞吐率,,其中每個AES解密模塊采用基本迭代的方法,即所有輪次復用一個輪函數(shù),,每個時鐘周期完成一次輪操作,,14個時鐘周期完成一個分組運算。
解密數(shù)據(jù)時,,首先讓密文數(shù)據(jù)依次進入串行緩存,,串行緩存的深度與AES算法的輪數(shù)相同(為14),進入串行緩存的數(shù)據(jù)依次進入AES解密模塊進行解密,。第一個時鐘周期,,讓密文數(shù)據(jù)進入Data_buffer1,然后啟動第一個AES解密模塊AES1,;第二個時鐘周期,讓新的密文數(shù)據(jù)進入Data_buffer2,,然后啟動第二個AES解密模塊AES2,;依此類推,往復循環(huán),。14個AES解密模塊的啟動順序如圖3所示,。
每經(jīng)過14個時鐘周期,將每個AES解密模塊的結(jié)果依次移位輸出,。采用這種結(jié)構(gòu)實現(xiàn)的AES解密算法雖然消耗了不少FPGA的內(nèi)部資源,,但數(shù)據(jù)無需等待,可以源源不斷地進入解密模塊,,整個解密過程的速度僅僅取決于單個AES解密模塊的工作頻率與數(shù)據(jù)輸入的速率,,使得系統(tǒng)的吞吐率大大提高??紤]到FPGA內(nèi)部資源豐富,,可以犧牲部分資源來換取速度。
2.2.2 AES解密模塊的實現(xiàn)
AES解密前,,首先要進行密鑰擴展,。密鑰擴展是將初始密鑰作為種子密鑰,經(jīng)過字節(jié)代換,、字節(jié)移位,、輪常數(shù)計算、字節(jié)異或等過程,,計算產(chǎn)生14輪迭代所需的輪密鑰,。密鑰擴展實現(xiàn)框圖如圖4。有文獻提出計算密鑰時密鑰擴展和加密過程同步執(zhí)行,,這樣做會節(jié)約FPGA的存儲器資源,。但考慮到密鑰不需要經(jīng)常更換,而且FPGA存儲器資源豐富,,有足夠的空間存放子密鑰,,所以本文決定在解密前先進行密鑰擴展,然后將產(chǎn)生子密鑰存放在RAM中,,根據(jù)使用需要從RAM中讀取密鑰,。這種方法易于實現(xiàn),且靈活性強,產(chǎn)生好的密鑰調(diào)度表在種子密鑰不變的情況下都可以供其他模塊使用,。
密鑰擴展完成后,,就可以開始進行解密。256 bit的AES解密過程總共需要14輪,除最后一輪外每輪需要進行字節(jié)替換,、逆行移位,、輪密鑰加、逆列混淆等4個操作,,最后一輪不需要進行輪密鑰加,。其實現(xiàn)框圖如圖5所示。
逆行移位(Inv_ShiftRow)采用簡單的組合邏輯即可實現(xiàn),;逆字節(jié)替換(Inv_SubBytes)利用FPGA內(nèi)部的分布式RAM實現(xiàn),,將逆S_BOX的值預先存入到RAM中,在進行逆字節(jié)替換時,,以字節(jié)的高4位和低4位作為地址即可讀出要替換的值,,這樣既避免了復雜的組合邏輯,又提高了系統(tǒng)的運行頻率,;輪密鑰加(AddKey)為簡單的異或運算,;逆列混淆(Inv_MixCol)的實現(xiàn)采用了將復雜的GF28域乘法逐次分解為基礎的GF28域乘法的方法,使整個過程易于在FPGA中實現(xiàn),。
3 實驗結(jié)果
本設計在Xilinx公司的XC7A200T-2芯片上進行驗證,,圖6給出了系統(tǒng)的在Isim仿真環(huán)境下的仿真圖。
輸入密文為16進制數(shù)8960494b9049fceabf456751cab-7a28e,,密鑰為16進制數(shù)1f1e1d1c1b1a1918171615141312-
11100f0e0d0c0b0a09080706050403020100,,14個周期后輸出解密后的明文為16進制數(shù)ffeeddccbbaa998877665544-33221100。經(jīng)驗證,,該解密過程完全正確。
在ISE13.6環(huán)境下代碼在綜合后頻率可達到236.9 MHz,,由于采用串行緩存的方法,,數(shù)據(jù)可以持續(xù)加密,無需等待上一個數(shù)據(jù)加密完,。經(jīng)計算理論吞吐量可以達到30.3 Gb/s,,完全適用于各個應用場合的需要。
4 結(jié)論
采用FPGA實現(xiàn)AES算法可以大幅度提高加密解密速度,,并且具有開發(fā)周期短,、易于實現(xiàn)的特點;采用本方法實現(xiàn)的AES算法雖然占用了較多的FPGA資源,,但加密解密速度得到大大的提高,,吞吐量可達到30.3 Gb/s,完全滿足現(xiàn)行生物識別技術(shù)的要求,,能廣泛應用于虹膜識別技術(shù)及指紋識別技術(shù)等領(lǐng)域,,應用前景廣闊。
參考文獻
[1] 趙洋.生物識別系統(tǒng)中的模板安全分析[J].中國安防,2012,,3(3):99-104.
[2] DANMEN J,,RIIJMEN V.AES proposal:rijndael.AES algo-rithm submission.[EB/OL](1999-09-03)[2014-12-23].http://www.nist.gov/aes.
[3] Clive Max Maxfield.FPGA設計指南:器件、工具和流程[M].北京:人民郵電出版社,,2007.