一种SM4加密、密钥扩展方法、装置、设备及介质转让专利

申请号 : CN201910154930.5

文献号 : CN109981250B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王学进蒋红宇安晓江

申请人 : 北京海泰方圆科技股份有限公司

摘要 :

本发明实施例公开了一种SM4加密、密钥扩展方法、装置、设备及介质,用以优化SM4加密算法,实现海量数据的快速加密。所述SM4加密方法,包括:利用预先生成的轮密钥对待加密的128比特的数据进行32次迭代计算,所述迭代计算为:i=0,1,…,31,其中,RKi为预先生成的轮密钥,表示异或运算,所述T的计算方法为:若T输入为A,则将32次迭代计算的迭代结果作为加密数据。

权利要求 :

1.一种SM4加密方法,其特征在于,包括:利用预先生成的轮密钥对待加密的128比特的数据进行32次迭代计算,所述迭代计算为: 其中,Xi、Xi+1 、Xi+2、Xi+3为第i次迭代的输入数据,Xi+4为第i次迭代的输出数据,RKi为预先生成的轮密钥, 表示异或运算,所述T的计算方法为:若T输入为A, 则其中A1、 表示16比特的二进制整数;

将32次迭代计算的迭代结果作为加密数据。

2.如权利要求1所述的方法,其特征在于,若加密密钥则轮密钥RKi的生成方法为:

FK=(FK0,FK1,FK2,FK3)和CK=(CK0,CK1,…,CK31)均为固定常数,T'的计算方法为:若T'输入为A, 则

3.如权利要求1所述的方法,其特征在于,T1[A1]=L1[BigSbox(A1)],T2[A2]=L2[BigSbox(A2)],其中,T1由BigSbox计算和线性变换L1复合计算得出,T2由BigSbox计算和线性变换L2复合计算得出,BigSbox、L1以及L2均为查表计算。

4.如权利要求3所述的方法,其特征在于,若所述BigSbox的输入为A1,则BigSbox(A1)=B1, 其中a0、b0、 表示8比特的二进制整数。

5.一种SM4密钥扩展方法,其特征在于,包括:若加密密钥 则轮密钥RKi的

生成方法为:

FK=

(FK0,FK1,FK2,FK3)和CK=(CK0,CK1,…,CK31)均为固定常数,T'的计算方法为:若T'输入为A,则 其中A1、 表示16比特的二进制整数。

6.如权利要求5所述的方法,其特征在于,T'1[A1]=L'1[BigSbox(A1)],T'2[A2]=L'2[BigSbox(A2)],其中,T'1由BigSbox计算和线性变换L'1复合计算得出,T'2由BigSbox计算和线性变换L'2复合计算得出,BigSbox、L'1以及L'2均为查表计算。

7.如权利要求6所述的方法,其特征在于,若所述BigSbox的输入为A1,则BigSbox(A1)=B1, 其中a0、b0、 表示8比特的二进制整数。

8.一种SM4加密装置,其特征在于,所述装置包括:计算单元,用于利用预先生成的轮密钥对待加密的128比特的数据进行32次迭代计算,所述迭代计算为: 其中,Xi、Xi+1 、Xi+2、Xi+3为第i次迭代的输入数据,Xi+4为第i次迭代的输出数据,RKi为预先生成的轮密钥,表示异或运算,所述T的计算方法为:若T输入为A, 则其中A1、 表示16比特的二进制整数;

处理单元,用于将32次迭代计算的迭代结果作为加密数据。

9.如权利要求8所述的装置,其特征在于,若加密密钥则所述计算单元采用如下方法生成轮密钥RKi:FK=(FK0,FK1,FK2,FK3)和CK=(CK0,CK1,…,CK31)均为固定常数,T '的计算方法为:若T’输入为A,则

10.如权利要求8所述的装置,其特征在于,T1[A1]=L1[BigSbox(A1)],T2[A2]=L2[BigSbox(A2)],其中,T1由BigSbox计算和线性变换L1复合计算得出,T2由BigSbox计算和线性变换L2复合计算得出,BigSbox、L1以及L2均为查表计算。

11.如权利要求10所述的装置,其特征在于,若所述BigSbox的输入为A1,则BigSbox(A1)=B1, 其中a0、b0、 表示8比特的二进制整数。

12.一种SM4密钥扩展装置,其特征在于,所述装置包括:处理单元,用于在加密密钥 的条

件下 ,采 用如下方 法生成 轮密 钥RK i :FK=(FK0,FK1,FK2,FK3)和CK=(CK0,CK1,…,CK31)均为固定常数,T'的计算方法为:若T'输入为A, 则 其

中A1、 表示16比特的二进制整数。

13.如权利要求12所述的装置,其特征在于,T'1[A1]=L'1[BigSbox(A1)],T'2[A2]=L'2[BigSbox(A2)],其中,T'1由BigSbox计算和线性变换L'1复合计算得出,T'2由BigSbox计算和线性变换L'2复合计算得出,BigSbox、L'1以及L'2均为查表计算。

14.如权利要求13所述的装置,其特征在于,若所述BigSbox的输入为A1,则BigSbox(A1)=B1, 其中a0、b0、 表示8比特的二进制整数。

15.一种SM4密码优化设备,其特征在于,包括:至少一个处理器、至少一个存储器以及存储在所述存储器中的计算机程序指令,当所述计算机程序指令被所述处理器执行时实现如权利要求1-4中任一项所述的方法或者如权利要求5-7中任一项所述的方法。

16.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,当所述计算机程序指令被处理器执行时实现如权利要求1-4中任一项所述的方法或者如权利要求5-7中任一项所述的方法。

说明书 :

一种SM4加密、密钥扩展方法、装置、设备及介质

技术领域

[0001] 本发明涉及计算机安全技术领域,尤其是涉及一种SM4加密、密钥扩展方法、装置、设备及介质。

背景技术

[0002] SM4是一个分组密码算法,主要用于数据加密,其分组长度与密钥长度均为128比特,加密算法与密钥扩展算法都采用32轮非线性迭代结构。
[0003] 现有SM4加密算法中的T置换的计算方法为T(·)=L(τ(·)),其中,非线性变换τ由4个并行的S盒构成,设输入为 输出为则(b0,b1,b2,b3)=τA=(Sbox(a0),Sbox(a1),Sbox(a2),
Sbox(a3))。
[0004] 非线性变换τ的输出是线性变换L的输入,设L的输入为 输出为则 从上述计算过程可以看
出,现有SM4加密算法中T置换的计算共需4次查表计算、4次循环左移计算和4次异或运算,计算量大且计算复杂。
[0005] 随着密码在云计算与大数据中的应用,人们对密码算法的性能提出了更高的要求,期望能够快速实现海量数据的加密,但是现有SM4加密算法计算量大且计算复杂,无法满足海量数据快速加密的需求。

发明内容

[0006] 本发明实施例一种SM4加密、密钥扩展方法、装置、设备及介质,用以优化SM4加密算法,提高计算效率,实现海量数据的快速加密。
[0007] 第一方面,本发明实施例提供一种SM4加密方法,包括:
[0008] 利用预先生成的轮密钥对待加密的128比特的数据进行32次迭代计算,迭代计算为: i=0,1,…,31,其中,RKi为预先生成的轮密钥, 表示异或运算,T的计算方法为:若T输入为A, 则
[0009] 将32次迭代计算的迭代结果作为加密数据。
[0010] 本发明实施例提供的SM4加密方法,通过构建T1和T2,将SM4加密算法中合成置换T的计算进行分解,与现有SM4加密算法中的线性变换需要4次查表、4次循环左移和4次异或运算相比,将SM4加密算法中的线性变换简化为仅需两次查表和一次异或运算,从而简化了SM4加密算法,提高了计算效率,进而能够实现海量数据的快速加密。
[0011] 在一种可能的实施方式中,本发明实施例提供的方法中,若加密密钥则轮密钥RKi的生成方法为:
i=0,1,…,31,FK=(FK0,FK1,FK2,FK3)和CK=(CK0,
CK1,…,CK31)均为固定常数,T'的计算方法为:若T'输入为A, 则
[0012] 在一种可能的实施方式中,本发明实施例提供的方法中,T1[A1]=L1[BigSbox(A1)],T2[A2]=L2[BigSbox(A2)],其中,T1由BigSbox计算和线性变换L1复合计算得出,T2由BigSbox计算和线性变换L2复合计算得出,BigSbox、L1以及L2均为查表计算。
[0013] 在一种可能的实施方式中,本发明实施例提供的方法中,若BigSbox的输入为A1,则BigSbox(A1)=B1,
[0014] 第二方面,本发明实施例提供一种SM4密钥扩展方法,包括:
[0015] 若加密密钥 则轮密钥RKi的生成方法为:
i=0,1,…,31,FK=(FK0,
FK1,FK2,FK3)和CK=(CK0,CK1,…,CK31)均为固定常数,T'的计算方法为:若T'输入为A,则
[0016] 本发明实施例提供的SM4密钥扩展方法,通过构建T'1和T'2,将SM4密钥扩展算法中合成置换T'的计算进行分解,与现有SM4密钥扩展算法中的线性变换需要4次查表、4次循环左移和4次异或运算相比,将SM4密钥扩展算法中的线性变换简化为仅需两次查表和一次异或运算,从而简化了SM4密钥扩展算法,提高了计算效率,进而能够实现海量数据的快速加密。
[0017] 在一种可能的实施方式中,本发明实施例提供的方法中,T'1[A1]=L'1[BigSbox(A1)],T'2[A2]=L'2[BigSbox(A2)],其中,T'1由BigSbox计算和线性变换L'1复合计算得出,T'2由BigSbox计算和线性变换L'2复合计算得出,BigSbox、L'1以及L'2均为查表计算。
[0018] 在一种可能的实施方式中,本发明实施例提供的方法中,若BigSbox的输入为A1,则BigSbox(A1)=B1,
[0019] 第三方面,本发明实施例提供一种SM4加密装置,包括:
[0020] 计算单元,用于利用预先生成的轮密钥对待加密的128比特的数据进行32次迭代计算,所述迭代计算为: i=0,1,…,31,其中,RKi为预先生成的轮密钥, 表示异或运算,所述T的计算方法为:若T输入为A,

[0021] 处理单元,用于将32次迭代计算的迭代结果作为加密数据。
[0022] 在一种可能的实施方式中,本发明实施例提供的装置中,若加密密钥则计算单元采用如下方法生成轮密钥
RKi:
i=0,1,…,31,FK=(FK0,FK1,FK2,FK3)
和CK=(CK0,CK1,…,CK31)均为固定常数,T'的计算方法为:若T'输入为A,

[0023] 在一种可能的实施方式中,本发明实施例提供的装置中,T1[A1]=L1[BigSbox(A1)],T2[A2]=L2[BigSbox(A2)],其中,T1由BigSbox计算和线性变换L1复合计算得出,T2由BigSbox计算和线性变换L2复合计算得出,BigSbox、L1以及L2均为查表计算。
[0024] 在一种可能的实施方式中,本发明实施例提供的装置中,若BigSbox的输入为A1,则BigSbox(A1)=B1,
[0025] 第四方面,本发明实施例提供一种SM4密钥扩展装置,包括:
[0026] 处理单元,用于在加密密钥的条件下,采用如下方法生成轮密钥RKi:
i=0 ,
1,…,31,FK=(FK0,FK1,FK2,FK3)和CK=(CK0,CK1,…,CK31)均为固定常数,T'的计算方法为:
若T'输入为A, 则
[0027] 在一种可能的实施方式中,本发明实施例提供的装置中,T'1[A1]=L'1[BigSbox(A1)],T'2[A2]=L'2[BigSbox(A2)],其中,T'1由BigSbox计算和线性变换L'1复合计算得出,T'2由BigSbox计算和线性变换L'2复合计算得出,BigSbox、L'1以及L'2均为查表计算。
[0028] 在一种可能的实施方式中,本发明实施例提供的装置中,若BigSbox的输入为A1,则BigSbox(A1)=B1,
[0029] 第五方面,本申请实施例提供了一种SM4密码优化设备,包括:至少一个处理器、至少一个存储器以及存储在存储器中的计算机程序指令,当计算机程序指令被处理器执行时实现本申请实施例第一方面或者第二方面提供的方法。
[0030] 第六方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序指令,当计算机程序指令被处理器执行时实现本申请实施例第一方面或者第二方面提供的方法。

附图说明

[0031] 图1为本发明实施例提供的一种SM4加密方法的示意流程图;
[0032] 图2为本发明实施例提供的一种SM4加密装置的结构示意图;
[0033] 图3为本发明实施例提供的一种SM4密码优化设备的结构示意图。

具体实施方式

[0034] 下面结合附图,对本发明实施例提供的SM4加密、密钥扩展方法、装置、设备及介质的具体实施方式进行详细地说明。
[0035] 如图1所示,本发明实施例提供的SM4加密方法,其步骤可以包括:
[0036] S11、利用预先生成的轮密钥对待加密的128比特的数据进行32次迭代计算,迭代计算为: i=0,1,…,31,其中,RKi为预先生成的轮密钥, 表示异或运算,T的计算方法为:若T输入为A, 则
[0037] 具体实施时,轮密钥可以采用现有技术的方法生成,也可以采用本发明下述实施例提供的轮密钥扩展方法生成,本发明实施例对此不做限定。
[0038] 具体实施时,若加密密钥则轮密钥RKi的生成方法为:
i=0,1,…,31,FK
=(FK0,FK1,FK2,FK3)和CK=(CK0,CK1,…,CK31)均为固定常数,T’的计算方法为:若T'输入为A, 则
[0039] S12、将32次迭代计算的迭代结果作为加密数据。
[0040] 具体实施时,T的计算方法推导过程如下:
[0041] 在T置换中,T(·)=L(τ(·)),首先针对τ,设输入为输出为 则(b0,b1,b2,b3)=τA=(Sbox(a0),Sbox(a1),Sbox
(a2),Sbox(a3))。
[0042] 构造一个16比特输入16比特输出的置换表BigSbox,该置换表BigSbox构造如下:设BigSbox的输入为A1=(a0,a1),输出为B1=(b0,b1),其中,a0,a1,b0,b1均为8比特字节,则BigSbox[a0,a1]=(b0,b1),其中b0=Sbox[a0],b1=Sbox[a1],同理可得,输入为A2=(a2,a3),输出为B2=(b2,b3),则BigSbox[a2,a3]=(b2,b3)。
[0043] 综上可得,B=(B1,B2)=(b0,b1,b2,b3)=τA=(BigSbox[a0,a1],BigSbox[a2,a3]),τA的计算需要查2次BigSbox表。
[0044] 在T置换中,线性变换L具有如下性质:假设 则
[0045] 假设 则根据线性变换的性质 构造两个大小
为216=65536的线性变换表L1与L2,这两张表输入均为16比特,输出均为32比特,则L1[B1]=L(B1*65536);L2[B2]=L(B2)。
[0046] 组合L1和BigSbox表得到T1表,组合L2和BigSbox表得到T2表,具体构造如下:假设则T1[a]=L1[BigSbox[a]];T2[a]=L2[BigSbox[a]],也即T的计算为:若输入为 则有
[0047] 结合本发明上述实施例提供的SM4加密方法,本发明实施例还提供一种SM4密钥扩展方法,下面对该SM4密钥扩展方法的具体实施方式进行详细地说明。
[0048] 本发明实施例提供的一种SM4密钥扩展方法,其具体步骤可以包括:
[0049] 若加密密钥 则轮密钥RKi的生成方法为:
i=0,1,…,31,其中 表示异或运算,FK
=(FK0,FK1,FK2,FK3)和CK=(CK0,CK1,…,CK31)均为固定常数,具体实施时,T’的计算方法为:若T'输入为A, 则
[0050] 具体实施时,T'的计算方法推导过程如下:
[0051] 在T’置换中,T'(·)=L'(τ(·)),首先针对τ,设输入为输出为 则(b0,b1,b2,b3)=τA=(Sbox(a0),Sbox(a1),Sbox(a2),
Sbox(a3))。
[0052] 构造一个16比特输入16比特输出的置换表BigSbox,该置换表BigSbox构造如下:设BigSbox的输入为A1=(a0,a1),输出为B1=(b0,b1),其中,a0,a1,b0,b1均为8比特字节,则BigSbox[a0,a1]=(b0,b1).其中b0=Sbox[a0],b1=Sbox[a1],同理可得,输入为A2=(a2,a3),输出为B2=(b2,b3),则BigSbox[a2,a3]=(b2,b3)。
[0053] 综上可得,B=(B1,B2)=(b0,b1,b2,b3)=τA=(Big BigSbox[a0,a1],Big BigSbox[a2,a3]),τA的计算需要查2次BigSbox表。
[0054] 在T'置换中,线性变换L'具有如下性质:假设 则
[0055] 假设 则根据线性变换的性质 构造两个大小
为216=65536的线性变换表L'1与L'2,这两张表输入均为16比特,输出均为32比特,则L'1[B1]=L'(B1*65536);L'2[B2]=L'(B2)。
[0056] 组合L'1和BigSbox表得到T'1表,组合L'2和BigSbox表得到T'2表,具体构造如下:假设 则T'1[a]=L'1[BigSbox[a]];T'2[a]=L'2[BigSbox[a]],也即T'的计算
为:输入为 则
[0057] 基于相同的发明构思,本发明实施例还提供一种SM4加密装置。
[0058] 如图2所示,本发明实施例提供的一种SM4加密装置,包括:
[0059] 计算单元201,用于利用预先生成的轮密钥对待加密的128比特的数据进行32次迭代计算,所述迭代计算为: i=0,1,…,31,其中,RKi为预先生成的轮密钥, 表示异或运算,所述T的计算方法为:若T输入为A,

[0060] 处理单元202,用于将32次迭代计算的迭代结果作为加密数据。
[0061] 在一种可能的实施方式中,本发明实施例提供的装置中,若加密密钥则计算单元采用如下方法生成轮密钥
RKi:
i=0,1,…,31,FK=(FK0,FK1,FK2,FK3)
和CK=(CK0,CK1,…,CK31)均为固定常数,T'的计算方法为:若T'输入为A,

[0062] 在一种可能的实施方式中,本发明实施例提供的装置中,T1[A1]=L1[BigSbox(A1)],T2[A2]=L2[BigSbox(A2)],其中,T1由BigSbox计算和线性变换L1复合计算得出,T2由BigSbox计算和线性变换L2复合计算得出,BigSbox、L1以及L2均为查表计算。
[0063] 在一种可能的实施方式中,本发明实施例提供的装置中,若BigSbox的输入为A1,则BigSbox(A1)=B1,
[0064] 本发明实施例还提供一种SM4密钥扩展装置,包括:
[0065] 处理单元,用于在加密密钥的条件下,采用如下方法生成轮密钥RKi:
i=0 ,
1,…,31,FK=(FK0,FK1,FK2,FK3)和CK=(CK0,CK1,…,CK31)均为固定常数,其中,T'的计算方法为:若T'输入为A, 则
[0066] 在一种可能的实施方式中,本发明实施例提供的装置中,T'1[A1]=L'1[BigSbox(A1)],T'2[A2]=L'2[BigSbox(A2)],其中,T'1由BigSbox计算和线性变换L'1复合计算得出,T'2由BigSbox计算和线性变换L'2复合计算得出,BigSbox、L'1以及L'2均为查表计算。
[0067] 在一种可能的实施方式中,本发明实施例提供的装置中,若BigSbox的输入为A1,则BigSbox(A1)=B1,
[0068] 另外,结合图1-图2描述的本申请实施例的SM4加密、密钥扩展方法和装置可以由SM4密码优化设备来实现。图3示出了本申请实施例提供的SM4密码优化设备的硬件结构示意图。
[0069] SM4密码优化设备可以包括处理器301以及存储有计算机程序指令的存储器302。
[0070] 具体地,上述处理器301可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本发明实施例的一个或多个集成电路。
[0071] 存储器302可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器302可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器302可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器302可在数据处理装置的内部或外部。在特定实施例中,存储器302是非易失性固态存储器。在特定实施例中,存储器302包括只读存储器(ROM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。
[0072] 处理器301通过读取并执行存储器302中存储的计算机程序指令,以实现上述实施例中的任意一种SM4加密方法或者SM4密钥扩展方法。
[0073] 在一个示例中,SM4密码优化设备还可包括通信接口303和总线310。其中,如图3所示,处理器301、存储器302、通信接口303通过总线310连接并完成相互间的通信。
[0074] 通信接口303,主要用于实现本发明实施例中各模块、装置、单元和/或设备之间的通信。
[0075] 总线310包括硬件、软件或两者,将SM4密码优化设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线310可包括一个或多个总线。尽管本发明实施例描述和示出了特定的总线,但本发明考虑任何合适的总线或互连。
[0076] 该SM4密码优化设备可以执行本发明实施例中的SM4加密方法或者SM4密钥扩展方法,从而实现结合图1描述的SM4加密方法或者SM4密钥扩展方法。
[0077] 另外,结合上述实施例中的SM4密码优化方法,本发明实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种SM4加密方法或者SM4密钥扩展方法。
[0078] 本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0079] 本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0080] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0081] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0082] 尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
[0083] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。