一种实现sm4分组对称密码算法的系统的制作方法

文档序号:7985296阅读:276来源:国知局
一种实现sm4分组对称密码算法的系统的制作方法
【专利摘要】本发明公开了一种实现SM4分组对称密码算法的系统,包括:输入密钥处理及结果存储器,用于对输入密钥进行处理,得到直接参与迭代运算的结果,并进行存储;密钥缓存器,用于根据控制模块输出的控制信号更新和存储密钥扩展运算的中间结果,即加密运算需要的轮密钥;数据缓存器,用于根据控制模块输出的控制信号更新和存储加解密迭代运算的中间结果;数据处理选择模块,用于根据控制模块输出的控制信号,选择参与运算的数据为密钥还是加解密的数据;运算逻辑模块,用于进行加解密运算和密钥扩展运算;控制模块,用于根据输入的工作模式控制信号,输出相应的加解密控制信号和密钥扩展控制信号。利用本发明,使得系统冗余度得到降低。
【专利说明】—种实现SM4分组对称密码算法的系统
【技术领域】
[0001]本发明涉及分组密码算法【技术领域】,尤其是一种实现SM4分组对称密码算法的系统。
【背景技术】
[0002]SM4分组对称密码算法即原SMS4算法,它是国内公布的第一个用于无线局域网产品的商用密码算法,该算法是我国首个公开针对特殊领域的密码算法,对无线局域网产业和商用密码研究都有重要的意义。SM4是基于S盒的分组对称密码算法,它对一组比特数据进行加解密运算,而不像流密码那样只针对单个比特运算。该算法的分组长度为128比特,密钥长度为128比特。加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反。
[0003]加密算法主要为读入加密数据和密钥进行加密运算的过程。算法的加密变换包含异或运算和合成置换T运算,其中合成置换T运算是由线性变换L和非线性变换τ复合而成,即T(.) =L(t (.))。非线性变换τ由4个并行的S盒构成,S盒是固定的8比特输入8比特输出的变换;线性变换L包含异或运算和循环左移运算。
[0004]对密钥扩展算法而言,加密算法中的轮密钥是加密密钥MK通过密钥扩展算法生成。而该扩展算法基本结构与加解密算法相同,同样包含异或运算和合成置换Τ’运算。其中合成置换Τ’运算与加密算法中的合成置换T运算基本相同,仅仅将其中的线性变换L修改为L’,线性变化L’同样包含异或运算和左移运算,形式略有不同。
[0005]实现SM4算法的加解密系统在现有技术中存在多种方案,但这些方案大多基于以下架构,如图1所示,现有技术中一个标准SM4加解密系统包括:密钥扩展模块、控制模块和加解密模块。以加密操作为例,首先由密钥扩展模块读入加密密钥ΜΚ、系统参数FK和固定参数CK,其中FK和CK是固定值,读入的所有参数经过32轮迭代运算产生32个轮密钥并存储。当有明文进入加解密模块,则加密运算启动,并在每轮迭代中读入相应轮密钥,直至完成32轮迭代加密操作,最终输出密文。不同方案的区别在于加解密模块的实现上。
[0006]但从系统全局的结构考虑,加解密模块和密钥扩展模块在功能上有较大的相似性,使用两个模块实现系统的功能使得系统的部件冗余度较高。

【发明内容】

[0007](一 )要解决的技术问题
[0008]有鉴于此,本发明的主要目的在于提供一种实现SM4分组对称密码算法的系统,以降低系统部件的冗余度。
[0009]( 二 )技术方案
[0010]为达到上述目的,本发明提供了一种实现SM4分组对称密码算法的系统,包括:
[0011]输入密钥处理及结果存储器,用于对输入密钥进行处理,得到直接参与迭代运算的结果,并进行存储;[0012]密钥缓存器,用于根据控制模块输出的控制信号更新和存储密钥扩展运算的中间结果,即加密运算需要的轮密钥;
[0013]数据缓存器,用于根据控制模块输出的控制信号更新和存储加解密迭代运算的中间结果;
[0014]数据处理选择模块,用于根据控制模块输出的控制信号,选择参与运算的数据为密钥还是加解密的数据;
[0015]运算逻辑模块,用于进行加解密运算和密钥扩展运算;以及
[0016]控制模块,用于根据输入的工作模式控制信号,输出相应的加解密控制信号和密钥扩展控制信号。
[0017]上述方案中,所述输入密钥处理及结果存储器包括运算部件以及存储单元,当接收到密钥时,该运算部件将该密钥与固定常数进行运算,得到直接参与密钥扩展算法进行迭代运算的数据,并将该数据存储于该存储单元中。
[0018]上述方案中,所述密钥缓存器包括一组存储单元,用于根据控制模块输出的控制信号更新和存储密钥扩展迭代运算得到的中间结果。
[0019]上述方案中,所述数据缓存器包括一组存储单元,用于根据控制模块输出的控制信号更新和存储数据加解密迭代运算得到的中间结果。
[0020]上述方案中,所述数据处理选择模块为一个数据选择器,用于选择输入到运算逻辑模块的数据是加解密数据还是密钥扩展数据,如果控制模块输出的是加解密控制信号,则输入到运算逻辑模块的数据是加解密数据;如果控制模块输出的是密钥扩展信号,则输入到运算逻辑模块的数据是密钥扩展数据。
[0021]上述方案中,所述运算逻辑模块包括轮密钥运算所需常数生成部件、第一运算部件、S盒部件、循环移位部件以及第二运算部件,其中:
[0022]所述轮密钥运算所需常数生成部件,用于根据控制逻辑输出的控制信号,按照相应的数学原理生成轮密钥生成时所需的常数;
[0023]所述第一运算部件,用于完成加解密数据与轮密钥进行的异或运算,或者密钥数据与生成轮密钥所需常数的异或运算;
[0024]所述S盒部件,用于在加解密模式或轮密钥扩展模式时对数据进行S盒查表运算;
[0025]所述循环移位部件,用于完成循环移位与异或运算;
[0026]所述循环移位部件,用于先对输入数据进行循环左移2、10、18、24、13、23位,循环左移2、10、18、24位所得的数据输入数据相异或得到输出结果A,循环左移13、23位所得到的数据与输入数据相异或得到输出结果B ;
[0027]所述第二运算部件,用于对所述循环移位部件的输出结果A与数据缓存器中相应的数据相异或得到A’,对所述循环移位部件的输出结果B与密钥缓存器中相应的数据相异或得到B’。
[0028]上述方案中,所述第二运算部件的输出A’与B’在控制模块输出的控制信号下分别存入数据缓存器或密钥缓存器。
[0029]上述方案中,所述控制模块根据输入的工作模式信号产生相应的加密运算控制信号和解密运算控制信号,实现加密运算过程和解密运算过程。[0030]上述方案中,所述加密运算过程为:加密运算开始时,输入的128位明文直接载入数据缓存器,输入密钥处理及结果存储器中存储的数据载入密钥缓存器模块;密钥缓存器仅有128位,采取不存储所有轮密钥,而是每轮加密前先计算轮密钥的方式工作;控制模块控制系统交替进行轮密钥的生成与数据块的加密,一组数据的加密通过64轮迭代完成。
[0031]上述方案中,所述解密运算过程为:SM4为对合运算,加密过程与解密过程使用相同的密钥;假设加密过程轮密钥的使用顺序为Tkci~rk31,解密时轮密钥的使用顺序为rk31~Tktl ;解密运算开始时,128位密文直接载入数据缓存器,输入密钥处理及结果存储器中存储的数据载入密钥缓存器;先由输入密钥通过32轮迭代计算出{rk31,rk3(l,rk29,rk28},在此过程中只进行密钥扩展运算,不进行数据解密运算;之后,可由{rk31,rk3(l,rk29,rk28}反推得到rk27~riv在此过程中轮密钥的生成与数据的解密交替进行;整个解密过程通过96轮迭代完成。
[0032](三)有益效果
[0033]本发明提供的实现SM4分组对称密码算法的系统,基于模块复用的思想,仅使用一个运算模块就可完成加解密运算和轮密钥扩展运算;利用了密钥扩展运算的正反递推性质,只存储初始密钥,不存储轮密钥,省去了 32轮轮密钥占用的大量资源;基于以上所述思想和性质,使得系统冗余度得到降低。
【专利附图】

【附图说明】
[0034]图1为现有技术中一个标准SM4加解密系统的示意图;
[0035]图2为本发明提供的实现SM4分组对称密码算法的系统的结构示意图;
[0036]图3是基于本发明提供的实现SM4分组对称密码算法的系统进行加密过程的流程图;
[0037]图4是基于本发明提供的实现SM4分组对称密码算法的系统进行解密过程的流程图。
【具体实施方式】
[0038]为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
[0039]SM4算法是国内应用于无线局域网领域的重要商用密码算法,其中加解密算法和密钥扩展算法都采用32轮非线性迭代结构。解密算法和加密算法的结构相同,只是轮密钥的使用顺序相反。
[0040]下面对加解密算法进行简要介绍:
[0041]定SlX为e比特的向量集,<<< i为32比特循环左移i位,?为32比特异或。
[0042]设明文输入为(為,Z7,為,為)e(Zf)4,密文输出为(70,K, Y2, Y3) e (Zf)4,轮密钥Tki^Zf,i = 0,1,...,31。则该算法的加密过程为:
[0043]A;+J = F(X',X,+1,X+2,Λ;+3, rk ) = Λ; ?T(Λ;τ1 ? Χ+2 ? Χ+3 十 rk ),/ = 0,1,…,31 (I)
[0044](Y0, Y1, Y2, Y3) = (X35, X34, X33, X32)(2)
[0045]在(I)式中,F(.)称为加密算法的轮函数,T(.)为Zf ^Z232的可逆变换,由非线性变换τ和线性变换L复合而成,即Τ(.) = L( τ (.))。[0046]非线性变换τ由4个并行的S盒构成。设输入为
【权利要求】
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为对合运算,加密过程与解密过程使用相同的密钥;假设加密过程轮密钥的使用顺序为咖~rk31,解密时轮密钥的使用顺序为rk31~;解密运算开始时,128位密文直接载入数据缓存器,输入密钥处理及结果存储器中存储的数据载入密钥缓存器;先由输入密钥通过32轮迭代计算出{rk31,rk3(l,rk29, rk28},在此过程中只进行密钥扩展运算,不进行数据解密运算;之后 ,可由{rk31, rk3(l,rk29,rk28}反推得到rk27~rlv在此过程中轮密钥的生成与数据的解密交替进行;整个解密过程通过96轮迭代完成。
【文档编号】H04L9/06GK103812641SQ201210441335
【公开日】2014年5月21日 申请日期:2012年11月7日 优先权日:2012年11月7日
【发明者】黑勇, 王晨光, 乔树山, 任高峰 申请人:中国科学院微电子研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1