CN112564890A - 一种加速sm4算法的方法、装置、处理器及电子设备 - Google Patents

一种加速sm4算法的方法、装置、处理器及电子设备 Download PDF

Info

Publication number
CN112564890A
CN112564890A CN202011417896.5A CN202011417896A CN112564890A CN 112564890 A CN112564890 A CN 112564890A CN 202011417896 A CN202011417896 A CN 202011417896A CN 112564890 A CN112564890 A CN 112564890A
Authority
CN
China
Prior art keywords
key
round
word
operand
state
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.)
Granted
Application number
CN202011417896.5A
Other languages
English (en)
Other versions
CN112564890B (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.)
Haiguang Information Technology Co Ltd
Original Assignee
Haiguang 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 Haiguang Information Technology Co Ltd filed Critical Haiguang Information Technology Co Ltd
Priority to CN202011417896.5A priority Critical patent/CN112564890B/zh
Publication of CN112564890A publication Critical patent/CN112564890A/zh
Application granted granted Critical
Publication of CN112564890B publication Critical patent/CN112564890B/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/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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

本申请实施例提供一种加速SM4算法的方法、装置、处理器及电子设备,其中处理器至少配置SM4单轮计算指令,以执行所述方法,所述方法包括:获取明文,明文中初始的多个状态字依序排列形成第一个状态字操作数;在第i+1轮加密运算,从包含第i个轮密钥的轮密钥操作数中,确定第i+1轮加密运算使用的目标轮密钥;在第i+1轮加密运算,根据第i+1个状态字操作数中的状态字,以及目标轮密钥,确定下一个状态字;下一个状态字形成下一个状态字操作数中的最后一个状态字,且在执行第n+1轮加密运算后,得出第n+2个状态字操作数,第n+2个状态字操作数中状态字的反序变换得出密文。本申请实施例可提高SM4算法的计算速度,降低硬件实现复杂度,并进一步提升数据的安全性。

Description

一种加速SM4算法的方法、装置、处理器及电子设备
技术领域
本申请实施例涉及密码学技术领域,具体涉及一种加速SM4算法的方法、装置、处理器及电子设备。
背景技术
SM4算法是中国信息安全技术的推荐性标准,主要用于无线局域网产品,是无线局域网标准的分组密码算法,SM4算法涉及加解密算法和密钥扩展算法等。
由于SM4算法特殊的加密、解密操作,如果依靠软件方式来实现SM4算法,那么需要使用多条CPU(Central Processing Unit,中央处理器)指令来模拟SM4算法,这导致SM4算法的计算速度较低、性能欠佳;因此,如何提供改进方案,以提高SM4算法的计算速度,成为了本领域技术人员亟需解决的问题。
发明内容
有鉴于此,本申请实施例提供一种加速SM4算法的方法、装置、处理器及电子设备,以在硬件加速SM4算法的方式中,提高SM4算法的计算速度并降低硬件实现复杂度。
为实现上述目的,本申请实施例提供如下技术方案:
一种加速SM4算法的方法,应用于处理器,所述处理器至少配置SM4单轮计算指令,以执行所述加速SM4算法的方法;所述加速SM4算法的方法包括:
获取输入的明文,所述明文包括初始的多个状态字,其中,初始的多个状态字依序排列形成第一个状态字操作数,一个状态字操作数包括依序排列的多个状态字;
在第i+1轮加密运算,从包含第i个轮密钥的轮密钥操作数中,确定第i+1轮加密运算使用的目标轮密钥,其中,i为0至n的整数,n为加密运算的总轮数减1,一个轮密钥操作数包括依序排列的多个轮密钥;
在第i+1轮加密运算,根据第i+1个状态字操作数中的状态字,以及第i+1轮加密运算使用的目标轮密钥,确定下一个状态字;其中,所述下一个状态字形成下一个状态字操作数中的最后一个状态字,且在执行第n+1轮加密运算后,得出第n+2个状态字操作数,所述第n+2个状态字操作数中状态字的反序变换得出所述明文对应的密文。
本申请实施例还提供一种加速SM4算法的装置,应用于处理器,所述装置至少包括:SM4单轮计算单元;
所述SM4单轮计算单元配置有SM4单轮计算指令,所述SM4单轮计算单元通过配置的SM4单轮计算指令,至少用于:
获取输入的明文,所述明文包括初始的多个状态字,其中,初始的多个状态字依序排列形成第一个状态字操作数,一个状态字操作数包括依序排列的多个状态字;
在第i+1轮加密运算,从包含第i个轮密钥的轮密钥操作数中,确定第i+1轮加密运算使用的目标轮密钥,其中,i为0至n的整数,n为加密运算的总轮数减1,一个轮密钥操作数包括依序排列的多个轮密钥;
在第i+1轮加密运算,根据第i+1个状态字操作数中的状态字,以及第i+1轮加密运算使用的目标轮密钥,确定下一个状态字;其中,所述下一个状态字形成下一个状态字操作数中的最后一个状态字,且在执行第n+1轮加密运算后,得出第n+2个状态字操作数,所述第n+2个状态字操作数中状态字的反序变换得出所述明文对应的密文。
本申请实施例还提供一种处理器,所述处理器通过配置处理器指令集,以执行如上述所述的加速SM4算法的方法。
本申请实施例还提供一种电子设备,所述电子设备包括如上述所述的处理器。
本申请实施例提供的加速SM4算法的方法中,处理器可通过至少配置SM4单轮计算指令,来执行所述加速SM4算法的方法;具体在SM4算法的加密算法中,处理器可获取输入的明文,且所述明文中包括的初始的多个状态字,可依序排列形成第一个状态字操作数,其中一个状态字操作数包括依序排列的多个状态;从而,在第i+1轮加密运算,本申请实施例可从包含第i个轮密钥的轮密钥操作数中,确定第i+1轮加密运算使用的目标轮密钥,其中,i为0至n的整数,n为加密运算的总轮数减1,一个轮密钥操作数包括依序排列的多个轮密钥;进而,本申请实施例可在第i+1轮加密运算,根据第i+1个状态字操作数中的状态字,以及第i+1轮加密运算使用的目标轮密钥,确定下一个状态字,所述下一个状态字形成下一个状态字操作数中的最后一个状态字。
基于本申请实施例提供的加速SM4算法的方法,本申请实施例可在执行第n+1轮加密运算后,得出第n+2个状态字操作数,并由所述第n+2个状态字操作数中状态字的反序变换得出所述明文对应的密文,实现将输入的明文转换为密文,完成SM4算法的加密算法。可以看出,本申请实施例提供的加速SM4算法的方法,通过配置处理器指令集,由处理器中的逻辑硬件执行处理器指令集,从而以硬件方式加速SM4算法,具体在SM4算法的加密算法中,处理器通过配置的SM4单轮计算指令,以硬件方式加速SM4算法的加密算法;并且,SM4单轮计算指令以单轮计算为基础,如一轮运算计算一个状态字,可极大降低处理器的硬件实现复杂度。可见,本申请实施例提供的加速SM4算法的方法,可在硬件加速SM4算法的方式中,提高SM4算法的计算速度并降低硬件实现复杂度。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为Sbox的示例图;
图2为CKROM的示例图;
图3为本申请实施例提供的处理器指令集的构成示意图;
图4为本申请实施例提供的加速SM4算法的方法流程图;
图5为本申请实施例提供的SM4单轮计算指令的数据流图;
图6为本申请实施例提供的加速SM4算法的另一方法流程图;
图7为本申请实施例提供的SM4第一单轮密钥扩展指令的数据流图;
图8为本申请实施例提供的加速SM4算法的再一方法流程图;
图9为本申请实施例提供的SM4第二单轮密钥扩展指令的数据流图;
图10为本申请实施例提供的加速SM4算法的装置的框图;
图11为本申请实施例提供的SM4单轮计算单元的框图;
图12为本申请实施例提供的SM4单轮计算单元的另一框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
SM4算法是一个分组密码算法,分组大小为128bit(比特),SM4算法涉及加解密算法和密钥扩展算法,其中,加密算法涉及多轮加密,解密算法涉及多轮解密,密钥扩展算法用于生成每轮加解密使用的轮密钥;在SM4算法中,加密算法与密钥扩展算法均可采用32轮非线性迭代结构,且加密算法和解密算法采用相同的轮密钥结构和算法结构(均为32轮计算),只是加密算法和解密算法使用的轮密钥的顺序相互颠倒,也就是说,加密算法与解密算法的结构相同,但是加密算法与解密算法的轮密钥的使用顺序相反(即解密算法的轮密钥是加密算法的轮密钥的逆序)。
为便于了解SM4算法,下面对SM4算法的执行过程进行说明。
在SM4算法的加密算法中,加密算法将输入的明文,通过多轮迭代的加密运算(如32轮迭代的加密运算)以及1次反序变换,输出为密文,其中,每轮加密运算需要使用密钥扩展算法生成的轮密钥;示例的,设输入的明文为
Figure BDA0002820806710000051
输出的密文为
Figure BDA0002820806710000052
则加密算法的运算过程可以如下所示:
(1)32轮迭代的加密运算:Xi+4=F(Xi,Xi+1,Xi+2,Xi+3,rk),i=0,1,…31(即i为0至31的整数);其中,Xi表示第i个状态字,第i+4个状态字Xi+4为第i+1轮加密运算所计算的状态字,i+1的最大值为32,对应32轮加密运算;需要说明的是,F(Xi,Xi+1,Xi+2,Xi+3,rk)可以具体表达为:
Figure BDA0002820806710000053
其中,
Figure BDA0002820806710000054
表示32比特异或运算,T是一种复合运算,T表示为:
T(.)=L(τ(.)),L变换是一种线性变换,L可以表示为:
Figure BDA0002820806710000055
其中,<<<表示32比特循环左移位运算;
τ变换是一种非线性变换,τ可以表示为:
τ(A)=(Sbox(a0),Sbox(a1),Sbox(a2),Sbox(a3));其中,Sbox(substitutionbox,置换盒)是SM4算法的非线性替换表,其示例内容可如图1所示;
(2)在经过32轮迭代的加密运算后,基于得到的状态字(X32,X33,X34,X35)进行反序变换,得到输出的密文;反序变换为:
(Y0,Y1,Y2,Y3)=R(X32,X33,X34,X35)=(X35,X34,X33,X32)。
需要说明的是,在第i+1轮加密运算Xi+4=F(Xi,Xi+1,Xi+2,Xi+3,rk)中,rk表示第i+1轮加密运算使用的目标轮密钥;具体的,第i个轮密钥可表示为rki,rki为32比特,在SM4算法中,可由初始输入的4个加密密钥生成前4个密钥字(K0,K1,K2,K3),从而由Ki、Ki+1、Ki+2、Ki+3(i=0,1,…31)生成下一密钥字Ki+4,将Ki+4作为第i个轮密钥rki,以迭代的生成轮密钥;
以初始输入的4个32位宽的加密密钥表示为(MK0,MK1,MK2,MK3)为例,基于初始输入的加密密钥,生成前4个密钥字(K0,K1,K2,K3)的过程可以如下:
根据输入的4个32位加密密钥(MK0,MK1,MK2,MK3),和4个密钥常数(FK0,FK1,FK2,FK3),生成4个密钥字(K0,K1,K2,K3),具体公式为:
Figure BDA0002820806710000061
其中,FK0可以为(A3B1BAC6),FK1可以为(56AA3350),FK2可以为(677D9197),FK3可以为(B27022DC),(FK0,FK1,FK2,FK3)作为4个密钥常数,其数值可以设定;
从而下一状态字可通过如下公式获得:
Figure BDA0002820806710000062
Figure BDA0002820806710000063
将第i+4个密钥字Ki+4作为第i个轮密钥rki(如将第4个密钥字K4作为第0个轮密钥rk0),则可实现轮密钥的生成;其中,CKi(i=0,1,…31)为第i个常数,各个常数的数字为固定的,各个常数可形成常数集合(CKROM),其示例内容可如图2所示;T’和T的变换结构基本相同,只不过在T’中使用L’变换替代了T中的L变换,
Figure BDA0002820806710000064
上述描述了SM4算法的加密算法过程,以及加密算法使用的轮密钥生成过程,由于SM4算法中的解密算法是加密算法的逆操作,使用与加密算法使用顺序相颠倒的轮密钥,即解密算法使用的轮密钥顺序为(rk31,rk32,…,rk0),因此关于解密算法的内容可参照上述加密算法的内容得出,此处不再展开说明。
可以看出,SM4算法涉及上述特殊的加密、解密操作,如果以传统软件方式模拟SM4算法,则需要使用多条CPU指令来模拟SM4算法的实现,这导致SM4算法的计算速度较低、性能欠佳;目前也可设计SM4算法专用的处理器指令集,以硬件加速SM4算法的方式,来提高SM4算法的计算速度,但是目前的处理器指令集解决方案主要基于多轮加解密操作实现,这导致处理器的硬件实现复杂度较高;基于此,本申请实施例提供改进的加速SM4算法的方案,以在硬件加速SM4算法的方式中,提高SM4算法的计算速度并降低硬件实现复杂度。
作为一种可选实现,图3示出了本申请实施例提供的用于加速SM4算法的处理器指令集的构成示意图,如图3所示,本申请实施例提供的用于加速SM4算法的处理器指令集1可以包括:SM4单轮计算指令2,SM4第一单轮密钥扩展指令3,其中,SM4单轮计算指令可称为SM4RND指令,SM4第一单轮密钥扩展指令可称为SM4RK指令;
在本申请实施例中,SM4单轮计算指令2可应用于SM4算法的加密算法或者解密算法;在SM4单轮计算指令2用于加密算法时,SM4单轮计算指令2可实现每轮加密运算,以及确定每轮加密运算使用的目标轮密钥;而在SM4单轮计算指令2用于解密算法时,SM4单轮计算指令2可实现每轮解密运算,以及确定每轮解密运算使用的目标轮密钥;
可选的,SM4第一单轮密钥扩展指令3可实现SM4加密算法或加密算法中,每轮密钥字的扩展,以通过扩展的密钥字实现扩展轮密钥,即扩展的第i+4个密钥字Ki+4作为第i个轮密钥rki
具体的,在加密算法中,SM4第一单轮密钥扩展指令3可基于最近确定的前4个密钥字(Ki,Ki+1,Ki+2,Ki+3),确定下一个密钥字Ki+4(i为0至31的整数),并以此迭代完成多个密钥字的确定;例如,SM4第一单轮密钥扩展指令可基于最近确定的前4个密钥字(K0,K1,K2,K3),确定第4个密钥字K4,以此类推,并在最后基于最近确定的前4个密钥字(K31,K32,K33,K34),确定第35个密钥字K35;其中,第i+4个密钥字Ki+4作为第i个轮密钥rki,例如,第4个密钥字K4作为第0个轮密钥rk0,以此类推,并且最后得到的第35个密钥字K35作为第31个轮密钥rk31
在可选实现中,本申请实施例可通过为处理器配置图3所示的处理器指令集,来以硬件方式加速SM4算法;可选的,在实现SM4算法的加密算法时,处理器可通过配置的SM4单轮计算指令,对输入的明文进行多轮(如32轮)迭代的加密运算,并确定每轮加密运算使用的目标轮密钥,以实现SM4算法的加密算法;在实现SM4算法的解密算法时,处理器可通过配置的SM4单轮计算指令,对密文的反序变换进行多轮(如32轮)迭代的解密运算,并确定每轮解密运算使用的目标轮密钥,以实现SM4算法的解密算法。
以实现SM4算法的加密算法为例,可选的,图4示出了本申请实施例提供的加速SM4算法的可选方法流程,该方法流程可由处理器执行实现,具体的,处理器可至少配置SM4单轮计算指令(SM4RND指令),以执行图4所示加速SM4算法的方法,处理器通过配置的SM4单轮计算指令,可在每一轮的加密运算产生下一个状态字(如产生下一个32位宽的状态字),以通过多轮迭代的加密运算,产生多个状态字,从而由最后产生的一定数量的状态字的反序变换,得出加密算法加密的密文;
参照图4所示,该方法流程可以包括:
步骤S100、获取输入的明文,所述明文包括初始的多个状态字,其中,初始的多个状态字依序排列形成第一个状态字操作数,一个状态字操作数包括依序排列的多个状态字。
在本申请实施例中,处理器可获取输入的明文,以使处理器使用本申请实施例提供的加速SM4算法的方法,将所述明文转换为密文。所述明文可以包括初始的多个状态字,示例的,所述明文可以包括初始的4个状态字X0,X1,X2和X3,可选的,X0,X1,X2和X3可以均为32位宽的状态字。
针对明文中包括的初始的多个状态字,本申请实施例可将该初始的多个状态字按序排列形成第一个状态字操作数,一个状态字操作数包括按序排列的多个状态字;示例的,以明文中初始的状态字为4个状态字X0,X1,X2和X3为例,则该初始的4个状态字X0,X1,X2和X3可按序排列形成第一个状态字操作数(X0,X1,X2,X3),并且由于一个状态字操作数包括依序排列的多个状态字,因此第i+1个状态字操作数可以表示为(Xi,Xi+1,Xi+2,Xi+3),其中,i属于0至31的整数。
步骤S110、在第i+1轮加密运算,从包含第i个轮密钥的轮密钥操作数中,确定第i+1轮加密运算使用的目标轮密钥,其中,i为0至n的整数,n为加密运算的总轮数减1,一个轮密钥操作数包括依序排列的多个轮密钥。
针对获取的明文,本申请实施例可通过多轮(如32轮)迭代的加密运算以及1次反序变换,将所述明文转换为密文,其中,每轮加密运算主要用于确定下一个状态字(状态字可以是32位宽);
设加密算法进行n+1轮迭代的加密运算,i为0至n的整数,则本申请实施例可从i为0开始,通过执行由第1轮至第n+1轮加密运算,来完成加密算法的多轮迭代的加密运算;从而第i+1轮加密运算计算第i+4个状态字Xi+4,如第1轮(此时i+1为1,相应的,i为0)的加密运算计算第4个状态字X4,第2轮(此时i+1为2,相应的,i为1)的加密运算计算第5个状态字X5,以此类推,最后的第n+1轮(此时i+1为n+1,相应的,i为n)的加密运算生成第n+4个状态字Xn+4,示例的,以加密算法进行32轮(即n+1为32,相应的,n为31)迭代的加密运算,则最后第32轮加密运算计算第35个状态字X35
在上述多轮加密运算过程中,针对第i+1轮加密运算(第i+1轮加密运算可以是多轮加密运算中的任一轮加密运算,如第1轮至第n+1轮加密运算),本申请实施例需确定第i+1轮加密运算所使用的目标轮密钥;在本申请实施例中,多个轮密钥可依序排列形成一个轮密钥操作数,如4个轮密钥可依序排列形成一个轮密钥操作数,从而本申请实施例在第i+1轮加密运算,可从包含第i个轮密钥的轮密钥操作数中,确定第i+1轮加密运算使用的目标轮密钥;
示例的,在第1轮(此时i+1为1,相应的,i为0)的加密运算,本申请实施例可从包含第0个轮密钥rk0的轮密钥操作数中,确定第1轮加密运算使用的目标轮密钥;设包含第0个轮密钥rk0的轮密钥操作数可能为(rk0,rk1,rk2,rk3),则本申请实施例可从该轮密钥操作数中确定一个轮密钥作为第1轮加密运算使用的目标轮密钥,以此类推,则可确定每一轮加密运算使用的目标轮密钥。
在更进一步的可选具体实现中,在第i+1轮加密运算,本申请实施例可获取一个立即数(如一个8位的立即数),从而基于该立即数,从包含第i个轮密钥的轮密钥操作数中,选择一个轮密钥作为第i+1轮加密运算使用的目标轮密钥;以上述包含第i个轮密钥的轮密钥操作数中具有4个轮密钥为例,则在第i+1轮加密运算,本申请实施例可基于立即数,从包含第i个轮密钥rki的具有4个轮密钥的轮密钥操作数中,选择一个轮密钥作为第i+1轮加密运算使用的目标轮密钥;
示例的,设目标轮密钥为rk为例,则在第1轮加密运算中(即i+1为1,相应的,i为0),本申请实施例可基于一个8位的立即数(设为imm[1:0]),从包含第0个轮密钥rk0的轮密钥操作数(rk0,rk1,rk2,rk3)中选择一个轮密钥,作为第1轮加密运算使用的目标轮密钥rk,相应的计算过程可以如下示例:
Case{imm[1],imm[0]}
0:rk=rk0;
1:rk=rk1;
2:rk=rk2;
3:rk=rk3。
步骤S120、在第i+1轮加密运算,根据第i+1个状态字操作数中的状态字,以及第i+1轮加密运算使用的目标轮密钥,确定下一个状态字;所述下一个状态字形成下一个状态字操作数中的最后一个状态字;其中,在执行第n+1轮加密运算后,得出第n+2个状态字操作数,第n+2个状态字操作数中状态字的反序变换得出所述明文对应的密文。
在获取到第i+1轮加密运算使用的目标轮密钥后,本申请实施例可在第i+1轮加密运算计算下一个状态字,如计算第i+4个状态字Xi+4,可选的,本申请实施例可根据第i+1个状态字操作数中的状态字,以及第i+1轮加密运算使用的目标轮密钥,计算第i+4个状态字Xi+4,从而由第i+4个状态字形成下一个状态字操作数中的最后一个状态字。
在计算第i+4个状态字Xi+4的更为具体的可选实现中,本申请实施例可根据第i+1个状态字操作数中除首个状态字外的其他状态字,以及第i+1轮加密运算使用的目标轮密钥,确定第一中间状态字;进而,再根据第一中间状态字以及第i+1个状态字操作数中的首个状态字,确定第i+4个状态字Xi+4
可选的,以第i+1个状态字操作数为(Xi,Xi+1,Xi+2,Xi+3),且第i+1轮加密运算使用的目标轮密钥为rk为例,则第i+1个状态字操作数中的首个状态字为Xi,本申请实施例可基于第i+1个状态字操作数中除Xi外的其他状态字Xi+1,Xi+2,Xi+3以及第i+1轮加密运算使用的目标轮密钥rk,计算第一中间状态字;设第一中间状态字为tmp1,则在一种示例实现中,第一中间状态字tmp1的计算过程可以例如:
Figure BDA0002820806710000111
在得到第一中间状态字tmp 1后,本申请实施例可对第一中间状态字tmp 1按字节进行数据替换,得到第二中间状态字tmp 2;再根据第二中间状态字tmp2,与第二中间状态字tmp 2的多次比特循环左移位运算结果,确定第三中间状态字tmp 3;从而基于第三中间状态字tmp 3与第i+1个状态字操作数中的首个状态字Xi,确定第i+4个状态字Xi+4
在进一步的示例中,对第一中间状态字tmp 1按字节进行数据替换,得到第二中间状态字tmp 2的示例过程可以例如:
tmp 2=SubWord_SM4(tmp1);其中,SubWord_SM4()是对第一中间状态字tmp1按字节进行数据替换的方法,SubWord_SM4()可将输入的数据(如32位数据)按字节(如4个字节)分为多个子数据,然后查表(如查找Sbox表)对子数据进行数据替换,然后数据替换后的多个子数据拼接为结果输出(如32位的结果);相应的,在对第一中间状态字tmp1按字节进行数据替换的过程中,SubWord_SM4()可用于将输入的第一中间状态字按字节分为多个子数据,查表对子数据进行数据替换,数据替换后的多个子数据拼接为第二中间状态字。
示例的,根据第二中间状态字tmp 2,与第二中间状态字tmp 2的多次比特循环左移位运算结果,确定第三中间状态字tmp 3的示例过程可以例如:
Figure BDA0002820806710000112
Figure BDA0002820806710000113
其中,tmp2<<<2、tmp2<<<10、tmp2<<<18、tmp2<<<24为第二中间状态字tmp2的多次比特循环左移位运算结果;从而基于第二中间状态字tmp 2,以及该多次比特循环左移位运算结果,执行32比特异或运算,可得到第三中间状态字tmp 3。
示例的,基于第三中间状态字tmp 3与第i+1个状态字操作数中的首个状态字Xi,确定第i+4个状态字Xi+4的示例过程可以例如:
Figure BDA0002820806710000114
基于上文描述,以在第1轮加密运算,基于第1个状态字操作数(X0,X1,X2,X3),计算第4个状态字X4为例,结合图5所示SM4单轮计算指令的数据流程图,其示例过程可以如下:
Case{imm[1],imm[0]}
0:rk=rk0;
1:rk=rk1;
2:rk=rk2;
3:rk=rk3;
Endcase;
Figure BDA0002820806710000121
tmp2=SubWord_SM4(tmp1);
Figure BDA0002820806710000122
Figure BDA0002820806710000123
Dest=(X1,X2,X3,X4)。
在计算得到第i+4个状态字Xi+4后,第i+4个状态字Xi+4可作为下一个状态字操作数的最后一个状态字,从而形成下一个状态字操作数,以计算得到第4个状态字X4,且一个状态字操作数中具有4个状态字为例,则在第1个状态字操作数(X0,X1,X2,X3)的基础上,本申请实施例可得到第2个状态字操作数(X1,X2,X3,X4),即第4个状态字X4作为第2个状态字操作数中的最后一个状态字。
可选的,为便于下一轮加密运算,本申请实施例可将第i+4个状态字形成的下一个状态字操作数存入数据寄存器,从而下一轮加密运算可基于从数据寄存器中获取的状态字操作数,继续计算下一个状态字;例如,在第1轮加密运算计算出第4个状态字X4后,形成的第2个状态字操作数(X1,X2,X3,X4)可存入数据寄存器,从而在第2轮加密运算,本申请实施例可从数据寄存器中获取第2个状态字操作数(X1,X2,X3,X4),以计算第5个状态字,以此迭代,直至计算出最后一个状态字。需要说明的是,数据寄存器作为处理器中的计算单元,通过将计算下一个状态字所需的状态字操作数存入数据寄存器,可减少加密运算过程中处理器对访存带宽的需求,从而降低内存中数据被侧信道攻击的风险,提升加密运算过程中数据的安全性。
基于图4所示方法流程进行多轮迭代的加密运算后,本申请实施例可在最后的第n+1轮加密运算中计算得到第n+4个状态字Xn+4(如在最后的第32轮加密运算中计算得到第35个状态X35),从而第n+4个状态字可形成最后一个状态字操作数中的最后一个状态字,如最后一个状态字操作数为(Xn+1,Xn+2,Xn+3,Xn+4),进而,最后一个状态字操作数中状态字的反序变换(Xn+4,Xn+3,Xn+2,Xn+1)可作为本申请实施例输入的明文对应的密文,实现通过SM4算法的加密算法将明文转换为密文;在一种示例中,以最后第32轮加密运算计算得到第35个状态X35,则最后一个状态字操作数为(X32,X33,X34,X35),从而对该最后一个状态字操作数进行反序变换,可得到密文(X35,X34,X33,X32),以实现明文至密文的转换,完成SM4算法的加密算法。
本申请实施例提供的加速SM4算法的方法中,处理器可通过至少配置SM4单轮计算指令,来执行所述加速SM4算法的方法;具体在SM4算法的加密算法中,处理器可获取输入的明文,且所述明文中包括的初始的多个状态字,可依序排列形成第一个状态字操作数,其中一个状态字操作数包括依序排列的多个状态;从而,在第i+1轮加密运算,本申请实施例可从包含第i个轮密钥的轮密钥操作数中,确定第i+1轮加密运算使用的目标轮密钥,其中,i为0至n的整数,n为加密运算的总轮数减1,一个轮密钥操作数包括依序排列的多个轮密钥;进而,本申请实施例可在第i+1轮加密运算,根据第i+1个状态字操作数中的状态字,以及第i+1轮加密运算使用的目标轮密钥,确定下一个状态字,所述下一个状态字形成下一个状态字操作数中的最后一个状态字。
基于本申请实施例提供的加速SM4算法的方法,本申请实施例可在执行第n+1轮加密运算后,得出第n+2个状态字操作数,并由所述第n+2个状态字操作数中状态字的反序变换得出所述明文对应的密文,实现将输入的明文转换为密文,完成SM4算法的加密算法。可以看出,本申请实施例提供的加速SM4算法的方法,通过配置处理器指令集,由处理器中的逻辑硬件执行处理器指令集,从而以硬件方式加速SM4算法,具体在SM4算法的加密算法中,处理器通过配置的SM4单轮计算指令,以硬件方式加速SM4算法的加密算法;并且,SM4单轮计算指令以单轮计算为基础,如一轮运算计算一个状态字,可极大降低处理器的硬件实现复杂度。可见,本申请实施例提供的加速SM4算法的方法,可在硬件加速SM4算法的方式中,提高SM4算法的计算速度并降低硬件实现复杂度。
在可选实现中,本申请实施例可通过处理器配置的SM4第一单轮密钥扩展指令(SM4RK指令),来实现每轮密钥字的扩展,以通过扩展的密钥字确定轮密钥。可选的,图6示出了本申请实施例提供的加速SM4算法的另一可选方法流程,该方法流程可由处理器执行实现,具体的,处理器可至少配置SM4第一单轮密钥扩展指令(SM4RK指令),以执行图6所示加速SM4算法的方法,处理器通过配置的SM4第一单轮密钥扩展指令,可确定每一轮的密钥字,从而通过密钥字来确定轮密钥;
如图6所示,该方法流程可以包括:
步骤S200、获取初始的多个密钥字,初始的多个密钥字依序排列形成第一个密钥字操作数,一个密钥字操作数包括依序排列的多个密钥字。
本申请实施例可基于初始的多个密钥字,迭代的扩展出下一密钥字,例如初始的多个密钥字为4个密钥字K0,K1,K2和K3,从而本申请实施例可基于该初始的4个密钥字K0,K1,K2和K3,迭代的扩展下一密钥字,直至扩展得到第35个密钥字K35,由于第i+4个密钥字Ki+4作为第i个轮密钥rki,因此第35个密钥字K35可作为第31个轮密钥rk31;需要说明的是,SM4算法的加密算法和解密算法中,如果涉及32轮的加密算法和解密算法,则使用到的轮密钥rk0,rk1…rk31
在本申请实施例中,初始的多个密钥字可依序排列形成第一个密钥字操作数,且一个密钥字操作数包括依序排列的多个密钥字;例如,一个密钥字操作数包括依序排列的4个密钥字,则初始的多个密钥字K0,K1,K2和K3,可形成第一个密钥字操作数(K0,K1,K2,K3)。
步骤S210、根据与当前加密运算或解密运算的轮数相应的立即数,确定目标常数。
本申请实施例可获取与当前的加密运算或解密运算的轮数相应的立即数,如当前进行SM4的加密运算,则可获取与当前的加密运算的轮数相应的立即数,如当前进行SM4的解密运算,则可获取与当前的解密运算的轮数相应的立即数;从而,在可选实现中,本申请实施例可基于该立即数,从常数集合中确定相应的常数作为目标常数;以参数集合CKROM涉及32个常数CKi(i=0,1,…31)为例,则在进行加密运算时,本申请实施例可基于与当前加密运算的轮数相应的立即数,从而常数集合中选取轮数减1的常数作为目标常数,而在进行解密运算时,本申请实施例可基于与当前解密运算的轮数相应的立即数,从常数集合中选取与加密运算选取的常数为逆序的常数,作为目标常数。
示例的,以确定的目标常数为CK为例,则可通过如下过程确定目标常数:CK=CKROM(imm),其中,imm表示立即数,CKROM表示常数集合。
步骤S220、根据已得到的第i+1个密钥字操作数中的密钥字,以及所述目标常数,确定第i+4个密钥字;其中,所述第i+1个密钥字操作数中的最后一个密钥字为第i+3个密钥字,所述第i+4个密钥字形成下一个密钥字操作数中的最后一个密钥字,且第i+4个密钥字作为第i个轮密钥。
在已得到第i+1个密钥字操作数的情况下,本申请实施例可基于第i+1个密钥字操作数中的密钥字,以及步骤S210确定的目标常数,确定第i+4个密钥字Ki+4,其中第i+1个密钥字操作数中的最后一个密钥字为第i+3个密钥字,从而所确定的第i+4个密钥字Ki+4可作为下一个密钥字操作数中的最后一个密钥字;同时,本申请实施例可将确定的第i+4个密钥字Ki+4作为第i个轮密钥rki,以实现轮密钥的扩展生成;
示例的,以第1个密钥字操作数为(K0,K1,K2,K3)为例,则本申请实施例可基于第1个密钥字操作数(K0,K1,K2,K3),以及与第1轮的加密运算或解密运算的轮数相应的立即数确定的目标常数,确定下一个密钥字(即第4个密钥字)K4,进而(K1,K2,K3,K4)形成第二个密钥字操作数,且第4个密钥字K4作为第0个轮密钥rk0;再同理基于第二个密钥字操作数(K1,K2,K3,K4)可计算得到下一个密钥字(即第5个密钥字)K5,进而(K2,K3,K4,K5)形成第三个密钥字操作数,且第5个密钥字K5作为第1个轮密钥rk1;以加密运算为32轮为例,则可通过上述方式迭代的确定出最后的第35个密钥字K35,作为第31个轮密钥rk31,实现轮密钥rk0至rk31的扩展。
在步骤S220的可选实现中,本申请实施例可根据第i+1个密钥字操作数中除首个密钥字外的其他密钥字,以及目标常数,确定第一中间密钥字;进而,再根据第一中间密钥字以及第i+1个密钥字操作数中的首个密钥字,确定第i+4个密钥字Ki+4
可选的,以第i+1个密钥字操作数为(Ki,Ki+1,Ki+2,Ki+3),且目标常数为CK为例,则第i+1个密钥字操作数中的首个密钥字为Ki,本申请实施例可基于第i+1个密钥字操作数中除Ki外的其他密钥字Ki+1,Ki+2,Ki+3以及目标常数CK,计算第一中间密钥字;设第一中间密钥字为cmp1,则在一种示例实现中,第一中间密钥字cmp1的计算过程可以例如:
Figure BDA0002820806710000161
在得到第一中间密钥字cmp 1后,本申请实施例可对第一中间密钥字cmp 1按字节进行数据替换,得到第二中间密钥字cmp 2;再根据第二中间密钥字cmp2,与第二中间密钥字cmp 2的多次比特循环左移位运算结果,确定第三中间密钥字cmp 3;从而基于第三中间密钥字cmp 3与第i+1个密钥字操作数中的首个密钥字Ki,确定第i+4个密钥字Ki+4,完成第i+4个密钥字Ki+4的计算过程;
在进一步的示例中,对第一中间密钥字cmp 1按字节进行数据替换,得到第二中间密钥字cmp 2的示例过程可以例如:
cmp2=SubWord_SM4(cmp1);其中,SubWord_SM4()的功能可参照前文相应部分的描述;
示例的,根据第二中间密钥字cmp 2,与第二中间密钥字cmp 2的多次比特循环左移位运算结果,确定第三中间密钥字cmp 3的示例过程可以例如:
Figure BDA0002820806710000171
示例的,基于第三中间密钥字cmp3与第i+1个密钥字操作数中的首个密钥字Ki,确定第i+4个密钥字Ki+4的示例过程可以例如:
Figure BDA0002820806710000172
基于上文描述,以基于第1个密钥字操作数(K0,K1,K2,K3),计算第4个密钥字K4为例,结合图7所示SM4第一单轮密钥扩展指令的数据流图,其示例过程可以例如:
CK=CKROM(imm);
Figure BDA0002820806710000173
cmp 2=SubWord_SM4(cmp1);
Figure BDA0002820806710000174
Figure BDA0002820806710000175
Dest=(K1,K2,K3,K4)。
在计算得到第i+4个密钥字Ki+4后,第i+4个密钥字Ki+4可作为下一个密钥字操作数的最后一个密钥字,从而形成下一个密钥字操作数,以计算得到第4个密钥字K4,且一个密钥字操作数中具有4个密钥字为例,则在第1个密钥操作数(K0,K1,K2,K3)的基础上,本申请实施例可得到第2个密钥字操作数(K1,K2,K3,K4),即第4个密钥字K4作为第2个密钥字操作数中的最后一个密钥字。
可选的,为便于继续确定下一个密钥字,本申请实施例可将第i+4个密钥字形成的下一个密钥字操作数存入数据寄存器,从而可基于从数据寄存器中获取的密钥字操作数,继续计算下一个密钥字;例如,在第1轮加密运算计算出第4个密钥字K4后,所形成的第2个密钥字操作数(K1,K2,K3,K4)可存入数据寄存器,从而在第2轮加密运算,本申请实施例可从数据寄存器中获取第2个密钥字操作数(K1,K2,K3,K4),以计算第5个密钥字,以此迭代,直至计算出最后一个密钥字。需要说明的是,数据寄存器作为处理器中的计算单元,通过将计算下一个密钥字所需的密钥字操作数存入数据寄存器,可减少加密运算过程中处理器对访存带宽的需求,从而降低内存中数据被侧信道攻击的风险,提升数据的安全性。
本申请实施例通过处理器配置的SM4第一单轮密钥扩展指令(SM4RK指令),来实现每轮密钥字的扩展,并通过扩展的密钥字确定轮密钥(如第i+4个密钥字Ki+4作为第i个轮密钥rki),可实现SM4算法的加密算法或解密算法运算过程中,轮密钥的扩展实现,为实现SM4的加密算法或解密算法提供基础。
在进一步的可选实现中,出于编程灵活性的考虑,本申请实施例可通过为处理器配置SM4第二单轮密钥扩展指令(可称为SM4RKI指令),来替代SM4第一单轮密钥扩展指令(SM4RK指令),相比于SM4第一单轮密钥扩展指令,SM4第二单轮密钥扩展指令可从常数依序排列的常数操作数中确定目标常数;除目标常数的确定方式不同外,SM4第二单轮密钥扩展指令和SM4第一单轮密钥扩展指令的其他功能类似,可相互参照;在可选实现中,图8示出了本申请实施例提供的加速SM4算法的再一可选方法流程,处理器可至少配置SM4第二单轮密钥扩展指令(SM4RKI指令),以执行实现图8所示加速SM4算法的方法,如图8所示,该方法流程可以包括:
步骤S300、获取初始的多个密钥字,初始的多个密钥字依序排列形成第一个密钥字操作数,一个密钥字操作数包括依序排列的多个密钥字。
步骤S300的介绍可参照图6所示步骤S200,此处不再赘述。
步骤S310、基于立即数,从常数操作数中选取目标常数,其中,所述常数操作数包括多个依序排列的常数。
本申请实施例可将常数依序排列形成常数操作数,其中一个常数操作数可包括多个依序排列的常数;从而,本申请实施例可获取一个立即数,基于立即数,从常数操作数中选取目标常数;示例的,以当前计算的下一个密钥字为第4个密钥字K4为例,则本申请实施例除获取初始的多个密钥字K0、K1、K2和K3,并形成第1个密钥字操作数(K0,K1,K2,K3)外,还可获取常数操作数(CK0,CK1,CK2,CK3);并基于立即数(设为imm[1:0]),从常数操作数(CK0,CK1,CK2,CK3)中选取目标常数CK;示例的,选取目标常数CK的示例过程可以例如:
Case{imm[1],imm[0]};
0:CK=CK0
1:CK=CK1
2:CK=CK2
3:CK=CK3
步骤S320、根据已得到的第i+1个密钥字操作数中的密钥字,以及所述目标常数,确定第i+4个密钥字;其中,所述第i+1个密钥字操作数中的最后一个密钥字为第i+3个密钥字,所述第i+4个密钥字形成下一个密钥字操作数中的最后一个密钥字,且第i+4个密钥字作为第i个轮密钥。
步骤S320的介绍可参照图6所示步骤S220,此处不再赘述。
可选的,步骤S320中形成的下一个密钥字操作数可存入数据寄存器中,以便继续计算下一个密钥字。
基于上文描述,以基于第1个密钥字操作数(K0,K1,K2,K3),计算第4个密钥字K4为例,结合图9所示SM4第二单轮密钥扩展指令的数据流图,其示例过程可以例如:
Case{imm[1],imm[0]};
0:CK=CK0
1:CK=CK1
2:CK=CK2
3:CK=CK3
Endcase;
Figure BDA0002820806710000191
cmp 2=SubWord_SM4(cmp1);
Figure BDA0002820806710000201
Figure BDA0002820806710000202
Dest=(K1,K2,K3,K4)。
需要说明的是,在可选实现中,处理器可存储SM4算法计算过程需要的参数,例如,Sbox、CK等计算中需要调用的参数,从而处理器可无需从内存中加载这些参数,可降低处理器对于访存带宽的需求。
本申请实施例提供的加速SM4算法的方法中,处理器可通过配置的SM4单轮计算指令,以硬件方式加速SM4算法的加密算法,同理,以硬件方式加速SM4算法的解密算法,可使用与加密算法使用顺序相颠倒的轮密钥实现;由于处理器配置的SM4单轮计算指令,是以单轮计算为基础,一轮计算一个状态字,因此可极大降低处理器的硬件实现复杂度。进一步,处理器通过配置的SM4第一单轮密钥扩展指令,或者SM4第二单轮密钥扩展指令,可以单轮计算为基础,实现密钥字的扩展,从而基于扩展的密钥字确定轮密钥,由于单轮的实现密钥字扩展,因此可在以硬件方式加速SM4算法的情况下,降低处理器的硬件实现复杂度。更进一步的,处理器计算的下一个状态字操作数、下一个密钥字操作数可存入处理器的数据寄存器中,从而在处理器计算下一个状态、下一个密钥字时,处理器可减少对访存带宽的需求,降低内存中数据被侧信道攻击的风险,提升数据的安全性。
下面对本申请实施例提供的加速SM4算法的装置进行介绍,下文描述的加速SM4算法的装置,可以认为是处理器为实现本申请实施例提供的加速SM4算法的方法,所需设置的逻辑单元。下文描述的加速SM4算法的装置,可与上文描述的内容,相互对应参照。
在可选实现中,图10示出了本申请实施例提供的加速SM4算法的装置的框图,该加速SM4算法的装置可应用于处理器,如图10所示,该装置可以包括:数据寄存器单元100,SM4单轮计算单元110,译码控制单元120;
其中,数据寄存器单元100,用于存储SM4算法的计算数据和/或中间数据;
译码控制单元120用于响应和译码SM4指令;
SM4单轮计算单元110至少配置有SM4单轮计算指令(SM4RND指令),SM4单轮计算单元110通过配置的SM4单轮计算指令,至少用于:
获取输入的明文,所述明文包括初始的多个状态字,其中,初始的多个状态字依序排列形成第一个状态字操作数,一个状态字操作数包括依序排列的多个状态字;
在第i+1轮加密运算,从包含第i个轮密钥的轮密钥操作数中,确定第i+1轮加密运算使用的目标轮密钥,其中,i为0至n的整数,n为加密运算的总轮数减1,一个轮密钥操作数包括依序排列的多个轮密钥;
在第i+1轮加密运算,根据第i+1个状态字操作数中的状态字,以及第i+1轮加密运算使用的目标轮密钥,确定下一个状态字;其中,所述下一个状态字形成下一个状态字操作数中的最后一个状态字,且在执行第n+1轮加密运算后,得出第n+2个状态字操作数,所述第n+2个状态字操作数中状态字的反序变换得出所述明文对应的密文。
可选的,SM4单轮计算单元110,用于在第i+1轮加密运算,根据第i+1个状态字操作数中的状态字,以及第i+1轮加密运算使用的目标轮密钥,确定下一个状态字,包括:
在第i+1轮加密运算,根据第i+1个状态字操作数中除首个状态字外的其他状态字,以及第i+1轮加密运算使用的目标轮密钥,确定第一中间状态字;
根据所述第一中间状态字以及第i+1个状态字操作数中的首个状态字,确定第i+4个状态字。
可选的,所述第i+1个状态字操作数为(Xi,Xi+1,Xi+2,Xi+3),且第i+1轮加密运算使用的目标轮密钥为rk;
SM4单轮计算单元110,用于在第i+1轮加密运算,根据第i+1个状态字操作数中除首个状态字外的其他状态字,以及第i+1轮加密运算使用的目标轮密钥,确定第一中间状态字,包括:
基于如下公式确定第一中间状态字:
Figure BDA0002820806710000221
其中,tmp1表示第一中间状态字,
Figure BDA0002820806710000222
表示32比特异或运算。
可选的,SM4单轮计算单元110,用于根据所述第一中间状态字以及第i+1个状态字操作数中的首个状态字,确定第i+4个状态字,包括:
对第一中间状态字按字节进行数据替换,得到第二中间状态字;
根据第二中间状态字,与第二中间状态字的多次比特循环左移位运算结果,确定第三中间状态字;
基于第三中间状态字与第i+1个状态字操作数中的首个状态字,确定第i+4个状态字。
可选的,SM4单轮计算单元110,用于对第一中间状态字按字节进行数据替换,得到第二中间状态字,包括:
基于如下公式得到第二中间状态字:
tmp2=SubWord_SM4(tmp1);其中,tmp2表示第二中间状态字,SubWord_SM4()是对第一中间状态字按字节进行数据替换的方法,SubWord_SM4()用于将输入的第一中间状态字按字节分为多个子数据,查表对子数据进行数据替换,数据替换后的多个子数据拼接为第二中间状态字。
可选的,SM4单轮计算单元110,用于根据第二中间状态字,与第二中间状态字的多次比特循环左移位运算结果,确定第三中间状态字,包括:
基于如下公式确定第三中间状态字:
Figure BDA0002820806710000223
Figure BDA0002820806710000224
其中,tmp3表示第三中间状态字,<<<表示32比特循环左移位运算。
可选的,SM4单轮计算单元110,用于基于第三中间状态字与第i+1个状态字操作数中的首个状态字,确定第i+4个状态字,包括:
基于如下公式确定第i+4个状态字:
Figure BDA0002820806710000225
其中,Xi+4表示第i+4个状态字。
可选的,SM4单轮计算单元110,用于在第i+1轮加密运算,从包含第i个轮密钥的轮密钥操作数中,确定第i+1轮加密运算使用的目标轮密钥,包括:
获取立即数,基于所述立即数,从包含第i个轮密钥的轮密钥操作数中,选择一个轮密钥作为第i+1轮加密运算使用的目标轮密钥。
可选的,SM4单轮计算单元110还可用于:将形成的下一个状态字操作数,写入处理器的数据寄存器单元100。
在进一步的可选实现中,SM4单轮计算单元110还可配置有SM4第一单轮密钥扩展指令(SM4RK指令),SM4单轮计算单元110通过配置的SM4第一单轮密钥扩展指令,还可用于:
获取初始的多个密钥字,初始的多个密钥字依序排列形成第一个密钥字操作数,一个密钥字操作数包括依序排列的多个密钥字;
根据与当前加密运算或解密运算的轮数相应的立即数,确定目标常数;
根据已得到的第i+1个密钥字操作数中的密钥字,以及所述目标常数,确定第i+4个密钥字;其中,所述第i+1个密钥字操作数中的最后一个密钥字为第i+3个密钥字,所述第i+4个密钥字形成下一个密钥字操作数中的最后一个密钥字,且第i+4个密钥字作为第i个轮密钥。
作为SM4第一单轮密钥扩展指令的替代,在进一步的可选实现中,SM4单轮计算单元110还可配置有SM4第二单轮密钥扩展指令(SM4RKI指令),SM4单轮计算单元110通过配置的SM4第二单轮密钥扩展指令,还可用于:
获取初始的多个密钥字,初始的多个密钥字依序排列形成第一个密钥字操作数,一个密钥字操作数包括依序排列的多个密钥字;
基于立即数,从常数操作数中选取目标常数,其中,常数操作数包括多个依序排列的常数;
根据已得到的第i+1个密钥字操作数中的密钥字,以及所述目标常数,确定第i+4个密钥字;其中,所述第i+1个密钥字操作数中的最后一个密钥字为第i+3个密钥字,所述第i+4个密钥字形成下一个密钥字操作数中的最后一个密钥字,且第i+4个密钥字作为第i个轮密钥。
可选的,在SM4单轮计算单元110配置SM4第一单轮密钥扩展指令,或SM4第二单轮密钥扩展指令的情况下,SM4单轮计算单元110,用于根据已得到的第i+1个密钥字操作数中的密钥字,以及所述目标常数,确定第i+4个密钥字,包括:
根据第i+1个密钥字操作数中除首个密钥字外的其他密钥字,以及目标常数,确定第一中间密钥字;
根据第一中间密钥字以及第i+1个密钥字操作数中的首个密钥字,确定第i+4个密钥字。
可选的,所述第i+1个密钥字操作数为(Ki,Ki+1,Ki+2,Ki+3),所述目标常数为CK;
SM4单轮计算单元110,用于根据第i+1个密钥字操作数中除首个密钥字外的其他密钥字,以及目标常数,确定第一中间密钥字,包括:
基于如下公式确定第一中间密钥字:
Figure BDA0002820806710000241
其中,cmp1表示第一中间密钥字,
Figure BDA0002820806710000242
表示32比特异或运算。
可选的,SM4单轮计算单元110,用于根据第一中间密钥字以及第i+1个密钥字操作数中的首个密钥字,确定第i+4个密钥字包括:
对第一中间密钥字按字节进行数据替换,得到第二中间密钥字;
根据第二中间密钥字,与第二中间密钥字的多次比特循环左移位运算结果,确定第三中间密钥字;
基于第三中间密钥字与第i+1个密钥字操作数中的首个密钥字为,确定第i+4个密钥字。
可选的,SM4单轮计算单元110还可用于:将形成的下一个密钥字操作数,存入数据寄存器单元。
可选的,进一步,SM4单轮计算单元110可存储SM4算法计算过程中需要调用的参数,例如Sbox、CK等计算中需要调用的参数,以减少处理器对于访存带宽的需求。
在SM4单轮计算单元110配置SM4单轮计算指令(SM4RND指令),和SM4第一单轮密钥扩展指令(SM4RK指令)的情况下,SM4单轮计算单元110可通过共享逻辑硬件,来实现SM4单轮计算指令和SM4第一单轮密钥扩展指令;在可选实现中,图11示出了SM4单轮计算单元的可选框图,如图11所示,该SM4单轮计算单元可以包括:第一选择器10,第二选择器11,第一异或(XOR)模块12,多个第一Sbox(置换盒)13,第一逻辑模块14,第二逻辑模块15,第三选择器16,常数集合(CKROM)17;其中,第一逻辑模块例如LBlock逻辑模块,第二逻辑模块例如LKBlock逻辑模块;
在本申请实施例中,第一选择器10,用于在执行SM4单轮计算指令时,基于立即数,从第i+1个密钥字操作数(Ki,Ki+1,Ki+2,Ki+3)中选择密钥字,选择的密钥字输入第二选择器11;也就是说,在执行SM4单轮计算指令时,第i+1个密钥字操作数(Ki,Ki+1,Ki+2,Ki+3)输入第一选择器,利用立即数(如立即数中的低两位数据),控制第一选择器从输入的第i+1个密钥字操作数(Ki,Ki+1,Ki+2,Ki+3)中选择密钥字,所选择的密钥字输入第二选择器11;
在执行SM4第一单轮密钥扩展指令时,常数集合17基于立即数进行查表操作,获得的数据(如目标常数)作为第二选择器的另一个输入;
第二选择器11,用于根据当前的指令类型进行控制,得到的结果输入第一异或模块12;可选的,在执行SM4单轮计算指令时,第二选择器的结果为第一选择器输入的密钥字,在执行SM4第一单轮密钥扩展指令时,第二选择器的结果为常数集合进行查表操作后获得的数据;
第一异或模块12,用于将第二选择器的结果,与第i+1个操作数据操作数(Wi,Wi+1,Wi+2,Wi+3)中除首个操作数据外的其他操作数据,进行按位异或操作;其中,在执行SM4单轮计算指令时,第i+1个操作数据操作数具体为第i+1个状态字操作数(Xi,Xi+1,Xi+2,Xi+3),如第1个状态字操作数(X0,X1,X2,X3),在执行SM4第一单轮密钥扩展指令时,第i+1个操作数据操作数具体为第i+1个密钥字操作数(Ki,Ki+1,Ki+2,Ki+3),如第1个密钥字操作数(K0,K1,K2,K3);
其中,第一异或模块12的异或操作结果,拆分为多个子数据,分别输入多个第一Sbox13,一个第一Sbox13输入一个子数据;例如第一异或模块12的异或操作结果为32位结果,该32位结果可按4个字节进行拆分,拆分为4个8位的子数据,从而4个子数据分别输入多个第一Sobx13,即一个子数据输入一个第一Sobx13;
第一Sbox13,用于对输入的子数据进行查表,获得查表结果;多个第一Sbox13的查表结果拼接为异或操作结果对应的替换数据,该替换数据分别输入第一逻辑模块14和第二逻辑模块15的第一输入口(如B口);
第一逻辑模块14,用于对第一输入口(如B口)输入的替换数据,以及第二输入口(如X口)输入的第i+1个操作数据操作数(Wi,Wi+1,Wi+2,Wi+3)中的首个操作数据Wi,执行第一逻辑处理,处理的结果通过输出口(如L口)输入第三选择器16;可选的,在执行SM4单轮计算指令时,第i+1个操作数据操作数(Wi,Wi+1,Wi+2,Wi+3)中的首个操作数据Wi,例如第i+1个状态字操作数(Xi,Xi+1,Xi+2,Xi+3)中的首个状态字Xi;在执行SM4第一单轮密钥扩展指令时,第i+1个操作数据操作数(Wi,Wi+1,Wi+2,Wi+3)中的首个操作数据Wi,例如第i+1个密钥字操作数(Ki,Ki+1,Ki+2,Ki+3)中的首个密钥字Ki
可选的,第一逻辑模块14所执行的第一逻辑处理例如:
Figure BDA0002820806710000261
其中,X表示第二输入口输入的数据(如第i+1个操作数据操作数(Wi,Wi+1,Wi+2,Wi+3)中的首个操作数据Wi),B口表示第一输入口输入的数据(如替换数据),L表示第一逻辑处理的结果;
第二逻辑模块15,用于对第一输入口(如B口)输入的替换数据,以及第二输入口(如X口)输入的第i+1个操作数据操作数(Wi,Wi+1,Wi+2,Wi+3)中的首个操作数据Wi,执行第二逻辑处理,处理的结果通过输出口(如L口)输入第三选择器16;
可选的,第二逻辑模块15所执行的第二逻辑处理例如:
Figure BDA0002820806710000262
其中,LK表示第二逻辑处理的结果;
第三选择器16,用于利用当前的指令类型,对第一逻辑模块14输入的数据和第二逻辑模块15输入的数据进行控制,得到下一个操作数据Wi+4;该下一个操作数据,与第i+1个操作数据操作数(Wi,Wi+1,Wi+2,Wi+3)中除首个操作数据外的其他操作数据相结合,得到下一个操作数据操作数(Wi+1,Wi+2,Wi+3,Wi+4);
可选的,在执行SM4单轮计算指令时,第三选择器16得到的下一个操作数据为下一个状态字;该下一个状态字,与第i+1个状态字操作数(Xi,Xi+1,Xi+2,Xi+3)中除首个状态字的其他状态字依序排列,可得到下一个状态字操作数,如得到的下一个状态字操作数为(X1,X2,X3,X4);
在执行SM4第一单轮密钥扩展指令时,第三选择器16得到的下一个操作数据为下一个密钥字;该下一个密钥字,与第i+1个密钥字操作数(Ki,Ki+1,Ki+2,Ki+3)中除首个密钥字的其他密钥字依序排列,可得到下一个密钥字操作数,如得到的下一个密钥字操作数为(K1,K2,K3,K4)。
通过图11所示SM4单轮计算单元,本申请实施例可由共享硬件的形式,执行SM4单轮计算指令(SM4RND指令),和SM4第一单轮密钥扩展指令(SM4RK指令),极大降低硬件实现复杂度。
基于图11所示硬件实现,当需要执行SM4算法的加密、解密计算时,可以通过如下函数实现32轮的SM4计算:
Figure BDA0002820806710000271
Figure BDA0002820806710000281
同时,当需要进行32轮的SM4轮密钥扩展时,密钥字扩展可以通过如下函数实现:
Figure BDA0002820806710000282
Figure BDA0002820806710000291
可选的,在SM4单轮计算单元110配置SM4单轮计算指令(SM4RND指令),和SM4第二单轮密钥扩展指令(SM4RKI指令)的情况下,SM4单轮计算单元110可通过共享逻辑硬件,来实现SM4单轮计算指令和SM4第二单轮密钥扩展指令;在可选实现中,图12示出了SM4单轮计算单元的另一可选框图,如图12所示,该SM4单轮计算单元可以包括:第四选择器20,第二异或(XOR)模块21,多个第二Sbox(置换盒)22,第三逻辑模块23,第四逻辑模块24,第五选择器25;其中,第三逻辑模块例如LBlock逻辑模块,第四逻辑模块例如LKBlock逻辑模块;
在本申请实施例中,第四选择器20,用于基于立即数,从第i+1个密钥字操作数(Ki,Ki+1,Ki+2,Ki+3)中选择密钥字,选择的密钥字输入第二异或模块21;
第二异或模块21,用于将第四选择器输入的密钥字,以及第i+1个操作数据操作数(Wi,Wi+1,Wi+2,Wi+3)中除首个操作数据外的其他操作数据,进行按位异或操作;其中,在执行SM4单轮计算指令时,第i+1个操作数据操作数具体为第i+1个状态字操作数(Xi,Xi+1,Xi+2,Xi+3),如第1个状态字操作数(X0,X1,X2,X3),在执行SM4第一单轮密钥扩展指令时,第i+1个操作数据操作数具体为第i+1个密钥字操作数(Ki,Ki+1,Ki+2,Ki+3),如第1个密钥字操作数(K0,K1,K2,K3);
第二异或模块21的异或操作结果,拆分为多个子数据,分别输入多个第二Sbox22,一个第二Sbox22输入一个子数据;例如第二异或模块12的异或操作结果为32位结果,该32位结果可按4个字节进行拆分,拆分为4个8位的子数据,从而4个子数据分别输入多个第二Sobx22,即一个子数据输入一个第二Sobx22;
第二Sbox22,用于对输入的子数据进行查表,获得查表结果;多个第二Sbox22的查表结果拼接为异或操作结果对应的替换数据,该替换数据分别输入第三逻辑模块23和第四逻辑模块24的第一输入口(如B口);
第三逻辑模块23,用于对第一输入口(如B口)输入的替换数据,以及第二输入口(如X口)输入的第i+1个操作数据操作数(Wi,Wi+1,Wi+2,Wi+3)中的首个操作数据Wi,执行第一逻辑处理,处理的结果通过输出口(如L口)输入第五选择器25;
第四逻辑模块24,用于对第一输入口(如B口)输入的替换数据,以及第二输入口(如X口)输入的第i+1个操作数据操作数(Wi,Wi+1,Wi+2,Wi+3)中的首个操作数据Wi,执行第二逻辑处理,处理的结果通过输出口(如L口)输入第五选择器25;
第五选择器25,用于利用当前的指令类型,对第三逻辑模块23和第四逻辑模块24输入的结果进行控制,得到下一个操作数据Wi+4;该下一个操作数据,与第i+1个操作数据操作数(Wi,Wi+1,Wi+2,Wi+3)中除首个操作数据外的其他操作数据相结合,得到下一个操作数据操作数(Wi+1,Wi+2,Wi+3,Wi+4);
可选的,在执行SM4单轮计算指令时,第五选择器25得到的下一个操作数据为下一个状态字;该下一个状态字,与第i+1个状态字操作数(Xi,Xi+1,Xi+2,Xi+3)中除首个状态字的其他状态字依序排列,可得到下一个状态字操作数,如得到的下一个状态字操作为(X1,X2,X3,X4);
在执行SM4第一单轮密钥扩展指令时,第五选择器25得到的下一个操作数据为下一个密钥字;该下一个密钥字,与第i+1个密钥字操作数(Ki,Ki+1,Ki+2,Ki+3)中除首个密钥字的其他密钥字依序排列,可得到下一个密钥字操作数,如得到的下一个密钥字操作数为(K1,K2,K3,K4)。
通过图12所示SM4单轮计算单元,本申请实施例可由共享硬件的形式,执行SM4单轮计算指令(SM4RND指令),和SM4第二单轮密钥扩展指令(SM4RKI指令),极大降低硬件实现复杂度。
基于图12所示硬件实现,当需要执行SM4算法的加密、解密计算时,可以图11部分相应的函数执行实现;而在需要进行32轮的SM4轮密钥扩展时,密钥字扩展可以通过如下函数实现:
Figure BDA0002820806710000311
本发明实施例采用专门的处理器指令集,以SM4单轮的轮密钥扩展指令和SM4单轮的计算指令进行SM4算法加速,可在硬件加速SM4算法的方式下,实现硬件简单高效的效果,降低硬件实现复杂度;同时将SM4算法中用到的Sbox、CK等常数存储于处理器的计算单元中,减少了访存带宽的需求,并降低了侧信道攻击的风险,提高了数据的安全性;并且,通过共享硬件的方式,来实现SM4单轮的轮密钥扩展指令和SM4单轮的计算指令,可进一步降低硬件实现复杂度。
进一步,本申请实施例还提供一种处理器,该处理器可通过配置处理器指令集,以执行本申请实施例提供的加速SM4算法的方法;可选的,该处理器指令集可以包括:SM4单轮计算指令,和,SM4第一单轮密钥扩展指令或SM4第二单轮密钥扩展指令。
更进一步的,本申请实施例还提供一种电子设备,该电子设备可以包括上述所述的处理器。
上文描述了本申请实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本申请实施例披露、公开的实施例方案。
虽然本申请实施例披露如上,但本申请并非限定于此。任何本领域技术人员,在不脱离本申请的精神和范围内,均可作各种更动与修改,因此本申请的保护范围应当以权利要求所限定的范围为准。

Claims (25)

1.一种加速SM4算法的方法,其特征在于,应用于处理器,所述处理器至少配置SM4单轮计算指令,以执行所述加速SM4算法的方法;所述加速SM4算法的方法包括:
获取输入的明文,所述明文包括初始的多个状态字,其中,初始的多个状态字依序排列形成第一个状态字操作数,一个状态字操作数包括依序排列的多个状态字;
在第i+1轮加密运算,从包含第i个轮密钥的轮密钥操作数中,确定第i+1轮加密运算使用的目标轮密钥,其中,i为0至n的整数,n为加密运算的总轮数减1,一个轮密钥操作数包括依序排列的多个轮密钥;
在第i+1轮加密运算,根据第i+1个状态字操作数中的状态字,以及第i+1轮加密运算使用的目标轮密钥,确定下一个状态字;其中,所述下一个状态字形成下一个状态字操作数中的最后一个状态字,且在执行第n+1轮加密运算后,得出第n+2个状态字操作数,所述第n+2个状态字操作数中状态字的反序变换得出所述明文对应的密文。
2.根据权利要求1所述的加速SM4算法的方法,其特征在于,在第i+1轮加密运算,根据第i+1个状态字操作数中的状态字,以及第i+1轮加密运算使用的目标轮密钥,确定下一个状态字,包括:
在第i+1轮加密运算,根据第i+1个状态字操作数中除首个状态字外的其他状态字,以及第i+1轮加密运算使用的目标轮密钥,确定第一中间状态字;
根据所述第一中间状态字以及第i+1个状态字操作数中的首个状态字,确定第i+4个状态字。
3.根据权利要求2所述的加速SM4算法的方法,其特征在于,所述第i+1个状态字操作数为(Xi,Xi+1,Xi+2,Xi+3),且第i+1轮加密运算使用的目标轮密钥为rk;
所述在第i+1轮加密运算,根据第i+1个状态字操作数中除首个状态字外的其他状态字,以及第i+1轮加密运算使用的目标轮密钥,确定第一中间状态字,包括:
基于如下公式确定第一中间状态字:
Figure FDA0002820806700000021
其中,tmp1表示第一中间状态字,
Figure FDA0002820806700000024
表示32比特异或运算。
4.根据权利要求3所述的加速SM4算法的方法,其特征在于,所述根据所述第一中间状态字以及第i+1个状态字操作数中的首个状态字,确定第i+4个状态字,包括:
对第一中间状态字按字节进行数据替换,得到第二中间状态字;
根据第二中间状态字,与第二中间状态字的多次比特循环左移位运算结果,确定第三中间状态字;
基于第三中间状态字与第i+1个状态字操作数中的首个状态字,确定第i+4个状态字。
5.根据权利要求4所述的加速SM4算法的方法,其特征在于,所述对第一中间状态字按字节进行数据替换,得到第二中间状态字,包括:
基于如下公式得到第二中间状态字:
tmp2=SubWord_SM4(tmp1);其中,tmp2表示第二中间状态字,SubWord_SM4()是对第一中间状态字按字节进行数据替换的方法,SubWord_SM4()用于将输入的第一中间状态字按字节分为多个子数据,查表对各个子数据进行数据替换,数据替换后的各个子数据拼接为第二中间状态字。
6.根据权利要求4所述的加速SM4算法的方法,其特征在于,所述根据第二中间状态字,与第二中间状态字的多次比特循环左移位运算结果,确定第三中间状态字,包括:
基于如下公式确定第三中间状态字:
Figure FDA0002820806700000022
Figure FDA0002820806700000023
其中,tmp3表示第三中间状态字,<<<表示32比特循环左移位运算。
7.根据权利要求6所述的加速SM4算法的方法,其特征在于,所述基于第三中间状态字与第i+1个状态字操作数中的首个状态字,确定第i+4个状态字,包括:
基于如下公式确定第i+4个状态字:
Figure FDA0002820806700000031
其中,Xi+4表示第i+4个状态字。
8.根据权利要求1-7任一项所述的加速SM4算法的方法,其特征在于,所述在第i+1轮加密运算,从包含第i个轮密钥的轮密钥操作数中,确定第i+1轮加密运算使用的目标轮密钥,包括:
获取立即数,基于所述立即数,从包含第i个轮密钥的轮密钥操作数中,选择一个轮密钥作为第i+1轮加密运算使用的目标轮密钥。
9.根据权利要求1所述的加速SM4算法的方法,其特征在于,还包括:
将形成的下一个状态字操作数,写入处理器的数据寄存器。
10.根据权利要求1所述的加速SM4算法的方法,其特征在于,所述处理器还配置SM4第一单轮密钥扩展指令,基于所述SM4第一单轮密钥扩展指令,所述方法还包括:
获取初始的多个密钥字,初始的多个密钥字依序排列形成第一个密钥字操作数,一个密钥字操作数包括依序排列的多个密钥字;
根据与当前加密运算或解密运算的轮数相应的立即数,确定目标常数;
根据已得到的第i+1个密钥字操作数中的密钥字,以及所述目标常数,确定第i+4个密钥字;其中,所述第i+1个密钥字操作数中的最后一个密钥字为第i+3个密钥字,所述第i+4个密钥字形成下一个密钥字操作数中的最后一个密钥字,且第i+4个密钥字作为第i个轮密钥。
11.根据权利要求1所述的加速SM4算法的方法,其特征在于,所述处理器还配置SM4第二单轮密钥扩展指令,基于所述SM4第二单轮密钥扩展指令,所述方法还包括:
获取初始的多个密钥字,初始的多个密钥字依序排列形成第一个密钥字操作数,一个密钥字操作数包括依序排列的多个密钥字;
基于立即数,从常数操作数中选取目标常数,其中,常数操作数包括多个依序排列的常数;
根据已得到的第i+1个密钥字操作数中的密钥字,以及所述目标常数,确定第i+4个密钥字;其中,所述第i+1个密钥字操作数中的最后一个密钥字为第i+3个密钥字,所述第i+4个密钥字形成下一个密钥字操作数中的最后一个密钥字,且第i+4个密钥字作为第i个轮密钥。
12.根据权利要求10或11所述的加速SM4算法的方法,其特征在于,所述根据已得到的第i+1个密钥字操作数中的密钥字,以及所述目标常数,确定第i+4个密钥字,包括:
根据第i+1个密钥字操作数中除首个密钥字外的其他密钥字,以及目标常数,确定第一中间密钥字;
根据第一中间密钥字以及第i+1个密钥字操作数中的首个密钥字,确定第i+4个密钥字。
13.根据权利要求12所述的加速SM4算法的方法,其特征在于,所述第i+1个密钥字操作数为(Ki,Ki+1,Ki+2,Ki+3),所述目标常数为CK;
所述根据第i+1个密钥字操作数中除首个密钥字外的其他密钥字,以及目标常数,确定第一中间密钥字,包括:
基于如下公式确定第一中间密钥字:
Figure FDA0002820806700000041
其中,cmp1表示第一中间密钥字,
Figure FDA0002820806700000042
表示32比特异或运算。
14.根据权利要求13所述的加速SM4算法的方法,其特征在于,所述根据第一中间密钥字以及第i+1个密钥字操作数中的首个密钥字,确定第i+4个密钥字包括:
对第一中间密钥字按字节进行数据替换,得到第二中间密钥字;
根据第二中间密钥字,与第二中间密钥字的多次比特循环左移位运算结果,确定第三中间密钥字;
基于第三中间密钥字与第i+1个密钥字操作数中的首个密钥字,确定第i+4个密钥字。
15.根据权利要求10或11所述的加速SM4算法的方法,其特征在于,还包括:
将形成的下一个密钥字操作数,存入数据寄存器。
16.一种加速SM4算法的装置,其特征在于,应用于处理器,所述装置至少包括:SM4单轮计算单元;
所述SM4单轮计算单元配置有SM4单轮计算指令,所述SM4单轮计算单元通过配置的SM4单轮计算指令,至少用于:
获取输入的明文,所述明文包括初始的多个状态字,其中,初始的多个状态字依序排列形成第一个状态字操作数,一个状态字操作数包括依序排列的多个状态字;
在第i+1轮加密运算,从包含第i个轮密钥的轮密钥操作数中,确定第i+1轮加密运算使用的目标轮密钥,其中,i为0至n的整数,n为加密运算的总轮数减1,一个轮密钥操作数包括依序排列的多个轮密钥;
在第i+1轮加密运算,根据第i+1个状态字操作数中的状态字,以及第i+1轮加密运算使用的目标轮密钥,确定下一个状态字;其中,所述下一个状态字形成下一个状态字操作数中的最后一个状态字,且在执行第n+1轮加密运算后,得出第n+2个状态字操作数,所述第n+2个状态字操作数中状态字的反序变换得出所述明文对应的密文。
17.根据权利要求16所述的加速SM4算法的装置,其特征在于,还包括:
数据寄存器单元,用于存储SM4算法的计算数据和/或中间数据;
译码控制单元,用于响应和译码SM4指令;
所述SM4单轮计算单元还用于:将形成的下一个状态字操作数,存入数据寄存器单元;其中,所述SM4单轮计算单元存储有SM4算法计算过程中需调用的参数。
18.根据权利要求16所述的加速SM4算法的装置,其特征在于,所述SM4单轮计算单元还配置有SM4第一单轮密钥扩展指令;所述SM4单轮计算单元通过配置的SM4第一单轮密钥扩展指令,还用于:
获取初始的多个密钥字,初始的多个密钥字依序排列形成第一个密钥字操作数,一个密钥字操作数包括依序排列的多个密钥字;
根据与当前加密运算或解密运算的轮数相应的立即数,确定目标常数;
根据已得到的第i+1个密钥字操作数中的密钥字,以及所述目标常数,确定第i+4个密钥字;其中,所述第i+1个密钥字操作数中的最后一个密钥字为第i+3个密钥字,所述第i+4个密钥字形成下一个密钥字操作数中的最后一个密钥字,且第i+4个密钥字作为第i个轮密钥。
19.根据权利要求16所述的加速SM4算法的装置,其特征在于,所述SM4单轮计算单元还配置有SM4第二单轮密钥扩展指令;所述SM4单轮计算单元通过配置的SM4第二单轮密钥扩展指令,还用于:
获取初始的多个密钥字,初始的多个密钥字依序排列形成第一个密钥字操作数,一个密钥字操作数包括依序排列的多个密钥字;
基于立即数,从常数操作数中选取目标常数,其中,常数操作数包括多个依序排列的常数;
根据已得到的第i+1个密钥字操作数中的密钥字,以及所述目标常数,确定第i+4个密钥字;其中,所述第i+1个密钥字操作数中的最后一个密钥字为第i+3个密钥字,所述第i+4个密钥字形成下一个密钥字操作数中的最后一个密钥字,且第i+4个密钥字作为第i个轮密钥。
20.根据权利要求18所述的加速SM4算法的装置,其特征在于,所述SM4单轮计算单元通过共享逻辑硬件,实现SM4单轮计算指令和SM4第一单轮密钥扩展指令;所述SM4单轮计算单元包括:
第一选择器,用于在执行SM4单轮计算指令时,基于立即数,从第i+1个密钥字操作数中选择密钥字,选择的密钥字输入第二选择器;其中,在执行SM4第一单轮密钥扩展指令时,常数集合基于立即数进行查表操作,获得的数据作为第二选择器的另一个输入;
第二选择器,用于根据当前的指令类型进行控制,得到的结果输入第一异或模块;
第一异或模块,用于将第二选择器的结果,与第i+1个操作数据操作数中除首个操作数据外的其他操作数据,进行按位异或操作;其中,第一异或模块的异或操作结果,拆分为多个子数据,分别输入多个第一置换盒,一个第一置换盒输入一个子数据;
第一置换盒,用于对输入的子数据进行查表,获得查表结果;多个第一置换盒的查表结果拼接为异或操作结果对应的替换数据,所述替换数据分别输入第一逻辑模块和第二逻辑模块的第一输入口;
第一逻辑模块,用于对第一输入口输入的替换数据,以及第二输入口输入的第i+1个操作数据操作数中的首个操作数据,执行第一逻辑处理,处理的结果通过输出口输入第三选择器;
第二逻辑模块,用于对第一输入口输入的替换数据,以及第二输入口输入的第i+1个操作数据操作数中的首个操作数据,执行第二逻辑处理,处理的结果通过输出口输入第三选择器;
第三选择器,用于利用当前的指令类型,对第一逻辑模块输入的数据和第二逻辑模块输入的数据进行控制,得到下一个操作数据;该下一个操作数据,与第i+1个操作数据操作数中除首个操作数据外的其他操作数据相结合,得到下一个操作数据操作数。
21.根据权利要求19所述的加速SM4算法的装置,其特征在于,所述SM4单轮计算单元通过共享逻辑硬件,实现SM4单轮计算指令和SM4第二单轮密钥扩展指令;所述SM4单轮计算单元包括:
第四选择器,用于基于立即数,从第i+1个密钥字操作数中选择密钥字,选择的密钥字输入第二异或模块;
第二异或模块,用于将第四选择器输入的密钥字,以及第i+1个操作数据操作数中除首个操作数据外的其他操作数据,进行按位异或操作;其中,第二异或模块的异或操作结果,拆分为多个子数据,分别输入多个第二置换盒,一个第二置换盒输入一个子数据;
第二置换盒,用于对输入的子数据进行查表,获得查表结果;多个第二置换盒的查表结果拼接为异或操作结果对应的替换数据,该替换数据分别输入第三逻辑模块和第四逻辑模块的第一输入口;
第三逻辑模块,用于对第一输入口输入的替换数据,以及第二输入口输入的第i+1个操作数据操作数中的首个操作数据,执行第一逻辑处理,处理的结果通过输出口输入第五选择器;
第四逻辑模块,用于对第一输入口输入的替换数据,以及第二输入口输入的第i+1个操作数据操作数中的首个操作数据,执行第二逻辑处理,处理的结果通过输出口输入第五选择器;
第五选择器,用于利用当前的指令类型,对第三逻辑模块和第四逻辑模块输入的数据进行控制,得到下一个操作数据;该下一个操作数据,与第i+1个操作数据操作数中除首个操作数据外的其他操作数据相结合,得到下一个操作数据操作数。
22.根据权利要求20或21所述的加速SM4算法的装置,其特征在于,在当前的指令类型为SM4单轮计算指令时,第i+1个操作数据操作数具体为第i+1个状态字操作数,所述下一个操作数据为下一个状态字,所述下一个操作数据操作数为下一个状态字操作数;
在当前的指令类型为SM4第一单轮密钥扩展指令或SM4第二单轮密钥扩展指令时,第i+1个操作数据操作数具体为第i+1个密钥字操作数,所述下一个操作数据为下一个密钥字,所述下一个操作数据操作数为下一个密钥字操作数。
23.一种处理器,其特征在于,所述处理器通过配置处理器指令集,以执行如权利要求1-15任一项所述的加速SM4算法的方法。
24.根据权利要求23所述的处理器,其特征在于,所述处理器指令集包括:SM4单轮计算指令,和,SM4第一单轮密钥扩展指令或SM4第二单轮密钥扩展指令。
25.一种电子设备,其特征在于,所述电子设备包括如权利要求23或24所述的处理器。
CN202011417896.5A 2020-12-07 2020-12-07 一种加速sm4算法的方法、装置、处理器及电子设备 Active CN112564890B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011417896.5A CN112564890B (zh) 2020-12-07 2020-12-07 一种加速sm4算法的方法、装置、处理器及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011417896.5A CN112564890B (zh) 2020-12-07 2020-12-07 一种加速sm4算法的方法、装置、处理器及电子设备

Publications (2)

Publication Number Publication Date
CN112564890A true CN112564890A (zh) 2021-03-26
CN112564890B CN112564890B (zh) 2023-03-24

Family

ID=75059323

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011417896.5A Active CN112564890B (zh) 2020-12-07 2020-12-07 一种加速sm4算法的方法、装置、处理器及电子设备

Country Status (1)

Country Link
CN (1) CN112564890B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112989395A (zh) * 2021-04-28 2021-06-18 山东省计算中心(国家超级计算济南中心) 一种sm4密码算法的形式化验证方法及系统
CN116383803A (zh) * 2023-03-14 2023-07-04 成都海泰方圆科技有限公司 数据处理方法、装置、计算机设备和存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150186138A1 (en) * 2013-12-27 2015-07-02 Intel Corporation Sms4 acceleration processors, methods, systems, and instructions
CN105306195A (zh) * 2014-07-22 2016-02-03 英特尔公司 Sm4加速处理器、方法、系统和指令
CN105490802A (zh) * 2015-11-27 2016-04-13 桂林电子科技大学 基于gpu的改进sm4并行加解密通信方法
US20170310464A1 (en) * 2006-12-28 2017-10-26 Intel Corporation Architecture and instruction set for implementing advanced encryption standard (aes)
CN110138557A (zh) * 2019-05-28 2019-08-16 上海兆芯集成电路有限公司 数据处理装置及数据处理方法
CN110138556A (zh) * 2019-05-28 2019-08-16 上海兆芯集成电路有限公司 数据处理装置及数据处理方法
CN110138541A (zh) * 2018-02-02 2019-08-16 英特尔公司 用于对称密钥密码的统一硬件加速器
CN111526003A (zh) * 2020-04-09 2020-08-11 北京理工大学 数据加密方法、装置、存储介质和电子设备
US20200382289A1 (en) * 2019-05-28 2020-12-03 Shanghai Zhaoxin Semiconductor Co., Ltd. Data processing device and data processing method

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170310464A1 (en) * 2006-12-28 2017-10-26 Intel Corporation Architecture and instruction set for implementing advanced encryption standard (aes)
US20150186138A1 (en) * 2013-12-27 2015-07-02 Intel Corporation Sms4 acceleration processors, methods, systems, and instructions
CN105306195A (zh) * 2014-07-22 2016-02-03 英特尔公司 Sm4加速处理器、方法、系统和指令
CN105490802A (zh) * 2015-11-27 2016-04-13 桂林电子科技大学 基于gpu的改进sm4并行加解密通信方法
CN110138541A (zh) * 2018-02-02 2019-08-16 英特尔公司 用于对称密钥密码的统一硬件加速器
CN110138557A (zh) * 2019-05-28 2019-08-16 上海兆芯集成电路有限公司 数据处理装置及数据处理方法
CN110138556A (zh) * 2019-05-28 2019-08-16 上海兆芯集成电路有限公司 数据处理装置及数据处理方法
US20200382289A1 (en) * 2019-05-28 2020-12-03 Shanghai Zhaoxin Semiconductor Co., Ltd. Data processing device and data processing method
CN111526003A (zh) * 2020-04-09 2020-08-11 北京理工大学 数据加密方法、装置、存储介质和电子设备

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112989395A (zh) * 2021-04-28 2021-06-18 山东省计算中心(国家超级计算济南中心) 一种sm4密码算法的形式化验证方法及系统
CN112989395B (zh) * 2021-04-28 2022-05-17 山东省计算中心(国家超级计算济南中心) 一种sm4密码算法的形式化验证方法及系统
CN116383803A (zh) * 2023-03-14 2023-07-04 成都海泰方圆科技有限公司 数据处理方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
CN112564890B (zh) 2023-03-24

Similar Documents

Publication Publication Date Title
AU767323B2 (en) Block encryption device using auxiliary conversion
JP3851115B2 (ja) 暗号回路
JP2002023622A (ja) 暗号化装置、復号装置及び拡大鍵生成装置、拡大鍵生成方法並びに記録媒体
CN112564890B (zh) 一种加速sm4算法的方法、装置、处理器及电子设备
JP2019519801A (ja) 安全かつ効率的なブロック暗号アルゴリズムの実現方法と装置
JP5652363B2 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
CN116846542A (zh) 一种数据加密和解密方法、装置及电子设备
WO2015146430A1 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
CN114124359A (zh) 保留格式加密数据的方法、装置、电子设备及存储介质
CN104219045A (zh) Rc4 流密码生成器
CN116647328A (zh) 一种新型psp结构的轻量级分组密码实现方法及系统
CN114422111B (zh) 一种轻量级的sm4算法的硬件实现电路
WO2009090689A1 (ja) 暗号化装置、暗号化方法及びプログラム
JP4395527B2 (ja) 情報処理装置
CN105577362B (zh) 一种应用于aes算法的字节替换方法及系统
CN111262685B (zh) 一种新型密钥生成的Shield分组密码实现方法、装置及可读存储介质
KR102282363B1 (ko) 비트 시리얼 hight 연산 장치 및 그 방법, 그 방법을 프로세서가 수행하도록 하기 위한 명령어를 포함하는 컴퓨터 판독 가능한 기록매체 및 컴퓨터 프로그램
WO2015146432A1 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
CN117978373A (zh) 用于资源受限物联网设备的轻量级序列加密方法、设备
CN117633847A (zh) 一种协处理器以及数据加密方法
CN118101158A (zh) 机器学习下使用全同态加密的安全外包计算方法及装置
CN117240430A (zh) 一种基于异步电路的加解密方法及电路
JP2021047371A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40049847

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant