文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2016.12.006
中文引用格式: 朱坤崧,戴紫彬,,張立朝,,等. 面向物聯(lián)網(wǎng)的SM4算法輕量級實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2016,,42(12):27-30.
英文引用格式: Zhu Kunsong,,Dai Zibin,Zhang Lichao,,et al. Lightweight implementation of SM4 for Internet of things[J].Application of Electronic Technique,,2016,42(12):27-30.
0 引言
隨著物聯(lián)網(wǎng)應(yīng)用越來越廣泛,,人們對于物聯(lián)網(wǎng)的安全越來越重視,。密碼算法在智能卡、射頻識別,、無線傳感網(wǎng)等資源受限設(shè)備中的應(yīng)用越來越多,,以SM4算法為代表的密碼算法輕量級實(shí)現(xiàn)的研究具有重要的現(xiàn)實(shí)意義和實(shí)用價值。
SM4算法是國家商用密碼管理辦公室于2006年1月公布的一種分組密碼算法[2],??紤]到SM4算法輪函數(shù)及子密鑰擴(kuò)展結(jié)構(gòu)的相似性,其輕量級實(shí)現(xiàn)主要通過資源重用方式進(jìn)行實(shí)現(xiàn)[3-6],。文獻(xiàn)[3]采用32輪全循環(huán)迭代結(jié)構(gòu),輪函數(shù)實(shí)現(xiàn)結(jié)構(gòu)與密鑰擴(kuò)展模塊采用分離式設(shè)計(jì),,并沒有充分利用SM4算法輪函數(shù)和子密鑰擴(kuò)展結(jié)構(gòu)基本相同的特點(diǎn),;文獻(xiàn)[4]采取每輪加密前先計(jì)算子密鑰的方式工作,但其中線性變換單元沒有實(shí)現(xiàn)復(fù)用,;文獻(xiàn)[5]將FK和CK兩個參數(shù)組合一個新的參數(shù)并將密鑰初始化放入迭代操作中,,但采用RAM存儲子密鑰的方式仍然會增加電路面積;文獻(xiàn)[6]采用串行的設(shè)計(jì)方式,,加密操作和密鑰擴(kuò)展共享數(shù)據(jù)通路,,但是固定參數(shù)生成電路只適合于加密,并且線性變換模塊仍有優(yōu)化空間,。
針對以上問題,,本文基于資源重用的方式設(shè)計(jì)了SM4算法的輕量級處理架構(gòu),可較好地滿足物聯(lián)網(wǎng)中資源受限設(shè)備的安全需求。
1 SM4算法概述
SM4算法的分組長度為128 bit,,密鑰長度為128 bit,。加密算法與密鑰擴(kuò)展算法都采用32輪非線性迭代結(jié)構(gòu)。
1.1 加/解密算法
SM4算法的加密流程及輪函數(shù)運(yùn)算過程如圖1所示,。
1.2 密鑰擴(kuò)展算法
2 SM4算法輕量級處理研究
2.1 SM4算法輕量級處理架構(gòu)
針對SM4算法實(shí)際應(yīng)用的物聯(lián)網(wǎng)環(huán)境中設(shè)備計(jì)算能力較低,、存儲空間小等特點(diǎn),通過對SM4算法加解密流程的分析,,本文針對現(xiàn)有問題基于資源重用的方式設(shè)計(jì)了面向資源受限設(shè)備的SM4算法輕量級實(shí)現(xiàn)處理架構(gòu),,如圖2所示。
輕量級處理架構(gòu)主要包括核心電路,、密鑰存儲及檢測單元,、固定參數(shù)生成電路和控制單元。加解密運(yùn)算和密鑰擴(kuò)展共享數(shù)據(jù)通路,,通過模式選擇實(shí)現(xiàn)核心電路的分時復(fù)用,,可同時滿足輪函數(shù)和子密鑰生成的需求。核心電路中只使用一個8×8的S盒以節(jié)省面積并采用桶形移位器實(shí)現(xiàn)線性變換,。在數(shù)據(jù)加/解密過程之前,,先檢測當(dāng)前使用密鑰是否與上一分組相同,若相同則可直接使用存儲的生成加/解運(yùn)算所需正序或逆序子密鑰,。固定參數(shù)生成電路在模式控制下,,可生成正序或逆序固定參數(shù)??刂齐娐穼Ω髂K進(jìn)行控制,,實(shí)現(xiàn)加密輪函數(shù)、解密輪函數(shù)和密鑰擴(kuò)展3種模式的變換,,并控制核心電路的輪數(shù)和加/解密數(shù)據(jù)的輸入輸出,。
2.2 輕量級處理架構(gòu)運(yùn)算單元設(shè)計(jì)
2.2.1 核心電路
由于SM4算法的輪函數(shù)與子密鑰生成算法有極高的相似度,因此共享數(shù)據(jù)通路能夠大大節(jié)省算法實(shí)現(xiàn)所需電路面積,。核心電路結(jié)構(gòu)如圖3所示,。
其中,核心電路主要包括:移位異或電路,、S盒以及線性移位單元,。
(1)移位異或電路
核心電路的輸入都為32 bit數(shù)據(jù),并且核心電路中僅有一個8×8的S盒,。因此,,異或電路采用8 bit為基本位寬對數(shù)據(jù)進(jìn)行處理。
首先將明文輸入(X0,,X1,,X2,,X3)或密鑰與系統(tǒng)參數(shù)異或結(jié)果(K0,K1,,K2,,K3)的4個32 bit子塊根據(jù)當(dāng)前核心電路不同的模式輸入到數(shù)據(jù)緩存器中,同時輸入的還有輪函數(shù)使用的子密鑰rk或子密鑰生成時所需的固定參數(shù)CK,。模式控制信息控制核心電路交替實(shí)現(xiàn)輪運(yùn)算與子密鑰生成功能,,每個周期對8 bit數(shù)據(jù)進(jìn)行異或操作,然后將所有數(shù)據(jù)左移8 bit供下一周期使用,。
(2)S盒
為節(jié)省面積,,本文只使用一個8×8的S盒,采用分時復(fù)用的方式實(shí)現(xiàn)S盒替換操作,。S盒的實(shí)現(xiàn)方式主要有查找表[3,,5,6]以及基于復(fù)合域[4,,7,,8]的方法。相比于查找表的方式,,基于復(fù)合域的實(shí)現(xiàn)方法采用代數(shù)運(yùn)算的方式實(shí)現(xiàn),,計(jì)算更加簡單并且效率更高,因此,,本文采用復(fù)合域方式對S盒進(jìn)行實(shí)現(xiàn),。
基于復(fù)合域求逆實(shí)現(xiàn)的S盒由仿射變換和有限域求逆兩種操作組成,其代數(shù)表達(dá)式為:S(x)=I(x·A1+C1)·A2+C2,。式中,,A1和A2為8×8矩陣,C1和C2為行向量:
I(x)表示為GF(28)有限域上的求逆運(yùn)算,,乘法求逆的8次不可約多項(xiàng)式為f(x)=x8+x7+x6+x5+x4+x2+1,。S盒輸入經(jīng)仿射變換后,將GF(28)上的元素通過同構(gòu)映射矩陣映射到GF(((22)2)2)上,,并在GF(((22)2)2)上進(jìn)行求逆運(yùn)算,,求逆的結(jié)果經(jīng)同構(gòu)映射逆矩陣映射回GF(28),再經(jīng)仿射變換得到S盒輸出,。
(3)線性移位單元
本文通過桶形移位器實(shí)現(xiàn)線性移位操作可減少硬件電路的冗余。桶形移位器的實(shí)現(xiàn)方式主要有全譯碼,、全編碼,、部分譯碼和基于三值邏輯控制的方式等。其中,,部分譯碼方式與全譯碼方式相比面積減小一半,,而全編碼方式內(nèi)部由數(shù)據(jù)選擇器串聯(lián)而成,,延時較大。因此,,本文采用部分譯碼方式的桶形移位器對線性移位單元進(jìn)行實(shí)現(xiàn),,如圖4所示。
部分譯碼方式將移位操作分為兩部分,,每部分的移位位數(shù)由譯碼值決定,。由于SM4算法中只有循環(huán)左移操作,所以本文中移位網(wǎng)絡(luò)只實(shí)現(xiàn)這一種操作,。移位網(wǎng)絡(luò)1可實(shí)現(xiàn)移位位數(shù)為0,、4、8,、12,、16、20,、24,、28的移位操作;移位網(wǎng)絡(luò)2可實(shí)現(xiàn)移位位數(shù)為0,、1,、2、3的移位操作,。在兩個移位網(wǎng)絡(luò)的配合下,,可以實(shí)現(xiàn)任意位數(shù)的循環(huán)左移操作,其中循環(huán)左移0位操作不經(jīng)過移位網(wǎng)絡(luò),。線性變換完成后,,核心電路在模式控制信號的選擇下,將線性變換結(jié)果分別與輪函數(shù)中第一分組或子密鑰生成的第一個分組異或,,并將異或結(jié)果存于第四分組中,。
2.2.2 固定參數(shù)CK生成電路
SM4算法中使用的固定參數(shù)CK可采用RAM直接存儲的方式,也可以通過電路實(shí)時產(chǎn)生,。直接存儲會因?yàn)榻涌陔娐穂6]使得CK生成電路面積增大,,因此,本文采用實(shí)時生成的方式得到固定參數(shù)CK,。
由上一節(jié)可知,,加密時cki,j=(4i+j)×7(mod256),。因此,,cki,j+1=((4i+j)×7+7)(mod256)=(cki,,j+7)(mod256),。也即:ck0,,1=ck0,0+7,,…,,ck1,0=ck0,,3+7,,…,ck31,,3=ck31,,2+7。同理,,解密時,,cki,j-1=((4i+j)×7-7)(mod256)=(cki,,j-7)(mod256),。也即:ck31,2=ck31,,3-7,,…,ck30,,3=ck31,,0-7,…,,ck0,,0=ck0,1-7,。
生成加密子密鑰時,,每8 bit固定參數(shù)CK通過加0x7操作得到;生成解密子密鑰時,,每8 bit固定參數(shù)CK通過減0x7操作得到,,而減0x7操作可轉(zhuǎn)換為加0xF9得到,模256則通過直接截取低8位得到,。固定參數(shù)CK實(shí)時生成電路如圖5所示,。其中,Mode為加/解密模式控制信號,。
2.2.3 密鑰存儲及檢測單元
由于SM4算法解密時使用的子密鑰是加密時的逆序,,不存儲子密鑰的方式導(dǎo)致在解密時需要先進(jìn)行密鑰初始化的過程,通過32輪迭代產(chǎn)生(rk28,,rk29,,rk30,rk31),,然后根據(jù)(rk28,,rk29,rk30,,rk31)進(jìn)行迭代依次產(chǎn)生rk27-rk0[3],。根據(jù)文獻(xiàn)[3],含有密鑰初始化的解密比不含密鑰初始化的解密所需時鐘周期增加了一倍,,而吞吐率下降了50%,。因此,本文增加密鑰存儲及檢測單元,,檢測當(dāng)前使用密鑰與所存儲的上一分組密鑰是否一致,,若一致則直接使用所存儲的(rk0,rk1,,rk2,,rk3)或(rk28,rk29,,rk30,,rk31)進(jìn)行加/解密運(yùn)算,不一致則將生成的(K0,,K1,,K2,K3)發(fā)送給核心電路,。該方法縮短了解密時所需時鐘周期并提高了解密速度,,需存儲的密鑰相關(guān)數(shù)據(jù)也僅為原來的1/3。
3 實(shí)驗(yàn)結(jié)果及分析
本文分別在FPGA和ASIC平臺對所設(shè)計(jì)的SM4算法輕量級處理架構(gòu)進(jìn)行實(shí)現(xiàn),。
在FPGA平臺,,本文基于Altera Cyclone II EP2C35F672C6對本設(shè)計(jì)進(jìn)行了綜合,綜合結(jié)果如表1所示,。
在ASIC平臺,,通過綜合工具對本設(shè)計(jì)進(jìn)行了綜合,綜合結(jié)果以及與其他文獻(xiàn)的對比如表2所示,。為實(shí)現(xiàn)不同工藝下實(shí)現(xiàn)結(jié)果的可比性,,本文采用等效門(GE)為單位進(jìn)行對比,并引入品質(zhì)因數(shù)[9](Figure of Merit,,F(xiàn)OM)對各設(shè)計(jì)進(jìn)行比較,,以評估各電路的實(shí)現(xiàn)性能。FOM的定義為吞吐率(Mbps)與面積平方(GE2)的比,,在不考慮翻轉(zhuǎn)率的情況下,,相同吞吐率下面積越小則功耗越低,。因此,在比較密碼算法輕量級實(shí)現(xiàn)性能時,,F(xiàn)OM的值越高越好,。
從表2中可以看出,本文的設(shè)計(jì)與文獻(xiàn)[6]相比,,面積降低了27.92%,;比文獻(xiàn)[4]中的設(shè)計(jì)面積下降了53.29%。雖然本文采用桶形移位器,,使得加密周期有所增加,,但本文設(shè)計(jì)采用復(fù)合域S盒,并且無需存儲32輪子密鑰,,與文獻(xiàn)[5]將密鑰存儲于RAM中的方式相比,,本文所需等效門數(shù)減少了304 GE,在面積上仍有優(yōu)勢,。綜合來看,,本設(shè)計(jì)的FOM值也比文獻(xiàn)[5]高,具有較好的品質(zhì)因數(shù),。
4 總結(jié)
本文基于資源重用的方式設(shè)計(jì)并實(shí)現(xiàn)了SM4算法的輕量級處理架構(gòu),,子密鑰擴(kuò)展和輪函數(shù)交替使用核心電路完成數(shù)據(jù)加/解密運(yùn)算,密鑰存儲及檢測電路及固定參數(shù)實(shí)時生成電路可提高解密處理效率,。具有資源占用少,、吞吐率/面積比高等特點(diǎn),非常適合應(yīng)用于物聯(lián)網(wǎng)應(yīng)用資源受限設(shè)備中,。在此基礎(chǔ)上,,將考慮采用低功耗設(shè)計(jì)技術(shù)來進(jìn)一步降低電路功耗。
參考文獻(xiàn)
[1] 楊威,,萬武南,,陳運(yùn),等.適用于受限設(shè)備的輕量級密碼綜述[J].計(jì)算機(jī)應(yīng)用,,2014,,34(07):1871-1877.
[2] 國家密碼管理局.無線局域網(wǎng)產(chǎn)品使用的SM4密碼算法[EB/OL].http://www.oscca.gov.cn/UpFile/200621016423197990.pdf,2006-01-30.
[3] 張遠(yuǎn)洋,,李崢,,徐建,等.面積優(yōu)先的分組密碼算法SMS4 IP核設(shè)計(jì)[J].電子技術(shù)應(yīng)用,,2007,,33(1):127-129.
[4] 王晨光,喬樹山,黑勇.分組密碼算法SM4的低復(fù)雜度實(shí)現(xiàn)[J].計(jì)算機(jī)工程,,2013(7):177-180.
[5] SHANG M,,ZHANG Q,LIU Z,,et al.An ultra-compact hardware implementation of SMS4[C]//Iiai,,International Conference on Advanced Applied Informatics.2014:86-90.
[6] 鄭朝霞,資義純,,吳旭峰,等.SMS4算法串行化設(shè)計(jì)及其輕量級電路實(shí)現(xiàn)[J].華中科技大學(xué)學(xué)報:自然科學(xué)版,,2016(2):61-64.
[7] 徐艷華,,白雪飛,郭立.適合SMS4算法硬件實(shí)現(xiàn)的S盒構(gòu)造新方法[J].中國科學(xué)技術(shù)大學(xué)學(xué)報,,2009,,39(11):1164-1170.
[8] 梁浩,烏力吉,,張向民.基于復(fù)合域的SM4算法的設(shè)計(jì)與實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),,2015,32(5):16-20.
[9] MANIFAVAS C,,HATZIVASILIS G,,F(xiàn)YSARAKIS K,et al.Lightweight cryptography for embedded system-A comparative analysis[C]//International Workshop on Autonomous and Spontaneous Security.2013:333-349.