SM4加密电路及其实施SM4加密操作的方法技术

技术编号:26894737 阅读:24 留言:0更新日期:2020-12-29 16:18
本申请涉及用于SM4算法的加密电路及其实施SM4加密操作的方法。所公开的加密装置,包括:轮密钥生成部件与密文运算部件;轮密钥生成部件包括串连的N个轮密钥生成运算单元,在一轮迭代中生成N个轮密钥参数,N>=2;密文运算部件包括串连的N个密文生成运算单元,在一轮迭代中生成N个密文参数。本申请定义两轮或多轮迭代在单一时钟周期内完成,在每个时钟周期内计算多轮迭代,从而降低加密/解密过程的总体延迟。

【技术实现步骤摘要】
SM4加密电路及其实施SM4加密操作的方法
本申请涉及信息安全领域,具体涉及用于SM4算法的加密电路及其实施SM4加密操作的方法。
技术介绍
SM4算法是国家密码管理局提供的标准密码算法。SM4算法使用的分组长度为128位,密钥长度也为128位。加密算法与密钥扩展算法均采用32轮非线性迭代结构,以字(32位)为单位进行加密运算,每一次迭代运算均为一轮变换函数F。SM4算法加/解密算法的结构相同,只是使用轮密钥相反,其中解密轮密钥是加密轮密钥的逆序。以加密过程为例,对每个分组进行计算时,SM4算法的输入包括128比特的明文(记为X)。用X(i)代表32比特(4字节)数据,其来自明文X或者对明文X进行计算的结果。SM4算法的输入还包括加密密钥(记为MK),长度为128比特。加密密钥KM被分为4部分,分别记为MK0、MK1、MK2与MK3,每个部分的长度均为32比特。从加密密钥MK生成轮密钥(记为rk(i),其中i取从0到31的整数)。SM4算法对每个128比特的分组进行32轮加密,在第i轮加密过程中,使用轮密钥rk(i)。SM4算法本文档来自技高网...

【技术保护点】
1.一种加密装置,包括:/n轮密钥生成部件与密文运算部件;/n轮密钥生成部件包括串连的N个轮密钥生成运算单元,在一轮迭代中生成N个轮密钥参数,N>=2;密文运算部件包括串连的N个密文生成运算单元,在一轮迭代中生成N个密文参数;/n在一轮迭代中:/n所述多个轮密钥生成运算单元的第i轮密钥生成运算单元输出的第i轮密钥参数被提供给所述多个轮密钥生成运算单元的第i+1轮密钥生成运算单元,以使第i+1轮密钥生成运算单元输出本轮迭代的第i+1轮密钥参数;其中i为正整数且0<i<=N,代表了轮密钥生成运算单元在串连的所述多个轮密钥生成运算单元的排序位置;/n所述多个轮密钥生成运算单元的最后...

【技术特征摘要】
1.一种加密装置,包括:
轮密钥生成部件与密文运算部件;
轮密钥生成部件包括串连的N个轮密钥生成运算单元,在一轮迭代中生成N个轮密钥参数,N>=2;密文运算部件包括串连的N个密文生成运算单元,在一轮迭代中生成N个密文参数;
在一轮迭代中:
所述多个轮密钥生成运算单元的第i轮密钥生成运算单元输出的第i轮密钥参数被提供给所述多个轮密钥生成运算单元的第i+1轮密钥生成运算单元,以使第i+1轮密钥生成运算单元输出本轮迭代的第i+1轮密钥参数;其中i为正整数且0<i<=N,代表了轮密钥生成运算单元在串连的所述多个轮密钥生成运算单元的排序位置;
所述多个轮密钥生成运算单元的最后一个轮密钥生成运算单元的输出的本轮迭代的最后一轮密钥参数被提供给所述多个轮密钥生成运算单元的最前一个轮密钥生成运算单元,以进行下一轮的轮密钥参数的生成;
所述第i轮密钥生成运算单元的输出的所述第i轮密钥参数被作为轮密钥提供给所述第i密文生成运算单元;所述第i+1轮密钥生成运算单元的输出的所述第i+1轮密钥参数被作为轮密钥提供给所述第i+1密文生成运算单元;
所述多个密文生成运算单元的第i密文生成运算单元输出的第i密文参数被提供给所述多个密文生成运算单元的第i+1密文生成运算单元,以使所述第i+1密文生成运算单元输出第i+1密文参数;
所述多个密文生成运算单元的最后一个密文生成运算单元输出的本轮最后一个密文参数被提供给所述多个密文生成运算单元的的最前密文生成运算单元。


2.一种加密装置,包括:轮密钥生成部件与密文运算部件;
轮密钥生成部件包括串连的N个轮密钥生成运算单元,在一轮迭代中生成N个轮密钥参数,N>=2;密文运算部件包括串连的N个密文生成运算单元,在一轮迭代中生成N个密文参数;
轮密钥生成部件与密文运算部件各自进行i-1轮迭代,i为整数;
所述多个轮密钥生成运算单元的第j轮密钥生成运算单元输出第i轮的第j个轮密钥参数K(N*i+j+3)被提供给第j+1轮密钥生成单元,以使第j+1轮密钥生成运算单元输出第i轮迭代的第j+1个轮密钥参数K(N*i+j+4);其中j为正整数且0<j<=N,代表了轮密钥生成运算单元在串连的所述多个轮密钥生成运算单元的排序位置;
所述多个轮密钥生成运算单元的最后一个轮密钥生成运算单元输出的第i轮的第N个轮密钥参数K(N*i+N+3)被提供给所述多个轮密钥生成运算单元的第一个轮密钥生成运算单元,以作为密钥参数K(N(i+1)+3)开启第i+1轮轮密钥参数的迭代;
所述多个密文生成运算单元的第j轮密文生成运算单元输出的第i轮第j个密文参数X(N*i+j+3)被提供给所述多个密文生成单元的第j+1密文生成运算单元;
所述第j轮密钥生成运算单元的输出的所述第i轮的第j个轮密钥参数K(N*i+j+3)被作为轮密钥rk(n*i+j-1)提供给所述第j密文生成运算单元;所述第j+1轮密钥生成运算单元的输出的所述第i轮的第j+1个轮密钥参数K(N*i+j+4)被作为轮密钥rk(n*i+j)提供给所述第j+1密文生成运算单元;
所述多个密文生成运算单元的最后一个密文生成运算单元的输出的密文参数X(N*i+N+3)被提供给所述多个密文生成运算单元的最前一个密文生成运算单元,以作为密文参数X(N(i+1)+3)开启第i+1轮密文参数的迭代;
其中,K为轮密钥参数,X为密文参数,rk为轮密钥、i为轮数。


3.一种加密方法,包括以下步骤:
第一组轮密钥生成运算单元输出的第i轮的第一个轮密钥参数K(2*i+4)被提供给第二组轮密钥生成单元,以使第二组轮密钥生成运算单元输出第i轮迭代的第二个轮密钥参数K(2*i+5);
第二组轮密钥生成运算单元输出的第i轮的第二个轮密钥参数K(2*i+5)被提供给第一组轮密钥成运算单元,以作为密钥参数K(2(i+1)+3)开启第i+1轮轮密钥参数的迭代;
第一组密文生成运算单元输出的第i轮第一个密文参数X(2*i+4)被提供给第二组密文生成运算单元,并且第二组轮密钥生成运算单元输出的轮密钥参数K(2*i+5)被作为轮...

【专利技术属性】
技术研发人员:周鹏飞沈建涂友钢黄好城
申请(专利权)人:北京忆芯科技有限公司重庆大及电子科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1