CN111865559B - 一种sm4算法快速实现方法及装置 - Google Patents

一种sm4算法快速实现方法及装置 Download PDF

Info

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
Application number
CN202010546732.6A
Other languages
English (en)
Other versions
CN111865559A (zh
Inventor
张朝阳
彭金辉
雷宗华
穆佩红
刘武忠
李鑫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhengzhou Xinda Jiean Information Technology Co Ltd
Original Assignee
Zhengzhou Xinda Jiean Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhengzhou Xinda Jiean Information Technology Co Ltd filed Critical Zhengzhou Xinda Jiean Information Technology Co Ltd
Priority to CN202010546732.6A priority Critical patent/CN111865559B/zh
Publication of CN111865559A publication Critical patent/CN111865559A/zh
Application granted granted Critical
Publication of CN111865559B publication Critical patent/CN111865559B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution 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

本发明提出一种SM4算法快速实现方法,包括查找表构造过程:在大端存储设备中,计算生成
Figure 785626DEST_PATH_IMAGE001
的结果信息;依据
Figure 342247DEST_PATH_IMAGE001
的结果信息分别构造生成大端存储设备的T变换查找表;依据大端存储设备的T变换查找表进行R变换后分别构造生成小端存储设备的T变换查找表;数据加密过程:若在大端存储设备中进行迭代加密运算时,通过构造的查找表L0、L1、L2和L3计算T;若在小端存储设备中进行迭代加密运算时,通过构造的查找表L0’、L1’、L2’和L3’计算T;利用预先生成的轮密钥rk对的输入数据进行32次迭代运算后生成数据密文。

Description

一种SM4算法快速实现方法及装置
技术领域
本发明涉及计算机安全技术领域,具体涉及一种SM4算法快速实现方法及装置。
背景技术
SM4算法是一种分组密码算法。其分组长度为128bit,密钥长度也为128bit。加密算法与密钥扩展算法均采用32轮非线性迭代结构,以字(32位)为单位进行加密运算,每一次迭代运算均为一轮变换函数F,
Figure BDA0002541784650000011
输入数据:(X0,X1,X2,X3)。其中T为一个合成变换,由非线性变换τ和线性变换L复合而成,T(.)=L(τ(.)),先S盒变换,再L变换。
目前,常用的X86结构是小端模式,而KEIL C51则为大端模式。很多的ARM,DSP都为小端模式,有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。大端存储与小端存储模式主要指的是数据在计算机中存储的两种字节优先顺序,小端存储指从内存的低地址开始,先存储数据的低序字节再存高序字节;相反,大端存储指从内存的低地址开始,先存储数据的高序字节再存储数据的低序字节。不管是大端还是小端存储,计算机在内存中存放数据的顺序都是从低地址到高地址,所不同的是首先取低字节的数据存放在低地址还是取高字节数据存放在低地址。
在整数大端存储的设备中,待加密的字节串在内存中的存储顺序与整数是一致的,运算时不需要将加密的字节串转换为整数,直接使用指针运算即可,而在整数小端存储的设备中,在进行轮运算之前,还需要将字节串转换为整数再进行后续运算,必然会导致SM4算法的运算速度降低。
因此如何设计一种SM4算法快速实现方案,能够兼容大端存储和小端存储设备,使得在小端存储设备中进行数据加解密时不需要进行数据类型的转换,提高算法的运算速度是目前急需解决的问题。
发明内容
本发明针对上述问题,有必要提供一种SM4算法快速实现方法及装置,其能够保证兼容大端存储和小端存储设备,使得在小端存储设备中进行数据加解密时不需要进行数据类型的转换,提高算法的运算速度。
本发明第一方面提出一种SM4算法快速实现方法,包括:所述SM4算法快速实现方法包括:查找表构造过程和数据加密过程;
所述查找表构造过程:
设待加密的输入数据为(X1,X2,X3,X4),轮密钥rk=(r0,r1,r2,r3),计算(b0,b1,b2,b3),其中
Figure BDA0002541784650000021
以(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’;
所述数据加密过程:
若在大端存储设备中对待加密的输入数据进行迭代加密运算时,通过构造的所述查找表L0、L1、L2和L3计算
Figure BDA0002541784650000022
Figure BDA0002541784650000023
若在小端存储设备中对待加密的输入数据进行迭代加密运算时,通过构造的所述查找表L0’、L1’、L2’和L3’计算
Figure BDA0002541784650000024
Figure BDA0002541784650000031
利用预先生成的轮密钥rk对所述待加密的输入数据进行32次迭代运算后生成数据密文,每一次迭代运算均为一次轮函数:
Figure BDA0002541784650000032
进一步的,在对待加密的输入数据进行迭代加密运算之前,还包括数据转换过程;
所述数据转换过程包括:
设输入数据为:a0,a1,a2,a3,...,a15共16字节,其中
Figure BDA0002541784650000033
0,1,2,3…15;
将16字节的输入数据转换为4个4字节整数X0,X1,X2,X3,其中
Figure BDA0002541784650000034
对于大端存储设备,转换后的数据为: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运算,获得的运算结果T(b0,b1,b2,b3)具体为:
Figure BDA0002541784650000035
Figure BDA0002541784650000036
Figure BDA0002541784650000037
其中,
Figure BDA0002541784650000038
Figure BDA0002541784650000039
进一步的,所述查找表构造过程中,依据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),大端存储设备中输入参数
Figure BDA0002541784650000041
Figure BDA0002541784650000042
轮密钥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计算
Figure BDA0002541784650000051
还用于在小端存储设备中对待加密的输入数据进行迭代加密运算时,通过构造的所述查找表L0’、L1’、L2’和L3’计算
Figure BDA0002541784650000052
Figure BDA0002541784650000053
以及用于利用预先生成的轮密钥rk对所述待加密的输入数据进行32次迭代运算后生成数据密文,每一次迭代运算均为一次轮函数:
Figure BDA0002541784650000054
Figure BDA0002541784650000055
进一步的,所述SM4算法快速实现装置还包括转换单元;
所述转换单元,用于将16字节的输入数据a0,a1,a2,a3,...,a15转换为4个整数X0,X1,X2,X3,其中
Figure BDA0002541784650000056
Figure BDA0002541784650000057
对于大端存储设备,转换后的数据为: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)的结果信息具体为:
Figure BDA0002541784650000058
其中,
Figure BDA0002541784650000059
Figure BDA00025417846500000510
进一步的,所述构造单元依据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算法快速实现方法包括:查找表构造过程和数据加密过程;
所述查找表构造过程:
设待加密的输入数据为(X1,X2,X3,X4),轮密钥rk=(r0,r1,r2,r3),计算(b0,b1,b2,b3),其中
Figure BDA0002541784650000081
以(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’;
所述数据加密过程:
若在大端存储设备中对待加密的输入数据进行迭代加密运算时,通过构造的所述查找表L0、L1、L2和L3计算
Figure BDA0002541784650000082
Figure BDA0002541784650000083
若在小端存储设备中对待加密的输入数据进行迭代加密运算时,通过构造的所述查找表L0’、L1’、L2’和L3’计算
Figure BDA0002541784650000084
Figure BDA0002541784650000085
利用预先生成的轮密钥rk对所述待加密的输入数据进行32次迭代运算后生成数据密文,每一次迭代运算均为一次轮函数:
Figure BDA0002541784650000086
具体的,在进行32次迭代运算时,每一次迭代运算的输入参数X0的取值均为上一轮迭代运算的输入参数X1,每一次迭代运算的输入参数X1的取值均为上一轮迭代运算的输入参数X2,每一次迭代运算的输入参数X2的取值均为上一轮迭代运算的输入参数X3,每一次迭代运算的输入参数X3的取值均为上一轮迭代运算的运算结果值,每一次迭代运算的输入参数rk均为新的迭代轮密钥。
数据解密过程与数据加密过程相同,只是将轮密钥的使用顺序进行逆向。
具体的,在对待加密的输入数据进行迭代加密运算之前,还包括数据转换过程;
所述数据转换过程包括:
设输入数据为:a0,a1,a2,a3,...,a15共16字节,其中
Figure BDA0002541784650000091
Figure BDA0002541784650000092
将16字节的输入数据转换为4个4字节整数X0,X1,X2,X3,其中
Figure BDA0002541784650000093
对于大端存储设备,转换后的数据为: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运算,获得的运算结果T(b0,b1,b2,b3)具体为:
Figure BDA0002541784650000094
Figure BDA0002541784650000095
Figure BDA0002541784650000096
其中,
Figure BDA0002541784650000097
Figure BDA0002541784650000098
具体的,所述查找表构造过程中,依据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),
rk=(r0,r1,r2,r3);
Figure BDA0002541784650000101
(b0’,b1’,b2’,b3’)=τ(b0,b1,b2,b3)=(Sbox(b0),Sbox(b1),Sbox(b2),Sbox(b3));
则:
Figure BDA0002541784650000111
Figure BDA0002541784650000112
Figure BDA0002541784650000113
对于小端存储设备,合成变换T运算的输入数据为:
X1=(a7,a6,a5,a4),X2=(a11,a10,a9,a8),X3=(a15,a14,a13,a12),rk=(r3,r2,r1,r0);
Figure BDA0002541784650000114
(b3’,b2’,b1’,b0’)=τ(b3,b2,b1,b0)=(Sbox(b3),Sbox(b2),Sbox(b1),Sbox(b0));
则:
Figure BDA0002541784650000115
Figure BDA0002541784650000116
Figure BDA0002541784650000117
Figure BDA0002541784650000118
小端存储设备与大端存储设备相比,内存中数据的整数表示存在映射关系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),大端存储设备中输入参数
Figure BDA0002541784650000119
Figure BDA00025417846500001110
轮密钥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计算
Figure BDA0002541784650000121
还用于在小端存储设备中对待加密的输入数据进行迭代加密运算时,通过构造的所述查找表L0’、L1’、L2’和L3’计算
Figure BDA0002541784650000122
Figure BDA0002541784650000123
以及用于利用预先生成的轮密钥rk对所述待加密的输入数据进行32次迭代运算后生成数据密文,每一次迭代运算均为一次轮函数:
Figure BDA0002541784650000124
Figure BDA0002541784650000125
具体的,所述SM4算法快速实现装置还包括转换单元;
所述转换单元,用于将16字节的输入数据a0,a1,a2,a3,...,a15转换为4个整数X0,X1,X2,X3,其中
Figure BDA0002541784650000126
Figure BDA0002541784650000127
对于大端存储设备,转换后的数据为: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)的结果信息具体为:
Figure BDA0002541784650000128
其中,
Figure BDA0002541784650000129
Figure BDA00025417846500001210
具体的,所述构造单元依据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;
结果为:
Figure BDA0002541784650000141
因此,当输入参数(字节串)为: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;
结果为:
Figure BDA0002541784650000151
对于小端存储设备来说,需要先将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算法快速实现方法,其特征在于,在对待加密的输入数据进行迭代加密运算之前,还包括数据转换过程;
所述数据转换过程包括:
设输入数据为:a0,a1,a2,a3,…,a15共16字节,其中
Figure FDA0003445787000000022
Figure FDA0003445787000000023
将16字节的输入数据转换为4个4字节整数X0,X1,X2,X3,其中
Figure FDA0003445787000000021
对于大端存储设备,转换后的数据为: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)。
7.根据权利要求6所述的SM4算法快速实现装置,其特征在于,所述SM4算法快速实现装置还包括转换单元;
所述转换单元,用于将16字节的输入数据a0,a1,a2,a3,…,a15转换为4个整数X0,X1,X2,X3,其中
Figure FDA0003445787000000041
Figure FDA0003445787000000042
对于大端存储设备,转换后的数据为: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)。
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’。
CN202010546732.6A 2020-06-16 2020-06-16 一种sm4算法快速实现方法及装置 Active CN111865559B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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