一种基于查表的SM4算法实现方法和装置与流程

文档序号:25991435发布日期:2021-07-23 21:03阅读:153来源:国知局
一种基于查表的SM4算法实现方法和装置与流程

本发明涉及信息安全技术领域,具体涉及一种基于查表的sm4算法实现方法和装置。



背景技术:

sm4算法是一种分组密码算法。其分组长度为128bit,密钥长度也为128bit。加密算法与密钥扩展算法均采用32轮非线性迭代结构,以字(32位)为单位进行加密运算,每一次迭代运算均为一轮变换函数f。sm4算法加/解密算法的结构相同,只是使用轮密钥相反,其中解密轮密钥是加密轮密钥的逆序。

目前,通常采用的sm4方法是将密钥信息隐藏在查找表中防止攻击者获得密钥信息。然而,目前的sm4设计方案设计的查找表规模有数百kb,无法在资源有限的嵌入式平台应用,且不能根据嵌入式平台的资源大小动态调整查找表的规模大小。

因此如何设计一种基于查表的sm4算法实现方法,能够根据平台资源大小动态调整查找表规模,实现sm4算法在平台资源受限的情况下仍能使用,而且在一定程度上通过构造的查找表对密钥进行隐藏,有效保护密钥的安全性是目前急需解决的问题。



技术实现要素:

本发明针对上述问题,有必要提供一种基于查表的sm4算法实现方法和装置,能够根据平台资源大小动态调整查找表规模,实现sm4算法在平台资源受限的情况下仍能使用,而且在一定程度上通过构造的查找表对密钥进行隐藏,有效保护密钥的安全性。

本发明第一方面提出一种基于查表的sm4算法实现方法,所述sm4算法实现方法包括查找表生成阶段和查找表使用阶段;

在查找表生成阶段,根据平台资源大小动态生成32轮加解密运算对应的查找表:

根据平台资源大小计算32轮加解密运算中tbox查找表、maskkey查找表和maskbox查找表的个数,所述tbox查找表的数量x=floor[(m-32*2b)/(a-2b)],所述maskkey查找表和所述maskbox查找表的数量y=32-floor((m-256)/4088);m为平台分配给32轮查找表的资源,单位为m字节;a为每轮tbox查找表的预设资源,单位为字节,b分别为每轮maskkey查找表和maskbox查找表的预设资源,单位为字节;

根据预设匹配策略将x个tbox查找表、y个maskkey查找表和y个maskbox查找表与32轮加解密运算进行匹配,并根据匹配结果分别生成每轮加解密运算对应的tbox查找表或maskkey查找表和maskbox查找表;其中,所述tbox查找表由轮密钥运算和可逆变换t运算组合构造而成;所述maskbox查找表由随机数构成,所述maskkey查找表轮密钥与所述maskbox查找表异或运算构成;

在查找表使用阶段,进行每轮加解密运算时,直接使用每轮加解密运算对应的tbox查找表或maskkey查找表和maskbox查找表进行加解密运算。

进一步的,所述预设匹配策略包括:

若所述tbox查找表的数量x为偶数,则前x/2轮和后x/2轮加解密运算对应的查找表均为所述tbox查找表;剩余轮加解密运算对应的查找表均为所述maskkey查找表和maskbox查找表;

若所述tbox查找表的数量x为奇数,则前x/2+1轮和后x/2轮加解密运算或者前x/2轮和后x/2+1轮加解密运算对应的查找表均为所述tbox查找表;剩余轮加解密运算对应的查找表均为所述maskkey查找表和maskbox查找表。

进一步的,所述预设匹配策略还包括:当所述tbox查找表的数量x小于2时,则首轮和尾轮加解密运算对应的查找表均为所述tbox查找表,剩余轮加解密运算对应的查找表均为所述maskkey查找表和maskbox查找表。

进一步的,在通过所述maskkey查找表和maskbox查找表进行轮密钥rki运算时,所述maskkey查找表和maskbox查找表的查找顺序可以互换。

进一步的,所述tbox查找表比所述maskkey查找表和maskbox查找表资源占用大,在进行sm4加解密的中间轮操作时,根据平台资源的大小动态选择所述tbox查找表或所述maskkey查找表和maskbox查找表;当平台资源较大时,中间轮加解密运算时选择所述tbox查找表的次数增加,当平台资源较小时,中间轮加解密运算时选择所述maskkey查找表和maskbox查找表的次数增加。

本发明第二方面还提出一种基于查表的sm4算法实现装置,所述sm4算法实现装置包括:查找表生成单元和sm4加解密单元;

所述查找表生成单元,根据平台资源大小动态计算32轮加解密运算中tbox查找表、maskkey查找表和maskbox查找表的个数:

所述tbox查找表的数量x=floor[(m-32*2b)/(a-2b)],所述maskkey查找表和所述maskbox查找表的数量y=32-floor((m-256)/4088);m为平台分配给32轮查找表的资源,单位为m字节;a为每轮tbox查找表的预设资源,单位为字节,b分别为每轮maskkey查找表和maskbox查找表的预设资源,单位为字节;

根据预设匹配策略将x个tbox查找表、y个maskkey查找表和y个maskbox查找表与32轮加解密运算进行匹配,并根据匹配结果分别生成每轮加解密运算对应的tbox查找表或maskkey查找表和maskbox查找表;其中,所述tbox查找表由轮密钥运算和可逆变换t运算组合构造而成;所述maskbox查找表由随机数构成,所述maskkey查找表轮密钥与所述maskbox查找表异或运算构成;

所述sm4加解密单元,进行每轮加解密运算时,直接使用每轮加解密运算对应的tbox查找表或maskkey查找表和maskbox查找表表进行加解密运算。

进一步的,所述预设匹配策略包括:

若所述tbox查找表的数量x为偶数,则前x/2轮和后x/2轮加解密运算对应的查找表均为所述tbox查找表;剩余轮加解密运算对应的查找表均为所述maskkey查找表和maskbox查找表;

若所述tbox查找表的数量x为奇数,则前x/2+1轮和后x/2轮加解密运算或者前x/2轮和后x/2+1轮加解密运算对应的查找表均为所述tbox查找表;剩余轮加解密运算对应的查找表均为所述maskkey查找表和maskbox查找表。

进一步的,所述预设匹配策略还包括:当所述tbox查找表的数量x小于2时,则首轮和尾轮加解密运算对应的查找表均为所述tbox查找表,剩余轮加解密运算对应的查找表均为所述maskkey查找表和maskbox查找表。

进一步的,在通过所述maskkey查找表和maskbox查找表进行轮密钥rki运算时,所述maskkey查找表和maskbox查找表的查找顺序可以互换。

本发明第三方面提供一种基于查表的sm4算法实现的电子设备,包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现前述的方法。

本发明第四方面提供一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现前述的方法步骤。

本发明具有突出的实质性特点和显著的进步,具体的说:本发明根据平台资源大小动态产生每轮加解密运算对应的tbox查找表或maskbox查找表和maskkey查找表,进行每轮加解密运算时,直接使用每轮加解密运算对应的t查找表进行加解密运算;一方面能够根据平台资源大小选择不同的查找表,动态调整查找表规模,实现sm4算法在平台资源受限的情况下仍能使用,另一方面在一定程度上通过构造的查找表对密钥进行隐藏,有效保护密钥的安全性。

本发明中tbox查找表的数量选择满足[(m-32*8)/(4096-8)]的最大整数,其中,m为平台分配给查找表的资源,单位为m字节;由于tbox查找表的安全性能更高,因此tbox查找表的数量越多,sm4算法的安全性越高,因此本发明在满足平台资源受限情况下最大限度的保证sm4算法的安全性,实现了平台资源和sm4算法安全性的平衡。

本发明中将所述tbox查找表动态安排在32轮加解密运算的两端,通过保证与外界密切接触的加解密运算的安全性来确保sm4算法的安全性。

本发明中当根据计算公式得到的所述tbox查找表的个数小于2时,则通过确保首轮和尾轮加解密运算对应的查找表恒为所述tbox查找表,来保证与外界密切接触的加解密运算的安全性来确保sm4算法的安全性。

本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。

附图说明

本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1示出本发明一种基于查表的sm4算法实现方法流程图;

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,当一个组件被认为是“连接”另一个组件,它可以是直接连接到另一个组件或者可能同时存在居中组件。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。

所述sm4算法的加解密变换为:其中,(xi,xi+1,xi+2,xi+3)为输入的128位明文或密文数据,rki为轮密钥;可逆变换t的定义为:t(x)=l(τ(x)),非线性变换τ由四个并行的s盒构成,a=(a0,a1,a2,a3),τ(a)=(sbox(a0),sbox(a1),sbox(a2),sbox(a3)),且线性变换l的定义为:

目前,通常采用的sm4方法是将密钥信息隐藏在查找表中防止攻击者获得密钥信息。然而,目前的sm4设计方案设计的查找表规模有数百kb,无法在资源有限的嵌入式平台应用,且不能根据嵌入式平台的资源大小动态调整查找表的规模大小。

实施例1

如图1所示,本发明第一方面提出一种基于查表的sm4算法实现方法,所述sm4算法实现方法包括查找表生成阶段和查找表使用阶段;

在查找表生成阶段,根据平台资源大小动态生成32轮加解密运算对应的查找表:

根据平台资源大小计算32轮加解密运算中tbox查找表、maskkey查找表和maskbox查找表的个数,所述tbox查找表的数量x=floor[(m-32*2b)/(a-2b)],所述maskkey查找表和所述maskbox查找表的数量y=32-floor((m-256)/4088);m为平台分配给32轮查找表的资源,单位为m字节;a为每轮tbox查找表的预设资源,单位为字节,b分别为每轮maskkey查找表和maskbox查找表的预设资源,单位为字节;

根据预设匹配策略将x个tbox查找表、y个maskkey查找表和y个maskbox查找表与32轮加解密运算进行匹配,并根据匹配结果分别生成每轮加解密运算对应的tbox查找表或maskkey查找表和maskbox查找表;其中,所述tbox查找表由轮密钥运算和可逆变换t运算组合构造而成;所述maskbox查找表由随机数构成,所述maskkey查找表轮密钥与所述maskbox查找表异或运算构成;

在查找表使用阶段,进行每轮加解密运算时,直接使用每轮加解密运算对应的tbox查找表或maskkey查找表和maskbox查找表进行加解密运算。

在具体实施时,所述预设匹配策略包括:若所述tbox查找表的数量x为偶数,则前x/2轮和后x/2轮加解密运算对应的查找表均为所述tbox查找表;剩余轮加解密运算对应的查找表均为所述maskkey查找表和maskbox查找表;

若所述tbox查找表的数量x为奇数,则前x/2+1轮和后x/2轮加解密运算或者前x/2轮和后x/2+1轮加解密运算对应的查找表均为所述tbox查找表;剩余轮加解密运算对应的查找表均为所述maskkey查找表和maskbox查找表。

可以理解,所述sm4加解密中加解密运算通过选择所述tbox查找表进行轮密钥rki运算和可逆变换t运算,具体包括:

对输入的明文或密文数据xi+1、xi+2、xi+3进行异或运算后,再通过所述tbox查找表进行轮密钥rki运算、可逆变换t中的非线性变换τ定义的并行s盒运算和线性变换l定义的移位运算,将通过所述tbox查找表运算的输出结果与明文数据xi进行异或运算。

需要说明的是,轮密钥运算和t变换可以由4个8进32出的tbox查找表来计算。将每轮运算输入的32位数据拆分为4个8位数据,每个8位输入映射为32位输出,将4个32位输出进行异或即为轮密钥运算和t变换后的运算结果。

可以理解,所述sm4加解密中加解密运算通过选择所述maskkey查找表和maskbox查找表进行轮密钥运算,具体包括:

对输入的明文或密文数据xi+1、xi+2、xi+3进行异或运算后,分别通过所述maskkey查找表和maskbox查找表进行轮密钥rki运算,将运算的输出结果再进行可逆变换t中的非线性变换τ定义的并行s盒运算和线性变换l定义的移位运算后,再将可逆变换t运算的输出结果与明文数据xi进行异或运算。

具体的,在通过所述maskkey查找表和maskbox查找表进行轮密钥rki运算时,所述maskkey查找表和maskbox查找表的查找顺序可以互换。

需要说明的是,sm4加密过程和解密过程的结构相同,只是轮密钥的使用顺序相反,解密过程的轮密钥是加密过程的轮密钥的逆序。

具体的,所述构造查找表中还包括:对128为明文或密文数据进行非线性编码保护后构成ps查找表,所述非线性编码保护组合s盒混淆和矩阵混淆;

若采用所述ps查找表对输入的明文或密文数据进行非线性编码保护,则在首轮加解密运算中,通过所述tbox查找表进行轮密钥rki运算和可逆变换t运算时,所述tbox查找表中还设置有抵消所述非线性编码保护中s盒混淆和矩阵混淆的操作。

需要说明的是,在对输入的明文或密文数据进行ps查找表之前,将输入的128位明文或密文数据的后96位拆分为三组32位数据,每组32位数据拆分为4个8位数据,每个8位输入映射为8位输出。

由于,所述tbox查找表比所述maskkey查找表和maskbox查找表资源占用大,在进行sm4加解密的操作时,根据平台资源的大小动态生成所述tbox查找表或所述maskkey查找表和maskbox查找表;当平台资源较大时,则生成的所述tbox查找表的次数增加,当平台资源较小时,则生成的所述maskkey查找表和maskbox查找表的次数增加。通过根据平台资源大小选择不同的查找表,动态调整查找表规模,实现sm4算法在平台资源受限的情况下仍能使用,另一方面在一定程度上通过构造的查找表对密钥进行隐藏,有效保护密钥的安全性。

本发明中tbox查找表的数量选择满足[(m-32*8)/(4096-8)]的最大整数,其中,m为平台分配给查找表的资源,单位为m字节;由于tbox查找表的安全性能更高,因此tbox查找表的数量越多,sm4算法的安全性越高,因此本发明在满足平台资源受限情况下最大限度的保证sm4算法的安全性,实现了平台资源和sm4算法安全性的平衡。

本发明中根据预设分配策略将所述tbox查找表动态安排在32轮加解密运算的两端,通过保证与外界密切接触的加解密运算的安全性来确保sm4算法的安全性。

实施例2

本实施例与实施例1的区别在于:当根据x=floor[(m-32*8)/(4096-8)]计算得到的所述tbox查找表的数量x小于2时,则首轮和尾轮加解密运算对应的查找表均选择为所述tbox查找表,剩余轮加解密运算对应的查找表均选择为所述maskkey查找表和maskbox查找表。

在实际的应用中,在进行算法实现时,第一轮和最后一轮运算使用tbox查找表,剩余30轮运算全部采用maskbox查找表时,加解密查找表资源占用大小少于20kb。

本发明中当根据计算公式得到的所述tbox查找表的个数小于2时,则通过确保首轮和尾轮加解密运算对应的查找表恒为所述tbox查找表,来保证与外界密切接触的加解密运算的安全性来确保sm4算法的安全性。

实施例3

本发明第二方面还提出一种基于查表的sm4算法实现装置,所述sm4算法实现装置包括:查找表生成单元和sm4加解密单元;

所述查找表生成单元,根据平台资源大小动态计算32轮加解密运算中tbox查找表、maskkey查找表和maskbox查找表的个数:

所述tbox查找表的数量x=floor[(m-32*2b)/(a-2b)],所述maskkey查找表和所述maskbox查找表的数量y=32-floor((m-256)/4088);m为平台分配给32轮查找表的资源,单位为m字节;a为每轮tbox查找表的预设资源,单位为字节,b分别为每轮maskkey查找表和maskbox查找表的预设资源,单位为字节;

根据预设匹配策略将x个tbox查找表、y个maskkey查找表和y个maskbox查找表与32轮加解密运算进行匹配,并根据匹配结果分别生成每轮加解密运算对应的tbox查找表或maskkey查找表和maskbox查找表;其中,所述tbox查找表由轮密钥运算和可逆变换t运算组合构造而成;所述maskbox查找表由随机数构成,所述maskkey查找表轮密钥与所述maskbox查找表异或运算构成;

所述sm4加解密单元,进行每轮加解密运算时,直接使用每轮加解密运算对应的tbox查找表或maskkey查找表和maskbox查找表表进行加解密运算。

进一步的,若所述tbox查找表的数量x为偶数,则前x/2轮和后x/2轮加解密运算对应的查找表均选择为所述tbox查找表;剩余轮加解密运算对应的查找表均选择为所述maskkey查找表和maskbox查找表;若所述tbox查找表的数量x为奇数,则前x/2+1轮和后x/2轮加解密运算或者前x/2轮和后x/2+1轮加解密运算对应的查找表均选择为所述tbox查找表;剩余轮加解密运算对应的查找表均选择为所述maskkey查找表和maskbox查找表。

进一步的,当根据x=floor[(m-32*8)/(4096-8)]计算得到的所述tbox查找表的数量x小于2时,则首轮和尾轮加解密运算对应的查找表均选择为所述tbox查找表,剩余轮加解密运算对应的查找表均选择为所述maskkey查找表和maskbox查找表。

进一步的,在通过所述maskkey查找表和maskbox查找表进行轮密钥rki运算时,所述maskkey查找表和maskbox查找表的查找顺序可以互换。

实施例4

本实施例提供一种基于查表的sm4算法实现的电子设备,包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现实施例1-2任一项所述的方法。

实施例5

本实施例提供一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现实施例1-2任一项所述的方法步骤。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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