一种16轮SM4-256白盒密码实现方法与流程

文档序号:19182695发布日期:2019-11-20 01:10阅读:930来源:国知局
一种16轮SM4-256白盒密码实现方法与流程

本发明属于信息安全技术领域,具体涉及一种16轮sm4-256白盒密码算法方案与系统。本发明还涉及一种明文分组/密钥分组为128比特/256比特的加密算法。



背景技术:

sm4密码算法(原名sms4)是一个分组密码算法,明文分组、密钥分组、密文分组长度均为128比特,加密和解密过程基本相似。通过32次循环的非线性迭代轮函数来实现加密和解密。其中包括非线性变换s盒,以及由循环移位异或构成的线性变换。

专利文献1(公开号:cn106712930a,公开日2017月05月24日)提出了一种sm4加密方法及装置,主要原理是使用分组查表技术,对国家标准sm4中的合成置换t计算进行分解,将t中的非线性变换和线性变换压缩合并,使得加密算法中的合成置换t的计算由原先的4次查表、4次循环左移以及4次异或运算简化为4次查表和3次异或运算,提高了执行效率。

专利文献2(公开号:cn109450616a,公开日2019年03月08日)提出一种提高sm4加密算法速度的方法,主要原理是将128位密钥转换成32轮密钥,在每轮迭代过程中,先将此轮轮密钥和128比特输入进行异或再进行t置换;在t置换中,使用sm4加密算法的s盒模拟出aes算法的s盒,使得sm4加密算法使用英特尔高性能aes指令集,提高了sm4加密算法的加密性能和处理速度。

通过对上述两篇专利文献的分析,上述发明存在着不完善之处。无论是使用分组查表技术或者英特尔高性能aes指令集,都是加快了速度,而安全性没有提升,128比特的初始密钥长度和轮密钥的生成过程没有加以改进,并不足够安全可靠。而且在我们的方案设计中需考虑实际问题,在尽可能的情况下兼顾效率和安全性的平衡。为了满足各领域高标准的安全要求,应用于更多的工作环境中,增加密钥长度,加快迭代变换速度,做到安全高效、能够抵抗攻击的改进的sm4密码算法新模式是很有必要的。



技术实现要素:

针对sm4白盒算法的上述需求以及克服现有技术的不足,本发明提出了一种16轮sm4-256密码算法方案与系统,可支持明文长度/密钥长度为128比特/256比特和256比特/256比特,加密轮数为16轮时改进的sm4密码算法新模式,同时,提出了一种16轮sm4-256白盒密码算法方案与系统,是对上述算法进行白盒化。

本发明所提方案中,对标准sm4的加密算法轮函数结构进行改进,把标准sm4算法的128比特明文32轮迭代过程改进为128比特或256比特明文16轮迭代过程,每轮轮函数产生两个中间变量;同时对密钥扩展模块进行改进,输入256比特初始密钥,16轮迭代运算后输出16个轮密钥;对改进的sm4密码算法新模式进行白盒化,把改进sm4密码算法的每一轮分割成小块,对每个小块进行置乱编码,将编码后的结果用查找表和仿射变换表示,从而使得密钥信息隐藏在查找表中。

本发明的优势在于:

1.提出了一种16轮sm4-256密码算法新模式。改进算法可支持明文长度/密钥长度为128比特/256比特和256比特/256比特,对轮函数的结构即加密算法的迭代过程进行改进,使每轮轮函数产生两个中间变量,把32轮的加密过程减少至16轮。

2.提出了一种16轮sm4-256白盒密码算法方案与系统。改进的sm4密码算法新模式进行白盒化,把改进sm4密码算法的每一轮分割成小块,对每个小块进行置乱编码,将编码后的结果用查找表和仿射变换表示,从而使得密钥信息隐藏在查找表中。

3.执行效率高,占用空间小。本发明所提方案执行一次白盒加密算法需要进行64次查表,48次异或运算,104次仿射变换。在存储空间和执行速度具有较为明显的优势。

4.安全性高。增加密钥长度,提升密钥破解难度,同时对算法进行白盒化,通过计算本发明所提方案的白盒多样性、白盒含混度和分析bge攻击。

附图说明

图1是16轮sm4-256/256密码算法加密算法运算过程;

图2是16轮sm4-256/256密码算法加密轮函数运行流程图;

图3是16轮sm4-256/256密码算法密钥扩展运算过程;

图4是16轮sm4-256/256密码算法密钥扩展运行流程图;

图5是16轮sm4-256/256密码算法fk’扩展算法

图6是改进的sm4白盒密码算法整体结构;

图7是改进的sm4白盒密码算法第一部分;

图8是改进的sm4白盒密码算法第二部分;

图9是改进的sm4白盒密码算法第三部分。

具体实施方式

下面结合附图对本发明所提方案做进一步详细的说明,但不以任何方式限制本发明的范围。

本发明所提方案基于国家标准sm4密码算法进行改进。改进后的sm4密码算法密钥长度支持256比特,明文长度支持128比特和256比特,初始明文经过16次迭代运算和1次反序变换r输出密文。

以明文长度为256比特为例详述加密过程。

步骤一,如图2所示,改进的sm4密码算法新模式加密迭代运算的过程中每轮轮函数产生2个中间变量,即

其中,是比特异或符号,xi(i=0,1,...,39)均为32比特数值,是明文m经迭代运算产生的中间变量;

(1)轮函数f中的合成置换是一个可逆变换,由非线性变换τ和线性变换l复合而成,即t(·)=l(τ(·));

(2)非线性变换τ:由4个并行的s盒构成,设输入为输出为则(b0,b1,b2,b3)=τ(a)=(sbox(a0),sbox(a1),sbox(a2),sbox(a3));其中s盒与国家标准sm4算法一致。

(3)线性变换l:非线性变换τ的输出是线性变换l的输入,设输入为输出为

步骤二,如图1所示,在经过16轮迭代运算后,经过反序变换输出密文,即

(y0,y1,y2,y3,y4,y5,y6,y7)=r(x32,x33,x34,x35,x36,x37,x38,x39)

=(x39,x38,x37,x36,x35,x34,x33,x32)

在本发明所提方案中,依据设计原理对密钥扩展算法即轮密钥的产生过程进行了改进,依据改进的sm4密码算法新模式中加密算法有16轮迭代运算,密钥扩展算法需产生16个轮密钥参与进行加密运算;在密钥扩展算法中,每轮输入8个32比特的值,产生1个新的中间变量。轮密钥的生成步骤为:

步骤一,如图5所示,把128比特的系统参数扩展为256比特,具体运算为经过运算,系统参数fk扩展为256比特的扩展参数其中,合成置换是一个可逆变换,由非线性变换τ和线性变换l’复合而成,即t’(·)=l’(τ(·));非线性变换τ由4个并行的s盒构成;设线性变换l’的输入为输出为

步骤二,计算为密钥扩展输入,为256比特的初始密钥,初始密钥与扩展参数fk’进行异或得到ki,ki作为输入,输入到密钥扩展算法中参与运算;

步骤三,如图3所示,在密钥扩展算法在迭代运算的过程中每轮轮函数产生1个中间变量,即而轮密钥rki=ki+8,i=0,1,2,...,15,其中为国家标准sm4密码算法的固定参数。

本发明所提方案中解密变换与加密变换的结构相同,不同的仅是轮密钥的使用顺序,加密时轮密钥的使用顺序为(rk0,rk1,...,rk15),解密时轮密钥的使用顺序为(rk15,rk30,...,rk0)。

一种16轮sm4-256白盒密码算法方案与系统是基于上述改进sm4密码算法新模式做的白盒化。改进sm4白盒密码算法是把改进sm4密码算法的每一轮分割成小块,对每个小块进行置乱编码,将编码后的结果用查找表和仿射变换表示,从而使得密钥信息隐藏在查找表中。输入256比特明文(x0,x1,x2,x3,x4,x5,x6,x7),经过外部置乱编码和16轮变换后,进行反序变换,输出256比特密文(y0,y1,y2,y3,y4,y5,y6,y7)。

如图6所示,改进的sm4白盒密码算法在第一轮之前和最后一轮之后都做了添加置乱编码。把x’=g·x·f看成x的一个置乱编码形式,其中f为输入置乱编码,g为输出置乱编码。在轮变换前后即在第一轮输入之前添加输入置乱编码,最后一轮输出之后添加输出置乱编码。其中本方案的编码均为可逆仿射变换的形式,其数学表达式为:其中p代表一个仿射变换,l[p]是可逆矩阵,是p的线性部分,c[p]是列向量形式,是p的常数项。

本发明所提改进的sm4白盒密码算法方案的每一轮被分割为三部分,其特征在于,第i轮变换输入8个32比特数值(x’2i,x’2i+1,x’2i+2,x’2i+3,x’2i+4,x’2i+5,x’2i+6,x’2i+7),输出2个32比特数值(x’2i+8,x’2i+9);本方案此过程分为三个部分。

其中,第一部分,如图7所示:计算x即因为采用网络化编码方式,即上一轮变换的输出置乱编码的一部分与下一轮输入置乱编码相消,因此每个变换的前后都需要进行输入置乱编码和输出置乱编码。其中ei=diag(e’i0,e’i1,e’i2,e’i3),e’i0、e’i1、e’i2、e’i3均为gf(2)上的8比特到8比特的可逆仿射变换;因pi+j与ei都是随机选择并且保密的,只需保存它可以由32×32可逆矩阵和一个32比特列向量表示。就由6个仿射变换和5个异或构成;

第二部分,如图8所示,对t变换做输入输出置乱编码,形成查找表,将密钥隐藏在查找表中:

其中,x=(x2i,0,x2i,1,x2i,2,x2i,3);l表示sm4算法中t变换的线性变换,为两个gf(2)上的32×32的矩阵;使用gf(2)上的8比特到8比特的可逆仿射变换ei0,ei1,ei2,ei3作为查找表的输入编码,32比特到32比特的可逆仿射变换q2i作为查找表的输出编码,这一部分32比特到32比特的变换转换为4个8比特到32比特的查找变,再将这四个结果异或即可获得本部分的输出y’;

第三部分,如图9所示:计算x’2i+8,x’2i+9。本方案采用网络化编码方式,先要消去上一轮变换中的输出置乱编码的一部分,然后进行计算编码。

改进的sm4白盒密码算法中第i轮输出置乱编码和第i+1轮输入置乱编码相差一个常数,这个常数随机选取,无法从查找表中获得,而经过最后一轮输出之后添加置乱编码,可选择性将这些常数抵消,使得改进的sm4白盒密码算法的输出密文与改进的sm4密码算法新模式的输出密文的相同性存在两种可能。

sm4白盒加密算法与sm4白盒解密算法的结构仍然相同,但使用的查找表不相同。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1