CN106788975B - 基于sm4密码算法的加解密装置 - Google Patents

基于sm4密码算法的加解密装置 Download PDF

Info

Publication number
CN106788975B
CN106788975B CN201611233146.6A CN201611233146A CN106788975B CN 106788975 B CN106788975 B CN 106788975B CN 201611233146 A CN201611233146 A CN 201611233146A CN 106788975 B CN106788975 B CN 106788975B
Authority
CN
China
Prior art keywords
data
encryption
decryption
key
round
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.)
Active
Application number
CN201611233146.6A
Other languages
English (en)
Other versions
CN106788975A (zh
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.)
Beijing Topsec Technology Co Ltd
Beijing Topsec Network Security Technology Co Ltd
Beijing Topsec Software Co Ltd
Original Assignee
Beijing Topsec Technology Co Ltd
Beijing Topsec Network Security Technology Co Ltd
Beijing Topsec Software Co Ltd
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 Beijing Topsec Technology Co Ltd, Beijing Topsec Network Security Technology Co Ltd, Beijing Topsec Software Co Ltd filed Critical Beijing Topsec Technology Co Ltd
Priority to CN201611233146.6A priority Critical patent/CN106788975B/zh
Publication of CN106788975A publication Critical patent/CN106788975A/zh
Application granted granted Critical
Publication of CN106788975B publication Critical patent/CN106788975B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种基于SM4密码算法的加解密装置,具有多路存储单元,每路存储单元用于对应连接多核CPU的一CPU核;所述加解密装置通过每路存储单元接收一CPU核的数据源,并基于接收的所有CPU核的数据源进行并发SM4密码算法的加解密运算,以及将各加解密运算结果数据通过每路存储单元返回给相应的CPU核。本发明通过将外部接口设计多队列存储模式,可以与多核CPU实现无缝对接,解决CPU多核之间由于竞争调度SM4算法单元导致***性能下降问题,有效提高现有SM4密码算法的运行性能。

Description

基于SM4密码算法的加解密装置
技术领域
本发明涉及国密商用密码算法的硬件实现领域,特别是涉及一种基于SM4密码算法的加解密装置。
背景技术
SM4分组对称密码算法作为我国商用密码算法,该算法的分组数据长度为128比特,密钥数据长度为128比特其在数据加解密的应用范围非常广泛。例如数据存储的加解密,数据通讯的加解密等等,都需要对数据进行分组对称加解密运算。
对于硬件实现SM4分组对称算法芯片的使用方式,通常是CPU+SM4芯片的硬件设计方式,由CPU直接或间接控制调度SM4芯片。当CPU需要实行一个或多个数据源进行SM4算法加解密运算时,即向SM4芯片发送所需要加解密的分组数据源和相对应的密钥数据,SM4芯片接收到加解密数据源之后,开始进行分组对称加解密运算,等加解密运算结束后,返回加解密结果给CPU。
通常SM4芯片设计方法的加解密运算模块只能一个一个数据源地窜行执行加解密运算,在应对SM4 ECB处理模式可以获得非常高的运算性能,但在应对SM4 CBC/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算法加速模块与CPU DMA控制器之间(或者是其他外部总线接口)设计一个加解密数据分转控制模块,对多路入口buffer的加解密数据进行轮循读取,提取出加解密数据的密钥送入到轮密钥运算模块,加解密分组数据源则送入到SM4分组数据运算模块,并标识数据的入口buffer序号。当加解密结果返回时,则根据数据的入口buffer序号,把运算结果写入相对应的输出buffer。
2、支持多路并发运算的轮密钥模块;
如图3所示,所述轮密钥运算模块包括至少一路秘钥数据接口缓存、轮运算主控制器、多个轮运算子控制器、SM4算***秘钥逻辑运算资源模块和双口轮密钥存储模块;
每一路秘钥数据接口缓存,用于存储所述输入分转控制模块送入的秘钥数据;
所述轮运算主控制器,用于针对每一路秘钥数据接口缓存,在检测到该路秘钥数据接口缓存有秘钥数据时,调度所述多个轮运算子控制器;
所述多个轮运算子控制器,用于在所述轮运算主控制器的调度下,从该路秘钥数据接口缓存中并行读取秘钥数据,对每个秘钥数据生成存储写地址,并以流水线方式将读取的秘钥数据发送给所述SM4算***秘钥逻辑运算资源模块;
所述SM4算***秘钥逻辑运算资源模块,用于针对每个秘钥数据,对该秘钥数据进行轮密钥运算,并根据该秘钥数据相应的存储写地址,将该秘钥数据的轮密钥运算结果数据存储在所述双口轮密钥存储模块。
其中,所述SM4算***秘钥逻辑运算资源模块采用四个时钟周期完成一级轮密钥运算;所述子控制器的个数为4个、8个、16个或32个;所述双口轮密钥存储模块为2个。
所述轮密钥运算结果数据包括加密轮密钥运算结果数据和解密轮密钥运算结果数据;
所述加密轮密钥运算结果数据低位地址采用递增方式;
所述解密轮密钥运算结果数据低位地址采用递减方式。
具体说:
a)密钥数据buffer(即秘钥数据接口缓存);
加解密数据分转控制模块剥离出密钥数据写入轮密钥运算模块的接口buffer,为后续做轮密钥运算使用。
b)主控制模块(即轮运算主控制器);
主控制模块用于监控密钥buffer是否有有效密钥以及控制其他四个子控制模块,使四个子模块轮流读取密钥buffer数据,并以流水线方式控制子控制器并发运行。
c)子控制模块(轮运算子控制器)
本发明采用四个子控制模块。子控制模块受控于主控制模块。当主控制模块发送一个新密钥需要进行轮密钥运算的消息给其中一个子控制模块,该子控制模块则开始读取密钥buffer的密钥数据,并启动轮密钥运算控制状态机,通过控制状态机把密钥数据送入到轮密钥运算资源模块进行轮密钥运算。控制状态机控制轮密钥运算过程中,同时生成存储轮密钥结果的RAM写地址,一同与密钥数据送入到轮密钥运算资源模块。当控制状态机完成32轮密钥数据传送之后,将给主控制模块发送ready信号,准备接收下一个密钥数据。四个子控制模块通过主控制模块的调度控制,进行轮密钥并发运算;同时,四个控制状态机在主控制模块控制下,以流水线方式传送各组密钥数据给轮密钥运算模块。
主控制模块与四个子控制模块的状态机时序关系如下表所示:
d)sm4算***密钥运算资源模块(即SM4算***秘钥逻辑运算资源模块);
轮密钥运算需要进行32级轮非线性逻辑运算,轮密钥运算硬件实现模式如图4所示,本发明采用用一级逻辑运算资源的设计方法,减少逻辑资源使用,通过外部子控制模块实行轮循迭代方式完成32轮轮密钥运算。轮密钥运算资源设计成用四个时钟周期完成一级轮密钥运算,采用四级流水线设计方式。通过外部四个子控制模块调度控制,实现4个不同密钥的轮密钥并发轮循迭代运算。每经过一级轮密钥运算,输出一个轮密钥结果写入到ram里面。ram的写地址由外部子控制模块控制:加密轮密钥低位地址采用0--31递增方式,解密轮密钥低位地址采用31--0递减方式。这样设计将为后续分组数据的加密运算和解密运算使用轮密钥达成统一方式。
e)存储轮密钥ram(即双口轮密钥存储模块)
存储轮密钥ram是一个双口ram,写地址、输入数据由sm4算***密钥运算资源模块控制,读地址、接收输出数据则由分组数据运算模块控制。
3、支持多路并发运算的分组数据加解密模块;
如图5所示,所述分组数据加解密模块包括至少一路分组数据接口缓存、加解密主控制模块、多个加解密子控制模块、SM4算法分组数据逻辑运算资源模块和至少一路加解密运算结果数据输出接口缓存;
每一路分组数据接口缓存,用于存储所述所述输入分转控制模块送入的分组数据;
所述加解密主控制模块,用于针对每一路分组数据接口缓存,在检测到该路分组数据接口缓存中有分组数据,并且所述双口轮密钥存储模块中存储对应轮密钥运算结果数据时,调度所述多个加解密子控制模块;
所述多个加解密子控制模块,用于在所述加解密主控制模块的调度下,从该路分组数据接口缓存中并行读取分组数据,以及从所述双口轮密钥存储模块中读取相应的轮密钥运算结果数据,并以流水线的方式将读取的分组数据和轮密钥运算结果数据发送给所述SM4算法分组数据逻辑运算资源模块;
所述SM4算法分组数据逻辑运算资源模块,用于针对每个分组数据和对应的轮密钥运算结果数据进行加解密数据;
每路加解密运算结果数据输出接口缓存,用于将所述SM4算法分组数据逻辑运算资源模块的加解密运算结果数据分别存储在相应的上行单元。
进一步说,每一路分组数据接口缓存中存储的每个分组数据携带长度信息和下行队列序号;
每个加解密子控制模块,用于针对每个分组数据,根据该分组数据的长度信息确定加解密运算次数,并将该分组数据和对应的轮密钥运算结果数据发送给所述SM4算法分组数据逻辑运算资源模块;
所述SM4算法分组数据逻辑运算资源模块,用于根据所述加解密运算次数,针对每个分组数据和对应的轮密钥运算结果数据进行加解密数据。
进一步说,每一路分组数据接口缓存中存储的每个分组数据还携带ECB\CBC\OFB反馈模式;
每个加解密子控制模块,还用于根据所述反馈模式,将所述下行队列序号对应的加解密运算结果数据进行ECB\CBC\OFB处理;
每路加解密运算结果数据输出接口缓存,用于将每个加解密子控制模块处理后的加解密运算结果数据分别存储在相应的上行单元。
其中,所述SM4算法分组数据逻辑运算资源模块采用四个时钟周期完成一个32位分组数据的加解密运算;所述分组数据加解密模块具有一级SM4算法分组数据逻辑运算资源;所述子控制器为的个数为4个、8个、16个或32个;所述装置包括多个分组数据加解密模块。
具体说,
a)四路分组数据输入buffer(即分组数据接口缓存)
用于存储四路不同源的输入分组数据,为后面并发运算提供分组数据源。buffer除了分组数据,还携带分组数据的长度、ECB/CBC/OFB等数据反馈模式以及外部数据队列序号等,为后续分组数据运算提供长度、运算模式以及返回数据队列序号等消息。
b)主控制模块(即加解密主控制模块)
本发明设计一个主控制模块,用于监控分组buffer是否有分组数据、轮密钥RAM是否有轮密钥结果以及控制其他四个子控制模块,使能四个子模块读取分组数据和轮密钥,并以流水线方式控制子控制器进行分组数据加解密并发运算。
c)子控制模块(即加解密子控制模块)
本发明设计四个子控制模块。子控制模块受控于主控制模块。当主控制模块发送一个新分组数据源需要进行加解密运算的消息给其中一个子控制模块,该子控制模块则启动控制状态机读取分组数据的长度、ECB/CBC/OFB等数据反馈模式以及外部数据队列序号等。子控制模块根据长度确定执行分组数据运算次数,读取buffer的分组数据,并传送入SM4算法分组数据逻辑运算资源模块进行加解密运算;根据反馈模式对分组数据运算实行ECB/CBC/OFB等模式处理,并输出分组数据运算结果;数据队列序号则是输出加解密结果的队列号,与分组数据运算结果一起写入到输出buffer,用于外部DMA控制器返回数据给CPU使用。
主控制模块状态机与四个子控制模块状态机的时序关系如下表所示,
从状态机时序关系表可知,主控制状态机一直由四个运行状态循环执行,在主控制状态机的控制下,四个子控制状态机以流水线方式并发运行,实现四个不同数据源的分组数据进行加解密运算。
d)SM4算法分组数据逻辑运算资源模块(即SM4算法分组数据逻辑运算资源模块);
分组数据运算需要进行32级轮非线性逻辑运算,分组数据运算(即加解密运算)硬件实现模式如图6所示。
本发明设计用一级逻辑运算资源的设计方法,通过外部子控制模块实行轮循迭代方式完成32轮分组数据运算。分组数据运算逻辑资源设计成用四个时钟周期完成一个32位分组数据运算,采用四级流水线设计方式,支持四路不同源分组数据同时运算。通过四个子控制模块调度控制,实现4个不同源的分组数据并发轮循迭代运算。每经过一级分组数据运算,输出一个加解密结果发送给子控制模块暂存,子控制模块判断加解密结果是否需要实行OFB后反馈模式处理,如果需要则实行OFB处理之后再写入输出buffer,否则将直接写入输出buffer。
由于解密运算使用轮密钥在计算过程中已经经过逆序处理,分组数据逻辑运算资源模块不需要区分加密运算还是解密运算,统一用一种运算方式完成加密和解密运算。
e)输出buffer(即加解密运算结果数据输出接口缓存);
输出buffer缓存加解密数据结果,数据将由输出加解密数据分转模块发送给外部模块。
4、输出加解密数据分转模块;
输出加解密数据分转模块将读取输出buffer的输出序列号,把加解密数据返回给外部DMA控制器相应序列号队列。
本发明中装置支持并发运算的SM4密码算法,用于解决现有技术方案中CPU多核多线程并发申请调度SM4密码算法芯片的复杂应用场景,特别是在不降低SM4 ECB处理模式的性能前提,提高SM4 CBC、OFB等模式的运算性能。
本发明中装置主要分为两大运算部分,一部分数据源密钥的轮密钥运算模块,另一部分既是分组数据的加解密运算模块。
本发明中装置为支持CPU多核调度SM4密码算法硬件加速运算单元,SM4算法分组数据源和密钥数据设计成支持多路输入、输出队列架构,用于对应多核CPU并发调度SM4。
轮密钥运算模块对多个密钥数据队列进行轮循读取轮密钥实现并发运算,所计算得到多个轮密钥结果缓存到一个双口RAM,为后续的分组数据的加解密运算模块使用。轮密钥运算模块支持并发运算的数量可以设计成4个、8个、16个或更多个,可以根据实际使用芯片资源数量或者设计需要来增加或减少并发数。
进一步地,本发明中轮密钥运算模块运算得到轮密钥结果缓存入一个双口RAM,分组数据的加解密运算模块将读取双口RAM的轮密钥和与该轮密钥相关的数据源分组数据进行加解密运算;
分组数据的加解密运算模块设计成支持多条不同分组加解密数据源并发运算。并发运算的数量可以设计成4个、8个、16个或更多个,可以根据实际使用芯片资源数量或者设计需要来增加或减少并发数。
进一步地,本发明装装置为配合使用并发运算的轮密钥运算模块和并发运算的分组数据的加解密运算模块,密钥和数据源输入、输出队列设计为多队列模式,每个输入、返回队列有各自编号。这样通过加解密的数据结果能够准确返回给多核CPU的。
本发明中装置结合SM4算法的本质,充分利用SM4算法流水线方式的硬件运算资源模块,进行设计架构方面的优化,在不增加多少逻辑资源的情况,实现并发运算SM4密码算法,提高SM4CBC、OFB模式的处理性能,在结合CPU多核多线程调度使用情况,充分提升整个***性能。
本发明中装置,进一步在上述各实施例的基础上,如图7所示,为了进一步提高运算性能,只需要增加一个存储轮密钥RAM,即可以满足并发执行八个不同分组数据源运算的要求。
在芯片资源比较丰富的情况下,为增加轮密钥的运算速度,则轮密钥模块增加一级轮密钥运算资源,同时子控制模块设计为八个,主控制同时控制八个子控制模块并发执行。其具体结构如图8所示。
为进一步提高运算性能,如图9所示,本发明中装置还支持并发执行八路不同分组数据源,需要采用两个分组数据运算资源,同时子控制模块设计为八个。主控制模块同时控制八个子控制模块并发运行。
本发明实施例中装置在已有SM4算法硬件实现的基础上进行优化,在不增加多少逻辑占用的资源的情况,实现并发运算SM4密码算法,在不降低SM4ECB模式性能前提下,显著地提高了SM4CBC、OFB模式的处理性能,再结合CPU多核多线程调度方式使用,充分提升整个***性能。
虽然本申请描述了本发明的特定示例,但本领域技术人员可以在不脱离本发明概念的基础上设计出来本发明的变型。
本领域技术人员在本发明技术构思的启发下,在不脱离本发明内容的基础上,还可以对本发明做出各种改进,这仍落在本发明的保护范围之内。

Claims (9)

1.一种基于SM4密码算法的加解密装置,其特征在于,所述装置具有多路存储单元,每路存储单元用于对应连接多核CPU的一CPU核;
所述加解密装置通过每路存储单元接收一CPU核的数据源,并基于接收的所有CPU核的数据源进行并发SM4密码算法的加解密运算,以及将各加解密运算结果数据通过每路存储单元返回给相应的CPU核;
所述每路存储单元包括上行单元和下行单元;所述下行单元用于存储相应一CPU核的下行队列的数据源,所述上行单元用于将与一加解密运算结果数据以上行队列的形式返回给相应的一CPU核。
2.如权利要求1所述的装置,其特征在于,所述数据源包括秘钥数据和分组数据;所述装置包括输入分转控制模块、输出分转控制模块、轮密钥运算模块和分组数据加解密模块;
所述输入分转控制模块,用于对所述各下行单元的数据源进行轮询读取,以及将读取的各秘钥数据送入到所述轮密钥运算模块,将读取的各分组数据送入到所述分组数据加解密模块;
所述轮密钥运算模块,用于对接收的各秘钥数据进行轮密钥并发运算,得到各轮秘钥结果数据;
所述分组数据加解密模块,用于获取各轮秘钥结果数据,根据每个轮秘钥结果数据和相应接收的分组数据进行并发SM4密码算法的加解密运算;
所述输出分转控制模块,用于将所述分组数据加解密模块的各加解密运算结果数据分别存储在相应的上行单元。
3.如权利要求2所述的装置,其特征在于,所述轮密钥运算模块包括至少一路秘钥数据接口缓存、轮运算主控制器、多个轮运算子控制器、SM4算***秘钥逻辑运算资源模块和双口轮密钥存储模块;
每一路秘钥数据接口缓存,用于存储所述输入分转控制模块送入的秘钥数据;
所述轮运算主控制器,用于针对每一路秘钥数据接口缓存,在检测到该路秘钥数据接口缓存有秘钥数据时,调度所述多个轮运算子控制器;
所述多个轮运算子控制器,用于在所述轮运算主控制器的调度下,从该路秘钥数据接口缓存中并行读取秘钥数据,对每个秘钥数据生成存储写地址,并以流水线方式将读取的秘钥数据发送给所述SM4算***秘钥逻辑运算资源模块;
所述SM4算***秘钥逻辑运算资源模块,用于针对每个秘钥数据,对该秘钥数据进行轮密钥运算,并根据该秘钥数据相应的存储写地址,将该秘钥数据的轮密钥运算结果数据存储在所述双口轮密钥存储模块。
4.如权利要求3所述的装置,其特征在于,所述SM4算***秘钥逻辑运算资源模块采用四个时钟周期完成一级轮密钥运算;所述子控制器的个数为4个、8个、16个或32个;所述双口轮密钥存储模块为2个。
5.如权利要求3所述的装置,其特征在于,所述轮密钥运算结果数据包括加密轮密钥运算结果数据和解密轮密钥运算结果数据;
所述加密轮密钥运算结果数据低位地址采用递增方式;
所述解密轮密钥运算结果数据低位地址采用递减方式。
6.如权利要求3所述的装置,其特征在于,所述分组数据加解密模块包括至少一路分组数据接口缓存、加解密主控制模块、多个加解密子控制模块、SM4算法分组数据逻辑运算资源模块和至少一路加解密运算结果数据输出接口缓存;
每一路分组数据接口缓存,用于存储所述所述输入分转控制模块送入的分组数据;
所述加解密主控制模块,用于针对每一路分组数据接口缓存,在检测到该路分组数据接口缓存中有分组数据,并且所述双口轮密钥存储模块中存储对应轮密钥运算结果数据时,调度所述多个加解密子控制模块;
所述多个加解密子控制模块,用于在所述加解密主控制模块的调度下,从该路分组数据接口缓存中并行读取分组数据,以及从所述双口轮密钥存储模块中读取相应的轮密钥运算结果数据,并以流水线的方式将读取的分组数据和轮密钥运算结果数据发送给所述SM4算法分组数据逻辑运算资源模块;
所述SM4算法分组数据逻辑运算资源模块,用于针对每个分组数据和对应的轮密钥运算结果数据进行加解密数据;
每路加解密运算结果数据输出接口缓存,用于将所述SM4算法分组数据逻辑运算资源模块的加解密运算结果数据分别存储在相应的上行单元。
7.如权利要求6所述的装置,其特征在于,每一路分组数据接口缓存中存储的每个分组数据携带长度信息和下行队列序号;
每个加解密子控制模块,用于针对每个分组数据,根据该分组数据的长度信息确定加解密运算次数,并将该分组数据和对应的轮密钥运算结果数据发送给所述SM4算法分组数据逻辑运算资源模块;
所述SM4算法分组数据逻辑运算资源模块,用于根据所述加解密运算次数,针对每个分组数据和对应的轮密钥运算结果数据进行加解密数据。
8.如权利要求7所述的装置,其特征在于,每一路分组数据接口缓存中存储的每个分组数据还携带ECB\CBC\OFB反馈模式;
每个加解密子控制模块,还用于根据所述反馈模式,将所述下行队列序号对应的加解密运算结果数据进行ECB\CBC\OFB处理;
每路加解密运算结果数据输出接口缓存,用于将每个加解密子控制模块处理后的加解密运算结果数据分别存储在相应的上行单元。
9.如权利要求6-8中任意一项所述的装置,其特征在于,所述SM4算法分组数据逻辑运算资源模块采用四个时钟周期完成一个32位分组数据的加解密运算;所述分组数据加解密模块具有一级SM4算法分组数据逻辑运算资源;所述子控制器为的个数为4个、8个、16个或32个;所述装置包括多个分组数据加解密模块。
CN201611233146.6A 2016-12-28 2016-12-28 基于sm4密码算法的加解密装置 Active CN106788975B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611233146.6A CN106788975B (zh) 2016-12-28 2016-12-28 基于sm4密码算法的加解密装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611233146.6A CN106788975B (zh) 2016-12-28 2016-12-28 基于sm4密码算法的加解密装置

Publications (2)

Publication Number Publication Date
CN106788975A CN106788975A (zh) 2017-05-31
CN106788975B true CN106788975B (zh) 2019-12-13

Family

ID=58922688

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611233146.6A Active CN106788975B (zh) 2016-12-28 2016-12-28 基于sm4密码算法的加解密装置

Country Status (1)

Country Link
CN (1) CN106788975B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109299614A (zh) * 2018-10-30 2019-02-01 天津津航计算技术研究所 一种采用流水线方式实现sm4密码算法的***及方法
CN112350819B (zh) * 2020-10-23 2022-02-18 四川九洲电器集团有限责任公司 一种全流水线sms4加解密方法及***
CN112035866B (zh) * 2020-11-04 2021-07-23 湖北芯擎科技有限公司 一种数据加密方法、装置、设备和计算机可读存储介质
CN112613053B (zh) * 2020-12-25 2024-04-23 北京天融信网络安全技术有限公司 一种数据加解密方法及装置
CN113626839A (zh) * 2021-03-31 2021-11-09 中汽创智科技有限公司 一种基于多线程并发处理的加解密引擎***、方法及汽车
CN113742753B (zh) * 2021-09-15 2023-09-29 北京宏思电子技术有限责任公司 一种数据流加解密的方法、电子设备及芯片***
CN114691584B (zh) * 2022-04-01 2023-10-27 广州万协通信息技术有限公司 一种基于pcie接口高速数据流的sm1加解密装置
CN114662136B (zh) * 2022-05-25 2022-09-20 广州万协通信息技术有限公司 一种基于pcie通道的多算法ip核的高速加解密***及方法
CN116684074B (zh) * 2023-07-25 2023-10-20 杭州海康威视数字技术股份有限公司 硬件密码模组多核调度算法驱动方法、装置及电子设备
CN117272352B (zh) * 2023-11-21 2024-01-30 北京国科天迅科技股份有限公司 多核并行加解密方法、装置、计算机设备和存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101051892A (zh) * 2007-03-14 2007-10-10 江中尧 一种cpu专用数据的加密装置及方法
CN101876955A (zh) * 2009-11-23 2010-11-03 北京星网锐捷网络技术有限公司 一种加速硬件加解密处理方法、装置和设备
CN102769574A (zh) * 2012-08-06 2012-11-07 华为技术有限公司 一种能够进行业务硬件加速的装置及其方法
CN102932141A (zh) * 2012-09-27 2013-02-13 汉柏科技有限公司 多加解密芯片并行处理报文加解密的保序方法及***
CN102970142A (zh) * 2012-12-11 2013-03-13 成都卫士通信息产业股份有限公司 一种vpn设备在多加密卡环境下并发加解密的方法及***
CN103475469A (zh) * 2013-09-10 2013-12-25 中国科学院数据与通信保护研究教育中心 一种结合cpu和gpu实现sm2算法的方法及装置
CN103532710A (zh) * 2013-09-26 2014-01-22 中国科学院数据与通信保护研究教育中心 基于gpu的sm2算法实现方法及装置
CN104468309A (zh) * 2014-10-31 2015-03-25 成都卫士通信息产业股份有限公司 一种低速smp与高速密码卡的高效适配方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100466629C (zh) * 2006-09-18 2009-03-04 杭州华三通信技术有限公司 一种网络设备和基于多核处理器的报文转发方法
CN101599828A (zh) * 2009-06-17 2009-12-09 刘霁中 一种高效的rsa加解密方法及其协处理器
CN103607279B (zh) * 2013-11-14 2017-01-04 中国科学院数据与通信保护研究教育中心 基于多核处理器的密钥保护方法及***
CN103679061A (zh) * 2013-11-22 2014-03-26 北京民芯科技有限公司 国密sm4算法的可扩展高吞吐率的实现方法及装置
CN105049204A (zh) * 2015-07-30 2015-11-11 苏州中科启慧软件技术有限公司 基于ctr模式和分组密码vh的轻量级流密码技术vhc

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101051892A (zh) * 2007-03-14 2007-10-10 江中尧 一种cpu专用数据的加密装置及方法
CN101876955A (zh) * 2009-11-23 2010-11-03 北京星网锐捷网络技术有限公司 一种加速硬件加解密处理方法、装置和设备
CN102769574A (zh) * 2012-08-06 2012-11-07 华为技术有限公司 一种能够进行业务硬件加速的装置及其方法
CN102932141A (zh) * 2012-09-27 2013-02-13 汉柏科技有限公司 多加解密芯片并行处理报文加解密的保序方法及***
CN102970142A (zh) * 2012-12-11 2013-03-13 成都卫士通信息产业股份有限公司 一种vpn设备在多加密卡环境下并发加解密的方法及***
CN103475469A (zh) * 2013-09-10 2013-12-25 中国科学院数据与通信保护研究教育中心 一种结合cpu和gpu实现sm2算法的方法及装置
CN103532710A (zh) * 2013-09-26 2014-01-22 中国科学院数据与通信保护研究教育中心 基于gpu的sm2算法实现方法及装置
CN104468309A (zh) * 2014-10-31 2015-03-25 成都卫士通信息产业股份有限公司 一种低速smp与高速密码卡的高效适配方法

Also Published As

Publication number Publication date
CN106788975A (zh) 2017-05-31

Similar Documents

Publication Publication Date Title
CN106788975B (zh) 基于sm4密码算法的加解密装置
US20190087233A1 (en) Task allocating method and system for reconfigurable processing system
US8873550B2 (en) Task queuing in a multi-flow network processor architecture
US8683221B2 (en) Configurable memory encryption with constant pipeline delay in a multi-core processor
CN110995598B (zh) 一种变长报文数据处理方法和调度装置
CN104242981B (zh) 一种基于软件无线电的嵌入式通讯装置
US11935600B2 (en) Programmable atomic operator resource locking
US20230132724A1 (en) Broadcast adapters in a network-on-chip
CN104699641A (zh) 一种多核dsp***中edma控制器并行控制的方法
CN114385236A (zh) 传递可编程原子操作符到存储器控制器
US20180212894A1 (en) Fork transfer of data between multiple agents within a reconfigurable fabric
US11803391B2 (en) Self-scheduling threads in a programmable atomic unit
KR20140096587A (ko) 기능 유닛들 간의 기능 로직 공유 장치, 방법 및 재구성 가능 프로세서
US10374981B1 (en) Data transfer circuitry given multiple source elements
US11847464B2 (en) Variable pipeline length in a barrel-multithreaded processor
CN110633233A (zh) 一种基于流水线的dma数据传输处理方法
US20220121485A1 (en) Thread replay to preserve state in a barrel processor
CN113986792A (zh) 一种数据位宽转换方法及通信设备
CN103853692A (zh) 一种基于中断判断机制的多处理器数据通讯方法
WO2015070539A1 (zh) 一种基于dma的数据压缩芯片结构及其实现方法
US11520718B2 (en) Managing hazards in a memory controller
WO2024001332A1 (zh) 多端口存储器、多端口存储器的读写方法及装置
CN113849867B (zh) 一种加密芯片
CN118012510A (zh) 一种网络处理器、网络数据处理装置和芯片
CN111143897B (zh) 数据安全处理装置、***及处理方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CB03 Change of inventor or designer information

Inventor after: Zhou Zhiwei

Inventor after: Li Xueying

Inventor before: Zhou Zhiwei

CB03 Change of inventor or designer information