一种适用于微处理器芯片的SM4加密算法硬件架构

文档序号:33710748发布日期:2023-03-31 23:43阅读:104来源:国知局
一种适用于微处理器芯片的sm4加密算法硬件架构
技术领域
1.本发明涉及信息安全领域,具体涉及一种适用于微处理器芯片的sm4加密算法硬件架构。


背景技术:

2.随着信息技术的发展,信息的传输与交互越来越频繁,信息在传送的过程中一旦被篡改或泄露,将可能造成无法估量的经济损失。因此,保证信息能够安全地传输通讯至关重要,使用加密算法对数据进行处理就是保证信息安全的有效技术手段。
3.国家密码局先后发布了sm1,sm2,sm3,sm4等密码算法,这些算法统称为国密算法,其中国密sm4算法在商业加密领域最为突出,并在2012年3月被确定为国家商用密码标准。
4.sm4算法是一种分组加密算法,消息分组长度和密钥长度均为128bit,主要包括密钥扩展算法和加(解)密算法。算法采用32轮非线性迭代结构,加密和解密算法结构相同,只是轮密钥使用顺序相反。密钥扩展算法的输入为128位初始密钥,输出为32个32位的轮密钥。数据加密算法输入为128位的明文数据和32个32位的轮密钥,加密之后输出数据为128位的密文数据。
5.sm4算法的加密算法如下:设输入的128位明文为x=(x0,x1,x2,x3),输出的128位密文为y=(y0,y1,y2,y3),其中xj与yj(j=0,1,2,3)都是32位二进制数据,设各轮的轮密钥为rki(i=0,1,2,3

31),rki是32位二进制数据,设每轮迭代的轮函数表示为f1(x),则sm4算法中加密算法的公式为
6.x
i+4
=f1(xi,x
i+1
,x
i+2
,x
i+3
,rki),i=0,1,2,3

31
7.y=(y0,y1,y2,y3)=(x
35
,x
34
,x
33
,x
32
)
8.sm4算法的密钥扩展算法如下:设输入的128位初始密钥为mk=(mk0,mk1,mk2,mk3),mkj(j=0,1,2,3)为32位数据组,轮函数为f2(x),中间变量为ki,轮密钥为rki。ki与rki均为32位数据组,其中i=0,1,2

31,系统参数为fk=(fk0,fk1,fk2,fk3),固定参数为ck=(ck0,ck1,ck2…
ck
31
),其中fk0,fk1,fk2,fk3和ck0,ck1,ck2…
ck
31
都为32位数据组,则轮密钥的生成方法可由公式表示为
[0009][0010]
rki=k
i+4
=f2(ki,k
i+1
,k
i+2
,k
i+3
,cki),i=0,1,2,3

31
[0011]
其中,加密算法中的f1(x)与密钥扩展算法中的f2(x)结构原理基本相同,主要包括异或运算、非线性变换以及循环移位操作三部分,不同之处在于轮函数的输入参数以及内部循环移位操作的移位值不同。
[0012]
为了确保信息的保密性与安全性,通常在微处理器芯片中嵌入加密算法硬件模块,以实现对信息的安全加密。由于微处理器的数据位宽相对较小(以32位为例),与上述的sm4算法要求(128位)不匹配,因而两者之间传递数据时会产生两种情况,第一种情况是需要使用存储器资源缓存数据,缓存数据后进行流水线处理,会造成较大的存储资源开销,第二种情况是直接将数据放进流水线中,此时流水线中会有空闲,资源利用率低。因此,需要
一种高效的加密算法硬件架构,来解决处理器与加密模块之间的数据传输与资源浪费的问题。


技术实现要素:

[0013]
发明目的:本发明主要针对微处理器与sm4加密算法模块之间连续传输数据进行加密处理时造成的硬件资源浪费的问题,提出的一种适用于微处理器芯片的sm4加密算法硬件架构设计,能够接收微处理器传递过来的连续数据进行加密处理,显著减少了硬件资源消耗,对数据的加密效果没有影响。
[0014]
技术方案:本发明公开一种适用于微处理器芯片的sm4加密算法硬件架构,其特征在于:所述的硬件架构主要包含控制模块、一个轮密钥计算单元和四个加密运算单元,控制模块实现串并转换以及控制加密运算单元协同配合,能够对微处理器传递的大量数据进行连续加密运算。具体架构如图1所示。
[0015]
该硬件架构所包含的主要模块包括:
[0016]
s2p接口模块:串行转并行,接收来自微处理器的待加密数据,将多个数据组合成为一帧初始密钥或明文,发送给下一级sm4_core模块,用于sm4加密算法运算。
[0017]
p2s接口模块:并行转串行,接收来自sm4_core模块的密文数据,将一帧密文数据拆分成为多个符合微处理器位宽的数据,发送给微处理器。
[0018]
sm4_core模块:包含一个轮密钥计算单元和四个加密运算单元,轮密钥计算单元接收初始密钥完成密钥扩展运算,四个加密运算单元接收多帧明文数据完成加密运算。
[0019]
controller模块:用于匹配微处理器接口位宽与sm4算法模块之间的数据位宽,实现串/并转换,同时对sm4_core模块中的两大类计算单元核心进行统一调度,控制运算类别,保证加密算法的运算效率。
[0020]
在硬件架构中,sm4_core模块为本发明的主要创新部分,该模块包含一个轮密钥计算单元(key_core模块)和四个加密运算单元(enc_core模块),sm4_core模块首先接收初始密钥,经过轮密钥计算单元计算得到32个轮密钥,将其存储在轮密钥计算单元内部的寄存器中,然后接收连续的明文数据,由四个加密运算单元进行连续加密运算。两大计算单元核心的具体架构如图2和图3所示。原始的轮密钥计算过程与加密运算过程都需要32轮非线性迭代运算后得到结果,本发明将两次迭代运算合并在一次,再将流水线结构折叠,因此sm4_core模块内部的任意一个计算单元核心均由两轮非线性迭代运算所需的硬件资源构成,计算单元核心内部每16次运算就完成了一次完整的32轮非线性迭代运算,相比于单核流水线结构,本发明的多核非流水线结构能够显著减少硬件资源消耗。
[0021]
具体的sm4加密算法硬件架构实现流程图如图4所示,具体的包括以下步骤:
[0022]
(1)controller模块接收配置信息,完成初始化参数配置,匹配微处理器接口位宽与sm4算法模块之间的数据位宽的比例关系,用于后续接收数据完成串并转换并控制计算单元核心参与加密算法计算。
[0023]
(2)s2p模块接收来自微处理器的初始密钥信息,组合成为一帧初始密钥数据,发送给sm4_core模块。
[0024]
(3)sm4_core模块接收到初始密钥数据,由controller模块控制唯一的轮密钥计算单元进行迭代运算,得到32个轮密钥。
[0025]
(4)s2p模块接收来自微处理器的明文信息,将连续的明文信息组合成为多帧明文数据,按照接收顺序依次发送给sm4_core模块。
[0026]
(5)sm4_core模块接收到明文数据,由controller模块对四个加密运算单元进行统一调度,每个计算单元核心负责一帧明文数据的迭代运算,四个核心协同配合,实现连续加密运算。
[0027]
(6)p2s模块接收来自sm4_core模块的密文数据,拆分成若干个符合微处理器接口位宽的数据,依次发送给微处理器。
附图说明
[0028]
图1为本发明提出的一种适用于微处理器芯片的sm4加密算法硬件架构。
[0029]
图2为本发明提出的sm4算法轮密钥计算单元核心的具体架构。
[0030]
图3为本发明提出的sm4算法加密运算单元核心的具体架构。
[0031]
图4为本发明sm4加密算法硬件架构实现流程图。
具体实施方式
[0032]
为了详细的说明本发明公开的技术方案,下面结合具体实例做进一步的阐述。
[0033]
在本实例中,将低复杂度sm4加密算法硬件架构嵌入到32位微处理器芯片中,先进行轮密钥计算,再进行连续加密运算,具体步骤如下所示:
[0034]
步骤1:controller模块接收配置信息,确定接口位宽与sm4算法数据位宽的比例为1∶4,生成对应的控制信号发送给其余模块。
[0035]
步骤2:32位微处理器每一个时钟周期传递32bit数据,s2p模块使用4个时钟周期接收4个32bit数据,将其组合成为128bit的初始密钥数据,发送给sm4_core模块。
[0036]
步骤3:sm4_core模块中的key_core模块接收初始密钥数据,经过16个时钟周期迭代计算得到32个32bit轮密钥数据,存储在内部的寄存器中。
[0037]
步骤4:32位微处理器每一个时钟周期传递32bit数据,多个时钟周期发送多个32bit数据,s2p模块每4个时钟周期将接收到的4个32bit数据组合成为1个128bit的明文数据,依次发送给sm4_core模块。
[0038]
步骤5:sm4_core模块中的4个enc_core模块依次接收明文数据,每个加密计算单元都需要经过16个时钟周期迭代计算得到1个128bit的密文数据,当第5帧明文数据由s2p模块传给sm4_core模块时,sm4_core模块中第1个enc_core模块已完成对第1帧明文的加密运算,因此第1个enc_core模块接收第5帧明文数据并进行加密运算,依次类推,4个enc_core模块能够一直接收来自s2p模块的128bit明文数据,实现对32位微处理器发送数据的连续加密。
[0039]
步骤6:p2s模块每4个时钟周期接收到来自sm4_core模块的128bit密文数据,将其拆分成为4个32bit的数据依次发送给32bit微处理器,完成加密后的数据反馈。
[0040]
本发明针对常见的32bit微处理器芯片应用场景而设计,controller模块能够根据配置信息自动匹配微处理器接口位宽,但对于16bit、8bit等更低位宽的微处理器芯片,本发明中的4个加密运算单元在进行加密运算时会存在计算单元核心等待数据的情况,造成资源浪费和资源利用率下降,因此当本发明嵌入到低位宽微处理器芯片中时,可根据具
体情况减少加密运算单元的数量,以满足微处理器接口位宽与sm4加密算法数据位宽相匹配时,微处理器接口发送连续数据,加密运算单元都处于工作的状态,在不影响数据连续加密的情况下,进一步降低sm4加密算法硬件架构的复杂度。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1