文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2016.12.006
中文引用格式: 朱坤崧,戴紫彬,,張立朝,,等. 面向物聯(lián)網(wǎng)的SM4算法輕量級(jí)實(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)用越來(lái)越廣泛,,人們對(duì)于物聯(lián)網(wǎng)的安全越來(lái)越重視,。密碼算法在智能卡、射頻識(shí)別,、無(wú)線傳感網(wǎng)等資源受限設(shè)備中的應(yīng)用越來(lái)越多,,以SM4算法為代表的密碼算法輕量級(jí)實(shí)現(xiàn)的研究具有重要的現(xiàn)實(shí)意義和實(shí)用價(jià)值。
SM4算法是國(guó)家商用密碼管理辦公室于2006年1月公布的一種分組密碼算法[2],??紤]到SM4算法輪函數(shù)及子密鑰擴(kuò)展結(jié)構(gòu)的相似性,其輕量級(jí)實(shí)現(xiàn)主要通過(guò)資源重用方式進(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兩個(gè)參數(shù)組合一個(gè)新的參數(shù)并將密鑰初始化放入迭代操作中,,但采用RAM存儲(chǔ)子密鑰的方式仍然會(huì)增加電路面積,;文獻(xiàn)[6]采用串行的設(shè)計(jì)方式,加密操作和密鑰擴(kuò)展共享數(shù)據(jù)通路,但是固定參數(shù)生成電路只適合于加密,,并且線性變換模塊仍有優(yōu)化空間,。
針對(duì)以上問(wèn)題,本文基于資源重用的方式設(shè)計(jì)了SM4算法的輕量級(jí)處理架構(gòu),,可較好地滿足物聯(lián)網(wǎng)中資源受限設(shè)備的安全需求,。
1 SM4算法概述
SM4算法的分組長(zhǎng)度為128 bit,密鑰長(zhǎng)度為128 bit,。加密算法與密鑰擴(kuò)展算法都采用32輪非線性迭代結(jié)構(gòu),。
1.1 加/解密算法
SM4算法的加密流程及輪函數(shù)運(yùn)算過(guò)程如圖1所示。
1.2 密鑰擴(kuò)展算法
2 SM4算法輕量級(jí)處理研究
2.1 SM4算法輕量級(jí)處理架構(gòu)
針對(duì)SM4算法實(shí)際應(yīng)用的物聯(lián)網(wǎng)環(huán)境中設(shè)備計(jì)算能力較低,、存儲(chǔ)空間小等特點(diǎn),,通過(guò)對(duì)SM4算法加解密流程的分析,本文針對(duì)現(xiàn)有問(wèn)題基于資源重用的方式設(shè)計(jì)了面向資源受限設(shè)備的SM4算法輕量級(jí)實(shí)現(xiàn)處理架構(gòu),,如圖2所示,。
輕量級(jí)處理架構(gòu)主要包括核心電路、密鑰存儲(chǔ)及檢測(cè)單元,、固定參數(shù)生成電路和控制單元。加解密運(yùn)算和密鑰擴(kuò)展共享數(shù)據(jù)通路,,通過(guò)模式選擇實(shí)現(xiàn)核心電路的分時(shí)復(fù)用,,可同時(shí)滿足輪函數(shù)和子密鑰生成的需求。核心電路中只使用一個(gè)8×8的S盒以節(jié)省面積并采用桶形移位器實(shí)現(xiàn)線性變換,。在數(shù)據(jù)加/解密過(guò)程之前,,先檢測(cè)當(dāng)前使用密鑰是否與上一分組相同,若相同則可直接使用存儲(chǔ)的生成加/解運(yùn)算所需正序或逆序子密鑰,。固定參數(shù)生成電路在模式控制下,,可生成正序或逆序固定參數(shù)??刂齐娐穼?duì)各模塊進(jìn)行控制,,實(shí)現(xiàn)加密輪函數(shù)、解密輪函數(shù)和密鑰擴(kuò)展3種模式的變換,,并控制核心電路的輪數(shù)和加/解密數(shù)據(jù)的輸入輸出,。
2.2 輕量級(jí)處理架構(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ù),并且核心電路中僅有一個(gè)8×8的S盒。因此,,異或電路采用8 bit為基本位寬對(duì)數(shù)據(jù)進(jìn)行處理,。
首先將明文輸入(X0,X1,,X2,,X3)或密鑰與系統(tǒng)參數(shù)異或結(jié)果(K0,K1,,K2,,K3)的4個(gè)32 bit子塊根據(jù)當(dāng)前核心電路不同的模式輸入到數(shù)據(jù)緩存器中,同時(shí)輸入的還有輪函數(shù)使用的子密鑰rk或子密鑰生成時(shí)所需的固定參數(shù)CK,。模式控制信息控制核心電路交替實(shí)現(xiàn)輪運(yùn)算與子密鑰生成功能,,每個(gè)周期對(duì)8 bit數(shù)據(jù)進(jìn)行異或操作,然后將所有數(shù)據(jù)左移8 bit供下一周期使用,。
(2)S盒
為節(jié)省面積,,本文只使用一個(gè)8×8的S盒,采用分時(shí)復(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ì)算更加簡(jiǎn)單并且效率更高,因此,,本文采用復(fù)合域方式對(duì)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)上的元素通過(guò)同構(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)線性移位單元
本文通過(guò)桶形移位器實(shí)現(xiàn)線性移位操作可減少硬件電路的冗余,。桶形移位器的實(shí)現(xiàn)方式主要有全譯碼,、全編碼、部分譯碼和基于三值邏輯控制的方式等,。其中,,部分譯碼方式與全譯碼方式相比面積減小一半,而全編碼方式內(nèi)部由數(shù)據(jù)選擇器串聯(lián)而成,,延時(shí)較大,。因此,本文采用部分譯碼方式的桶形移位器對(duì)線性移位單元進(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的移位操作,。在兩個(gè)移位網(wǎng)絡(luò)的配合下,,可以實(shí)現(xiàn)任意位數(shù)的循環(huán)左移操作,其中循環(huán)左移0位操作不經(jīng)過(guò)移位網(wǎng)絡(luò),。線性變換完成后,,核心電路在模式控制信號(hào)的選擇下,將線性變換結(jié)果分別與輪函數(shù)中第一分組或子密鑰生成的第一個(gè)分組異或,,并將異或結(jié)果存于第四分組中,。
2.2.2 固定參數(shù)CK生成電路
SM4算法中使用的固定參數(shù)CK可采用RAM直接存儲(chǔ)的方式,也可以通過(guò)電路實(shí)時(shí)產(chǎn)生,。直接存儲(chǔ)會(huì)因?yàn)榻涌陔娐穂6]使得CK生成電路面積增大,,因此,本文采用實(shí)時(shí)生成的方式得到固定參數(shù)CK,。
由上一節(jié)可知,,加密時(shí)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。同理,,解密時(shí),,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,。
生成加密子密鑰時(shí),,每8 bit固定參數(shù)CK通過(guò)加0x7操作得到;生成解密子密鑰時(shí),,每8 bit固定參數(shù)CK通過(guò)減0x7操作得到,,而減0x7操作可轉(zhuǎn)換為加0xF9得到,模256則通過(guò)直接截取低8位得到,。固定參數(shù)CK實(shí)時(shí)生成電路如圖5所示,。其中,,Mode為加/解密模式控制信號(hào)。
2.2.3 密鑰存儲(chǔ)及檢測(cè)單元
由于SM4算法解密時(shí)使用的子密鑰是加密時(shí)的逆序,,不存儲(chǔ)子密鑰的方式導(dǎo)致在解密時(shí)需要先進(jìn)行密鑰初始化的過(guò)程,,通過(guò)32輪迭代產(chǎn)生(rk28,rk29,,rk30,,rk31),然后根據(jù)(rk28,,rk29,,rk30,rk31)進(jìn)行迭代依次產(chǎn)生rk27-rk0[3],。根據(jù)文獻(xiàn)[3],,含有密鑰初始化的解密比不含密鑰初始化的解密所需時(shí)鐘周期增加了一倍,而吞吐率下降了50%,。因此,,本文增加密鑰存儲(chǔ)及檢測(cè)單元,檢測(cè)當(dāng)前使用密鑰與所存儲(chǔ)的上一分組密鑰是否一致,,若一致則直接使用所存儲(chǔ)的(rk0,,rk1,rk2,,rk3)或(rk28,,rk29,rk30,,rk31)進(jìn)行加/解密運(yùn)算,,不一致則將生成的(K0,K1,,K2,,K3)發(fā)送給核心電路。該方法縮短了解密時(shí)所需時(shí)鐘周期并提高了解密速度,,需存儲(chǔ)的密鑰相關(guān)數(shù)據(jù)也僅為原來(lái)的1/3。
3 實(shí)驗(yàn)結(jié)果及分析
本文分別在FPGA和ASIC平臺(tái)對(duì)所設(shè)計(jì)的SM4算法輕量級(jí)處理架構(gòu)進(jìn)行實(shí)現(xiàn),。
在FPGA平臺(tái),,本文基于Altera Cyclone II EP2C35F672C6對(duì)本設(shè)計(jì)進(jìn)行了綜合,綜合結(jié)果如表1所示,。
在ASIC平臺(tái),,通過(guò)綜合工具對(duì)本設(shè)計(jì)進(jìn)行了綜合,綜合結(jié)果以及與其他文獻(xiàn)的對(duì)比如表2所示,。為實(shí)現(xiàn)不同工藝下實(shí)現(xiàn)結(jié)果的可比性,,本文采用等效門(GE)為單位進(jìn)行對(duì)比,,并引入品質(zhì)因數(shù)[9](Figure of Merit,F(xiàn)OM)對(duì)各設(shè)計(jì)進(jìn)行比較,,以評(píng)估各電路的實(shí)現(xiàn)性能,。FOM的定義為吞吐率(Mbps)與面積平方(GE2)的比,在不考慮翻轉(zhuǎn)率的情況下,,相同吞吐率下面積越小則功耗越低,。因此,在比較密碼算法輕量級(jí)實(shí)現(xiàn)性能時(shí),,F(xiàn)OM的值越高越好,。
從表2中可以看出,本文的設(shè)計(jì)與文獻(xiàn)[6]相比,,面積降低了27.92%,;比文獻(xiàn)[4]中的設(shè)計(jì)面積下降了53.29%。雖然本文采用桶形移位器,,使得加密周期有所增加,,但本文設(shè)計(jì)采用復(fù)合域S盒,并且無(wú)需存儲(chǔ)32輪子密鑰,,與文獻(xiàn)[5]將密鑰存儲(chǔ)于RAM中的方式相比,,本文所需等效門數(shù)減少了304 GE,在面積上仍有優(yōu)勢(shì),。綜合來(lái)看,,本設(shè)計(jì)的FOM值也比文獻(xiàn)[5]高,具有較好的品質(zhì)因數(shù),。
4 總結(jié)
本文基于資源重用的方式設(shè)計(jì)并實(shí)現(xiàn)了SM4算法的輕量級(jí)處理架構(gòu),,子密鑰擴(kuò)展和輪函數(shù)交替使用核心電路完成數(shù)據(jù)加/解密運(yùn)算,密鑰存儲(chǔ)及檢測(cè)電路及固定參數(shù)實(shí)時(shí)生成電路可提高解密處理效率,。具有資源占用少,、吞吐率/面積比高等特點(diǎn),非常適合應(yīng)用于物聯(lián)網(wǎng)應(yīng)用資源受限設(shè)備中,。在此基礎(chǔ)上,,將考慮采用低功耗設(shè)計(jì)技術(shù)來(lái)進(jìn)一步降低電路功耗。
參考文獻(xiàn)
[1] 楊威,,萬(wàn)武南,,陳運(yùn),等.適用于受限設(shè)備的輕量級(jí)密碼綜述[J].計(jì)算機(jī)應(yīng)用,,2014,,34(07):1871-1877.
[2] 國(guó)家密碼管理局.無(wú)線局域網(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ì)及其輕量級(jí)電路實(shí)現(xiàn)[J].華中科技大學(xué)學(xué)報(bào):自然科學(xué)版,2016(2):61-64.
[7] 徐艷華,,白雪飛,,郭立.適合SMS4算法硬件實(shí)現(xiàn)的S盒構(gòu)造新方法[J].中國(guó)科學(xué)技術(shù)大學(xué)學(xué)報(bào),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.