


摘要:隨著集成電路的迅猛發(fā)展,為使數(shù)據(jù)通信安全性滿足大數(shù)據(jù)時(shí)代的需要,文章詳細(xì)研究SMS4算法,提出一種用雙端口隨機(jī)存取存儲(chǔ)器(Random Access Memory,RAM)代替S盒的多路算法并行處理大數(shù)據(jù)的結(jié)構(gòu),并基于現(xiàn)場(chǎng)可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)實(shí)現(xiàn)這一算法。經(jīng)仿真驗(yàn)證,所設(shè)計(jì)的結(jié)構(gòu)都能正確處理大數(shù)據(jù),其處理速度遠(yuǎn)超單個(gè)算法電路的處理速度。該算法與其他設(shè)計(jì)結(jié)構(gòu)相比,其處理速度也占據(jù)相當(dāng)優(yōu)勢(shì)。
關(guān)鍵詞:FPGA;SMS4;加解密;輪密鑰;高速數(shù)據(jù)處理
中圖分類號(hào):TP309文獻(xiàn)標(biāo)志碼:A
0 引言
以“大量”“多樣”“高速”為特征的大數(shù)據(jù)時(shí)代的到來(lái)使得通信中的數(shù)據(jù)保密安全問(wèn)題成為信息安全領(lǐng)域中人們關(guān)注的焦點(diǎn)。確保重要敏感信息不被竊取窺探的常用方法是數(shù)據(jù)加密[1]。SMS4密碼算法是國(guó)家密碼管理局公布的第一個(gè)用于無(wú)線局域網(wǎng)產(chǎn)品的商用分組對(duì)稱密碼算法[2],是數(shù)字時(shí)代安全建設(shè)公眾信息的基石。數(shù)字加密系統(tǒng)或設(shè)備通常具有數(shù)據(jù)處理速度快的需求,依據(jù)該特點(diǎn),本文以速度優(yōu)先為首要前提,提出一種基于FPGA的SMS4高速數(shù)據(jù)處理算法設(shè)計(jì)。
1 SMS4密碼算法介紹
SMS4算法從性質(zhì)上劃分,屬于分組密碼算法[3];從結(jié)構(gòu)上歸類,屬于典型的Feistel網(wǎng)絡(luò)結(jié)構(gòu)。其使用的分組、密鑰長(zhǎng)度均為16 Bit,且采用的加解密、輪密鑰擴(kuò)展算法也都是非線性迭代結(jié)構(gòu)[4]。
基于S盒(記為Sbox(.))的SMS4算法本質(zhì)上屬于分組對(duì)稱密碼算法[5],其將1組比特?cái)?shù)據(jù)進(jìn)行加解密運(yùn)算。原始輸入分組內(nèi)部記為X,輪密鑰記為rki(i=0,1,2,…,31),結(jié)果輸出分組內(nèi)部記為Y,用字母Z的下標(biāo)表示進(jìn)制類型,用字母Z的上標(biāo)表示比特長(zhǎng)度時(shí),則X、Y、rki都是二進(jìn)制32比特?cái)?shù),記做X、Y、rki∈Z322 [6]。算法中迭代生成的Xi+4是關(guān)于Xi、Xi+1、Xi+2、Xi+3、rki的輪函數(shù)(i=0,1,…,31),即Xi+1、Xi+2、Xi+3、rki的可逆變換結(jié)果再與Xi異或后的最終輸出。將第32輪迭代運(yùn)算結(jié)果逆序后得到輸出結(jié)果為(Y0,Y1,Y2,Y3)=(X35,X34,X33,X32)。可逆變換(記做Td)既含有線性變換(記做Ld)又含有非線性變換(記做τ),歸屬于合成置換,表示為Td(.)=Ld(τ(.))。固定8 Bit輸入8 Bit輸出稱為Sbox變換,而4個(gè)并行的Sbox構(gòu)成非線性變換τ。當(dāng)非線性變換輸入用(a4,a3,a2,a1)表示,異或運(yùn)算用⊕表示,循環(huán)左移i位用<<<i表示時(shí),非線性變換輸出H=(Sbox(a4), Sbox(a3), Sbox(a2), Sbox(a1)),則線性變換Ld=(H<<<24)⊕(H<<<18)⊕(H<<<10)⊕(H<<<2)⊕H[7]。當(dāng)操作輪密鑰順序相反時(shí),加解密運(yùn)算互為變化,即加密時(shí)操作輪密鑰順序?yàn)閞k0,rk1,…,rk31,則解密時(shí)操作輪密鑰順序必為rk31,rk30,…,rk0。算法流程如圖1所示。
經(jīng)過(guò)32次非線性迭代運(yùn)算后生成32個(gè)輪密鑰的輪密鑰擴(kuò)展算法與加解密算法的基本結(jié)構(gòu)相同[8]。當(dāng)原始密鑰分組內(nèi)部記為M,輪密鑰記為rki(i=0,1,2,…,31)時(shí),則M、rki都是二進(jìn)制32比特?cái)?shù),記做M、rki∈Z322。初始密鑰(K0,K1,K2,K3)為原始密鑰(M0,M1,M2,M3)與十六進(jìn)制系統(tǒng)參數(shù)(A3B1BAC6,56AA3350,677D9197,B27022DC)異或的結(jié)果,迭代而成的Ki+4(i=0,1,…,31)是Ki+1、Ki+2、Ki+3、cki的可逆變換結(jié)果再與Ki異或后的最終輸出。其中ck稱為固定參數(shù),其選取方法為:設(shè)cki, j為cki的第j字節(jié)(i=0,1,…,31;j=0,1,2,3),即cki=(cki,0,cki,1,cki,2,cki,3)∈Z322,cki, j=(4i+j)×7(mod256) [9]。可逆變換(記做Tk)既含有線性變換(記做Lk)又含有非線性變換(記做τ),表示為Tk(.)=Lk(τ(.))。當(dāng)非線性變換輸出用P表示時(shí),則線性變換Lk=(P<<<23)⊕(P<<<13)⊕P。
2 SMS4 算法的高速實(shí)現(xiàn)
SMS4屬于分組對(duì)稱密碼算法,每次僅對(duì)單數(shù)據(jù)組進(jìn)行加/解密,前后數(shù)據(jù)在加解密時(shí)無(wú)相關(guān)性[10]。因此,通過(guò)并行處理結(jié)構(gòu)可以增加系統(tǒng)輸出性能。該設(shè)計(jì)就是用16路單個(gè)SMS4算法電路并行工作實(shí)現(xiàn)的。
2.1 實(shí)現(xiàn)結(jié)構(gòu)
16路單個(gè)SMS4算法電路并行工作的結(jié)構(gòu)如圖2所示。16路算法電路并行組成高速數(shù)據(jù)處理模塊,輪密鑰的提前生成、存儲(chǔ)、分配等功能由輪密鑰生成及算法控制模塊實(shí)現(xiàn)。單個(gè)算法電路和輪密鑰生成電路內(nèi)部都是用2個(gè)8 Bit輸入8 Bit輸出的雙端口RAM功能替換4個(gè)并行S盒。輪密鑰生成及算法控制模塊內(nèi)含1個(gè)計(jì)算輪數(shù)的計(jì)數(shù)器,同時(shí)存儲(chǔ)經(jīng)32輪非線性迭代后提前生成的輪密鑰。算法控制電路結(jié)合加解密模式和輪數(shù)取出提前存儲(chǔ)的相應(yīng)輪密鑰,并把它們和輪數(shù)一起傳遞給高速數(shù)據(jù)處理模塊。高速數(shù)據(jù)處理模塊得到輪數(shù)及相應(yīng)輪密鑰信息后,再把它們和相應(yīng)輸入數(shù)據(jù)經(jīng)過(guò)異或、合成置換、異或3步運(yùn)算,上述步驟經(jīng)過(guò)32次循環(huán)后,再將輸出數(shù)據(jù)逆序處理,最終輸出結(jié)果數(shù)據(jù)。
高速數(shù)據(jù)處理模塊每輸入16組待運(yùn)算數(shù)據(jù)經(jīng)過(guò)32個(gè)時(shí)鐘周期后便產(chǎn)生一個(gè)算法完成標(biāo)志信號(hào)(done),done信號(hào)持續(xù)一個(gè)時(shí)鐘周期。因此,每33個(gè)時(shí)鐘周期高速數(shù)據(jù)處理模塊就會(huì)對(duì)外輸出16組運(yùn)算后的數(shù)據(jù),此時(shí)新的16組輸入數(shù)據(jù)又開始進(jìn)行加解密運(yùn)算,接著便循環(huán)以上過(guò)程。
2.2 仿真及算法設(shè)計(jì)結(jié)果比較
在ALTERA公司EP4CGX50CF23C6芯片實(shí)驗(yàn)板下,當(dāng)輸入明文(密文)32個(gè)時(shí)鐘周期后,第34個(gè)時(shí)鐘周期輸出16組結(jié)果數(shù)據(jù),此時(shí)用FPGA自帶調(diào)試工具采集的驗(yàn)證結(jié)果不僅與仿真結(jié)果相同而且與國(guó)家密碼局公布的數(shù)據(jù)也相同。
用1組固定密鑰對(duì)1組固定明文反復(fù)加密106次,每次結(jié)果都正確,而且耗時(shí)較短,實(shí)踐證明該模塊高效地完成了SMS4的高速加密解密。經(jīng)Altera系列EP4CGX50CF23C6芯片板級(jí)驗(yàn)證,邏輯處理時(shí)鐘最高頻率可達(dá)113.92 MHz,峰值處理速率7.07 GBit/s,遠(yuǎn)超常規(guī)設(shè)計(jì)峰值處理速率(455.7 MBit/s)[10]。
表1為已有算法設(shè)計(jì)與本文算法設(shè)計(jì)的結(jié)果對(duì)比。通過(guò)比較分析可知:在相同時(shí)鐘頻率下本設(shè)計(jì)的處理速度近似為半流水(8輪)的2倍,同時(shí)相比傳統(tǒng)流水線也節(jié)省了大量的資源。
3 結(jié)語(yǔ)
在大數(shù)據(jù)時(shí)代,為適應(yīng)海量數(shù)據(jù)安全性,研究SMS4高速數(shù)據(jù)處理算法設(shè)計(jì)具有重要意義。依據(jù)算法原理,本文不僅設(shè)計(jì)出各運(yùn)算單元的高效合理方案,而且針對(duì)算法具體使用場(chǎng)景,還提出了一種基于FPGA的多路并行處理結(jié)構(gòu),并在仿真驗(yàn)證中驗(yàn)證了所提算法的有效性。
參考文獻(xiàn)
[1]張利華,吳松,蔣騰飛,等.基于FPGA的SMS4算法實(shí)現(xiàn)及在線驗(yàn)證[J].華東交通大學(xué)學(xué)報(bào),2018(5):111-116.
[2]李瑋,汪夢(mèng)林,谷大武,等.SMS4密碼算法的唯密文故障分析[J].計(jì)算機(jī)學(xué)報(bào),2022(8):1814-1826.
[3]蔡玉瑩,曲英杰.基于單輪循環(huán)結(jié)構(gòu)的SMS4加密芯片的研究與設(shè)計(jì)[J].電子設(shè)計(jì)工程,2016(22):39-42.
[4]鄭朝霞,資義純,吳旭峰,等.SMS4算法串行化設(shè)計(jì)及其輕量級(jí)電路實(shí)現(xiàn)[J].華中科技大學(xué)學(xué)報(bào)(自然科學(xué)版),2016(2):61-64.
[5]王艷紅.硬件實(shí)現(xiàn)SMS4密碼算法的研究[J].自動(dòng)化與儀器儀表,2015(6):133-134.
[6]朱勇,崔強(qiáng)強(qiáng).基于SMS4的加密通信可編程片上系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)[J].電子科技,2014(4):138-142.
[7]江依妹,曲英杰.SMS4密碼的集成電路實(shí)現(xiàn)方法[J].青島科技大學(xué)學(xué)報(bào)(自然科學(xué)版),2013(6):622-627.
[8]李瑞林,熊海,李超.基于循環(huán)移位和異或運(yùn)算的對(duì)合線性變換研究[J].國(guó)防科技大學(xué)學(xué)報(bào),2012(2):46-50.
[9]劉佳.對(duì)稱密碼算法S盒安全性分析[J].南京信息工程大學(xué)學(xué)報(bào)(自然科學(xué)版),2013(4):352-357.
[10]程海,丁群,杜輝,等.基于FPGA實(shí)現(xiàn)的SMS4算法研究[J].儀器儀表學(xué)報(bào),2011(12):2845-2850.
High-speed data processing design of SMS4 algorithm based on FPGA
Abstract: With the rapid development of integrated circuits, in order to meet the security needs of data communication at the era of big data, after detailed study of the SMS4 algorithm, a structure of multi-channel algorithm parallel processing large data is proposed using dual-port RAM instead of S-box, and this algorithm is realized based on FPGA. Through simulation and verification, this structure can correctly handle large data, and its processing speed is more quickly than the processing speed of a single arithmetic circuits. Compared with other structures of the algorithm, its processing speed also occupies considerable advantage.
Key words: FPGA; SMS4; encryption; rotate cipher key; high-speed data processing