《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 面向物聯(lián)網(wǎng)的SM4算法輕量級(jí)實(shí)現(xiàn)
面向物聯(lián)網(wǎng)的SM4算法輕量級(jí)實(shí)現(xiàn)
2016年電子技術(shù)應(yīng)用12期
朱坤崧1,戴紫彬1,張立朝1,李 偉1,2,朱偉民3
1.解放軍信息工程大學(xué),河南 鄭州450001;2.復(fù)旦大學(xué) 專用集成電路與系統(tǒng)國(guó)家重點(diǎn)實(shí)驗(yàn)室,上海201203; 3.江西省瑞金市廣播電影電視新聞中心,江西 瑞金342500
摘要: SM4算法是我國(guó)公布的第一個(gè)商用分組密碼算法,目前已經(jīng)得到了廣泛的應(yīng)用。為更好地適應(yīng)物聯(lián)網(wǎng)中資源受限設(shè)備處理能力低、存儲(chǔ)空間小等特點(diǎn),設(shè)計(jì)并實(shí)現(xiàn)了基于資源重用的SM4算法輕量級(jí)處理架構(gòu)。子密鑰擴(kuò)展和輪函數(shù)交替使用核心電路完成子密鑰生成及加/解密運(yùn)算,無(wú)需額外存儲(chǔ)32輪迭代所需子密鑰。密鑰存儲(chǔ)和檢測(cè)電路以及可正/逆序生成固定參數(shù)的實(shí)時(shí)生成電路,可大幅提高解密處理效率。實(shí)驗(yàn)結(jié)果表明,所設(shè)計(jì)的輕量級(jí)處理架構(gòu)資源占用小、品質(zhì)因數(shù)高,非常適合于在物聯(lián)網(wǎng)中資源受限設(shè)備上使用,具有廣闊的應(yīng)用前景。
中圖分類號(hào): TN918;TP302
文獻(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.
Lightweight implementation of SM4 for Internet of things
Zhu Kunsong1,Dai Zibin1,Zhang Lichao1,Li Wei1,2,Zhu Weimin3
1.PLA Information Engineering University,Zhengzhou 450001,China; 2.State Key Laboratory of Special Integrated Circuit and System,F(xiàn)udan University,Shanghai 201203,China; 3.Center of Radio,F(xiàn)ilm,Television and News of Ruijin,Jiangxi Province,Ruijin 342500,China
Abstract: SM4 is the first commercial block cipher published in China, which has been widely used. The resource-constrained devices in IoT(Internet of Things) are limited by low processing power and small storage space,in order to solve this problem, designed and implemented a SM4 lightweight structure based on reutilizing resources and rescheduling procedures. Key expansion and the round function used the core module to generate round key and encrypt/decrypt by turns, and there is no need to store all the round keys required for the 32 round of iteration. Key store & detect module and real-time CK generate module, which can generating CK in positive or inverted sequence, can significantly improve the decoding efficiency. The results shows that with the advantages of occupying less resources and has higher FOM, the lightweight structure proposed in this paper is quiet suitable for the use of resource-constrained devices in IoT, and has broad application prospects.
Key words : SM4;lightweight;resource reutilization;composite field;barrel shifter

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ì),并沒(méi)有充分利用SM4算法輪函數(shù)和子密鑰擴(kuò)展結(jié)構(gòu)基本相同的特點(diǎn);文獻(xiàn)[4]采取每輪加密前先計(jì)算子密鑰的方式工作,但其中線性變換單元沒(méi)有實(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 加/解密算法

wdz1-1.1-x1.gif

    SM4算法的加密流程及輪函數(shù)運(yùn)算過(guò)程如圖1所示。

wdz1-t1.gif

1.2 密鑰擴(kuò)展算法

wdz1-1.2-x1.gif

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所示。

wdz1-t2.gif

    輕量級(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所示。

wdz1-t3.gif

    其中,核心電路主要包括:移位異或電路、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為行向量:

     wdz1-t3-x1.gif

    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所示。

wdz1-t4.gif

    部分譯碼方式將移位操作分為兩部分,每部分的移位位數(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)。

wdz1-t5.gif

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所示。

wdz1-b1.gif

    在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的值越高越好。

wdz1-b2.gif

    從表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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。