APP下载

一次一密SM4算法的设计

2018-06-29艾心吴鸣旦武旭东李小卫罗群

网络空间安全 2018年2期
关键词:安全性

艾心 吴鸣旦 武旭东 李小卫 罗群

摘 要:SM4算法的优点是软件和硬件容易实现、运算速度快,但是由于其加密算法与解密算法均使用相同的密钥,并且加密过程和解密过程互逆,SM4算法的适用范围受到了很大限制。SM4算法的缺点是信息安全取决于对密钥的保护,密钥泄漏则意味着任何人都能通过解密密文获得明文。论文在SM4算法的基础上,提出一种“一次一密”的加密机制,对其密钥的安全性进行提高,从而提高整个加密算法的安全性。

关键词:SM4算法;一次一密;安全性

中图分类号: TP312 文献标识码:A

Design of one-time pad SM4 algorithm

Abstract: The advantage of SM4 algorithm is that the software and hardware are easy to implement and computing speed is fast, but becausethe keys inthe encryption algorithm and decryption algorithm are same, and the encryption process and decryption process are mutually inverse, the application range of SM4 algorithm is greatly restricted.The disadvantage of SM4 algorithm is that the information security depends on the protection of the key, and the leakage of key means that anyone can get plaintext by decrypting the ciphertext.On the basis of SM4 algorithm, this paper proposes a "one-time pad" encryption mechanism to improve the security of its key, so as to improve the security of the entire encryption algorithm.

Key words: SM4 algorithm; one-time pad; security

1 引言

随着网络技术的不斷发展,无线局域网正在日益普及,但是其传输信息的安全性也正面临着严峻的挑战。采用数据加密技术是保证用户信息在传输过程中不被暴露和篡改的有效方式。国家密码管理局于2012年发布了一套密码行业标准[1],即SM4算法。SM4算法属于对称密码体制中的分组加密算法,加密过程和解密过程中采用的密钥一致,其中明文分组、密文分组、密钥的长度均为128位。解密过程与加密过程的结构相似,不同的是轮密钥的使用顺序相反[2]。加密算法与密钥扩展算法均使用32轮非线性迭代结构。

SM4算法的优点是软件和硬件容易实现、运算速度快[3],但是由于其加密算法与解密算法均使用相同的密钥,并且加密过程和解密过程互逆,SM4算法的适用范围受到了很大限制。SM4算法的缺点是信息安全取决于对密钥的保护,若攻击者获取了密钥,那么就能通过解密密文获得明文。

“一次一密”算法要求每次均采用不同的密钥来完成对明文的加密,即密钥是随机产生的并且明文和密钥是等长的。实现了“一次一密”加密机制的密钥才是理论上安全的密钥[4]。采用这种方案时除非攻击者知道完整的密钥信息,否则须经过2n(n为明文的长度)次破解尝试才能获得密钥,在现有的计算能力下是不可能实现的。本文在SM4算法的基础上,提出一种“一次一密”的加密机制,对其密钥的安全性进行提高,从而提高整个加密算法的安全性。

2 SM4算法原理

SM4算法属于对称密码体制中的分组加密算法,加密过程和解密过程中采用的密钥一致,其中明文分组、密文分组、密钥的长度均为128位。解密过程与加密过程的结构相似,不同的是轮密钥的使用顺序相反。加密算法与密钥扩展算法均使用32轮非线性迭代结构。

SM4算法将每个明文分组和密文分组均分成128位,然后将每个分组分为4部分,即明文(P0,P1,P2,P3)∈(Z322)4,密 文(Q0,Q1,Q2,Q3)∈(Z322)4。轮密钥为ghi∈∈Z322,i=0,1,2,…,31。反序变换R为R(B0,B1,B2,B3)=(B3,B2,B1,B0),Bi∈∈Z322,i=0,1,2,3。

本算法的加密变换为:Pi+4=F(Pi,P(i+1),P(i+2),P(i+3),ghi)=Pi?⊕T(Pi,P(i+1),P(i+2),P(i+3),ghi), i=0,1,2,…,31,(Q0,Q1,Q2,Q3)=R(P32,P33,P34,P35)=(P35,P34,P33,P32)。

在SM4算法中,解密与加密过程的轮密钥使用顺序不同:

加密时轮密钥的使用顺序:(gh0,…,gh31);

解密时轮密钥的使用顺序:(gh31,…,gh0)。

轮密钥由加密密钥生成,加密密钥长度为128比特,表示为NH=(NH0,NH1,NH2,NH3),其中NHi∈∈Z322(i=0,1,2,3)。

3 密钥产生的协议及算法

为了描述方便,本文仅讨论两人通信模式。

(1)密钥分配中心KDC是目前公认的最有效的密钥分配方法,是Kerberos协议[5]的重要组成部分。KDC的可信性、安全性是无需质疑的。因此,通信双方首先通过密钥分配中心KDC获得对方的公钥。

(2)通信双方各自生成128位随机数,分别用U、V表示,并利用对方的公钥加密并进行交换;双方各自计算J=U?V,J称为基本密钥。

(3)首先对基本密钥J做左循环运算,结果记为JR。即JR=R<<

(4)按照二进制数字串的顺序将128位的JR分为4组,每32位为一组,并用D0,D1,D2,D3为每组命名。

(5)对D0,D1,D2,D3依照算法分别作左循环、右循环运算,运算结果为新的128位数字串。即:

JR ET=((T+1)<<>>2(T+1))&(D3>>>(T+1)),T=0,1,2,…,15。

之所以从T+1开始循环运算,是为了提高数字串的混乱程度,进而优化密钥生成的效果。

(6)将JR ET作为单向散列函数的输入值,生成的128位输出值作为SM4算法的工作密钥。

单向散列函数是指将任意长度的数据转换为不可逆转的、定长的数字串[6]。即:l)散列函数是单向的,因此不同输入数据的散列值是独立的;2)给予相同的输入数据,散列值相同。

本文还要求所选的单向散列函数具有强抗碰撞性。即对于任意的两组输入x和y,使得输出H(x)=H(y)在计算上是不可行的[7]。目前广泛使用的散列函数有SHA-1和MD5。SHA-1作为散列数据的标准,输出160位的散列值。与SHA-1不同,MD5的输出为128位的散列值。

工作密钥HRT=HASH(JR ET),R的最大值为127,T的最大值为15,工作密钥个数最多为128×16=2048。

(7)加密/解密时,偏移量是一个非常重要的参数。首先应该根据偏移量求得工作密钥。设偏移量为W(假定W<2048),则首先根据取整运算求得R,即R=[W/16],根据模运算求得T,即T=Wmod16。然后根据R和T的值计算JR ET,最后得到工作密钥HRT=HASH(JR ET)。

(8)当需要加密/解密的信息量比较大时(假定W大于2048),须产生更多的工作密钥,可以考虑增加基本密钥长度。例如当基本密钥为256位时,R和T的最大值分别为255和31,工作密钥个数最多为256×32=8192,工作密钥HRT=HASH(JR ET)的长度依然为128位。

(9)当需要加密/解密的信息量非常大时(假定W远远大于2048),可采用增加基本密钥长度和个数的方法来产生更多的工作密钥。例如通信双方各自产生K组128位二进制串。在产生基本密钥时,按照顺序号相同的原则将每位二进制数进行异或运算,即:JS=US⊕VS,S∈[0,K]。JSR ET为单向散列函数的输入值。当加密/解密时首先求得S=[W/2048],再按照步骤7计算相应的R和T,最终求得JSR ET和工作密钥HSRT=HASH(JSR ET)。

产生更多的工作密钥的算法有很多,可以通过不同的移位、组合等方式实现,本文仅阐述算法的可行性。从理论上讲, 128位二进制数按照一定顺序排列产生工作密钥,所以工作密钥最多有2128种可能。

4 算法分析

4.1 算法可行性分析

本文提出的算法由偏移量可以独立计算出一致的单向散列函数的输入值JR ET,并且该输入值具有强抗碰撞性。通信双方可独立产生完全一致的对应明文/密文的SM4算法的工作密钥,并且在设计时考虑到SM4算法的对称加密算法特性。另外,加密/解密过程均使用SM4算法,符合算法一致的要求,因此算法是可行的。本文的设计采用了“一次一密”加密机制,可以极大地增强SM4算法的安全性。

4.2 弱密钥分析

本文虽然在算法复杂度上进行了提升,但由于密钥均由二进制数字组成,在工作密钥产生时,不可避免会出现某些比较简单的工作密钥(即弱密钥),这种简单的工作密钥会对算法的安全性产生一定影响。因此在生成128位密钥时,对于连续16位二进制数全为0或全为1的特殊数字串[8]须适当去除,当产生这种特殊字符串时,通信双方须进行协商,重新生成密钥,以确保安全性。在产生随机二进制数时,要求通信双方应尽量做到0、1均匀分布。虽然弱密鑰的产生是不可避免的,但本算法在加密/解密时采用“一次一密”的加密/解密方式,各个密钥间不具备相关性,攻击者无法得知哪些加密/解密过程中存在弱密钥,所以极少数弱密钥的存在并不影响算法的安全性。

4.3 穷举法攻击分析

基于随机数字串通过单向散列函数进行的散列运算,本文设计的算法能够产生“一次一密”的工作密钥,可以保证在一定范围内,SM4算法在每次加密/解密过程中使用的密钥均为相互独立的,从而提高了算法安全性。该算法不会因为攻击者偶然破译的一个密钥而影响其他密钥的安全性,因为不同输入数据的散列值的产生是互不影响的。攻击者若要破译一组128位的密文,则需要分析2128个工作密钥,破译成本非常高,在现有的计算条件下破解是不现实的,因此攻击者使用穷举法破译本算法是并不可行的。

基金项目:

国家科技支撑计划课题资助(项目编号:2016YFF0204001)。

参考文献

[1] 国家密码管理局.国家密码管理局公告第23号[EB/OL].(2012-03-21).http://www.oscca.gov.cn/News/201204/News_1227.htm.

[2] 张远洋,李铮,徐建,张少武.面积优先的分组密码算法SMS4 IP核设计[J].电子技术应用,2007,(1):127-129.

[3] 国家密钥管理局.SM4分组密码算法[S].GM/T 0002-2012.

[4] D.E.R.丹宁.密码学与数据安全(美)[M].北京:科学出版社, 1991.11.

[5] Floyd S,Jacobson V. Random Early Detection Gateways for Congestion Avoidance[J]. IEEE/ACM Trans on Networking,1993,1(4):397-413.

[6] 施荣华.一种基于单向函数的双重认证存取控制方案[J].电子科学学刊,1997,19(2):278-281.

[7] 卢开澄.计算机密码学——计算机网络中的数据保密与安全(第2版)[M].北京:清华大学出版社,1998.

[8] 王伟,郭锡泉.一次一密DES算法的设计[J].计算机安全,2006,(5):17-18.

猜你喜欢

安全性
细节护理在老年人健康体检护理中的应用及其安全性分析
拉西酮治疗女性精神分裂症的疗效与安全性分析
锁骨骨折内固定术中两种神经阻滞的麻醉效果与安全性比较
长效胰岛素联合口服降糖药治疗2型糖尿病的疗效与安全性
民航空中交通管制进近程序间隔安全性评估模型
疤痕子宫再次妊娠经阴道分娩的临床疗效及安全性
西药临床应用中合理用药对其安全性的影响
鼻内镜手术治疗老年慢性鼻窦炎鼻息肉的疗效及安全性探讨
关于桥梁设计中的安全性与耐久性问题的几点思考
西酞普兰治疗抑郁症的疗效及安全性