劉波濤,李 浪,2,賀位位,余孝忠,2,杜國權(quán)
(1.衡陽師范學(xué)院 計(jì)算機(jī)科學(xué)系,湖南 衡陽 421002;2.聚落文化遺產(chǎn)數(shù)字化技術(shù)與應(yīng)用湖南省重點(diǎn)實(shí)驗(yàn)室,湖南 衡陽 421002)
物聯(lián)網(wǎng)越來越深入到人們生產(chǎn)生活中,其安全引起了大家高度關(guān)注。2007年密碼學(xué)者提出了適合資源約束的輕量級密碼算法PRESENT[1],2011年超輕量級密碼算法LED也被提出[2],二個(gè)密碼算法主要是為資源受限的智能卡加密研發(fā)的。如果攻擊者知道智能卡加密運(yùn)算為某一具體密碼算法,則容易采取相應(yīng)攻擊手段進(jìn)行攻擊,如果把二種密碼算法重構(gòu)在一起,隨機(jī)選擇某一密碼算法進(jìn)行運(yùn)算,由于攻擊者不知道具體運(yùn)算的加密算法,則安全性相應(yīng)提高。重構(gòu)計(jì)算作為一種新興的計(jì)算模式,在許多方面得到了深度應(yīng)用。重構(gòu)密碼算法是利用可重構(gòu)計(jì)算技術(shù),能夠根據(jù)需要靈活配置以實(shí)現(xiàn)不同的密碼算法,從而提高安全性。
重構(gòu)算法是密碼安全的一個(gè)重要研究方向,近年來,許多研究機(jī)構(gòu)都致力于密碼算法的可重構(gòu)研究[6-8]。2010年,文獻(xiàn)[6]設(shè)計(jì)了一種 DES、AES和SMS4密碼算法的高效可重構(gòu),文獻(xiàn)[7]給出了一種AES和Camellia算法的可重構(gòu)硬件實(shí)現(xiàn),兩者都未給出可重構(gòu)算法的具體優(yōu)化方案。本文實(shí)現(xiàn)了一種LED-PRESENT算法重構(gòu),研究了優(yōu)化實(shí)現(xiàn),并對其性能進(jìn)行了實(shí)驗(yàn)驗(yàn)證。
LED密碼算法是一種具有SP結(jié)構(gòu)的分組迭代密碼算法,其明文長度為64-bit,密鑰長度為64-bit或128-bit,對應(yīng)輪數(shù)分別為32輪和48輪,分別用LED-64和LED-128表示。圖1為LED-64加密運(yùn)算過程。
圖1 LED-64加密運(yùn)算結(jié)構(gòu)
LED加密過程:
(1)明文和密鑰異或:輪密鑰相加(AddRound-Key);(2)進(jìn)行4輪運(yùn)算,每個(gè)輪包括常數(shù)變換(AddConstant)、S 盒 變 換 (SubCell)、行 變 換(ShiftRow)、列混合變換(MixColumnsSerial)4個(gè)運(yùn)算;(3)將中間結(jié)果和密鑰k異或,轉(zhuǎn)到第(2)步,重復(fù)執(zhí)行8次;(4)輸出密文C。
PRESENT密碼算法采用SP結(jié)構(gòu)的輕量級密碼算法,其明文長度為64-bit,密鑰長度為80-bit或128-bit,記為 PRESENT-80和 PRESENT-128,加密變換需要31輪迭代運(yùn)算。圖2為PRESENT-80加密運(yùn)算過程。
由圖2可知,PRESENT有輪密鑰加函數(shù)(AddRoundKey)、S盒替換(Sboxlayer)、層置換(pLayer)、密鑰擴(kuò)展(Update)4個(gè)模塊運(yùn)算。
圖2 PRESENT-80加密運(yùn)算結(jié)構(gòu)
在兩個(gè)加密算法中都需要進(jìn)行S盒變換(Sub-Cell)、密鑰加(AddRoundKey)運(yùn)算,基于此,對LED與PRESENT密碼算法S盒變換(SubCell)和密鑰加(AddRoundkey)進(jìn)行重構(gòu)實(shí)現(xiàn)??紤]到所要消耗的面積,還需對LED-PRESENT算法進(jìn)行FPGA優(yōu)化實(shí)現(xiàn)。
1)在LED有限域部分,用assign連續(xù)賦值方式賦值,使得完成一次有限域計(jì)算不需要時(shí)鐘延時(shí),也不需要額外申請寄存器。下面為具體優(yōu)化實(shí)現(xiàn)的VerilogHDL代碼:
2)在PRESENT主控制模塊中,通過計(jì)數(shù)器控制重復(fù)調(diào)用PresentRound模塊,可使整個(gè)算法實(shí)現(xiàn)的面積大為減少。具體VerilogHDL實(shí)現(xiàn)代碼如下:
以密鑰長為64-bit的LED和80-bit的PRESENT為例,結(jié)合流程圖給出具體的操作過程。
1)明文加密前由系統(tǒng)隨機(jī)生成一個(gè)1-bit隨機(jī)數(shù):switch.
2)switch為1時(shí),選擇進(jìn)行 PRESENT-80加密;為0時(shí),選擇進(jìn)行LED-64加密,運(yùn)算結(jié)構(gòu)如圖3。
圖3 LED-64與PRESENT-80重構(gòu)結(jié)構(gòu)流程
明文64-bit,密鑰80-bit進(jìn)行加密的具體參數(shù)如下表示,其中state表示明文,key表示密鑰。
state=64’h0000_0000_0000_0000;
key=80’h0000_0000_0000_0000_0000;
switch=$random()%2;
3)整個(gè)算法采用Verilog HDL硬件描述語言實(shí)現(xiàn),重構(gòu)后的算法內(nèi)部運(yùn)算流程如圖4,具體運(yùn)算過程如下:
圖4 重構(gòu)算法內(nèi)部運(yùn)算流程
(1)初始化明文state、密鑰key,系統(tǒng)隨機(jī)生成switch;
(2)取密鑰的前64-bit與明文進(jìn)行AddRound-Key運(yùn)算,把運(yùn)算的輪數(shù)r設(shè)置為0;
(3)1:如果switch等于1,運(yùn)算 UpdataKey模塊;否則key的值保持不變;
2:state依次完成如下模塊運(yùn)算:(第二個(gè)參數(shù)相當(dāng)于使能信號)
2.1AddConstant(state,!switch);
2.2SubCell(state);
2.3ShiftRow(state,!switch);
2.4MixCloumnSerial(state,!switch);
2.5Exchange(state,switch).
3:如果switch等于1或者 (r%4==3),則進(jìn)行AddRoundKey運(yùn)算;
4:更新r的值:r=r+1;
(4)跳到(3),重復(fù)執(zhí)行31次;
(5)如果switch等于1,直接輸出密文,否則完成LED-64加密算法的最后一輪加密:
AddConstant(state,1);
SubCell(state);
ShiftRow(state,1);
MixCloumnSerial(state,1).
(6)輸出密文,運(yùn)算結(jié)束。
由于switch取值為0和1兩種,當(dāng)取值為1時(shí),即選擇執(zhí)行的是PRESENT-80密碼算法,由于!switch=0,故3)中的2.1、2.3和2.4是不參與運(yùn)算的。同理,當(dāng)switch=0時(shí),執(zhí)行的是LED-64密碼算法,3)中的2.5模塊是不參與運(yùn)算的。
對Verilog HDL語言實(shí)現(xiàn)的LED-PRESENT重構(gòu)算法進(jìn)行Modelsim 6.1f仿真,整個(gè)算法都是用連續(xù)賦值(assign)語句實(shí)現(xiàn),時(shí)鐘信號控制計(jì)算器更新,重構(gòu)運(yùn)算分別需要32個(gè)時(shí)鐘周期和31個(gè)時(shí)鐘周期。仿真截圖如圖5。
圖5 重構(gòu)算法LED-PRESENT仿真截圖
從圖5的實(shí)驗(yàn)結(jié)果中可以得到重構(gòu)算法正確。
對LED-64和PRESENT-80密碼算法,進(jìn)行了FPGA實(shí)現(xiàn),通過ISE13.2綜合下載進(jìn)行性能分析,F(xiàn)PGA 型號為 Xilinx Virtex-5LX50T。圖6是LED-64算法下載到FPGA上的實(shí)驗(yàn)數(shù)據(jù)截圖。圖7是PRESENT-80算法下載到FPGA上的實(shí)驗(yàn)數(shù)據(jù)截圖。圖8和圖9是LED-PRESENT算法重構(gòu)后下載到FPGA上的實(shí)驗(yàn)數(shù)據(jù)截圖。
圖6 LED-64算法面積測試數(shù)據(jù)
圖7 PRESENT-80算法面積測試數(shù)據(jù)
圖8 重構(gòu)算法LED-PRESENT面積測試數(shù)據(jù)
圖9 LED-PRESENT加密運(yùn)算頻率
根據(jù) 實(shí) 驗(yàn) 結(jié) 果,LED-64、PRESENT-80 以 及LED-PRESENT重構(gòu)算法的性能對比分析如表1。
表1 性能對比
從表1可以得知,LED-64與PRESENT-80算法單獨(dú)實(shí)現(xiàn)面積和為:10222+10265=20487Slices,而重構(gòu)后LED-PRESENT算法面積為10815Slices,其中Slices是FPGA中面積單元,可以得出重構(gòu)后的LED-PRESENT比分別實(shí)現(xiàn)面積上少了9672個(gè)Slices。在加密性能上,分別實(shí)現(xiàn)時(shí)最高加密速率為198.912Mb/s,而重構(gòu)密碼系統(tǒng)的吞吐率為:
可知,由于使用了優(yōu)化方法實(shí)現(xiàn),復(fù)雜的重構(gòu)實(shí)現(xiàn)并未使系統(tǒng)加密速率降低。
通過對LED與PRESENT密碼算法進(jìn)行重構(gòu)優(yōu)化,使得其在單一芯片上資源最優(yōu)化實(shí)現(xiàn),從而可以適應(yīng)復(fù)雜環(huán)境下高安全的加密應(yīng)用。密碼算法重構(gòu)使得加密運(yùn)算具有靈活性,從而增強(qiáng)了密碼系統(tǒng)的安全。因?yàn)槊艽a攻擊需要確切知道正在執(zhí)行的具體密碼算法,所以在一定程度上可以抵抗密碼攻擊。
[1]Bogdanov A,Knudsen L R,Leander G,et al.PRESENT:an ultra-lightweight block cipher//Proceddings of the 2007International Workshop on Cryptographic Hardware and Embedded Systems.Vienna,Austria.2007:450-466.
[2]Guo J,Peyrin T,Poschmann A et al.The LED block cipher//Proceddings of the 2011International Workshop of Cryptographic Hardware and Embedded Systems.Nara,Japan.2011:326-341.
[3]李瑋,谷大武,趙辰,等.物聯(lián)網(wǎng)環(huán)境下LED輕量級密碼算法的安全性分析[J].計(jì)算機(jī)學(xué)報(bào),2012,35(3):434-445.
[4]吳克輝,趙新杰,王韜,等.PRESENT密碼代數(shù)故障攻擊[J],通信學(xué)報(bào),2012,33(8):85-92.
[5]李浪,李仁發(fā),鄒祎等.PRESENT密碼硬件語言實(shí)現(xiàn)及其優(yōu)化研究[J].小型微型計(jì)算機(jī)系統(tǒng),2013,34(10):2272-2275.
[6]李文君.DES、AES和SMS4密碼算法的高效可重構(gòu)實(shí)現(xiàn)研究[D].鄭州:解放軍信息工程大學(xué),2010.
[7]楊宏志,韓文報(bào),李光松.AES和Camellia算法的可重構(gòu)硬件實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2010,36(10):18-20.
[8]高娜娜,王沁,李占才.一種可重構(gòu)體系結(jié)構(gòu)用于高速實(shí)現(xiàn)DES、3DES和 AES[J].電子學(xué)報(bào),2006,34(8):1386-1390.