基于SM4密码算法的加解密装置制造方法及图纸

技术编号:15518004 阅读:144 留言:0更新日期:2017-06-04 08:23
本发明专利技术公开了一种基于SM4密码算法的加解密装置,具有多路存储单元,每路存储单元用于对应连接多核CPU的一CPU核;所述加解密装置通过每路存储单元接收一CPU核的数据源,并基于接收的所有CPU核的数据源进行并发SM4密码算法的加解密运算,以及将各加解密运算结果数据通过每路存储单元返回给相应的CPU核。本发明专利技术通过将外部接口设计多队列存储模式,可以与多核CPU实现无缝对接,解决CPU多核之间由于竞争调度SM4算法单元导致系统性能下降问题,有效提高现有SM4密码算法的运行性能。

【技术实现步骤摘要】
基于SM4密码算法的加解密装置
本专利技术涉及国密商用密码算法的硬件实现领域,特别是涉及一种基于SM4密码算法的加解密装置。
技术介绍
SM4分组对称密码算法作为我国商用密码算法,该算法的分组数据长度为128比特,密钥数据长度为128比特其在数据加解密的应用范围非常广泛。例如数据存储的加解密,数据通讯的加解密等等,都需要对数据进行分组对称加解密运算。对于硬件实现SM4分组对称算法芯片的使用方式,通常是CPU+SM4芯片的硬件设计方式,由CPU直接或间接控制调度SM4芯片。当CPU需要实行一个或多个数据源进行SM4算法加解密运算时,即向SM4芯片发送所需要加解密的分组数据源和相对应的密钥数据,SM4芯片接收到加解密数据源之后,开始进行分组对称加解密运算,等加解密运算结束后,返回加解密结果给CPU。通常SM4芯片设计方法的加解密运算模块只能一个一个数据源地窜行执行加解密运算,在应对SM4ECB处理模式可以获得非常高的运算性能,但在应对SM4CBC/OFB等反馈处理模式时却变得性能低下。如果CPU是多核多线程同时申请调度SM4芯片运算的情况,多核多线程之间并发处理任务的将受到SM4芯片串行运算的影响,特别是在SM4CBC或OFB加解密模式下更为突出。
技术实现思路
为了克服上述现有技术的缺陷,本专利技术要解决的技术问题是提供一种基于SM4密码算法的加解密装置,用以提高现有SM4密码算法的运行性能。为解决上述技术问题,本专利技术中的一种基于SM4密码算法的加解密装置,具有多路存储单元,每路存储单元用于对应连接多核CPU的一CPU核;所述加解密装置通过每路存储单元接收一CPU核的数据源,并基于接收的所有CPU核的数据源进行并发SM4密码算法的加解密运算,以及将各加解密运算结果数据通过每路存储单元返回给相应的CPU核。本专利技术有益效果如下:本专利技术通过将外部接口(存储单元)设计多队列存储模式,可以与多核CPU实现无缝对接,解决CPU多核之间由于竞争调度SM4算法单元导致系统性能下降问题,适应比较复杂的应用设计方案。同时,通过多路并发运算,可以进行多路不同数据源同时进行加解密运算,避免由于个别队列数据源比较多的情况下,阻塞其他队列数据源无法及时得到运算。特别是在SM4算法的ECB、CBC、CFB、OFB多种处理模式同时使用的情况下,避免不同模式之间的相互影响。附图说明图1是本专利技术实施例中基于SM4密码算法的加解密装置的系统架构图;图2是本专利技术实施例中基于SM4密码算法的加解密装置的结构示意图;图3是本专利技术实施例中轮密钥运算模块的结构示意图;图4是本专利技术实施例中轮密钥运算硬件实现模式示意图;图5是本专利技术实施例中分组数据加解密模块的结构示意图;图6是本专利技术实施例中加解密运算硬件实现模式示意图;图7是本专利技术实施例中一种具有2个存储轮密钥RAM加解密装置的结构示意图;图8是本专利技术实施例中另一种具有2个存储轮密钥RAM加解密装置的结构示意图;图9是本专利技术实施例中支持八个并发分组数据源运算的分组数据加解密模块的结构示意图。具体实施方式为了提高现有SM4密码算法的运行性能,本专利技术提供了一种基于SM4密码算法的加解密装置,以下结合附图以及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本专利技术,并不限定本专利技术。如图1所示,本专利技术实施例中一种基于SM4密码算法的加解密装置(简称加解密装置),具有多路存储单元,每路存储单元用于对应连接多核CPU的一CPU核;所述加解密装置通过每路存储单元接收一CPU核的数据源,并基于接收的所有CPU核的数据源进行并发SM4密码算法的加解密运算,以及将各加解密运算结果数据通过每路存储单元返回给相应的CPU核。进一步说,所述每路存储单元包括上行单元和下行单元;所述下行单元用于存储相应一CPU核的下行队列的数据源,所述上行单元用于将与一加解密运算结果数据以上行队列的形式返回给相应的一CPU核。具体说,1、多核CPU与加解密装置之间通过多通道DMA控制器联接。每个DMA通道对应一个CPU核,每个CPU核通过对应的DMA通道独立调度SM4算法加速模块,实现多核并发运行。2、多通道DMA控制器与SM4算法加速模块设计有多路存储buffer(存储单元),存储buffer设计成上行和下行两种模式。下行buffer(下行单元)用于存储CPU发送给SM4算法加速模块的数据,上行buffer(上行单元)用于SM4算法加速模块把加解密运算结果返回CPU。3、SM4算法加速模块对输入多队列数据源实行轮循读取,各队列的数据均等机会得到加解密运算,避免由于个别队列的数据量大导致其他队列的数据被阻塞的现象。内部实行多个数据源并发运算机制。在上述实施例的基础上,进一步提出上述实施例的变型实施例,在此需要说明的是,为了使描述简要,在各变型实施例中仅描述与上述实施例的不同之处。在本专利技术的一个实施例中,所述数据源包括秘钥数据和分组数据;如图2所示,所述装置包括输入加解密数据分转控制模块(即输入分转控制模块)、输出加解密数据分转控制模块(即输出分转控制模块)、支持多路并发运算的轮密钥模块和支持多路并发运算的分组数据加解密模块;所述输入分转控制模块,用于对所述各下行单元的数据源进行轮询读取,以及将读取的各秘钥数据送入到所述轮密钥运算模块,将读取的各分组数据送入到所述分组数据加解密模块;所述轮密钥运算模块,用于对接收的各秘钥数据进行轮密钥并发运算,得到各轮秘钥结果数据;所述分组数据加解密模块,用于获取各轮秘钥结果数据,根据每个轮秘钥结果数据和相应接收的分组数据进行并发SM4密码算法的加解密运算;所述输出分转控制模块,用于将所述分组数据加解密模块的各加解密运算结果数据分别存储在相应的上行单元。具体说,加解密装置包括四个模块:1)输入加解密数据分转模块。2)支持多路并发运算的轮密钥模块。3)支持多路并发运算的分组数据加解密模块。4)输出加解密数据分转模块。下面是各个模块的详细设计描述:1、输入加解密数据分转控制模块;SM4算法加速模块与CPUDMA控制器之间(或者是其他外部总线接口)设计一个加解密数据分转控制模块,对多路入口buffer的加解密数据进行轮循读取,提取出加解密数据的密钥送入到轮密钥运算模块,加解密分组数据源则送入到SM4分组数据运算模块,并标识数据的入口buffer序号。当加解密结果返回时,则根据数据的入口buffer序号,把运算结果写入相对应的输出buffer。2、支持多路并发运算的轮密钥模块;如图3所示,所述轮密钥运算模块包括至少一路秘钥数据接口缓存、轮运算主控制器、多个轮运算子控制器、SM4算法轮秘钥逻辑运算资源模块和双口轮密钥存储模块;每一路秘钥数据接口缓存,用于存储所述输入分转控制模块送入的秘钥数据;所述轮运算主控制器,用于针对每一路秘钥数据接口缓存,在检测到该路秘钥数据接口缓存有秘钥数据时,调度所述多个轮运算子控制器;所述多个轮运算子控制器,用于在所述轮运算主控制器的调度下,从该路秘钥数据接口缓存中并行读取秘钥数据,对每个秘钥数据生成存储写地址,并以流水线方式将读取的秘钥数据发送给所述SM4算法轮秘钥逻辑运算资源模块;所述SM4算法轮秘钥逻辑运算资源模块,用于针对每个秘钥数据,对该秘钥数据进行轮密钥运算本文档来自技高网...
基于SM4密码算法的加解密装置

【技术保护点】
一种基于SM4密码算法的加解密装置,其特征在于,所述装置具有多路存储单元,每路存储单元用于对应连接多核CPU的一CPU核;所述加解密装置通过每路存储单元接收一CPU核的数据源,并基于接收的所有CPU核的数据源进行并发SM4密码算法的加解密运算,以及将各加解密运算结果数据通过每路存储单元返回给相应的CPU核。

【技术特征摘要】
1.一种基于SM4密码算法的加解密装置,其特征在于,所述装置具有多路存储单元,每路存储单元用于对应连接多核CPU的一CPU核;所述加解密装置通过每路存储单元接收一CPU核的数据源,并基于接收的所有CPU核的数据源进行并发SM4密码算法的加解密运算,以及将各加解密运算结果数据通过每路存储单元返回给相应的CPU核。2.如权利要求1所述的装置,其特征在于,所述每路存储单元包括上行单元和下行单元;所述下行单元用于存储相应一CPU核的下行队列的数据源,所述上行单元用于将与一加解密运算结果数据以上行队列的形式返回给相应的一CPU核。3.如权利要求2所述的装置,其特征在于,所述数据源包括秘钥数据和分组数据;所述装置包括输入分转控制模块、输出分转控制模块、轮密钥运算模块和分组数据加解密模块;所述输入分转控制模块,用于对所述各下行单元的数据源进行轮询读取,以及将读取的各秘钥数据送入到所述轮密钥运算模块,将读取的各分组数据送入到所述分组数据加解密模块;所述轮密钥运算模块,用于对接收的各秘钥数据进行轮密钥并发运算,得到各轮秘钥结果数据;所述分组数据加解密模块,用于获取各轮秘钥结果数据,根据每个轮秘钥结果数据和相应接收的分组数据进行并发SM4密码算法的加解密运算;所述输出分转控制模块,用于将所述分组数据加解密模块的各加解密运算结果数据分别存储在相应的上行单元。4.如权利要求3所述的装置,其特征在于,所述轮密钥运算模块包括至少一路秘钥数据接口缓存、轮运算主控制器、多个轮运算子控制器、SM4算法轮秘钥逻辑运算资源模块和双口轮密钥存储模块;每一路秘钥数据接口缓存,用于存储所述输入分转控制模块送入的秘钥数据;所述轮运算主控制器,用于针对每一路秘钥数据接口缓存,在检测到该路秘钥数据接口缓存有秘钥数据时,调度所述多个轮运算子控制器;所述多个轮运算子控制器,用于在所述轮运算主控制器的调度下,从该路秘钥数据接口缓存中并行读取秘钥数据,对每个秘钥数据生成存储写地址,并以流水线方式将读取的秘钥数据发送给所述SM4算法轮秘钥逻辑运算资源模块;所述SM4算法轮秘钥逻辑运算资源模块,用于针对每个秘钥数据,对该秘钥数据进行轮密钥运算,并根据该秘钥数据相应的存储写地址,将该秘钥数据的轮密钥运算结果数据存储在所述双口轮密钥存储模块。5.如权利要求4所述的装置,其特征在于,所述SM4算法轮秘钥逻辑运算资源模块采用四个时钟周期完成一级轮密钥运算;所述子控制器的个数为4个、8个、16个或32个;所述双口轮密钥存储模块为2个。6.如权利要求4所述的装置,其特征在于,所述轮密钥运算结果数...

【专利技术属性】
技术研发人员:周志伟
申请(专利权)人:北京天融信网络安全技术有限公司北京天融信科技有限公司北京天融信软件有限公司
类型:发明
国别省市:北京,11

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

1