CN111865559B - 一种sm4算法快速实现方法及装置 - Google Patents
一种sm4算法快速实现方法及装置 Download PDFInfo
- Publication number
- CN111865559B CN111865559B CN202010546732.6A CN202010546732A CN111865559B CN 111865559 B CN111865559 B CN 111865559B CN 202010546732 A CN202010546732 A CN 202010546732A CN 111865559 B CN111865559 B CN 111865559B
- Authority
- CN
- China
- Prior art keywords
- sbox
- end storage
- transformation
- storage device
- lookup tables
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000006243 chemical reaction Methods 0.000 claims abstract description 44
- 230000008569 process Effects 0.000 claims abstract description 29
- 230000009466 transformation Effects 0.000 claims description 119
- 230000015572 biosynthetic process Effects 0.000 claims description 35
- 238000003786 synthesis reaction Methods 0.000 claims description 35
- 238000010276 construction Methods 0.000 claims description 24
- 238000013329 compounding Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 abstract description 7
- 230000006870 function Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
技术领域
本发明涉及计算机安全技术领域,具体涉及一种SM4算法快速实现方法及装置。
背景技术
SM4算法是一种分组密码算法。其分组长度为128bit,密钥长度也为128bit。加密算法与密钥扩展算法均采用32轮非线性迭代结构,以字(32位)为单位进行加密运算,每一次迭代运算均为一轮变换函数F,输入数据:(X0,X1,X2,X3)。其中T为一个合成变换,由非线性变换τ和线性变换L复合而成,T(.)=L(τ(.)),先S盒变换,再L变换。
目前,常用的X86结构是小端模式,而KEIL C51则为大端模式。很多的ARM,DSP都为小端模式,有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。大端存储与小端存储模式主要指的是数据在计算机中存储的两种字节优先顺序,小端存储指从内存的低地址开始,先存储数据的低序字节再存高序字节;相反,大端存储指从内存的低地址开始,先存储数据的高序字节再存储数据的低序字节。不管是大端还是小端存储,计算机在内存中存放数据的顺序都是从低地址到高地址,所不同的是首先取低字节的数据存放在低地址还是取高字节数据存放在低地址。
在整数大端存储的设备中,待加密的字节串在内存中的存储顺序与整数是一致的,运算时不需要将加密的字节串转换为整数,直接使用指针运算即可,而在整数小端存储的设备中,在进行轮运算之前,还需要将字节串转换为整数再进行后续运算,必然会导致SM4算法的运算速度降低。
因此如何设计一种SM4算法快速实现方案,能够兼容大端存储和小端存储设备,使得在小端存储设备中进行数据加解密时不需要进行数据类型的转换,提高算法的运算速度是目前急需解决的问题。
发明内容
本发明针对上述问题,有必要提供一种SM4算法快速实现方法及装置,其能够保证兼容大端存储和小端存储设备,使得在小端存储设备中进行数据加解密时不需要进行数据类型的转换,提高算法的运算速度。
本发明第一方面提出一种SM4算法快速实现方法,包括:所述SM4算法快速实现方法包括:查找表构造过程和数据加密过程;
所述查找表构造过程:
以(b0,b1,b2,b3)作为大端存储设备中合成变换T运算的输入参数,进行合成变换T运算,获得运算结果T(b0,b1,b2,b3);
其中,合成变换T是由非线性变换τ和线性变换L复合而成,T(.)=L(τ(.)),τ为由4个并行的S盒构成的非线性变换,非线性变换τ的输出是线性变换L的输入;
依据T(b0,b1,b2,b3)的结果信息分别构造生成大端存储设备的T变换查找表L0、L1、L2和L3;
对大端存储设备的所述T变换查找表L0、L1、L2和L3进行R变换后,分别构造生成小端存储设备的T变换查找表L0’、L1’、L2’和L3’;
所述数据加密过程:
利用预先生成的轮密钥rk对所述待加密的输入数据进行32次迭代运算后生成数据密文,每一次迭代运算均为一次轮函数:
进一步的,在对待加密的输入数据进行迭代加密运算之前,还包括数据转换过程;
所述数据转换过程包括:
对于大端存储设备,转换后的数据为:X0=(a0,a1,a2,a3),X1=(a4,a5,a6,a7),X2=(a8,a9,a10,a11),X3=(a12,a13,a14,a15);
对于小端存储设备,转换后的数据为:X0=(a3,a2,a1,a0),X1=(a7,a6,a5,a4),X2=(a11,a10,a9,a8),X3=(a15,a14,a13,a12)。
进一步的,所述查找表构造过程中,依据T(b0,b1,b2,b3)的结果信息分别构造生成大端存储设备的T变换查找表L0、L1、L2和L3具体为:
依据L(Sbox(b0),0,0,0)、L(0,Sbox(b1),0,0)、L(0,0,Sbox(b2),0)、L(0,0,0,Sbox(b3))的数据信息分别构造生成大端存储设备的T变换查找表L0、L1、L2和L3;
其中,
L0={L(Sbox(b0),0,0,0)|b0∈[0,255]};
L1={L(0,Sbox(b1),0,0)|b1∈[0,255]};
L2={L(0,0,Sbox(b2),0)|b2∈[0,255]};
L3={L(0,0,0,Sbox(b3))|b3∈[0,255]};
对大端存储设备的所述T变换查找表L0、L1、L2和L3进行R变换后,分别构造生成小端存储设备的T变换查找表L0’、L1’、L2’和L3’具体为:
对L(Sbox(b0),0,0,0)、L(0,Sbox(b1),0,0)、L(0,0,Sbox(b2),0)、L(0,0,0,Sbox(b3))的数据信息依次进行R变化后,分别构造生成小端存储设备的T变换查找表L0’、L1’、L2’和L3’;
其中,
L0’={R(L(Sbox(b0),0,0,0))|b0∈[0,255]};
L1’={R(L(0,Sbox(b1),0,0))|b1∈[0,255]};
L2’={R(L(0,0,Sbox(b2),0))|b2∈[0,255]};
L3’={R(L(0,0,0,Sbox(b3)))|b3∈[0,255]}。
进一步的,在构造生成查找表时,合成变换T运算的输入参数中的每个字节生成的表格有256项,4个字节共1024项,4个字节各自对应生成相应的查找表,对于大端存储设备,b0,b1,b2,b3分别对应查找表L0、L1、L2和L3;对于小端存储设备,b3,b2,b1,b0分别对应查找表L0’、L1’、L2’和L3’。
本发明第二方面还提出一种SM4算法快速实现装置,所述SM4算法快速实现装置包括:运算单元、构造单元和处理单元;
所述运算单元,用于在大端存储设备中,以(b0,b1,b2,b3)作为合成变换T运算的输入参数,进行合成变换T运算,获得运算结果T(b0,b1,b2,b3);其中,合成变换T是由非线性变换τ和线性变换L复合而成,T(.)=L(τ(.)),τ为由4个并行的S盒构成的非线性变换,非线性变换τ的输出是线性变换L的输入;待加密的输入数据为(X1,X2,X3,X4),大端存储设备中输入参数 轮密钥rk=(r0,r1,r2,r3);
所述构造单元,用于依据T(b0,b1,b2,b3)的结果信息分别构造生成大端存储设备的T变换查找表L0、L1、L2和L3;还用于对大端存储设备的所述T变换查找表L0、L1、L2和L3进行R变换后,分别构造生成小端存储设备的T变换查找表L0’、L1’、L2’和L3’;其中,L′(τ(.))=R(L(τ(.)));
所述处理单元,用于在大端存储设备中对待加密的输入数据进行迭代加密运算时,通过构造的所述查找表L0、L1、L2和L3计算还用于在小端存储设备中对待加密的输入数据进行迭代加密运算时,通过构造的所述查找表L0’、L1’、L2’和L3’计算 以及用于利用预先生成的轮密钥rk对所述待加密的输入数据进行32次迭代运算后生成数据密文,每一次迭代运算均为一次轮函数:
进一步的,所述SM4算法快速实现装置还包括转换单元;
对于大端存储设备,转换后的数据为:X0=(a0,a1,a2,a3),X1=(a4,a5,a6,a7),X2=(a8,a9,a10,a11),X3=(a12,a13,a14,a15);
对于小端存储设备,转换后的数据为:X0=(a3,a2,a1,a0),X1=(a7,a6,a5,a4),X2=(a11,a10,a9,a8),X3=(a15,a14,a13,a15)。
进一步的,所述运算单元在大端存储设备中,计算生成T(a0,a1,a2,a3)的结果信息具体为:
进一步的,所述构造单元依据T(b0,b1,b2,b3)的结果信息分别构造生成大端存储设备的T变换查找表L0、L1、L2和L3具体为:
依据L(Sbox(b0),0,0,0)、L(0,Sbox(b1),0,0、L(0,0,Sbox(b2),0)、L(0,0,0,Sbox(b3))的数据信息分别构造生成大端存储设备的T变换查找表L0、L1、L2和L3;
其中,
L0={L(Sbox(b0),0,0,0)|b0∈[0,255]};
L1={L(0,Sbox(b1),0,0)|b1∈[0,255]};
L2={L(0,0,Sbox(b2),0)|b2∈[0,255]};
L3={L(0,0,0,Sbox(b3))|b3∈[0,255]};
所述构造单元对大端存储设备的所述T变换查找表L0、L1、L2和L3进行R变换后,分别构造生成小端存储设备的T变换查找表L0’、L1’、L2’和L3’具体为:
对L(Sbox(b0),0,0,0)、L(0,Sbox(b1),0,0)、L(0,0,Sbox(b2),0)、L(0,0,0,Sbox(b3))的数据信息依次进行R变化后,分别构造生成小端存储设备的T变换查找表L0’、L1’、L2’和L3’;
其中,
L0’={R(L(Sbox(b0),0,0,0))|b0∈[0,255]};
L1’={R(L(0,Sbox(b1),0,0))|b1∈[0,255]};
L2’={R(L(0,0,Sbox(b2),0))|b2∈[0,255]};
L3’={R(L(0,0,0,Sbox(b3)))|b3∈[0,255]}。
进一步的,在所述构造单元中,合成变换T运算的输入参数中的每个字节生成的表格有256项,4个字节共1024项,4个字节各自对应生成相应的查找表,对于大端存储设备,b0,b1,b2,b3分别对应查找表L0、L1、L2和L3;对于小端存储设备,b3,b2,b1,b0分别对应查找表L0’、L1’、L2’和L3’。
本发明具有突出的实质性特点和显著的进步,具体的说:通过依据SM4算法实现过程构造大端存储设备查找表L0、L1、L2和L3以及对大端存储设备的所述T变换查找表L0、L1、L2和L3进行R变换后,分别构造生成小端存储设备的T变换查找表L0’、L1’、L2’和L3’,将SM4加密算法中合成变换T的计算进行优化,实现一份代码能够兼容大端存储设备和小端存储设备,使得在小端存储设备中进行数据加密时不需要进行数据类型的转换,直接通过构造的查找表即可获知,优化SM4加密算法,提高SM4加密算法的运算速度,实现数据的快速加密。
本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1示出本发明一种SM4算法快速实现方法流程图;
图2示出本发明一种SM4算法轮函数示意图;
图3示出本发明一种SM4算法快速实现装置结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,当一个组件被认为是“连接”另一个组件,它可以是直接连接到另一个组件或者可能同时存在居中组件。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
如图1所示,本发明第一方面提出一种SM4算法快速实现方法,包括:所述SM4算法快速实现方法包括:查找表构造过程和数据加密过程;
所述查找表构造过程:
以(b0,b1,b2,b3)作为大端存储设备中合成变换T运算的输入参数,进行合成变换T运算,获得运算结果T(b0,b1,b2,b3);
其中,合成变换T是由非线性变换τ和线性变换L复合而成,T(.)=L(τ(.)),τ为由4个并行的S盒构成的非线性变换,非线性变换τ的输出是线性变换L的输入;
依据T(b0,b1,b2,b3)的结果信息分别构造生成大端存储设备的T变换查找表L0、L1、L2和L3;
对大端存储设备的所述T变换查找表L0、L1、L2和L3进行R变换后,分别构造生成小端存储设备的T变换查找表L0’、L1’、L2’和L3’;
所述数据加密过程:
利用预先生成的轮密钥rk对所述待加密的输入数据进行32次迭代运算后生成数据密文,每一次迭代运算均为一次轮函数:
具体的,在进行32次迭代运算时,每一次迭代运算的输入参数X0的取值均为上一轮迭代运算的输入参数X1,每一次迭代运算的输入参数X1的取值均为上一轮迭代运算的输入参数X2,每一次迭代运算的输入参数X2的取值均为上一轮迭代运算的输入参数X3,每一次迭代运算的输入参数X3的取值均为上一轮迭代运算的运算结果值,每一次迭代运算的输入参数rk均为新的迭代轮密钥。
数据解密过程与数据加密过程相同,只是将轮密钥的使用顺序进行逆向。
具体的,在对待加密的输入数据进行迭代加密运算之前,还包括数据转换过程;
所述数据转换过程包括:
对于大端存储设备,转换后的数据为:x0=(a0,a1,a2,a3),X1=(a4,a5,a6,a7),X2=(a8,a9,a10,a11),X3=(a12,a13,a14,a15);
对于小端存储设备,转换后的数据为:X0=(a3,a2,a1,a0),X1=(a7,a6,a5,a4),X2=(a11,a10,a9,a8),X3=(a15,a14,a13,a12)。
具体的,所述查找表构造过程中,依据T(b0,b1,b2,b3)的结果信息分别构造生成大端存储设备的T变换查找表L0、L1、L2和L3具体为:
依据L(Sbox(b0),0,0,0)、L(0,Sbox(b1),0,0)、L(0,0,Sbox(b2),0)、L(0,0,0,Sbox(b3))的数据信息分别构造生成大端存储设备的T变换查找表L0、L1、L2和L3;
其中,
L0={L(Sbox(b0),0,0,0)|b0∈[0,255]};
L1={L(0,Sbox(b1),0,0)|b1∈[0,255]};
L2={L(0,0,Sbox(b2),0)|b2∈[0,255]};
L3={L(0,0,0,Sbox(b3))|b3∈[0,255]};
依据大端存储设备的所述T变换查找表L0、L1、L2和L3进行R变换后分别构造生成小端存储设备的T变换查找表L0’、L1’、L2’和L3’具体为:
对大端存储设备的所述T变换查找表L0、L1、L2和L3进行R变换后,分别构造生成小端存储设备的T变换查找表L0’、L1’、L2’和L3’具体为:
对L(Sbox(b0),0,0,0)、L(0,Sbox(b1),0,0)、L(0,0,Sbox(b2),0)、L(0,0,0,Sbox(b3))的数据信息依次进行R变化后,分别构造生成小端存储设备的T变换查找表L0’、L1’、L2’和L3’;
其中,
L0’={R(L(Sbox(b0),0,0,0))|b0∈[0,255]};
L1’={R(L(0,Sbox(b1),0,0))|b1∈[0,255]};
L2’={R(L(0,0,Sbox(b2),0))|b2∈[0,255]};
L3’={R(L(0,0,0,Sbox(b3)))|b3∈[0,255]}。
具体的,在构造生成查找表时,合成变换T运算的输入参数中的每个字节生成的表格有256项,4个字节共1024项,4个字节各自对应生成相应的查找表,对于大端存储设备,b0,b1,b2,b3分别对应查找表L0、L1、L2和L3;对于小端存储设备,b3,b2,b1,b0分别对应查找表L0’、L1’、L2’和L3’。
如图2所示,如图2所示,为大端存储设备中的SM4轮函数加密流程,其中右半部分为合成变换T运算,合成变换T运算的输入数据为:
X1=(a4,a5,a6,a7),X2=(a8,a9,a10,a11),X3=(a12,a13,a14,a15),
(b0’,b1’,b2’,b3’)=τ(b0,b1,b2,b3)=(Sbox(b0),Sbox(b1),Sbox(b2),Sbox(b3));
对于小端存储设备,合成变换T运算的输入数据为:
(b3’,b2’,b1’,b0’)=τ(b3,b2,b1,b0)=(Sbox(b3),Sbox(b2),Sbox(b1),Sbox(b0));
小端存储设备与大端存储设备相比,内存中数据的整数表示存在映射关系R,所以可以将SM4算法中的FK,CK等初始值和中间值通过映射R进行变换,使用变换后的值进行运算,则在小端存储设备上的最终运算结果在内存中的表示与大端存储设备是一致的。因此,小端存储设备上的查找表可以通过对大端存储设备上查找表做R变换获得。
如图3所示,本发明第二方面还提出一种SM4算法快速实现装置包括:运算单元、构造单元和处理单元;
所述运算单元,用于在大端存储设备中,以(b0,b1,b2,b3)作为合成变换T运算的输入参数,进行合成变换T运算,获得运算结果T(b0,b1,b2,b3);其中,合成变换T是由非线性变换τ和线性变换L复合而成,T(.)=L(τ(.)),τ为由4个并行的S盒构成的非线性变换,非线性变换τ的输出是线性变换L的输入;待加密的输入数据为(X1,X2,X3,X4),大端存储设备中输入参数 轮密钥rk=(r0,r1,r2,r3);
所述构造单元,用于依据T(b0,b1,b2,b3)的结果信息分别构造生成大端存储设备的T变换查找表L0、L1、L2和L3;还用于对大端存储设备的所述T变换查找表L0、L1、L2和L3进行R变换后,分别构造生成小端存储设备的T变换查找表L0’、L1’、L2’和L3’;其中,L’(τ(.))=R(L(τ(.)));
所述处理单元,用于在大端存储设备中对待加密的输入数据进行迭代加密运算时,通过构造的所述查找表L0、L1、L2和L3计算还用于在小端存储设备中对待加密的输入数据进行迭代加密运算时,通过构造的所述查找表L0’、L1’、L2’和L3’计算 以及用于利用预先生成的轮密钥rk对所述待加密的输入数据进行32次迭代运算后生成数据密文,每一次迭代运算均为一次轮函数:
具体的,所述SM4算法快速实现装置还包括转换单元;
对于大端存储设备,转换后的数据为:X0=(a0,a1,a2,a3),X1=(a4,a5,a6,a7),X2=(a8,a9,a10,a11),X3=(a12,a13,a14,a15);
对于小端存储设备,转换后的数据为:X0=(a3,a2,a1,a0),X1=(a7,a6,a5,a4),X2=(a11,a10,a9,a8),X3=(a15,a14,a13,a15)。
具体的,所述运算单元在大端存储设备中,计算生成T(a0,a1,a2,a3)的结果信息具体为:
具体的,所述构造单元依据T(b0,b1,b2,b3)的结果信息分别构造生成大端存储设备的T变换查找表L0、L1、L2和L3具体为:
依据L(Sbox(b0),0,0,0)、L(0,Sbox(b1),0,0、L(0,0,Sbox(b2),0)、L(0,0,0,Sbox(b3))的数据信息分别构造生成大端存储设备的T变换查找表L0、L1、L2和L3;
其中,
L0={L(Sbox(b0),0,0,0)|b0∈[0,255]};
L1={L(0,Sbox(b1),0,0)|b1∈[0,255]};
L2={L(0,0,Sbox(b2),0)|b2∈[0,255]};
L3={L(0,0,0,Sbox(b3))|b3∈[0,255]};
所述构造单元对大端存储设备的所述T变换查找表L0、L1、L2和L3进行R变换后,分别构造生成小端存储设备的T变换查找表L0’、L1’、L2’和L3’具体为:
对L(Sbox(b0),0,0,0)、L(0,Sbox(b1),0,0)、L(0,0,Sbox(b2),0)、L(0,0,0,Sbox(b3))的数据信息依次进行R变化后,分别构造生成小端存储设备的T变换查找表L0’、L1’、L2’和L3’;
其中,
L0’={R(L(Sbox(b0),0,0,0))|b0∈[0,255]};
L1’={R(L(0,Sbox(b1),0,0))|b1∈[0,255]};
L2’={R(L(0,0,Sbox(b2),0))|b2∈[0,255]};
L3’={R(L(0,0,0,Sbox(b3)))|b3∈[0,255]}。
具体的,在所述构造单元中,合成变换T运算的输入参数中的每个字节生成的表格有256项,4个字节共1024项,4个字节各自对应生成相应的查找表,对于大端存储设备,b0,b1,b2,b3分别对应查找表L0、L1、L2和L3;对于小端存储设备,b3,b2,b1,b0分别对应查找表L0’、L1’、L2’和L3’。
在具体的实施例中,对于大端存储设备,设合成变换T运算的输入参数是32位整数,B=0x1C8DAC72=(0x1C,0x8D,0xAC,0x72)即:b0=0x1C,b1=0x8D,b2=0xAC,b3=0x72,
通过S盒查表可知:
Sbox(0x1C)=0x49,Sbox(0x8D)=0x61,
Sbox(0xAC)=0x0D,Sbox(0x72)=0x46
则,可得:
L(Sbox(b0),0,0,0)=L(0x49,0,0,0)=L(0x49000000)=0x6d482525;
L(0,Sbox(b1),0,0)=L(0,0x61,0,0)=L(0x00610000)=0x85e56085;
L(0,0,Sbox(b2),0)=L(0,0,0x0D,0)=L(0x00000D00)=0x3434390d;
L(0,0,0,Sbox(b3))=L(0,0,0,0x46)=L(0x00000046)=0x4719195e;
结果为:
因此,当输入参数(字节串)为:1C 8D AC 72,对应的大端存储设备整数是0x1C8DAC72,小端存储设备整数是0x72AC8D1C;
对于大端存储设备来说就是计算T(0x1C8DAC72),得到的结果为0x9B8065F3,即字节串:9B 8065F3;
在具体的实施例中,对于小端存储设备,设合成变换T运算的输入参数是32位整数,B=0x72AC8D 1C=(0x72,0xAC,0x8D,0x1C)即:b0=0x72,b1=0xAC,b2=0x8D,b3=0x1C,
通过S盒查表可知:
Sbox(0x72)=0x46,Sbox(0xAC)=0x0D
Sbox(0x8D)=0x61,Sbox(0x1C)=0x49
则,可得:
L′(Sbox(b0),0,0,0)=R(L(0,0,0,Sbox(b0)))=R(L(0,0,0,0x46))
=R(0x4719195E)=0x5E191947;
L′(0,Sbox(b1),0,0)=R(L(0,0,Sbox(b1),0))=R(L(0,0,0x0D,0))
=R(0x3434390D)=0x0D393434;
L′(0,0,Sbox(b2),0)=R(L(0,Sbox(b2),0,0))=R(L(0,0x61,0,0))
=R(0x85E56085)=0x8560E585;
L′(0,0,0,Sbox(b3))=R(L(Sbox(b3),0,0,0))=R(L(0x49,0,0,0))
=R(0x6D482525)=0x2525486D;
结果为:
对于小端存储设备来说,需要先将0x72AC8D1C转换为0x1C8DAC72,然后再进行计算。如果使用变换后的查找表L0’、L1’、L2’和L3’直接计算T(0x72AC8D1C),得到的小端结果为0xF365809B,即字节串:9B 80 65 F3,与使用原始的查找表计算T(0x1C8DAC72、)的大端结果是一致的。
在实际的算法实现中,通过切换宏定义实现了同一份代码兼容大端和小端设备。
本发明具有突出的实质性特点和显著的进步,具体的说:通过依据SM4算法实现过程构造大端存储设备查找表L0、L1、L2和L3以及依据大端存储设备的所述T变换查找表L0、L1、L2和L3进行R变换后分别构造生成小端存储设备的T变换查找表L0’、L1’、L2’和L3’,将SM4加密算法中合成变换T的计算进行优化,实现一份代码能够兼容大端存储和小端存储设备,使得在小端存储设备中进行数据加密时不需要进行数据类型的转换,直接通过构造的查找表即可获知,优化SM4加密算法,提高SM4加密算法的运算速度,实现数据的快速加密。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种SM4算法快速实现方法,其特征在于,包括:查找表构造过程和数据加密过程;
所述查找表构造过程:
设待加密的输入数据为(X0,X1,X2,X3),轮密钥rk=(r0,r1,r2,r3),计算(b0,b1,b2,b3),其中(b0,b1,b2,b3)=X1⊕X2⊕X3⊕rk;
以(b0,b1,b2,b3)作为大端存储设备中合成变换T运算的输入参数,进行合成变换T运算,获得运算结果T(b0,b1,b2,b3);
其中,合成变换T是由非线性变换τ和线性变换L复合而成,T(.)=L(τ(.)),τ为由4个并行的S盒构成的非线性变换,非线性变换τ的输出是线性变换L的输入;
依据T(b0,b1,b2,b3)的结果信息分别构造生成大端存储设备的T变换查找表L0、L1、L2和L3;
对大端存储设备的所述T变换查找表L0、L1、L2和L3进行R变换后,分别构造生成小端存储设备的T变换查找表L0’、L1’、L2’和L3’,所述R变换是指将数据按位倒序;
所述数据加密过程:
若在大端存储设备中对待加密的输入数据进行迭代加密运算时,通过构造的所述查找表L0、L1、L2和L3计算T(b0,b1,b2,b3)=L0[b0]⊕L1[b1]⊕L2[b2]⊕L3[b3];
若在小端存储设备中对待加密的输入数据进行迭代加密运算时,通过构造的所述查找表L0’、L1’、L2’和L3’计算T(b3,b2,b1,b0)=L0’[b3]⊕L2’[b2]⊕L1’[b1]⊕L0’[b0];
利用预先生成的轮密钥rk对所述待加密的输入数据进行32次迭代运算后生成数据密文,每一次迭代运算均为一次轮函数:
F(X0,X1,X2,X3,rk)=X0⊕T(X1⊕X2⊕X3⊕rk)。
2.根据权利要求1所述的SM4算法快速实现方法,其特征在于,在对待加密的输入数据进行迭代加密运算之前,还包括数据转换过程;
所述数据转换过程包括:
对于大端存储设备,转换后的数据为:X0=(a0,a1,a2,a3),X1=(a4,a5,a6,a7),X2=(a8,a9,a10,a11),X3=(a12,a13,a14,a15);
对于小端存储设备,转换后的数据为:X0=(a3,a2,a1,a0),X1=(a7,a6,a5,a4),X2=(a11,a10,a9,a8),X3=(a15,a14,a13,a12)。
3.根据权利要求1或2所述的SM4算法快速实现方法,其特征在于,所述查找表构造过程中,在大端存储设备中进行合成变换T运算,获得的运算结果T(b0,b1,b2,b3)具体为:
T(b0,b1,b2,b3)=L(Sbox(b0),Sbox(b1),Sbox(b2),Sbox(b3))=L(Sbox(b0),0,0,0)⊕L(0,Sbox(b1),0,0)⊕L(0,0,Sbox(b2),0)⊕L(0,0,0,Sbox(b3));
其中,L(x)=x⊕(x<<<2)⊕(x<<<10)⊕(x<<<18)⊕(x<<<24)。
4.根据权利要求1或2所述的SM4算法快速实现方法,其特征在于,所述查找表构造过程中,依据T(b0,b1,b2,b3)的结果信息分别构造生成大端存储设备的T变换查找表L0、L1、L2和L3具体为:
依据L(Sbox(b0),0,0,0)、L(0,Sbox(b1),0,0)、L(0,0,Sbox(b2),0)、L(0,0,0,Sbox(b3))的数据信息分别构造生成大端存储设备的T变换查找表L0、L1、L2和L3;
其中,
L0={L(Sbox(b0),0,0,0)|b0∈[0,255]};
L1={L(0,Sbox(b1),0,0)|b1∈[0,255]};
L2={L(0,0,Sbox(b2),0)|b2∈[0,255]};
L3={L(0,0,0,Sbox(b3))|b3∈[0,255]};
对大端存储设备的所述T变换查找表L0、L1、L2和L3进行R变换后,分别构造生成小端存储设备的T变换查找表L0’、L1’、L2’和L3’具体为:
对L(Sbox(b0),0,0,0)、L(0,Sbox(b1),0,0)、L(0,0,Sbox(b2),0)、L(0,0,0,Sbox(b3))的数据信息依次进行R变换后,分别构造生成小端存储设备的T变换查找表L0’、L1’、L2’和L3’;
其中,
L0’={R(L(Sbox(b0),0,0,0))|b0∈[0,255]};
L1’={R(L(0,Sbox(b1),0,0))|b1∈[0,255]};
L2’={R(L(0,0,Sbox(b2),0))|b2∈[0,255]};
L3’={R(L(0,0,0,Sbox(b3)))|b3∈[0,255]}。
5.根据权利要求1所述的SM4算法快速实现方法,其特征在于,在构造生成查找表时,合成变换T运算的输入参数中的每个字节生成的表格有256项,4个字节共1024项,4个字节各自对应生成相应的查找表,对于大端存储设备,b0,b1,b2,b3分别对应查找表L0、L1、L2和L3;对于小端存储设备,b3,b2,b1,b0分别对应查找表L0’、L1’、L2’和L3’。
6.一种SM4算法快速实现装置,其特征在于,包括:运算单元、构造单元和处理单元;
所述运算单元,用于在大端存储设备中,以(b0,b1,b2,b3)作为合成变换T运算的输入参数,进行合成变换T运算,获得运算结果T(b0,b1,b2,b3);其中,合成变换T是由非线性变换τ和线性变换L复合而成,T(.)=L(τ(.)),τ为由4个并行的S盒构成的非线性变换,非线性变换τ的输出是线性变换L的输入;待加密的输入数据为(X1,X2,X3,X4),大端存储设备中输入参数B=(b0,b1,b2,b3)=X1⊕X2⊕X3⊕rk,轮密钥rk=(r0,r1,r2,r3);
所述构造单元,用于依据T(b0,b1,b2,b3)的结果信息分别构造生成大端存储设备的T变换查找表L0、L1、L2和L3;还用于对大端存储设备的所述T变换查找表L0、L1、L2和L3进行R变换后,分别构造生成小端存储设备的T变换查找表L0’、L1’、L2’和L3’;其中,L’(τ(.))=R(L(τ(.))),所述R变换是指将数据按位倒序;
所述处理单元,用于在大端存储设备中对待加密的输入数据进行迭代加密运算时,通过构造的所述查找表L0、L1、L2和L3计算T(b0,b1,b2,b3)=L0[b0]⊕L1[b1]⊕L2[b2]⊕L3[b3];还用于在小端存储设备中对待加密的输入数据进行迭代加密运算时,通过构造的所述查找表L0’、L1’、L2’和L3’计算T(b3,b2,b1,b0)=L0’[b3]⊕L2’[b2]⊕L1’[b1]⊕L0’[b0];以及用于利用预先生成的轮密钥rk对所述待加密的输入数据进行32次迭代运算后生成数据密文,每一次迭代运算均为一次轮函数:F(X0,X1,X2,X3,rk)=X0⊕T(X1⊕X2⊕X3⊕rk)。
8.根据权利要求6所述的SM4算法快速实现装置,其特征在于,所述运算单元在大端存储设备中,计算生成T(a0,a1,a2,a3)的结果信息具体为:T(b0,b1,b2,b3)=L(Sbox(b0),Sbox(b1),Sbox(b2),Sbox(b3))=L(Sbox(b0),0,00)⊕L(0,Sbox(b1),0,0)⊕L(0,0,Sbox(b2),0)⊕L(0,0,0,Sbox(b3));
其中,L(x)=x⊕(x<<<2)⊕(x<<<10)⊕(x<<<18)⊕(x<<<24)。
9.根据权利要求6或8所述的SM4算法快速实现装置,其特征在于,所述构造单元依据T(b0,b1,b2,b3)的结果信息分别构造生成大端存储设备的T变换查找表L0、L1、L2和L3具体为:依据L(Sbox(b0),0,0,0)、L(0,Sbox(b1),0,0、L(0,0,Sbox(b2),0)、L(0,0,0,Sbox(b3))的数据信息分别构造生成大端存储设备的T变换查找表L0、L1、L2和L3;
其中,
L0={L(Sbox(b0),0,0,0)|b0∈[0,255]};
L1={L(0,Sbox(b1),0,0)|b1∈[0,255]};
L2={L(0,0,Sbox(b2),0)|b2∈[0,255]};
L3={L(0,0,0,Sbox(b3))|b3∈[0,255]};
所述构造单元对大端存储设备的所述T变换查找表L0、L1、L2和L3进行R变换后,分别构造生成小端存储设备的T变换查找表L0’、L1’、L2’和L3’具体为:
对L(Sbox(b0),0,0,0)、L(0,Sbox(b1),0,0)、L(0,0,Sbox(b2),0)、L(0,0,0,Sbox(b3))的数据信息依次进行R变换后,分别构造生成小端存储设备的T变换查找表L0’、L1’、L2’和L3’;
其中,
L0’={R(L(Sbox(b0),0,0,0))|b0∈[0,255]};
L1’={R(L(0,Sbox(b1),0,0))|b1∈[0,255]};
L2’={R(L(0,0,Sbox(b2),0))|b2∈[0,255]};
L3’={R(L(0,0,0,Sbox(b3)))|b3∈[0,255]}。
10.根据权利要求6所述的SM4算法快速实现装置,其特征在于,在所述构造单元中,合成变换T运算的输入参数中的每个字节生成的表格有256项,4个字节共1024项,4个字节各自对应生成相应的查找表,对于大端存储设备,b0,b1,b2,b3分别对应查找表L0、L1、L2和L3;对于小端存储设备,b3,b2,b1,b0分别对应查找表L0’、L1’、L2’和L3’。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010546732.6A CN111865559B (zh) | 2020-06-16 | 2020-06-16 | 一种sm4算法快速实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010546732.6A CN111865559B (zh) | 2020-06-16 | 2020-06-16 | 一种sm4算法快速实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111865559A CN111865559A (zh) | 2020-10-30 |
CN111865559B true CN111865559B (zh) | 2022-02-18 |
Family
ID=72986560
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010546732.6A Active CN111865559B (zh) | 2020-06-16 | 2020-06-16 | 一种sm4算法快速实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111865559B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112636903A (zh) * | 2021-03-11 | 2021-04-09 | 北京信安世纪科技股份有限公司 | 构造方法、加密方法、解密方法、装置、设备及存储介质 |
CN117492702B (zh) * | 2023-12-29 | 2024-04-02 | 成都凯迪飞研科技有限责任公司 | 一种大小端数据流的转换方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106411498A (zh) * | 2016-12-23 | 2017-02-15 | 艾体威尔电子技术(北京)有限公司 | 一种实现国密算法的方法 |
CN110166223A (zh) * | 2019-05-22 | 2019-08-23 | 北京航空航天大学 | 一种国密sm4的快速软件实现方法 |
CN110311771A (zh) * | 2018-03-20 | 2019-10-08 | 北京松果电子有限公司 | Sm4加解密方法及电路 |
CN110784306A (zh) * | 2019-11-01 | 2020-02-11 | 成都卫士通信息产业股份有限公司 | Sm4算法白盒实现方法、装置、电子设备及计算机介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9513913B2 (en) * | 2014-07-22 | 2016-12-06 | Intel Corporation | SM4 acceleration processors, methods, systems, and instructions |
-
2020
- 2020-06-16 CN CN202010546732.6A patent/CN111865559B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106411498A (zh) * | 2016-12-23 | 2017-02-15 | 艾体威尔电子技术(北京)有限公司 | 一种实现国密算法的方法 |
CN110311771A (zh) * | 2018-03-20 | 2019-10-08 | 北京松果电子有限公司 | Sm4加解密方法及电路 |
CN110166223A (zh) * | 2019-05-22 | 2019-08-23 | 北京航空航天大学 | 一种国密sm4的快速软件实现方法 |
CN110784306A (zh) * | 2019-11-01 | 2020-02-11 | 成都卫士通信息产业股份有限公司 | Sm4算法白盒实现方法、装置、电子设备及计算机介质 |
Non-Patent Citations (1)
Title |
---|
SM4的快速软件实现技术;郎欢等;《中国科学院大学学报》;20180315(第02期);40-47 * |
Also Published As
Publication number | Publication date |
---|---|
CN111865559A (zh) | 2020-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109639428B (zh) | 从位混合器构造安全散列函数的方法 | |
US6859818B2 (en) | Method and apparatus for permuting input data and recording medium having stored thereon a program for executing permutation | |
TWI406138B (zh) | 循序運算的伽羅瓦乘法架構與方法 | |
CN111865559B (zh) | 一种sm4算法快速实现方法及装置 | |
Teh et al. | Unkeyed hash function based on chaotic sponge construction and fixed-point arithmetic | |
CN109845182A (zh) | 密码消息与认证指令 | |
CN111736902B (zh) | 基于simd指令的sm4的并行计算方法及装置、可读存储介质 | |
Huang et al. | Automatic tool for searching for differential characteristics in ARX ciphers and applications | |
Shi et al. | A correlation attack on full SNOW-V and SNOW-Vi | |
CN112564890B (zh) | 一种加速sm4算法的方法、装置、处理器及电子设备 | |
CN114124359A (zh) | 保留格式加密数据的方法、装置、电子设备及存储介质 | |
Zhang et al. | Meet-in-the-middle attack with splice-and-cut technique and a general automatic framework | |
CN110224829A (zh) | 基于矩阵的后量子加密方法及装置 | |
CN114745099B (zh) | 一种基于FPGA的poseidon哈希算法的优化方法 | |
CN110266481A (zh) | 基于矩阵的后量子加、解密方法与解密装置 | |
US20170169129A1 (en) | Information processing system, information processing method, and program | |
Kuznetsov et al. | Stream Symmetric Cipher “Strumok” | |
CN107437990A (zh) | 加密方法、解密方法、加密装置和解密装置 | |
Arora et al. | Parametric comparison of EMDS algorithm with some symmetric cryptosystems | |
Liu et al. | Full-round impossible differential attack on shadow block cipher | |
CN113162756B (zh) | 一种基于查表的sm4算法实现方法和装置 | |
JP5354914B2 (ja) | 暗号処理装置及び復号処理装置及びプログラム | |
CN112953706B (zh) | 信息处理方法和装置 | |
CN113922948B (zh) | 基于复合域轮函数的国密算法sm4数据加密方法及系统 | |
JP6089664B2 (ja) | 暗号処理装置と方法並びに暗号処理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |