文献标识码:A
DOI:10.16157/j.issn.0258-7998.2016.12.006
中文引用格式:朱坤崧,戴紫彬,张立朝,等. 面向物联网的SM4算法轻量级实现[J].电子技术应用,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 引言
随着物联网应用越来越广泛,人们对于物联网的安全越来越重视。密码算法在智能卡、射频识别、无线传感网等资源受限设备中的应用越来越多,以SM4算法为代表的密码算法轻量级实现的研究具有重要的现实意义和实用价值。
SM4算法是国家商用密码管理办公室于2006年1月公布的一种分组密码算法[2]。考虑到SM4算法轮函数及子密钥扩展结构的相似性,其轻量级实现主要通过资源重用方式进行实现[3-6]。文献[3]采用32轮全循环迭代结构,轮函数实现结构与密钥扩展模块采用分离式设计,并没有充分利用SM4算法轮函数和子密钥扩展结构基本相同的特点;文献[4]采取每轮加密前先计算子密钥的方式工作,但其中线性变换单元没有实现复用;文献[5]将FK和CK两个参数组合一个新的参数并将密钥初始化放入迭代操作中,但采用RAM存储子密钥的方式仍然会增加电路面积;文献[6]采用串行的设计方式,加密操作和密钥扩展共享数据通路,但是固定参数生成电路只适合于加密,并且线性变换模块仍有优化空间。
针对以上问题,本文基于资源重用的方式设计了SM4算法的轻量级处理架构,可较好地满足物联网中资源受限设备的安全需求。
1 SM4算法概述
SM4算法的分组长度为128 bit,密钥长度为128 bit。加密算法与密钥扩展算法都采用32轮非线性迭代结构。
1.1 加/解密算法
SM4算法的加密流程及轮函数运算过程如图1所示。
1.2 密钥扩展算法
2 SM4算法轻量级处理研究
2.1 SM4算法轻量级处理架构
针对SM4算法实际应用的物联网环境中设备计算能力较低、存储空间小等特点,通过对SM4算法加解密流程的分析,本文针对现有问题基于资源重用的方式设计了面向资源受限设备的SM4算法轻量级实现处理架构,如图2所示。
轻量级处理架构主要包括核心电路、密钥存储及检测单元、固定参数生成电路和控制单元。加解密运算和密钥扩展共享数据通路,通过模式选择实现核心电路的分时复用,可同时满足轮函数和子密钥生成的需求。核心电路中只使用一个8×8的S盒以节省面积并采用桶形移位器实现线性变换。在数据加/解密过程之前,先检测当前使用密钥是否与上一分组相同,若相同则可直接使用存储的生成加/解运算所需正序或逆序子密钥。固定参数生成电路在模式控制下,可生成正序或逆序固定参数。控制电路对各模块进行控制,实现加密轮函数、解密轮函数和密钥扩展3种模式的变换,并控制核心电路的轮数和加/解密数据的输入输出。
2.2 轻量级处理架构运算单元设计
2.2.1 核心电路
由于SM4算法的轮函数与子密钥生成算法有极高的相似度,因此共享数据通路能够大大节省算法实现所需电路面积。核心电路结构如图3所示。
其中,核心电路主要包括:移位异或电路、S盒以及线性移位单元。
(1)移位异或电路
核心电路的输入都为32 bit数据,并且核心电路中仅有一个8×8的S盒。因此,异或电路采用8 bit为基本位宽对数据进行处理。
首先将明文输入(X0,X1,X2,X3)或密钥与系统参数异或结果(K0,K1,K2,K3)的4个32 bit子块根据当前核心电路不同的模式输入到数据缓存器中,同时输入的还有轮函数使用的子密钥rk或子密钥生成时所需的固定参数CK。模式控制信息控制核心电路交替实现轮运算与子密钥生成功能,每个周期对8 bit数据进行异或操作,然后将所有数据左移8 bit供下一周期使用。
(2)S盒
为节省面积,本文只使用一个8×8的S盒,采用分时复用的方式实现S盒替换操作。S盒的实现方式主要有查找表[3,5,6]以及基于复合域[4,7,8]的方法。相比于查找表的方式,基于复合域的实现方法采用代数运算的方式实现,计算更加简单并且效率更高,因此,本文采用复合域方式对S盒进行实现。
基于复合域求逆实现的S盒由仿射变换和有限域求逆两种操作组成,其代数表达式为:S(x)=I(x·A1+C1)·A2+C2。式中,A1和A2为8×8矩阵,C1和C2为行向量:
I(x)表示为GF(28)有限域上的求逆运算,乘法求逆的8次不可约多项式为f(x)=x8+x7+x6+x5+x4+x2+1。S盒输入经仿射变换后,将GF(28)上的元素通过同构映射矩阵映射到GF(((22)2)2)上,并在GF(((22)2)2)上进行求逆运算,求逆的结果经同构映射逆矩阵映射回GF(28),再经仿射变换得到S盒输出。
(3)线性移位单元
本文通过桶形移位器实现线性移位操作可减少硬件电路的冗余。桶形移位器的实现方式主要有全译码、全编码、部分译码和基于三值逻辑控制的方式等。其中,部分译码方式与全译码方式相比面积减小一半,而全编码方式内部由数据选择器串联而成,延时较大。因此,本文采用部分译码方式的桶形移位器对线性移位单元进行实现,如图4所示。
部分译码方式将移位操作分为两部分,每部分的移位位数由译码值决定。由于SM4算法中只有循环左移操作,所以本文中移位网络只实现这一种操作。移位网络1可实现移位位数为0、4、8、12、16、20、24、28的移位操作;移位网络2可实现移位位数为0、1、2、3的移位操作。在两个移位网络的配合下,可以实现任意位数的循环左移操作,其中循环左移0位操作不经过移位网络。线性变换完成后,核心电路在模式控制信号的选择下,将线性变换结果分别与轮函数中第一分组或子密钥生成的第一个分组异或,并将异或结果存于第四分组中。
2.2.2 固定参数CK生成电路
SM4算法中使用的固定参数CK可采用RAM直接存储的方式,也可以通过电路实时产生。直接存储会因为接口电路[6]使得CK生成电路面积增大,因此,本文采用实时生成的方式得到固定参数CK。
由上一节可知,加密时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固定参数CK通过加0x7操作得到;生成解密子密钥时,每8 bit固定参数CK通过减0x7操作得到,而减0x7操作可转换为加0xF9得到,模256则通过直接截取低8位得到。固定参数CK实时生成电路如图5所示。其中,Mode为加/解密模式控制信号。
2.2.3 密钥存储及检测单元
由于SM4算法解密时使用的子密钥是加密时的逆序,不存储子密钥的方式导致在解密时需要先进行密钥初始化的过程,通过32轮迭代产生(rk28,rk29,rk30,rk31),然后根据(rk28,rk29,rk30,rk31)进行迭代依次产生rk27-rk0[3]。根据文献[3],含有密钥初始化的解密比不含密钥初始化的解密所需时钟周期增加了一倍,而吞吐率下降了50%。因此,本文增加密钥存储及检测单元,检测当前使用密钥与所存储的上一分组密钥是否一致,若一致则直接使用所存储的(rk0,rk1,rk2,rk3)或(rk28,rk29,rk30,rk31)进行加/解密运算,不一致则将生成的(K0,K1,K2,K3)发送给核心电路。该方法缩短了解密时所需时钟周期并提高了解密速度,需存储的密钥相关数据也仅为原来的1/3。
3 实验结果及分析
本文分别在FPGA和ASIC平台对所设计的SM4算法轻量级处理架构进行实现。
在FPGA平台,本文基于Altera Cyclone II EP2C35F672C6对本设计进行了综合,综合结果如表1所示。
在ASIC平台,通过综合工具对本设计进行了综合,综合结果以及与其他文献的对比如表2所示。为实现不同工艺下实现结果的可比性,本文采用等效门(GE)为单位进行对比,并引入品质因数[9](Figure of Merit,FOM)对各设计进行比较,以评估各电路的实现性能。FOM的定义为吞吐率(Mbps)与面积平方(GE2)的比,在不考虑翻转率的情况下,相同吞吐率下面积越小则功耗越低。因此,在比较密码算法轻量级实现性能时,FOM的值越高越好。
从表2中可以看出,本文的设计与文献[6]相比,面积降低了27.92%;比文献[4]中的设计面积下降了53.29%。虽然本文采用桶形移位器,使得加密周期有所增加,但本文设计采用复合域S盒,并且无需存储32轮子密钥,与文献[5]将密钥存储于RAM中的方式相比,本文所需等效门数减少了304 GE,在面积上仍有优势。综合来看,本设计的FOM值也比文献[5]高,具有较好的品质因数。
4 总结
本文基于资源重用的方式设计并实现了SM4算法的轻量级处理架构,子密钥扩展和轮函数交替使用核心电路完成数据加/解密运算,密钥存储及检测电路及固定参数实时生成电路可提高解密处理效率。具有资源占用少、吞吐率/面积比高等特点,非常适合应用于物联网应用资源受限设备中。在此基础上,将考虑采用低功耗设计技术来进一步降低电路功耗。
参考文献
[1] 杨威,万武南,陈运,等.适用于受限设备的轻量级密码综述[J].计算机应用,2014,34(07):1871-1877.
[2] 国家密码管理局.无线局域网产品使用的SM4密码算法[EB/OL].http://www.oscca.gov.cn/UpFile/200621016423197990.pdf,2006-01-30.
[3] 张远洋,李峥,徐建,等.面积优先的分组密码算法SMS4 IP核设计[J].电子技术应用,2007,33(1):127-129.
[4] 王晨光,乔树山,黑勇.分组密码算法SM4的低复杂度实现[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算法串行化设计及其轻量级电路实现[J].华中科技大学学报:自然科学版,2016(2):61-64.
[7] 徐艳华,白雪飞,郭立.适合SMS4算法硬件实现的S盒构造新方法[J].中国科学技术大学学报,2009,39(11):1164-1170.
[8] 梁浩,乌力吉,张向民.基于复合域的SM4算法的设计与实现[J].微电子学与计算机,2015,32(5):16-20.
[9] MANIFAVAS C,HATZIVASILIS G,FYSARAKIS K,et al.Lightweight cryptography for embedded system-A comparative analysis[C]//International Workshop on Autonomous and Spontaneous Security.2013:333-349.