CN103812641A - 一种实现sm4分组对称密码算法的系统 - Google Patents

一种实现sm4分组对称密码算法的系统 Download PDF

Info

Publication number
CN103812641A
CN103812641A CN201210441335.8A CN201210441335A CN103812641A CN 103812641 A CN103812641 A CN 103812641A CN 201210441335 A CN201210441335 A CN 201210441335A CN 103812641 A CN103812641 A CN 103812641A
Authority
CN
China
Prior art keywords
data
key
control signal
encryption
input
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.)
Pending
Application number
CN201210441335.8A
Other languages
English (en)
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.)
Institute of Microelectronics of CAS
Original Assignee
Institute of Microelectronics of CAS
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 Institute of Microelectronics of CAS filed Critical Institute of Microelectronics of CAS
Priority to CN201210441335.8A priority Critical patent/CN103812641A/zh
Publication of CN103812641A publication Critical patent/CN103812641A/zh
Pending legal-status Critical Current

Links

Images

Abstract

本发明公开了一种实现SM4分组对称密码算法的系统,包括:输入密钥处理及结果存储器,用于对输入密钥进行处理,得到直接参与迭代运算的结果,并进行存储;密钥缓存器,用于根据控制模块输出的控制信号更新和存储密钥扩展运算的中间结果,即加密运算需要的轮密钥;数据缓存器,用于根据控制模块输出的控制信号更新和存储加解密迭代运算的中间结果;数据处理选择模块,用于根据控制模块输出的控制信号,选择参与运算的数据为密钥还是加解密的数据;运算逻辑模块,用于进行加解密运算和密钥扩展运算;控制模块,用于根据输入的工作模式控制信号,输出相应的加解密控制信号和密钥扩展控制信号。利用本发明,使得系统冗余度得到降低。

Description

一种实现SM4分组对称密码算法的系统
技术领域
本发明涉及分组密码算法技术领域,尤其是一种实现SM4分组对称密码算法的系统。
背景技术
SM4分组对称密码算法即原SMS4算法,它是国内公布的第一个用于无线局域网产品的商用密码算法,该算法是我国首个公开针对特殊领域的密码算法,对无线局域网产业和商用密码研究都有重要的意义。SM4是基于S盒的分组对称密码算法,它对一组比特数据进行加解密运算,而不像流密码那样只针对单个比特运算。该算法的分组长度为128比特,密钥长度为128比特。加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反。
加密算法主要为读入加密数据和密钥进行加密运算的过程。算法的加密变换包含异或运算和合成置换T运算,其中合成置换T运算是由线性变换L和非线性变换τ复合而成,即T(·)=L(τ(·))。非线性变换τ由4个并行的S盒构成,S盒是固定的8比特输入8比特输出的变换;线性变换L包含异或运算和循环左移运算。
对密钥扩展算法而言,加密算法中的轮密钥是加密密钥MK通过密钥扩展算法生成。而该扩展算法基本结构与加解密算法相同,同样包含异或运算和合成置换T’运算。其中合成置换T’运算与加密算法中的合成置换T运算基本相同,仅仅将其中的线性变换L修改为L’,线性变化L’同样包含异或运算和左移运算,形式略有不同。
实现SM4算法的加解密系统在现有技术中存在多种方案,但这些方案大多基于以下架构,如图1所示,现有技术中一个标准SM4加解密系统包括:密钥扩展模块、控制模块和加解密模块。以加密操作为例,首先由密钥扩展模块读入加密密钥MK、系统参数FK和固定参数CK,其中FK和CK是固定值,读入的所有参数经过32轮迭代运算产生32个轮密钥并存储。当有明文进入加解密模块,则加密运算启动,并在每轮迭代中读入相应轮密钥,直至完成32轮迭代加密操作,最终输出密文。不同方案的区别在于加解密模块的实现上。
但从系统全局的结构考虑,加解密模块和密钥扩展模块在功能上有较大的相似性,使用两个模块实现系统的功能使得系统的部件冗余度较高。
发明内容
(一)要解决的技术问题
有鉴于此,本发明的主要目的在于提供一种实现SM4分组对称密码算法的系统,以降低系统部件的冗余度。
(二)技术方案
为达到上述目的,本发明提供了一种实现SM4分组对称密码算法的系统,包括:
输入密钥处理及结果存储器,用于对输入密钥进行处理,得到直接参与迭代运算的结果,并进行存储;
密钥缓存器,用于根据控制模块输出的控制信号更新和存储密钥扩展运算的中间结果,即加密运算需要的轮密钥;
数据缓存器,用于根据控制模块输出的控制信号更新和存储加解密迭代运算的中间结果;
数据处理选择模块,用于根据控制模块输出的控制信号,选择参与运算的数据为密钥还是加解密的数据;
运算逻辑模块,用于进行加解密运算和密钥扩展运算;以及
控制模块,用于根据输入的工作模式控制信号,输出相应的加解密控制信号和密钥扩展控制信号。
上述方案中,所述输入密钥处理及结果存储器包括运算部件以及存储单元,当接收到密钥时,该运算部件将该密钥与固定常数进行运算,得到直接参与密钥扩展算法进行迭代运算的数据,并将该数据存储于该存储单元中。
上述方案中,所述密钥缓存器包括一组存储单元,用于根据控制模块输出的控制信号更新和存储密钥扩展迭代运算得到的中间结果。
上述方案中,所述数据缓存器包括一组存储单元,用于根据控制模块输出的控制信号更新和存储数据加解密迭代运算得到的中间结果。
上述方案中,所述数据处理选择模块为一个数据选择器,用于选择输入到运算逻辑模块的数据是加解密数据还是密钥扩展数据,如果控制模块输出的是加解密控制信号,则输入到运算逻辑模块的数据是加解密数据;如果控制模块输出的是密钥扩展信号,则输入到运算逻辑模块的数据是密钥扩展数据。
上述方案中,所述运算逻辑模块包括轮密钥运算所需常数生成部件、第一运算部件、S盒部件、循环移位部件以及第二运算部件,其中:
所述轮密钥运算所需常数生成部件,用于根据控制逻辑输出的控制信号,按照相应的数学原理生成轮密钥生成时所需的常数;
所述第一运算部件,用于完成加解密数据与轮密钥进行的异或运算,或者密钥数据与生成轮密钥所需常数的异或运算;
所述S盒部件,用于在加解密模式或轮密钥扩展模式时对数据进行S盒查表运算;
所述循环移位部件,用于完成循环移位与异或运算;
所述循环移位部件,用于先对输入数据进行循环左移2、10、18、24、13、23位,循环左移2、10、18、24位所得的数据输入数据相异或得到输出结果A,循环左移13、23位所得到的数据与输入数据相异或得到输出结果B;
所述第二运算部件,用于对所述循环移位部件的输出结果A与数据缓存器中相应的数据相异或得到A’,对所述循环移位部件的输出结果B与密钥缓存器中相应的数据相异或得到B’。
上述方案中,所述第二运算部件的输出A’与B’在控制模块输出的控制信号下分别存入数据缓存器或密钥缓存器。
上述方案中,所述控制模块根据输入的工作模式信号产生相应的加密运算控制信号和解密运算控制信号,实现加密运算过程和解密运算过程。
上述方案中,所述加密运算过程为:加密运算开始时,输入的128位明文直接载入数据缓存器,输入密钥处理及结果存储器中存储的数据载入密钥缓存器模块;密钥缓存器仅有128位,采取不存储所有轮密钥,而是每轮加密前先计算轮密钥的方式工作;控制模块控制系统交替进行轮密钥的生成与数据块的加密,一组数据的加密通过64轮迭代完成。
上述方案中,所述解密运算过程为:SM4为对合运算,加密过程与解密过程使用相同的密钥;假设加密过程轮密钥的使用顺序为rk0~rk31,解密时轮密钥的使用顺序为rk31~rk0;解密运算开始时,128位密文直接载入数据缓存器,输入密钥处理及结果存储器中存储的数据载入密钥缓存器;先由输入密钥通过32轮迭代计算出{rk31,rk30,rk29,rk28},在此过程中只进行密钥扩展运算,不进行数据解密运算;之后,可由{rk31,rk30,rk29,rk28}反推得到rk27~rk0,在此过程中轮密钥的生成与数据的解密交替进行;整个解密过程通过96轮迭代完成。
(三)有益效果
本发明提供的实现SM4分组对称密码算法的系统,基于模块复用的思想,仅使用一个运算模块就可完成加解密运算和轮密钥扩展运算;利用了密钥扩展运算的正反递推性质,只存储初始密钥,不存储轮密钥,省去了32轮轮密钥占用的大量资源;基于以上所述思想和性质,使得系统冗余度得到降低。
附图说明
图1为现有技术中一个标准SM4加解密系统的示意图;
图2为本发明提供的实现SM4分组对称密码算法的系统的结构示意图;
图3是基于本发明提供的实现SM4分组对称密码算法的系统进行加密过程的流程图;
图4是基于本发明提供的实现SM4分组对称密码算法的系统进行解密过程的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
SM4算法是国内应用于无线局域网领域的重要商用密码算法,其中加解密算法和密钥扩展算法都采用32轮非线性迭代结构。解密算法和加密算法的结构相同,只是轮密钥的使用顺序相反。
下面对加解密算法进行简要介绍:
定义
Figure BDA00002367711500051
为e比特的向量集,<<<i为32比特循环左移i位,
Figure BDA00002367711500052
为32比特异或。
设明文输入为 ( X 0 , X 1 , X 2 , X 3 ) ∈ ( Z 2 32 ) 4 , 密文输出为 ( Y 0 , Y 1 , Y 2 , Y 3 ) ∈ ( Z 2 32 ) 4 , 轮密钥
Figure BDA00002367711500055
i=0,1,...,31。则该算法的加密过程为:
X i + 4 = F ( X i , X i + 1 , X i + 2 , X i + 3 , rk i ) = X i ⊕ T ( X i + 1 ⊕ X i + 2 ⊕ X i + 3 ⊕ rk i ) , i = 0,1 , . . . , 31 - - - ( 1 )
(Y0,Y1,Y2,Y3)=(X35,X34,X33,X32)            (2)
在(1)式中,F(·)称为加密算法的轮函数,T(·)为
Figure BDA00002367711500057
的可逆变换,由非线性变换τ和线性变换L复合而成,即T(·)=L(τ(·))。
非线性变换τ由4个并行的S盒构成。设输入为
Figure BDA00002367711500058
输出为 B = ( b 0 , b 1 , b 2 , b 3 ) ∈ ( Z 2 8 ) 4 , 则:
(b0,b1,b2,b3)=τ(A)=(Sbox(a0),Sbox(a1),Sbox(a2),Sbox(a3))(3)
其中,Sbox为固定的映射表。
线性变换L的输入是非线性变换τ的输出。设输入为
Figure BDA000023677115000510
输出为 C ∈ Z 2 32 , 则:
C = L ( B ) = B &CirclePlus; ( B < < < 2 ) &CirclePlus; ( B < < < 10 ) &CirclePlus; ( B < < < 18 ) &CirclePlus; ( B < < < 24 ) - - - ( 4 )
SM4解密过程与加密过程相同,只是轮密钥的使用次序相反,即解密过程为:
X i + 4 * = F ( X i * , X i + 1 * , X i + 2 * X i + 3 * , rk 31 - i ) = X i * &CirclePlus; T ( X i + 1 * &CirclePlus; X i + 2 * &CirclePlus; X i + 3 * &CirclePlus; rk 31 - i ) , i = 0,1 , . . . , 31 - - - ( 5 )
( Y 0 * , Y 1 * , Y 2 * , Y 3 * ) = ( X 35 * , X 34 * , X 33 * , X 32 * ) - - - ( 6 )
该算法中加密算法的轮密钥由加密密钥通过密钥扩展算法生成。
设加密密钥MK=(MK0,MK1,MK2,MK3),
Figure BDA000023677115000515
i=0,1,2,3;
i=0,1,...,35,轮密钥为i=0,1,...,31,则轮密钥生成方法为:
首先: ( K 0 , K 1 , K 2 , K 3 ) = ( MK 0 &CirclePlus; FK 0 , MK 1 &CirclePlus; FK 1 , MK 2 &CirclePlus; FK 2 , MK 3 &CirclePlus; FK 3 ) - - - ( 7 )
然后,对i=0,1,...,31: rk i = K i + 4 = K i &CirclePlus; T &prime; ( K i + 1 &CirclePlus; K i + 2 &CirclePlus; K i + 3 &CirclePlus; CK i ) - - - ( 8 )
其中,T’变换与加密算法轮函数中的T变换基本相同,只将其中的线性变换L修改为L’:
L &prime; ( B ) = B &CirclePlus; ( B < < < 13 ) &CirclePlus; ( B < < < 23 ) - - - ( 9 )
式(7)中的参数FK与式(9)中的参数CK均为固定值。FK0=(A3B1BAC6),FK1=(56AA3350),FK2=(677D9197),FK3=(B27022DC)。CK可以通过计算得到:
设cki,j是CKi的第j个字节,其中i=0,1,...,31;j=0,1,2,3,即 CK i = ( ck i , 0 , c k i , 1 , ck i , 2 , ck i , 3 ) &Element; ( Z 2 8 ) 4 , 则:cki,j=(4i+j)×7(mod256)                              (10)
从加解密算法和密钥扩展算法的介绍中可以看出,加解密模块和密钥扩展模块存在较多功能相同的部件,可以从模块复用角度来降低系统冗余度;并且轮密钥运算和加解密运算在时间上存在先后性,可以通过功能切换实现模块复用。
本发明提出的分组加密算法SM4的低复杂度实现系统,具体包括:输入密钥处理及结果存储器、密钥缓存器、数据缓存器、数据处理选择模块、运算逻辑模块和控制模块。其中:输入密钥处理及结果存储器用于对输入密钥进行处理,得到直接参与迭代运算的结果,并进行存储;密钥缓存器用于根据控制模块输出的控制信号更新和存储密钥扩展运算的中间结果,即加密运算需要的轮密钥;数据缓存器用于根据控制模块输出的控制信号更新和存储加解密迭代运算的中间结果;数据处理选择模块用于根据控制模块输出的控制信号,选择参与运算的数据为密钥还是加解密的数据;运算逻辑模块用于进行加解密运算和密钥扩展运算;控制模块用于根据输入的工作模式控制信号,输出相应的加解密控制信号和密钥扩展控制信号。本发明提出的系统既支持一组密钥多组数据的加解密工作模式,也支持每组加解密的数据与密钥同时更新的工作模式。
输入密钥处理及结果存储器包括运算部件以及存储单元,当接收到密钥时,该运算部件将该密钥与固定常数进行运算,得到直接参与密钥扩展算法进行迭代运算的数据,并将该数据存储于该存储单元中。
密钥缓存器包括一组存储单元,用于根据控制模块输出的控制信号更新和存储密钥扩展迭代运算得到的中间结果。
数据缓存器包括一组存储单元,用于根据控制模块输出的控制信号更新和存储数据加解密迭代运算得到的中间结果。
数据处理选择模块为一个数据选择器,用于选择输入到运算逻辑模块的数据是加解密数据还是密钥扩展数据,如果控制模块输出的是加解密控制信号,则输入到运算逻辑模块的数据是加解密数据;如果控制模块输出的是密钥扩展信号,则输入到运算逻辑模块的数据是密钥扩展数据。
运算逻辑模块包括轮密钥运算所需常数生成部件、第一运算部件、S盒部件、循环移位部件以及第二运算部件,其中:所述轮密钥运算所需常数生成部件,用于根据控制逻辑输出的控制信号,按照相应的数学原理生成轮密钥生成时所需的常数;所述第一运算部件,用于完成加解密数据与轮密钥进行的异或运算,或者密钥数据与生成轮密钥所需常数的异或运算;所述S盒部件,用于在加解密模式或轮密钥扩展模式时对数据进行S盒查表运算;所述循环移位部件,用于完成循环移位与异或运算;所述循环移位部件,用于先对输入数据进行循环左移2、10、18、24、13、23位,循环左移2、10、18、24位所得的数据输入数据相异或得到输出结果A,循环左移13、23位所得到的数据与输入数据相异或得到输出结果B;所述第二运算部件,用于对所述循环移位部件的输出结果A与数据缓存器中相应的数据相异或得到A’,对所述循环移位部件的输出结果B与密钥缓存器中相应的数据相异或得到B’。第二运算部件的输出A’与B’在控制模块输出的控制信号下分别存入数据缓存器或密钥缓存器。
控制模块根据输入的工作模式信号产生相应的加密运算控制信号和解密运算控制信号,实现加密运算过程和解密运算过程。
实施例1,如图3所示,加密运算过程:
当系统接收到密钥时,密钥进入输入密钥处理及结果存储器,输入密钥MK=(MK0,MK1,MK2,MK3)与系统常数(FK0,FK1,FK2,FK3)完成运算
( K 0 , K 1 , K 2 , K 3 ) = ( MK 0 &CirclePlus; FK 0 , MK 1 &CirclePlus; FK 1 , MK 2 &CirclePlus; FK 2 , MK 3 &CirclePlus; FK 3 ) , 并将(K0,K1,K2,K3)存储。
为方便描述,记数据缓存器的128比特从高位到低位为(XR0,XR1,XR2,XR3),密钥缓存器的128比特从高位到低位为(KR0,KR1,KR2,KR3)。
当控制模块接收到工作使能信号时,根据工作模式信号与加解密信号发出相应的控制信号。当为加密运算时,系统首先将输入明文(X0,X1,X2,X3)载入数据缓存器(XR0,XR1,XR2,XR3),将输入密钥处理及结果存储器中的数据(K0,K1,K2,K3)载入密钥缓存器(KR0,KR1,KR2,KR3)。之后,控制模块发出计算第1轮轮密钥的控制信号,数据处理选择模块选择密钥缓存器(KR0,KR1,KR2,KR3)中的数据(K0,K1,K2,K3)进入运算逻辑模块。此时,运算逻辑模块中的CK常数生成器根据控制信号生成CK0。第一运算部件完成运算
Figure BDA00002367711500081
运算结果A进入S盒部件完成非线性变换τ,得到输出结果B。B进入循环移位运算部件完成循环移位与异或运算得到
C = L ( B ) = B &CirclePlus; ( B < < < 2 ) &CirclePlus; ( B < < < 10 ) &CirclePlus; ( B < < < 18 ) &CirclePlus; ( B < < < 24 ) , C &prime; = B &CirclePlus; ( B < < < 13 ) &CirclePlus; ( B < < < 23 ) .
C与C’进入第二异或部件与XR0,KR0中的数据进行运算,得到 D = C &CirclePlus; X 0 , D &prime; = C &prime; &CirclePlus; K 0 ,
最后控制模块发出的控制信号选择D’(即K4或者rk0)送入密钥缓存器,同时密钥缓存器(KR0,KR1,KR2,KR3)的数据更新为(K1,K2,K3,K4(D’))。此时,第1轮加密运算所需的轮密钥rk0已经准备好,可以进行第1轮数据加密。
第1轮加密运算所需的轮密钥rk0生成之后,控制模块发出控制信号进行第1轮加密运算。此时,数据处理选择模块选择数据缓存器(XR0,XR1,XR2,XR3)中的数据(X0,X1,X2,X3)进入运算逻辑模块。第一运算部件完成运算
Figure BDA00002367711500086
运算结果A进入S盒部件完成非线性变换τ,得到输出结果B。B进入循环移位运算部件完成循环移位与异或运算得到 C = L ( B ) = B &CirclePlus; ( B < < < 2 ) &CirclePlus; ( B < < < 10 ) &CirclePlus; ( B < < < 18 ) &CirclePlus; ( B < < < 24 ) ,
C与C’进入第二异或部件与XR0,KR0中的数据进行运算,得到
Figure BDA00002367711500089
Figure BDA000023677115000810
最后控制模块发出的控制信号选择D(即X4)送入数据缓存器,同时数据缓存器(XR0,XR1,XR2,XR3)的数据更新为(X1,X2,X3,X4)。此时,加密运算的第1轮迭代完成。
重复上述加密运算过程31次,完成数据的32轮迭代加密运算。
当一组数据完成加密之后,控制模块发出控制信号将输入明文(X0,X1,X2,X3)载入数据缓存器,将输入密钥处理及结果存储器中的数据载入密钥缓存器。输入密钥处理及结果存储器中的数据可以是之前的密钥处理结果,此时系统工作在一组密钥多组数据的加密工作模式;输入密钥处理及结果存储器中的数据也可以是新输入密钥的处理结果,此时系统工作在每组加解密的数据与密钥同时更新的工作模式。
实施例2,如图4所示,解密运算过程:
当系统接收到密钥时,密钥进入输入密钥处理及结果存储器,输入密钥MK=(MK0,MK1,MK2,MK3)与(FK0,FK1,FK2,FK3)完成运算
( K 0 , K 1 , K 2 , K 3 ) = ( MK 0 &CirclePlus; FK 0 , MK 1 &CirclePlus; FK 1 , MK 2 &CirclePlus; FK 2 , MK 3 &CirclePlus; FK 3 ) , 并将(K0,K1,K2,K3)存储。
当控制模块接收到工作使能信号时,根据工作模式信号与加解密信号发出相应的控制信号。当为解密运算时,系统首先将输入明文(X0,X1,X2,X3)载入数据缓存器(XR0,XR1,XR2,XR3),将输入密钥处理及结果存储器中的数据(K0,K1,K2,K3)载入密钥缓存器(KR0,KR1,KR2,KR3)。之后,控制模块发出计算第1轮轮密钥的控制信号,数据处理选择模块选择密钥缓存器中的数据(K0,K1,K2,K3)进入运算逻辑模块。此时,运算逻辑模块中的CK常数生成器根据控制信号生成CK0。第一运算部件完成运算运算结果A进入S盒部件完成非线性变换τ,得到输出结果B。B进入循环移位运算部件完成循环移位与异或运算得到
C = L ( B ) = B &CirclePlus; ( B < < < 2 ) &CirclePlus; ( B < < < 10 ) &CirclePlus; ( B < < < 18 ) &CirclePlus; ( B < < < 24 ) ,
C &prime; = B &CirclePlus; ( B < < < 13 ) &CirclePlus; ( B < < < 23 ) .
C与C’进入第二异或部件与XR0,KR0中的数据进行运算,得到
Figure BDA00002367711500096
最后控制模块发出的控制信号选择D’(即K4或者rk0)送入密钥缓存器,同时密钥缓存器(KR0,KR1,KR2,KR3)中的数据更新为(K1,K2,K3,K4(D’))。此时,得到了第1轮加密运算所需的轮密钥rk0
重复上述获取加密运算所需轮密钥的过程31次,得到第32轮轮密钥rk31。此时,密钥缓存器(KR0,KR1,KR2,KR3)中的数据为(rk28,rk29,rk30,rk31),即(K32,K33,K34,K35)。
得到轮密钥rk31之后,控制模块发出控制信号进行第1轮解密运算。此时,数据处理选择模块选择数据缓存器中的数据(X0,X1,X2,X3)进入运算逻辑模块,第一运算部件完成运算
Figure BDA00002367711500101
运算结果A进入S盒部件完成非线性变换τ,得到输出结果B,B进入循环移位运算部件完成循环移位与异或运算得到
C = L ( B ) = B &CirclePlus; ( B < < < 2 ) &CirclePlus; ( B < < < 10 ) &CirclePlus; ( B < < < 18 ) &CirclePlus; ( B < < < 24 ) ,
C &prime; = B &CirclePlus; ( B < < < 13 ) &CirclePlus; ( B < < < 23 ) .
C与C’进入第二异或部件与XR0,KR4中的数据进行运算,得到
Figure BDA00002367711500104
Figure BDA00002367711500105
最后控制模块发出的控制信号选择D(即X4)送入数据缓存器,同时数据缓存器的数据更新为(X1,X2,X3,X4)。此时,解密运算的第1轮迭代完成。
解密运算的第1轮迭代完成之后,控制模块发出控制信号进行轮密钥扩展运算。数据处理选择模块选择密钥缓存器(KR0,KR1,KR2,KR3)中的数据(K32,K33,K34,K35)进入运算逻辑模块。此时,运算逻辑模块中的CK常数生成器根据控制信号生成CK31,第一运算部件完成运算
Figure BDA00002367711500106
运算结果A进入S盒部件完成非线性变换τ,得到输出结果B,B进入循环移位运算部件完成循环移位与异或运算得到
C = L ( B ) = B &CirclePlus; ( B < < < 2 ) &CirclePlus; ( B < < < 10 ) &CirclePlus; ( B < < < 18 ) &CirclePlus; ( B < < < 24 ) ,
C &prime; = B &CirclePlus; ( B < < < 13 ) &CirclePlus; ( B < < < 23 ) .
C与C’进入第二异或部件与XR0,KR4中的数据进行运算,得到
Figure BDA00002367711500109
Figure BDA000023677115001010
最后控制模块发出的控制信号选择D’(即rk27或K31)送入密钥缓存器,同时密钥缓存器的数据更新为(rk27,rk28,rk29,rk30),即(K31,K32,K33,K34)。
重复上述的迭代解密过程31次,完成数据的32轮迭代解密。
当一组数据完成解密之后,控制模块发出控制信号将输入密文(X0,X1,X2,X3)载入数据缓存器,将输入密钥处理及结果存储器中的数据载入密钥缓存器。输入密钥处理及结果存储器中的数据可以是之前的密钥处理结果,此时系统工作在一组密钥,多组数据的解密工作模式;输入密钥处理及结果存储器中的数据也可以是新输入密钥的处理结果,此时系统工作在每组解密的数据与密钥同时更新的工作模式。
在现有技术中,由于实现SM4算法的加解密系统的面积主要由加解密模块、轮密钥扩展模块以及轮密钥存储单元决定。本实施例采用模块复用的思想,仅使用一个运算模块来实现加解密运算和轮密钥扩展运算,省去了轮密钥存储单元,与现有技术使用加解密模块和轮密钥扩展模块以及轮密钥存储单元相比,成功地降低了部件冗余度。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种实现SM4分组对称密码算法的系统,包括:
输入密钥处理及结果存储器,用于对输入密钥进行处理,得到直接参与迭代运算的结果,并进行存储;
密钥缓存器,用于根据控制模块输出的控制信号更新和存储密钥扩展运算的中间结果,即加密运算需要的轮密钥;
数据缓存器,用于根据控制模块输出的控制信号更新和存储加解密迭代运算的中间结果;
数据处理选择模块,用于根据控制模块输出的控制信号,选择参与运算的数据为密钥还是加解密的数据;
运算逻辑模块,用于进行加解密运算和密钥扩展运算;以及
控制模块,用于根据输入的工作模式控制信号,输出相应的加解密控制信号和密钥扩展控制信号。
2.根据权利要求1所述的实现SM4分组对称密码算法的系统,其特征在于,所述输入密钥处理及结果存储器包括运算部件以及存储单元,当接收到密钥时,该运算部件将该密钥与固定常数进行运算,得到直接参与密钥扩展算法进行迭代运算的数据,并将该数据存储于该存储单元中。
3.根据权利要求1所述的实现SM4分组对称密码算法的系统,其特征在于,所述密钥缓存器包括一组存储单元,用于根据控制模块输出的控制信号更新和存储密钥扩展迭代运算得到的中间结果。
4.根据权利要求1所述的实现SM4分组对称密码算法的系统,其特征在于,所述数据缓存器包括一组存储单元,用于根据控制模块输出的控制信号更新和存储数据加解密迭代运算得到的中间结果。
5.根据权利要求1所述的实现SM4分组对称密码算法的系统,其特征在于,所述数据处理选择模块为一个数据选择器,用于选择输入到运算逻辑模块的数据是加解密数据还是密钥扩展数据,如果控制模块输出的是加解密控制信号,则输入到运算逻辑模块的数据是加解密数据;如果控制模块输出的是密钥扩展信号,则输入到运算逻辑模块的数据是密钥扩展数据。
6.根据权利要求1所述的实现SM4分组对称密码算法的系统,其特征在于,所述运算逻辑模块包括轮密钥运算所需常数生成部件、第一运算部件、S盒部件、循环移位部件以及第二运算部件,其中:
所述轮密钥运算所需常数生成部件,用于根据控制逻辑输出的控制信号,按照相应的数学原理生成轮密钥生成时所需的常数;
所述第一运算部件,用于完成加解密数据与轮密钥进行的异或运算,或者密钥数据与生成轮密钥所需常数的异或运算;
所述S盒部件,用于在加解密模式或轮密钥扩展模式时对数据进行S盒查表运算;
所述循环移位部件,用于完成循环移位与异或运算;
所述循环移位部件,用于先对输入数据进行循环左移2、10、18、24、13、23位,循环左移2、10、18、24位所得的数据输入数据相异或得到输出结果A,循环左移13、23位所得到的数据与输入数据相异或得到输出结果B;
所述第二运算部件,用于对所述循环移位部件的输出结果A与数据缓存器中相应的数据相异或得到A’,对所述循环移位部件的输出结果B与密钥缓存器中相应的数据相异或得到B’。
7.根据权利要求6所述的实现SM4分组对称密码算法的系统,其特征在于,所述第二运算部件的输出A’与B’在控制模块输出的控制信号下分别存入数据缓存器或密钥缓存器。
8.根据权利要求1所述的实现SM4分组对称密码算法的系统,其特征在于,所述控制模块根据输入的工作模式信号产生相应的加密运算控制信号和解密运算控制信号,实现加密运算过程和解密运算过程。
9.根据权利要求8所述的实现SM4分组对称密码算法的系统,其特征在于,所述加密运算过程为:
加密运算开始时,输入的128位明文直接载入数据缓存器,输入密钥处理及结果存储器中存储的数据载入密钥缓存器模块;密钥缓存器仅有128位,采取不存储所有轮密钥,而是每轮加密前先计算轮密钥的方式工作;控制模块控制系统交替进行轮密钥的生成与数据块的加密,一组数据的加密通过64轮迭代完成。
10.根据权利要求9所述的实现SM4分组对称密码算法的系统,其特征在于,所述解密运算过程为:
SM4为对合运算,加密过程与解密过程使用相同的密钥;假设加密过程轮密钥的使用顺序为rk0~rk31,解密时轮密钥的使用顺序为rk31~rk0;解密运算开始时,128位密文直接载入数据缓存器,输入密钥处理及结果存储器中存储的数据载入密钥缓存器;先由输入密钥通过32轮迭代计算出{rk31,rk30,rk29,rk28},在此过程中只进行密钥扩展运算,不进行数据解密运算;之后,可由{rk31,rk30,rk29,rk28}反推得到rk27~rk0,在此过程中轮密钥的生成与数据的解密交替进行;整个解密过程通过96轮迭代完成。
CN201210441335.8A 2012-11-07 2012-11-07 一种实现sm4分组对称密码算法的系统 Pending CN103812641A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210441335.8A CN103812641A (zh) 2012-11-07 2012-11-07 一种实现sm4分组对称密码算法的系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210441335.8A CN103812641A (zh) 2012-11-07 2012-11-07 一种实现sm4分组对称密码算法的系统

Publications (1)

Publication Number Publication Date
CN103812641A true CN103812641A (zh) 2014-05-21

Family

ID=50708891

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210441335.8A Pending CN103812641A (zh) 2012-11-07 2012-11-07 一种实现sm4分组对称密码算法的系统

Country Status (1)

Country Link
CN (1) CN103812641A (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104579636A (zh) * 2015-02-16 2015-04-29 滨州职业学院 一种超高速实现sm4算法的系统及其运行方法
CN105306195A (zh) * 2014-07-22 2016-02-03 英特尔公司 Sm4加速处理器、方法、系统和指令
CN105447417A (zh) * 2015-11-06 2016-03-30 天津津航计算技术研究所 一种应用于高速数据存储的硬件加密方法
CN106209349A (zh) * 2016-08-31 2016-12-07 福建联迪商用设备有限公司 基于3des算法的数据加密方法和装置
CN106230858A (zh) * 2016-09-05 2016-12-14 烟台大学 工业数据加密传输方法
CN106411518A (zh) * 2016-09-26 2017-02-15 北京洋浦伟业科技发展有限公司 一种密钥不固定的对称白盒加密方法和装置
WO2017045484A1 (zh) * 2015-09-15 2017-03-23 中兴通讯股份有限公司 一种基于xts-sm4的存储加解密方法及装置
CN107209661A (zh) * 2014-09-26 2017-09-26 英特尔公司 用于提供simd sm4加密块密码功能性的指令和逻辑
CN108959912A (zh) * 2018-06-29 2018-12-07 郑州云海信息技术有限公司 一种bios和操作系统复用密码的方法、装置及设备
CN109617671A (zh) * 2018-12-21 2019-04-12 成都海光集成电路设计有限公司 加解密、扩展方法及装置、加解密系统、终端
CN109714307A (zh) * 2018-06-12 2019-05-03 广东工业大学 一种基于国密算法的云平台客户端数据加解密系统及方法
CN110034918A (zh) * 2019-03-15 2019-07-19 深圳市纽创信安科技开发有限公司 一种sm4加速方法和装置
CN112751663A (zh) * 2020-12-31 2021-05-04 南方电网科学研究院有限责任公司 一种数据加密方法和装置
CN112765614A (zh) * 2020-11-26 2021-05-07 神州龙芯智能科技有限公司 一种在fpga上实现sm4加密算法的模块及方法
CN113938268A (zh) * 2021-10-15 2022-01-14 湖南麒麟信安科技股份有限公司 分组密码算法的硬件控制系统

Cited By (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10454669B2 (en) 2014-07-22 2019-10-22 Intel Corporation SM4 acceleration processors, methods, systems, and instructions
US10469249B2 (en) 2014-07-22 2019-11-05 Intel Corporation SM4 acceleration processors, methods, systems, and instructions
CN110233720A (zh) * 2014-07-22 2019-09-13 英特尔公司 Sm4加速处理器、方法和系统
US10419210B2 (en) 2014-07-22 2019-09-17 Intel Corporation SM4 acceleration processors, methods, systems, and instructions
US10425222B2 (en) 2014-07-22 2019-09-24 Intel Corporation SM4 acceleration processors, methods, systems, and instructions
CN110233721A (zh) * 2014-07-22 2019-09-13 英特尔公司 Sm4加速处理器、方法和系统
CN105306195A (zh) * 2014-07-22 2016-02-03 英特尔公司 Sm4加速处理器、方法、系统和指令
US10476667B2 (en) 2014-07-22 2019-11-12 Intel Corporation SM4 acceleration processors, methods, systems, and instructions
US10447468B2 (en) 2014-07-22 2019-10-15 Intel Corporation SM4 acceleration processors, methods, systems, and instructions
US10778425B2 (en) 2014-09-26 2020-09-15 Intel Corporation Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality
CN107209661A (zh) * 2014-09-26 2017-09-26 英特尔公司 用于提供simd sm4加密块密码功能性的指令和逻辑
CN107209661B (zh) * 2014-09-26 2021-09-07 英特尔公司 用于提供simd sm4加密块密码功能性的指令和逻辑
US11303438B2 (en) 2014-09-26 2022-04-12 Intel Corporation Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality
US11849035B2 (en) 2014-09-26 2023-12-19 Intel Corporation Instructions and logic to provide SIMD SM4 cryptographic block cipher
CN104579636B (zh) * 2015-02-16 2018-01-05 滨州职业学院 一种超高速实现sm4算法的系统及其运行方法
CN104579636A (zh) * 2015-02-16 2015-04-29 滨州职业学院 一种超高速实现sm4算法的系统及其运行方法
WO2017045484A1 (zh) * 2015-09-15 2017-03-23 中兴通讯股份有限公司 一种基于xts-sm4的存储加解密方法及装置
CN105447417A (zh) * 2015-11-06 2016-03-30 天津津航计算技术研究所 一种应用于高速数据存储的硬件加密方法
CN106209349A (zh) * 2016-08-31 2016-12-07 福建联迪商用设备有限公司 基于3des算法的数据加密方法和装置
CN106230858A (zh) * 2016-09-05 2016-12-14 烟台大学 工业数据加密传输方法
CN106411518B (zh) * 2016-09-26 2019-05-07 北京梆梆安全科技有限公司 一种密钥不固定的对称白盒加密方法和装置
CN106411518A (zh) * 2016-09-26 2017-02-15 北京洋浦伟业科技发展有限公司 一种密钥不固定的对称白盒加密方法和装置
CN109714307A (zh) * 2018-06-12 2019-05-03 广东工业大学 一种基于国密算法的云平台客户端数据加解密系统及方法
CN109714307B (zh) * 2018-06-12 2024-04-12 广东工业大学 一种基于国密算法的云平台客户端数据加解密系统及方法
US11232211B2 (en) 2018-06-29 2022-01-25 Zhengzhou Yunhai Information Technology Co., Ltd. Method, apparatus and device for sharing password between BIOS and operating system
CN108959912A (zh) * 2018-06-29 2018-12-07 郑州云海信息技术有限公司 一种bios和操作系统复用密码的方法、装置及设备
CN109617671A (zh) * 2018-12-21 2019-04-12 成都海光集成电路设计有限公司 加解密、扩展方法及装置、加解密系统、终端
CN110034918A (zh) * 2019-03-15 2019-07-19 深圳市纽创信安科技开发有限公司 一种sm4加速方法和装置
CN110034918B (zh) * 2019-03-15 2023-10-20 深圳市纽创信安科技开发有限公司 一种sm4加速方法和装置
CN112765614A (zh) * 2020-11-26 2021-05-07 神州龙芯智能科技有限公司 一种在fpga上实现sm4加密算法的模块及方法
CN112751663A (zh) * 2020-12-31 2021-05-04 南方电网科学研究院有限责任公司 一种数据加密方法和装置
CN112751663B (zh) * 2020-12-31 2022-12-23 南方电网科学研究院有限责任公司 一种数据加密方法和装置
CN113938268A (zh) * 2021-10-15 2022-01-14 湖南麒麟信安科技股份有限公司 分组密码算法的硬件控制系统
CN113938268B (zh) * 2021-10-15 2023-07-28 湖南麒麟信安科技股份有限公司 分组密码算法的硬件控制系统

Similar Documents

Publication Publication Date Title
CN103812641A (zh) 一种实现sm4分组对称密码算法的系统
CN105490802B (zh) 基于gpu的改进sm4并行加解密通信方法
CN101764684B (zh) 实现sms4算法的加解密系统
CN101764685B (zh) 实现sms4算法的加解密系统
CN103516512A (zh) 基于aes算法的加解密方法及加解密器
CN104639314A (zh) 基于aes加密/解密算法的装置和流水控制方法
CN106712930A (zh) 一种sm4加密方法及装置
EP3371928B1 (en) Key sequence generation for cryptographic operations
CN106034021B (zh) 轻量级双模兼容aes加解密模块及其方法
CN110166223A (zh) 一种国密sm4的快速软件实现方法
CN104852798B (zh) 一种数据加解密系统及方法
CN105916141B (zh) 一种自同步的祖冲之加解密算法的实现系统及其方法
TW201545524A (zh) 用於以第二密文編密演算法之運算修改第一密文編密演算法的技術
CN102801519A (zh) 一种实现aes加解密的方法及装置
CN102624520B (zh) 基于aes的192比特位密钥扩展系统及方法
TWI554072B (zh) 用於客製化倫多(Rijndael)區塊加密之方法
CN102664730B (zh) 基于高级加密标准aes的128比特位密钥扩展方法
CN103731822A (zh) 一种祖冲之算法的实现系统及其方法
CN104219045B (zh) Rc4 流密码生成器
CN106656470A (zh) 一种基于改进aes算法的数据加密方法
Yoon et al. A 55nm 50nJ/encode 13nJ/decode Homomorphic Encryption Crypto-Engine for IoT Nodes to Enable Secure Computation on Encrypted Data
CN100561911C (zh) 一种AES加解密电路中Sbox模块优化方法及优化电路
CN102647272B (zh) 256比特位密钥扩展系统及方法
CN109743156B (zh) 一种分组加解密方法和装置
CN102780557B (zh) 一种选择门优化的aes加解密方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20140521

WD01 Invention patent application deemed withdrawn after publication