CN110311771B - Sm4加解密方法及电路 - Google Patents

Sm4加解密方法及电路 Download PDF

Info

Publication number
CN110311771B
CN110311771B CN201810229969.4A CN201810229969A CN110311771B CN 110311771 B CN110311771 B CN 110311771B CN 201810229969 A CN201810229969 A CN 201810229969A CN 110311771 B CN110311771 B CN 110311771B
Authority
CN
China
Prior art keywords
key
encryption
round
expansion
decryption
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
CN201810229969.4A
Other languages
English (en)
Other versions
CN110311771A (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.)
Beijing Xiaomi Pinecone Electronic Co Ltd
Original Assignee
Beijing Xiaomi Pinecone Electronic 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 Beijing Xiaomi Pinecone Electronic Co Ltd filed Critical Beijing Xiaomi Pinecone Electronic Co Ltd
Priority to CN201810229969.4A priority Critical patent/CN110311771B/zh
Publication of CN110311771A publication Critical patent/CN110311771A/zh
Application granted granted Critical
Publication of CN110311771B publication Critical patent/CN110311771B/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
    • 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

Landscapes

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

Abstract

本公开是关于一种SM4加解密方法及电路,所述方法包括:基于SM4密钥扩展算法,对输入的加密密钥进行多轮密钥扩展,在每一轮密钥扩展得到加密轮密钥后,基于SM4加密算法利用该加密轮密钥对输入的明文数据进行加密变换,以得到密文数据;保存针对所述加密密钥进行的最后四轮密钥扩展得到的加密轮密钥;在对所述密文数据进行解密时,对保存的最后四轮加密轮密钥进行多轮密钥逆向扩展,并在每一轮密钥逆向扩展得到解密轮密钥后,基于SM4解密算法利用该解密轮密钥对所述密文数据进行解密变换,以得到所述明文数据。通过本公开的技术方案,可以避免存储全部的轮密钥,从而减小占用的存储资源。

Description

SM4加解密方法及电路
技术领域
本公开涉及信息安全技术领域,尤其涉及一种SM4加解密方法及电路。
背景技术
SM4算法是国家密码管理局发布的分组密码算法,是我国官方公布的第一个商用密码算法,其广泛应用于无线通信、物联网传感节点以及智能数据卡等领域。
SM4算法包括密钥扩展算法和加密算法,两者均采用32轮非线性迭代结构,其加密过程为:将128比特的密钥按照32比特一组进行分组,然后根据密钥扩展算法进行32轮密钥扩展,在每一轮密钥扩展产生轮密钥后,将128比特明文数据也按照32比特一组进行分组,利用该轮密钥进行一轮加密变换,经过32轮加密变换后得到与明文数据对应的密文数据。
在对密文数据进行解密时,解密算法与加密算法相同,仅是轮密钥的使用顺序与之相反。可见,在解密过程中需要将32轮密钥扩展得到的32个轮密钥全部存储,这就需要消耗32×32比特的存储资源,从而将导致所应用的芯片中的大量资源被占用。
发明内容
为克服相关技术中存在的问题,本公开提供一种SM4加解密方法及电路。
根据本公开实施例的第一方面,提供一种SM4加解密方法,包括:
基于SM4密钥扩展算法,对输入的加密密钥进行多轮密钥扩展,在每一轮密钥扩展得到加密轮密钥后,基于SM4加密算法利用该加密轮密钥对输入的明文数据进行加密变换,以得到密文数据;
保存针对所述加密密钥进行的最后四轮密钥扩展得到的加密轮密钥;
在对所述密文数据进行解密时,对保存的最后四轮加密轮密钥进行多轮密钥逆向扩展,并在每一轮密钥逆向扩展得到解密轮密钥后,基于SM4解密算法利用该解密轮密钥对所述密文数据进行解密变换,以得到所述明文数据。
可选地,所述对保存的最后四轮加密轮密钥进行多轮密钥逆向扩展,包括:
根据如下公式对对保存的最后四轮加密轮密钥进行多轮密钥逆向扩展:
RKi-4=RKi⊕T'(RKi-3⊕RKi-2⊕RKi-1⊕CKi),i=31,30,...,0
其中,RKi表示第i轮加密轮密钥;CKi表示固定参数且CKi为字;⊕表示异或运算;T'表示合成置换运算,由非线性变换τ和线性变换L'复合而成,即T'(·)=L'(τ(·))。
可选地,所述非线性变换τ的输入表示为A=(a0,a1,a2,a3),则τ(A)=(Sbox(a0),Sbox(a1),Sbox(a2),Sbox(a3)),其中,a0,a1,a2,a3均为8比特;Sbox(·)表示固定的8比特输入8比特输出的置换。
可选地,所述线性变换L'的输入表示为B=τ(A),则L'(B)=B⊕(B<<<13)⊕(B<<<23),其中,<<<表示循环左移操作,B为字。
可选地,在进行所述多轮密钥扩展的过程中,除最后四轮对所述加密密钥的密钥扩展以外,在其他每一轮密钥扩展得到加密轮密钥后,在利用该加密轮密钥对所述明文数据进行加密变换时并行执行下一轮密钥扩展;和/或
在进行所述多轮密钥逆向扩展的过程中,除最后四轮所述密钥逆向扩展以外,在其他每一轮密钥逆向扩展得到解密轮密钥后,在利用该解密轮密钥对所述密文数据进行解密变换时并行执行下一轮密钥逆向扩展。
根据本公开实施例的第二方面,提供一种SM4加解密电路,包括:
密钥扩展模块,用于基于SM4密钥扩展算法,对输入的加密密钥进行多轮密钥扩展,以及在对输入的明文数据对应的密文数据进行解密时,对保存的最后四轮加密轮密钥进行多轮密钥逆向扩展;
存储模块,与所述密钥扩展模块连接,用于保存针对所述加密密钥进行的最后四轮密钥扩展得到的加密轮密钥;
加解密模块,分别与所述密钥扩展模块和所述存储模块连接,用于在每一轮密钥扩展得到加密轮密钥后,基于SM4加密算法利用该加密轮密钥对所述明文数据进行加密变换,以得到密文数据,以及在对所述密文数据进行解密时,对保存的最后四轮加密轮密钥进行多轮密钥逆向扩展,并在每一轮密钥逆向扩展得到解密轮密钥后,基于SM4解密算法利用该解密轮密钥对所述密文数据进行解密变换,以得到所述明文数据。
可选地,所述密钥扩展模块用于:
根据如下公式对对保存的最后四轮加密轮密钥进行多轮密钥逆向扩展:
RKi-4=RKi⊕T'(RKi-3⊕RKi-2⊕RKi-1⊕CKi),i=31,30,...,0
其中,RKi表示第i轮加密轮密钥;CKi表示固定参数且CKi为字;⊕表示异或运算;T'表示合成置换运算,由非线性变换τ和线性变换L'复合而成,即T'(·)=L'(τ(·))。
可选地,所述非线性变换τ的输入表示为A=(a0,a1,a2,a3),则τ(A)=(Sbox(a0),Sbox(a1),Sbox(a2),Sbox(a3)),其中,a0,a1,a2,a3均为8比特;Sbox(·)表示固定的8比特输入8比特输出的置换。
可选地,所述线性变换L'的输入表示为B=τ(A),则L'(B)=B⊕(B<<<13)⊕(B<<<23),其中,<<<表示循环左移操作。
可选地,所述加解密模块包括串联的至少两个加解密变换子模块,所述密钥扩展模块包括串联的至少两个密钥扩展子模块,所述加解密变换子模块与所述密钥扩展子模块的数量相等且一一对应,每个所述密钥扩展子模块与对应的所述加解密变换子模块连接;
每个所述密钥扩展子模块用于执行一轮所述密钥扩展/密钥逆向扩展,每个所述加解密变换子模块用于执行一轮所述加密变换/解密变换;
除最后一个所述密钥扩展子模块外,在其他每一个所述密钥扩展子模块执行一轮所述密钥扩展/密钥逆向扩展得到加密轮密钥/解密轮密钥后,在对应的所述加解密变换子模块根据该加密轮密钥/解密轮密钥进行所述加密变换/解密变换时,下一个所述密钥扩展子模块根据该加密轮密钥/解密密钥并行执行下一轮密钥扩展/密钥逆向扩展。
本公开的实施例提供的技术方案可以包括以下有益效果:通过基于SM4密钥扩展算法对输入的加密密钥进行多轮密钥扩展,并保存针对加密密钥进行的最后四轮密钥扩展得到的加密轮密钥,且在对加密得到加密数据进行解密时,对保存的最后四轮加密轮密钥进行多轮密钥逆向扩展,并在每一轮密钥逆向扩展得到解密轮密钥后,基于SM4解密算法利用该解密轮密钥对密文数据进行解密变换,得到明文数据,可以避免存储全部的轮密钥,从而减小占用的存储资源。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据本公开一示例性实施例示出的一种SM4加解密方法的流程图;
图2示出了在实施本公开提供的SM4加解密方法时的密钥扩展示意图;
图3示出了在实施本公开提供的SM4加解密方法时的密钥逆向扩展示意图;
图4示出了在实施本公开提供的SM4加解密方法时的示意图;
图5是根据本公开一示例性实施例示出的一种SM4加解密电路的示意图;
图6是根据另一示例性实施例示出的一种SM4加解密电路的示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的电路和方法的例子。
图1是根据一示例性实施例示出的一种SM4加解密方法的流程图,如图1所示,该方法包括以下步骤:
在步骤S101中,基于SM4密钥扩展算法,对输入的加密密钥进行多轮密钥扩展,在每一轮密钥扩展得到加密轮密钥后,基于SM4加密算法利用该加密轮密钥对输入的明文数据进行加密变换,以得到密文数据。
在步骤S102中,保存针对输入的加密密钥进行的最后四轮密钥扩展得到的加密轮密钥。
在步骤S103中,在对密文数据进行解密时,对保存的最后四轮轮密钥进行多轮密钥逆向扩展,并在每一轮密钥逆向扩展得到解密轮密钥后,基于SM4解密算法利用该解密轮密钥对该密文数据进行解密变换,以得到明文数据。
通过上述实施例提供的技术方案,仅保存最后四轮轮密钥并在进行解密变换时,对最后四轮的加密轮密钥进行密钥逆向扩展,可以避免存储全部的轮密钥,从而减小占用的存储资源。
下面通过具体的实施例对上述SM4加解密方法中的密钥扩展、密钥逆向扩展以及加解密变换过程进行详细说明。
实施例一:密钥扩展
在本公开的实施例中,输入的加密密钥长度为128比特,其可以表示为MK=(MK0,MK1,MK2,MK3),其中,MKi(i=0,1,2,3)为32比特。具体地,可以根据式(1)和式(2)对该加密密钥进行多轮密钥扩展,其扩展示意图如加密算法图2所示。
(K0,K1,K2,K3)=(MK0⊕FK0,MK1⊕FK1,MK2⊕FK2,MK3⊕FK3) (1)
RKi=Ki+4=Ki⊕T'(Ki+1⊕Ki+2⊕Ki+3⊕CKi),i=0,1,...,31 (2)
其中,FK=(FK0,FK1,FK2,FK3)为系统参数,可取FK0=(A3B1BAC6),FK1=(56AA3350),FK2=(677D9197),FK3=(B27022DC);CKi为固定参数,可以设定CKi,j为CKi的第j字节,j=0,1,2,3,则CKi,j=(4i+j)×7(mod 256);⊕表示异或运算;T'表示合成置换运算,其输入和输出均为32比特,且由非线性变换τ和线性变换L'符合而成,即T'(·)=L'(τ(·))。
进一步地,可将非线性变换τ的32比特输入数据表示为A=(a0,a1,a2,a3),其中,a0,a1,a2,a3均为8比特,则τ(A)=(Sbox(a0),Sbox(a1),Sbox(a2),Sbox(a3))。
进一步地,线性变换L'的输入是非线性变换τ的输出,即B=τ(A),可将线性变换L'的输出表示为C,则C=L'(B)=B⊕(B<<<13)⊕(B<<<23),其中,<<<表示循环左移操作。
实施例二:密钥逆向扩展
由于U=W⊕V可以任意交换其中2个变量的位置且解密轮密钥是加密轮密钥的逆序,在对加密得到的密文数据进行解密时,可以将保存的最后四轮轮密钥(RK31,RK30,RK29,RK28)作为初始密钥,根据式(3)进行密钥逆向扩展,该密钥逆向扩展过程的示意图如图3所示。
RKi-4=RKi⊕T'(RKi-3⊕RKi-2⊕RKi-1⊕CKi),i=31,30,...,0 (3)
其中,合成置换运算T'、非线性变换τ以及线性变换L'的定义可参见上述密钥扩展的相关描述,此处不再赘述。
可见,在解密方向,通过保存最后四轮轮密钥并依此进行密钥逆向扩展,可以计算出解密所需的所有轮密钥RKi,i=31,...1,0,相对于现有技术中需存储全部的32个轮密钥,其占用的存储资源减小为原来的1/8。
实施例三:加密变换
在本公开的实施例中,输入的明文数据和输出的密文数据的长度均为128比特,以(X0,X1,X2,X3)表示输入的明文数据,以(Y0,Y1,Y2,Y3)表示输出的密文数据,在每一轮密钥扩展得到解密轮密钥RKi,i=31,...,1,0后,可根据式(4)和式(5)对输入的明文数据进行加密变换,以得到密文数据:
Xi+4=Xi⊕T(Xi+1⊕Xi+2⊕Xi+3⊕RKi) (4)
(Y0,Y1,Y2,Y3)=R(X32,X33,X34,X35)=(X35,X34,X33,X32) (5)
其中,T表示合成置换运算,其输入和输出均为32比特,且由非线性变换τ和线性变换L符合而成,即T(·)=L(τ(·));R表示反逆序变换,R(A0,A1,A2,A3)=(A3,A2,A1,A0),A0,A1,A2,A3为字。
进一步地,可将非线性变换τ的32比特输入数据表示为A=(a0,a1,a2,a3),32比特输出数据表示为B=(b0,b1,b2,b3),其中,a0,a1,a2,a3,b0,b1,b2,b3均为8比特,则(b0,b1,b2,b3)=τ(A)=(Sbox(a0),Sbox(a1),Sbox(a2),Sbox(a3))。
进一步地,非线性变换τ的输出B是线性变换L的输入,可将线性变换L的输出表示为C,则C=L(B)=B⊕(B<<<2)⊕(B<<<10)⊕(B<<<18)⊕(B<<<24),其中,<<<表示循环左移操作。
值得说明的是,在本公开的实施例中,对密文数据进行解密变换的过程与上述对明文数据进行加密变换的过程相同,此处不再赘述。
由此可见,无论是在加密变换还是在解密变换的过程中,下一轮的加密变换/解密变换结果依赖于上一轮的加密变换/解密变换结果。为了提高SM4算法的性能,在本公开的另一实施例中,可以在加密方向上,在进行多轮密钥扩展的过程中,除最后四轮对加密密钥的密钥扩展以外,在其他每一轮密钥扩展得到加密轮密钥后,在利用该加密轮密钥对明文数据进行加密变换时并行执行下一轮密钥扩展;和/或在解密方向上,在进行多轮密钥逆向扩展的过程中,除最后四轮密钥逆向扩展以外,在其他每一轮密钥逆向扩展得到解密轮密钥后,在利用该解密轮密钥对密文数据进行解密变换时并行执行下一轮密钥逆向扩展,如图4所示。这样,可以增加每个时钟节拍内的迭代轮数,相对于现有技术中一个时钟节拍只能进行一轮迭代,在同样时钟频率下可以提升SM4算法的性能。
图5是根据一示例性实施例示出的一种SM4加解密电路的示意图,如图5所示,该电路500包括:密钥扩展模块501、存储模块502和加解密模块503。
该密钥扩展模块501用于基于SM4密钥扩展算法,对输入的加密密钥进行多轮密钥扩展,以及在对输入的明文数据对应的密文数据进行解密时,对保存的最后四轮加密轮密钥进行多轮密钥逆向扩展。
该存储模块502,与密钥扩展模块501连接,用于保存针对所述加密密钥进行的最后四轮密钥扩展得到的加密轮密钥。
该加解密模块503,分别与密钥扩展模块501和存储模块502连接,用于在每一轮密钥扩展得到加密轮密钥后,基于SM4加密算法利用该加密轮密钥对所述明文数据进行加密变换,以得到所述密文数据,以及在对所述密文数据进行解密时,对保存的最后四轮加密轮密钥进行多轮密钥逆向扩展,并在每一轮密钥逆向扩展得到解密轮密钥后,基于SM4解密算法利用该解密轮密钥对所述密文数据进行解密变换,以得到所述明文数据。
在一个实施例中,密钥扩展模块501用于根据如下公式对对保存的最后四轮加密轮密钥进行多轮密钥逆向扩展:
RKi-4=RKi⊕T'(RKi-3⊕RKi-2⊕RKi-1⊕CKi),i=31,30,...,0
其中,RKi表示第i轮加密轮密钥;CKi表示固定参数且CKi为字;⊕表示异或运算;T'表示合成置换运算,由非线性变换τ和线性变换L'复合而成,即T'(·)=L'(τ(·))。
进一步地,所述非线性变换τ的输入表示为A=(a0,a1,a2,a3),则τ(A)=(Sbox(a0),Sbox(a1),Sbox(a2),Sbox(a3)),其中,a0,a1,a2,a3均为8比特;Sbox(·)表示固定的8比特输入8比特输出的置换。
进一步地,所述线性变换L'的输入表示为B=τ(A),则L'(B)=B⊕(B<<<13)⊕(B<<<23),其中,<<<表示循环左移操作,B为字。
可见,解密轮密钥是加密轮密钥的逆序,在利用最后四轮轮密钥进行密钥逆向扩展时,可复用上述密钥扩展模块,也就是说,上述密钥逆向扩展实际上是将最后四轮轮密钥作为密钥扩展模块的输入数据,再次进行密钥扩展。
在另一个实施例中,如图6所示,加解密模块503可以包括串联的至少两个加解密变换子模块531,每个加解密变换子模块531用于执行一轮对明文数据的加密变换;密钥扩展模块501可以包括串联的至少两个密钥扩展子模块511,每个密钥扩展子模块511用于执行一轮对加密密钥的密钥扩展。其中,加解密变换子模块531与密钥扩展子模块511的数量相等且一一对应,每个加解密变换子模块511与对应的加解密变换子模块531连接。
在一个时钟节拍内,除最后一个密钥扩展子模块511外,在其他每一个密钥扩展子模块511执行一轮密钥扩展/密钥逆向扩展后,在对应的加解密变换子模块531根据该加密轮密钥/解密轮密钥进行加密变换/解密变换时,下一个密钥扩展子模块根据该加密轮密钥/解密轮密钥并行执行下一轮密钥扩展/密钥逆向扩展。
由此可见,通过串联的至少两个加解密变换子模块和至少两个密钥扩展子模块,使得每个时钟节拍内该电路可以完成两轮加解密变换迭代和密钥扩展/逆向扩展迭代,只需经过16个时钟节拍即可完成32轮迭代。
值得说明的是,由于多个密钥扩展子模块串联以及多个加解密变换子模块串联会增加组合逻辑级数,在一定时钟频率下,串联的加解密变换子模块和密钥扩展子模块的数量并不是无限的,这通常与采用的工艺及时钟频率相关,工艺越先进、时钟频率越低,可以串联的加解密变换子模块和密钥扩展子模块的数量越多。例如,若采用TSMC 16nm工艺、时钟频率为400MHz,在保证综合时序的情况下,可以串联两个加解密变换子模块和对应的两个密钥扩展子模块。
进一步地,储模块502可以包括触发器(如图6所示的触发器521和触发器522);该电路500还可以包括反序变换模块504,用于将加密变换结果进行反序变换后输出,得到最终的密文数据。
关于上述实施例中的电路,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本领域技术人员在考虑说明书及实践本公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (10)

1.一种SM4加解密方法,其特征在于,包括:
基于SM4密钥扩展算法,对输入的加密密钥进行多轮密钥扩展,在每一轮密钥扩展得到加密轮密钥后,基于SM4加密算法利用该加密轮密钥对输入的明文数据进行加密变换,以得到密文数据;
保存针对所述加密密钥进行的最后四轮密钥扩展得到的加密轮密钥;
在对所述密文数据进行解密时,对保存的最后四轮加密轮密钥进行多轮密钥逆向扩展,并在每一轮密钥逆向扩展得到解密轮密钥后,基于SM4解密算法利用该解密轮密钥对所述密文数据进行解密变换,以得到所述明文数据。
2.根据权利要求1所述的方法,其特征在于,所述对保存的最后四轮加密轮密钥进行多轮密钥逆向扩展,包括:
根据如下公式对保存的最后四轮加密轮密钥进行多轮密钥逆向扩展:
Figure FDA0003669652630000011
其中,RKi表示第i轮加密轮密钥;CKi表示固定参数且CKi为字;
Figure FDA0003669652630000012
表示异或运算;T'表示合成置换运算,由非线性变换τ和线性变换L'复合而成,即T'(·)=L'(τ(·))。
3.根据权利要求2所述的方法,其特征在于,所述非线性变换τ的输入表示为A=(a0,a1,a2,a3),则τ(A)=(Sbox(a0),Sbox(a1),Sbox(a2),Sbox(a3)),其中,a0,a1,a2,a3均为8比特;Sbox(·)表示固定的8比特输入8比特输出的置换。
4.根据权利要求3所述的方法,其特征在于,所述线性变换L'的输入表示为B=τ(A),则
Figure FDA0003669652630000013
其中,<<<表示循环左移操作。
5.根据权利要求1所述的方法,其特征在于,在进行所述多轮密钥扩展的过程中,除最后四轮对所述加密密钥的密钥扩展以外,在其他每一轮密钥扩展得到加密轮密钥后,在利用该加密轮密钥对所述明文数据进行加密变换时并行执行下一轮密钥扩展;和/或
在进行所述多轮密钥逆向扩展的过程中,除最后四轮所述密钥逆向扩展以外,在其他每一轮密钥逆向扩展得到解密轮密钥后,在利用该解密轮密钥对所述密文数据进行解密变换时并行执行下一轮密钥逆向扩展。
6.一种SM4加解密电路,其特征在于,包括:
密钥扩展模块,用于基于SM4密钥扩展算法,对输入的加密密钥进行多轮密钥扩展,以及在对输入的明文数据对应的密文数据进行解密时,对保存的最后四轮加密轮密钥进行多轮密钥逆向扩展;
存储模块,与所述密钥扩展模块连接,用于保存针对所述加密密钥进行的最后四轮密钥扩展得到的加密轮密钥;
加解密模块,分别与所述密钥扩展模块和所述存储模块连接,用于在每一轮密钥扩展得到加密轮密钥后,基于SM4加密算法利用该加密轮密钥对所述明文数据进行加密变换,以得到密文数据,以及在对所述密文数据进行解密时,对保存的最后四轮加密轮密钥进行多轮密钥逆向扩展,并在每一轮密钥逆向扩展得到解密轮密钥后,基于SM4解密算法利用该解密轮密钥对所述密文数据进行解密变换,以得到所述明文数据。
7.根据权利要求6所述的电路,其特征在于,所述密钥扩展模块用于:
根据如下公式对保存的最后四轮加密轮密钥进行多轮密钥逆向扩展:
Figure FDA0003669652630000021
其中,RKi表示第i轮加密轮密钥;CKi表示固定参数且CKi为字;
Figure FDA0003669652630000031
表示异或运算;T'表示合成置换运算,由非线性变换τ和线性变换L'复合而成,即T'(·)=L'(τ(·))。
8.根据权利要求7所述的电路,其特征在于,所述非线性变换τ的输入表示为A=(a0,a1,a2,a3),则τ(A)=(Sbox(a0),Sbox(a1),Sbox(a2),Sbox(a3)),其中,a0,a1,a2,a3均为8比特;Sbox(·)表示固定的8比特输入8比特输出的置换。
9.根据权利要求8所述的电路,其特征在于,所述线性变换L'的输入表示为B=τ(A),则
Figure FDA0003669652630000032
其中,<<<表示循环左移操作。
10.根据权利要求6所述的电路,其特征在于,所述加解密模块包括串联的至少两个加解密变换子模块,所述密钥扩展模块包括串联的至少两个密钥扩展子模块,所述加解密变换子模块与所述密钥扩展子模块的数量相等且一一对应,每个所述密钥扩展子模块与对应的所述加解密变换子模块连接;
每个所述密钥扩展子模块用于执行一轮所述密钥扩展/密钥逆向扩展,每个所述加解密变换子模块用于执行一轮所述加密变换/解密变换;
除最后一个所述密钥扩展子模块外,在其他每一个所述密钥扩展子模块执行一轮所述密钥扩展/密钥逆向扩展得到加密轮密钥/解密轮密钥后,在对应的所述加解密变换子模块根据该加密轮密钥/解密轮密钥进行所述加密变换/解密变换时,下一个所述密钥扩展子模块根据该加密轮密钥/解密密钥并行执行下一轮密钥扩展/密钥逆向扩展。
CN201810229969.4A 2018-03-20 2018-03-20 Sm4加解密方法及电路 Active CN110311771B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810229969.4A CN110311771B (zh) 2018-03-20 2018-03-20 Sm4加解密方法及电路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810229969.4A CN110311771B (zh) 2018-03-20 2018-03-20 Sm4加解密方法及电路

Publications (2)

Publication Number Publication Date
CN110311771A CN110311771A (zh) 2019-10-08
CN110311771B true CN110311771B (zh) 2022-07-22

Family

ID=68073547

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810229969.4A Active CN110311771B (zh) 2018-03-20 2018-03-20 Sm4加解密方法及电路

Country Status (1)

Country Link
CN (1) CN110311771B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111865559B (zh) * 2020-06-16 2022-02-18 郑州信大捷安信息技术股份有限公司 一种sm4算法快速实现方法及装置
CN111950039A (zh) * 2020-08-17 2020-11-17 海光信息技术有限公司 一种数据处理装置、方法、内存控制器、处理器、电子设备
CN112053476A (zh) * 2020-09-08 2020-12-08 四川铁集共联科技股份有限公司 一种基于智能锁和手机终端的加密方法及系统
CN112765614A (zh) * 2020-11-26 2021-05-07 神州龙芯智能科技有限公司 一种在fpga上实现sm4加密算法的模块及方法
CN113259719A (zh) * 2021-05-13 2021-08-13 长春理工大学 一种基于sm4的视频加密方法及系统
CN113688414A (zh) * 2021-10-25 2021-11-23 苏州浪潮智能科技有限公司 一种数据处理方法、系统、存储介质及设备
CN117527194B (zh) * 2023-10-26 2024-10-01 北京新数科技有限公司 一种用于可变长度密钥的改进sm4加密系统及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104333447A (zh) * 2014-11-26 2015-02-04 上海爱信诺航芯电子科技有限公司 一种可抵御能量分析攻击的sm4方法
CN106452743A (zh) * 2016-09-26 2017-02-22 深圳市紫光同创电子有限公司 通信密钥获取方法及装置、通信报文解密方法及装置
CN106487500A (zh) * 2017-01-04 2017-03-08 盛科网络(苏州)有限公司 采用流水线实现aes算法处理的方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1672352A (zh) * 2002-05-23 2005-09-21 爱特梅尔股份有限公司 基于先进加密标准(aes)的硬件密码机
JP2004133087A (ja) * 2002-10-09 2004-04-30 Sony Corp ブロック暗号方法およびブロック暗号回路
TW595183B (en) * 2003-03-14 2004-06-21 Acer Labs Inc Crypto-system with an inverse key evaluation circuit
US9513913B2 (en) * 2014-07-22 2016-12-06 Intel Corporation SM4 acceleration processors, methods, systems, and instructions
CN106257858A (zh) * 2015-06-19 2016-12-28 中兴通讯股份有限公司 一种远端存储设备的数据加密方法、装置及系统
CN106209350A (zh) * 2016-09-12 2016-12-07 成都信息工程大学 一种针对sm4密码算法后4轮的约减轮故障分析的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104333447A (zh) * 2014-11-26 2015-02-04 上海爱信诺航芯电子科技有限公司 一种可抵御能量分析攻击的sm4方法
CN106452743A (zh) * 2016-09-26 2017-02-22 深圳市紫光同创电子有限公司 通信密钥获取方法及装置、通信报文解密方法及装置
CN106487500A (zh) * 2017-01-04 2017-03-08 盛科网络(苏州)有限公司 采用流水线实现aes算法处理的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
AES加密算法IP核的设计与验证;刘晗嘉;《中国优秀硕士论文全文数据库》;20090930;全文 *
面向物联网的SM4算法轻量级实现;朱坤崧等;《电子技术应用》;20161216(第12期);全文 *

Also Published As

Publication number Publication date
CN110311771A (zh) 2019-10-08

Similar Documents

Publication Publication Date Title
CN110311771B (zh) Sm4加解密方法及电路
CA2164768C (en) Constructing symmetric ciphers using the cast design procedure
US8369516B2 (en) Encryption apparatus having common key encryption function and embedded apparatus
EP2693684B1 (en) Encryption processing device, encryption processing method, and programme
EP2316189B1 (en) Method for generating a cipher-based message authentication code
Hong et al. Biclique attack on the full HIGHT
JP2001324924A (ja) 暗号化装置及び暗号化方法、復号装置及び復号方法並びに演算装置
CN110572255B (zh) 基于轻量级分组密码算法Shadow的加密方法、装置及计算机可读介质
JPWO2015146431A1 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
JP2015191106A (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
CN101378314A (zh) 一种密钥序列的生成方法和密钥产生装置
US9418245B2 (en) Encryption processing device, encryption processing method, and program
Todo et al. FFT key recovery for integral attack
CN117527194B (zh) 一种用于可变长度密钥的改进sm4加密系统及方法
JP2015191107A (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
CN113949500A (zh) 一种针对sm4二阶能量分析攻击方法
US7103180B1 (en) Method of implementing the data encryption standard with reduced computation
Bay et al. Improved linear cryptanalysis of reduced-round MIBS
CN105577362B (zh) 一种应用于aes算法的字节替换方法及系统
CA2159159C (en) Secret-key enciphering method and arrangement therefor capable of preventing unfair acquirement of information
CN112311527A (zh) 一种主密钥变换为多项式表格子密钥查表的加密方法
Fukuda et al. Key-sensitivity improvement of block cipher systems based on nonlinear feedback shift registers
Li et al. Improved White-box SM4 Design and Implementation
Guo et al. More Rounds, Less Security?
Takahashi et al. Differential fault analysis on CLEFIA with 128, 192, and 256-bit keys

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
CB02 Change of applicant information

Address after: 100085 unit C, building C, lin66, Zhufang Road, Qinghe, Haidian District, Beijing

Applicant after: Beijing Xiaomi pinecone Electronic Co.,Ltd.

Address before: 100085 Beijing city Haidian District Qinghe Shun Yip things Park Building 3 unit A

Applicant before: BEIJING PINECONE ELECTRONICS Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant