CN115442026A - 一种hmac算法处理系统、方法、设备及介质 - Google Patents

一种hmac算法处理系统、方法、设备及介质 Download PDF

Info

Publication number
CN115442026A
CN115442026A CN202211383706.1A CN202211383706A CN115442026A CN 115442026 A CN115442026 A CN 115442026A CN 202211383706 A CN202211383706 A CN 202211383706A CN 115442026 A CN115442026 A CN 115442026A
Authority
CN
China
Prior art keywords
data
dma
algorithm
hash
hmac
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.)
Granted
Application number
CN202211383706.1A
Other languages
English (en)
Other versions
CN115442026B (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.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology 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 Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202211383706.1A priority Critical patent/CN115442026B/zh
Publication of CN115442026A publication Critical patent/CN115442026A/zh
Application granted granted Critical
Publication of CN115442026B publication Critical patent/CN115442026B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Landscapes

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

Abstract

本发明涉及集成电路技术领域,尤其涉及一种HMAC算法处理系统、方法、设备及介质。所述系统包括:AMBA总线接收中央处理器发出的对待认证数据进行处理的请求;DMA控制单元基于待认证数据的存储信息通过DMA对待认证数据进行搬运;FIFO控制单元用多个FIFO对应缓存DMA搬运的数据;逻辑控制单元用密钥子单元生成每种哈希算法的运算参数并存储并用分组子单元从FIFO中读取数据并进行位宽转换后发送;运算单元用HMAC处理核接收数据执行运算生成计算结果并分发给对应的哈希处理核以执行哈希运算。本发明的方案支持多种哈希计算模式并行,实现较低的资源消耗和高复用性,显著提高HMAC的计算效率、降低硬件资源消耗。

Description

一种HMAC算法处理系统、方法、设备及介质
技术领域
本发明涉及芯片设计领域,尤其涉及一种HMAC算法处理系统、方法、设备及介质。
背景技术
密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code,简称HMAC算法),是一种基于Hash函数和密钥进行消息认证的方法,用于校验数据完整性和来源合法性,适用于任何安全体系结构、进程或应用的安全服务。美国联邦信息处理标准FIPS(Federal Information Processing Standards)对HMAC算法过程的定义为:HMAC(K0,text)=H(K0⊕opad,H(K0⊕ipad,text))。其中,K0为通信双方提前共享的密钥,H为hash函数,text为待验证数据,opad和ipad为算法定义的常数。FIPS标准中给出的HMAC算法流程图1所示。
哈希算法(Hash Algorithm)又称为散列算法、杂凑算法。由于在信息完整性认证和数字签名等方面的应用,哈希算法在当今时代的信息安全领域非常重要。不同哈希算法的参数性能不同,NIST (National Institute of Standards and Technology,美国国家标准与技术研究院)先后发布三种标准的杂凑算法SHA-0、SHA-1 和 SHA-2,由于 MD5 和SHA-1 相继被攻破,SHA-2在目前例如经济和军事等重要安全领域中应用逐渐增加,其中应用较为广泛的是SHA-256 密码杂凑算法。中国自主研发设计的杂凑算法 SM3 与 SHA-256具有相同的消息摘要长度,作为商用密码杂凑算法在商业领域应用非常广泛。随着信息技术的发展,数据量呈现爆炸增长,同时也要求数据信息安全传递和处理,因此作为数据认证领域最常用的HMAC算法,其计算性能在一定程度上决定着整个系统的运算效率。
目前,常用的HMAC算法处理主要采用以下两种方式处理:第一种是使用软件的方式即中央处理器CPU计算完成HAMC,使用硬件的方式完成HAMC计算;第二种是使用硬件的方式完成计算,一般使用专用的计算芯片完成。然而以上两种方式存在以下缺陷:一方面使用软件的方式实现时,会大量占用CPU的资源,阻塞其他进程的运行;另一方面现有的专用计算芯片在进行认证计算时每次只能进行一种哈希算法的HMAC的计算,且要求认证数据连续不断地发送,不可分为多段发送,因而存在着运算效率低、资源消耗大、扩展性差、复用性低的问题。
发明内容
有鉴于此,有必要针对以上技术问题,提供一种HMAC算法处理系统、方法、设备及介质。
根据本发明的第一方面,提供了一种HMAC算法处理系统,所述系统包括:
AMBA总线,所述AMBA总线用于接收中央处理器发出的对待认证数据进行处理的请求,其中,所述请求包括对待认证数据的存储信息及从多种哈希算法中选择的目标哈希算法;
DMA控制单元,所述DMA控制单元用于基于待认证数据的存储信息通过DMA对待认证数据进行搬运;
FIFO控制单元,所述FIFO控制单元包括与多种哈希算法一一对应的多个FIFO,每个FIFO用于根据待认证数据的目标哈希算法对应缓存DMA搬运的数据;
逻辑控制单元,所述逻辑控制单元包括与多种哈希算法一一对应的分组子单元和密钥子单元,由所述密钥子单元生成每种哈希算法的运算参数并存储,由所述分组子单元从FIFO中读取数据并进行位宽转换后发送;
运算单元,所述运算单元包括一个HMAC处理核和共用所述HMAC处理核且与多种哈希算法一一对应的哈希处理核,由所述HMAC处理核接收所述分组子单元发送的数据并利用存储的与目标哈希算法对应的运算参数执行运算生成计算结果,并由所述HMAC处理核将所述计算结果分发给目标哈希算法对应的哈希处理核以执行哈希运算。
在一些实施例中,所述系统还包括寄存器堆,所述逻辑控制单元还包括调度子单元;
所述调度子单元用于对每个FIFO的剩余空间进行监控以生成与多种哈希算法一一对应的认证数据状态值;以及
利用所述寄存器堆记录所述认证数据状态值以使中央处理器下发新数据处理请求时根据每个哈希算法对应的认证数据状态和业务操作需求从多种哈希算法中选择一个作为目标哈希算法。
在一些实施例中,所述调度子单元进一步用于:
计算每个FIFO的当前剩余存储空间,其中,剩余存储空间的初始值为整个FIFO的存储空间,每写入一个数据当前剩余的存储空间减少本次写入所占空间大小,每读一个数据当前剩余存储空间增加本次读取所占空间大小;
根据如下规则计算认证数据状态值并更新寄存器堆中记录:
若当前剩余存储空间大于FIFO深度的百分之七十,则计算认证数据状态值为三;
若当前剩余存储空间大于FIFO深度的百分之三十且小于等于FIFO深度的百分之七十,则计算认证数据状态值为二;
若当前剩余存储空间大于零且小于等于FIFO深度的百分之三十,则计算认证数据状态值为一;
若当前剩余存储空间等于零,则计算认证数据状态值为零。
在一些实施例中,中央处理器配置用于当存在新数据处理请求时根据以下规则选择目标哈希算法:
响应于某一哈希算法对应的认证数据状态值等于零,则禁止将所述某一哈希算法选取为目标哈希算法;
响应于存在多个哈希算法对应的认证数据状态值不等于零,则认证数据状态值大的哈希算法优先级高于认证数据状态值小的哈希算法,并优先从优先级高的哈希算法中选择目标哈希算法。
在一些实施例中,所述DMA控制单元包括主接口和从接口,中央处理器通过AMBA总线从所述从接口配置DMA相关寄存器,包括DAM数据长度、DAM数据地址、DAM首段数据标志位、DAM末段数据标志位,以及配置DAM启动寄存器,其中,DMA首段数据标志位和末段数据标志位根据如下规则确定:
若待认证数据只需要一段DMA搬运,则DM首段数据标志位和DM末段数据标志位均为1;
若待认证数据需要两段DMA搬运,则第一次搬运过程DMA首段数据标志位为1,第一次搬运过程DMA末段数据标志位为0,第二次搬运过程DMA首段数据标志位为0,第一次搬运过程DMA末段数据标志位为1;
若待认证数据需要三段及以上DMA搬运,则第一次搬运过程DMA首段数据标志位为1,第一次搬运过程DMA末段数据标志位为0,中间几段DMA搬运过程DMA首段数据标志位和DMA末段数据标志位均为0,最后一次搬运过程DMA首段数据标志位为0,最后一次搬运过程DMA末段数据标志位为1;
在接收到配置DMA寄存器的同时采用如下规则统计总认证数据长度:
在第一段DMA认证数据配置时,将第一段数据长度的值赋给总的认证数据长度,在后续段DMA认证数据配置时将DMA数据长度累加;
根据DMA首段数据标志位和DMA末段数据标志位通过所述主接口读取待认证数据相应地址的数据至DMA控制单元,并将数据缓存至目标哈希算法对应的FIFO中。
在一些实施例中,每个密钥子单元执行以下操作生成运算参数:
对密钥进行填充并将填充后的密钥分别与ipad和opad进行异或处理生成ipadkey和opadkey;
对所生成的ipadkey和opadkey进行存储。
在一些实施例中,每个分组子单元执行以下操作进行数据转换和发送:
获取哈希算法需求的输入数据位宽;
将从对应FIFO中连续读出数据打包成等于需求的输入数据位宽;
等待哈希算法对应哈希处理核可接收数据时发送打包后的数据。
在一些实施例中,所述HMAC处理核进一步用于:
获取所有哈希算法对应的ipadkey和opadkey;
从所述分组子单元接收数据并使用与数据的目标哈希算法对应的ipadkey和opadkey进行运算生成计算结果;
将所述计算结果、ipadkey和opadkey发送给对应的哈希处理核。
在一些实施例中,多种哈希算法包括md5算法、sha1算法、sm3算法,所述FIFO控制单元包括三个与md5算法、sha1算法、sm3算法对应的FIFO,运算单元包括md5算法处理核、sha1算法处理核、sm3算法处理核。
根据本发明的第二方面,提供了一种HMAC算法处理方法,所述方法包括:
利用AMBA总线接收中央处理器发出的对待认证数据进行处理的请求,其中,所述请求包括对待认证数据的存储信息及从多种哈希算法中选择的目标哈希算法;
利用DMA控制单元基于待认证数据的存储信息通过DMA对待认证数据进行搬运;
利用包括FIFO控制单元中与多种哈希算法一一对应的多个FIFO根据待认证数据的目标哈希算法对应缓存DMA搬运的数据;
利用逻辑控制单元中与多种哈希算法一一对应的密钥子单元生成每种哈希算法的运算参数并存储,以及利用逻辑控制单元中与多种哈希算法一一对应的分组子单元从FIFO中读取数据并进行位宽转换后发送;
利用运算单元中的HMAC处理核接收所述分组子单元发送的数据并利用存储的与目标哈希算法对应的运算参数执行运算生成计算结果,并将所述计算结果分发给共用所述HMAC处理核的多个哈希处理核中的目标哈希算法对应的哈希处理核以执行哈希运算。
在一些实施例中,所述方法还包括:
利用所述逻辑控制单中的调度子单元对每个FIFO的剩余空间进行监控以生成与多种哈希算法一一对应的认证数据状态值;
利用寄存器堆记录所述认证数据状态值以使中央处理器下发新数据处理请求时根据每个哈希算法对应的认证数据状态和业务操作需求从多种哈希算法中选择一个作为目标哈希算法。
在一些实施例中,利用所述逻辑控制单中的调度子单元对每个FIFO的剩余空间进行监控以生成与多种哈希算法一一对应的认证数据状态值,包括:
计算每个FIFO的当前剩余存储空间,其中,剩余存储空间的初始值为整个FIFO的存储空间,每写入一个数据当前剩余的存储空间减少本次写入所占空间大小,每读一个数据当前剩余存储空间增加本次读取所占空间大小;
根据如下规则计算认证数据状态值并更新寄存器堆中记录:
若当前剩余存储空间大于FIFO深度的百分之七十,则计算认证数据状态值为三;
若当前剩余存储空间大于FIFO深度的百分之三十且小于等于FIFO深度的百分之七十,则计算认证数据状态值为二;
若当前剩余存储空间大于零且小于等于FIFO深度的百分之三十,则计算认证数据状态值为一;
若当前剩余存储空间等于零,则计算认证数据状态值为零。
在一些实施例中,中央处理器配置用于当存在新数据处理请求时根据以下规则选择目标哈希算法:
响应于某一哈希算法对应的认证数据状态值等于零,则禁止将所述某一哈希算法选取为目标哈希算法;
响应于存在多个哈希算法对应的认证数据状态值不等于零,则认证数据状态值大的哈希算法优先级高于认证数据状态值小的哈希算法,并优先从优先级高的哈希算法中选择目标哈希算法。
在一些实施例中,利用DMA控制单元基于待认证数据的存储信息通过DMA对待认证数据进行搬运,包括:
中央处理器通过AMBA总线从DMA控制单元的从接口配置DMA相关寄存器,包括DAM数据长度、DAM数据地址、DAM首段数据标志位、DAM末段数据标志位,以及配置DAM启动寄存器,其中,DMA首段数据标志位和末段数据标志位根据如下规则确定:
若待认证数据只需要一段DMA搬运,则DM首段数据标志位和DM末段数据标志位均为1;
若待认证数据需要两段DMA搬运,则第一次搬运过程DMA首段数据标志位为1,第一次搬运过程DMA末段数据标志位为0,第二次搬运过程DMA首段数据标志位为0,第一次搬运过程DMA末段数据标志位为1;
若待认证数据需要三段及以上DMA搬运,则第一次搬运过程DMA首段数据标志位为1,第一次搬运过程DMA末段数据标志位为0,中间几段DMA搬运过程DMA首段数据标志位和DMA末段数据标志位均为0,最后一次搬运过程DMA首段数据标志位为0,最后一次搬运过程DMA末段数据标志位为1;
在接收到配置DMA寄存器的同时采用如下规则统计总认证数据长度:
在第一段DMA认证数据配置时,将第一段数据长度的值赋给总的认证数据长度,在后续段DMA认证数据配置时将DMA数据长度累加;
根据DMA首段数据标志位和DMA末段数据标志位通过所述DMA控制单元的主接口读取待认证数据相应地址的数据至DMA控制单元,并将数据缓存至目标哈希算法对应的FIFO中。
在一些实施例中,利用逻辑控制单元中与多种哈希算法一一对应的密钥子单元生成每种哈希算法的运算参数并存储,包括:
对密钥进行填充并将填充后的密钥分别与ipad和opad进行异或处理生成ipadkey和opadkey;
对所生成的ipadkey和opadkey进行存储。
在一些实施例中,利用逻辑控制单元中与多种哈希算法一一对应的分组子单元从FIFO中读取数据并进行位宽转换后发送,包括:
每个分组子单元执行以下操作进行数据转换和发送:
获取哈希算法需求的输入数据位宽;
将从对应FIFO中连续读出数据打包成等于需求的输入数据位宽;
等待哈希算法对应哈希处理核可接收数据时发送打包后的数据。
在一些实施例中,利用运算单元中的HMAC处理核接收所述分组子单元发送的数据并利用存储的与目标哈希算法对应的运算参数执行运算生成计算结果,包括:
获取所有哈希算法对应的ipadkey和opadkey;
从所述分组子单元接收数据并使用与数据的目标哈希算法对应的ipadkey和opadkey进行运算生成计算结果;
将所述计算结果、ipadkey和opadkey发送给对应的哈希处理核。
在一些实施例中,多种哈希算法包括md5算法、sha1算法、sm3算法,所述FIFO控制单元包括三个与md5算法、sha1算法、sm3算法对应的FIFO,运算单元包括md5算法处理核、sha1算法处理核、sm3算法处理核。
根据本发明的第三方面,还提供了一种计算机设备,该计算机设备包括:
至少一个处理器;以及
存储器,存储器存储有可在处理器上运行的计算机程序,处理器执行程序时执行前述的HMAC算法处理方法。
根据本发明的第四方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时执行前述的HMAC算法处理方法。
上述一种HMAC算法处理系统至少具备以下有益效果:支持多计算模式并行工作、多段DMA交叉下发大流量数据计算,多个密钥轻量化存储及调度,兼容构建并实现多种哈希认证计算,以及实现较低的资源消耗和高复用性,可以显著提高HMAC的计算效率、降低硬件资源消耗。
此外,本发明还提供了一种HMAC算法处理方法、一种计算机设备和一种计算机可读存储介质,同样能实现上述技术效果,这里不再赘述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为传统HMAC算法处理流程图示意图;
图2为本发明一个实施例提供的一种HMAC算法处理系统的结构示意图;
图3为本发明另一个实施例提供的一种HMAC算法处理方法的流程图;
图4为本发明另一个实施例中计算机设备的内部结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
为了便于理解首先对以下出现的部分技术名词进行解释说明:
FIFO,First Input First Output,中文解释为先进先出;
SOC,System on Chip中文解释为片上系统;
RAM,Random Access Memory中文解释为随机存取存储器;
IC,Integrated Circuit中文解释为集成电路;
IP,Intellectual Property中文解释为知识产权;
DDR,Double DataRate中文解释为双倍速率同步动态随机存储器;
AMBA,Advanced Microcontroller Bus Architecture中文解释为高级微控制器总线架构;
AXI,Advanced eXtensible Interface中文解释为先进可扩展接口;
AHB,Advanced High performance Bus中文解释为高级高性能总线;
DMA, Direct Memory Access中文解释为直接存储器访问。
在一个实施例中,请参照图2所示,本发明提供了一种HMAC算法处理系统100,具体来说,所述系统包括:
AMBA总线110,所述AMBA总线110用于接收中央处理器发出的对待认证数据进行处理的请求,其中,所述请求包括对待认证数据的存储信息及从多种哈希算法中选择的目标哈希算法;
DMA控制单元(DMA Control)120,所述DMA控制单元120用于基于待认证数据的存储信息通过DMA对待认证数据进行搬运;
FIFO控制单元(FIFO Control)130,所述FIFO控制单元130包括与多种哈希算法一一对应的多个FIFO131,每个FIFO用于根据待认证数据的目标哈希算法对应缓存DMA搬运的数据;
逻辑控制单元(Logic Control)140,所述逻辑控制单元140包括与多种哈希算法一一对应的分组子单元(Monitor)141和密钥子单元(KEY)142,由所述密钥子单元142生成每种哈希算法的运算参数并存储,由所述分组子单元141从FIFO131中读取数据并进行位宽转换后发送;
运算单元(Algorithm core)150,所述运算单元150包括一个HMAC处理核151和共用所述HMAC处理核151且与多种哈希算法一一对应的哈希处理核152,由所述HMAC处理核151接收所述分组子单元141发送的数据并利用存储的与目标哈希算法对应的运算参数执行运算生成计算结果,并由所述HMAC处理核151将所述计算结果分发给目标哈希算法对应的哈希处理核152以执行哈希运算。
上述一种HMAC算法处理系统支持多计算模式并行工作、多段DMA交叉下发大流量数据计算,多个密钥轻量化存储及调度,兼容构建并实现多种哈希认证计算,以及实现较低的资源消耗和高复用性,可以显著提高HMAC的计算效率、降低硬件资源消耗。
在一些实施例中,请继续结合图2所示,所述系统还包括寄存器堆(Regs file)160,所述逻辑控制单元140还包括调度子单元(dispatch)143;
所述调度子单元143用于对每个FIFO131的剩余空间进行监控以生成与多种哈希算法一一对应的认证数据状态值;以及
利用所述寄存器堆160记录所述认证数据状态值以使中央处理器下发新数据处理请求时根据每个哈希算法对应的认证数据状态和业务操作需求从多种哈希算法中选择一个作为目标哈希算法。
在一些实施例中,请继续结合图2所示,所述调度子单元143进一步用于:
计算每个FIFO131的当前剩余存储空间,其中,剩余存储空间的初始值为整个FIFO的存储空间,每写入一个数据当前剩余的存储空间减少本次写入所占空间大小,每读一个数据当前剩余存储空间增加本次读取所占空间大小;
根据如下规则计算认证数据状态值并更新寄存器堆160中记录:
若当前剩余存储空间大于FIFO深度的百分之七十,则计算认证数据状态值为三;
若当前剩余存储空间大于FIFO深度的百分之三十且小于等于FIFO深度的百分之七十,则计算认证数据状态值为二;
若当前剩余存储空间大于零且小于等于FIFO深度的百分之三十,则计算认证数据状态值为一;
若当前剩余存储空间等于零,则计算认证数据状态值为零。
在一些实施例中,请继续结合图2所示,中央处理器配置用于当存在新数据处理请求时根据以下规则选择目标哈希算法:
响应于某一哈希算法对应的认证数据状态值等于零,则禁止将所述某一哈希算法选取为目标哈希算法;
响应于存在多个哈希算法对应的认证数据状态值不等于零,则认证数据状态值大的哈希算法优先级高于认证数据状态值小的哈希算法,并优先从优先级高的哈希算法中选择目标哈希算法。
在一些实施例中,请继续结合图2所示,所述DMA控制单元120包括主接口(Master)121和从接口(Slave)122,中央处理器通过AMBA总线从所述从接口122配置DMA相关寄存器,包括DAM数据长度、DAM数据地址、DAM首段数据标志位、DAM末段数据标志位,以及配置DAM启动寄存器,其中,DMA首段数据标志位和末段数据标志位根据如下规则确定:
若待认证数据只需要一段DMA搬运,则DM首段数据标志位和DM末段数据标志位均为1;
若待认证数据需要两段DMA搬运,则第一次搬运过程DMA首段数据标志位为1,第一次搬运过程DMA末段数据标志位为0,第二次搬运过程DMA首段数据标志位为0,第一次搬运过程DMA末段数据标志位为1;
若待认证数据需要三段及以上DMA搬运,则第一次搬运过程DMA首段数据标志位为1,第一次搬运过程DMA末段数据标志位为0,中间几段DMA搬运过程DMA首段数据标志位和DMA末段数据标志位均为0,最后一次搬运过程DMA首段数据标志位为0,最后一次搬运过程DMA末段数据标志位为1;
在接收到配置DMA寄存器的同时采用如下规则统计总认证数据长度:
在第一段DMA认证数据配置时,将第一段数据长度的值赋给总的认证数据长度,在后续段DMA认证数据配置时将DMA数据长度累加;
根据DMA首段数据标志位和DMA末段数据标志位通过所述主接口121读取待认证数据相应地址的数据至DMA控制单元120,并将数据缓存至目标哈希算法对应的FIFO131中。
在一些实施例中,请继续结合图2所示,每个密钥子单元142执行以下操作生成运算参数:
对密钥进行填充并将填充后的密钥分别与ipad和opad进行异或处理生成ipadkey和opadkey;
对所生成的ipadkey和opadkey进行存储。
在一些实施例中,请继续结合图2所示,每个分组子单元141执行以下操作进行数据转换和发送:
获取哈希算法需求的输入数据位宽;
将从对应FIFO131中连续读出数据打包成等于需求的输入数据位宽;
等待哈希算法对应哈希处理核152可接收数据时发送打包后的数据。
在一些实施例中,请继续结合图2所示,所述HMAC处理核151进一步用于:
获取所有哈希算法对应的ipadkey和opadkey;
从所述分组子单元141接收数据并使用与数据的目标哈希算法对应的ipadkey和opadkey进行运算生成计算结果;
将所述计算结果、ipadkey和opadkey发送给对应的哈希处理核152。
在一些实施例中,请继续结合图2所示,多种哈希算法包括md5算法、sha1算法、sm3算法,所述FIFO控制单元130包括三个与md5算法、sha1算法、sm3算法对应的FIFO,运算单元150包括md5算法处理核、sha1算法处理核、sm3算法处理核。
在又一个实施例中,请参照图3所示,本发明提供了一种HMAC算法处理方法200,所述方法包括:
步骤201,利用AMBA总线接收中央处理器发出的对待认证数据进行处理的请求,其中,所述请求包括对待认证数据的存储信息及从多种哈希算法中选择的目标哈希算法;
步骤202,利用DMA控制单元基于待认证数据的存储信息通过DMA对待认证数据进行搬运;
步骤203,利用包括FIFO控制单元中与多种哈希算法一一对应的多个FIFO根据待认证数据的目标哈希算法对应缓存DMA搬运的数据;
步骤204,利用逻辑控制单元中与多种哈希算法一一对应的密钥子单元生成每种哈希算法的运算参数并存储,以及利用逻辑控制单元中与多种哈希算法一一对应的分组子单元从FIFO中读取数据并进行位宽转换后发送;
步骤205,利用运算单元中的HMAC处理核接收所述分组子单元发送的数据并利用存储的与目标哈希算法对应的运算参数执行运算生成计算结果,并将所述计算结果分发给共用所述HMAC处理核的多个哈希处理核中的目标哈希算法对应的哈希处理核以执行哈希运算。
上述一种HMAC算法处理方法支持多计算模式并行工作、多段DMA交叉下发大流量数据计算,多个密钥轻量化存储及调度,兼容构建并实现多种哈希认证计算,以及实现较低的资源消耗和高复用性,可以显著提高HMAC的计算效率、降低硬件资源消耗。
在一些实施例中,所述方法还包括:
利用所述逻辑控制单中的调度子单元对每个FIFO的剩余空间进行监控以生成与多种哈希算法一一对应的认证数据状态值;
利用寄存器堆记录所述认证数据状态值以使中央处理器下发新数据处理请求时根据每个哈希算法对应的认证数据状态和业务操作需求从多种哈希算法中选择一个作为目标哈希算法。
在一些实施例中,利用所述逻辑控制单中的调度子单元对每个FIFO的剩余空间进行监控以生成与多种哈希算法一一对应的认证数据状态值,包括:
计算每个FIFO的当前剩余存储空间,其中,剩余存储空间的初始值为整个FIFO的存储空间,每写入一个数据当前剩余的存储空间减少本次写入所占空间大小,每读一个数据当前剩余存储空间增加本次读取所占空间大小;
根据如下规则计算认证数据状态值并更新寄存器堆中记录:
若当前剩余存储空间大于FIFO深度的百分之七十,则计算认证数据状态值为三;
若当前剩余存储空间大于FIFO深度的百分之三十且小于等于FIFO深度的百分之七十,则计算认证数据状态值为二;
若当前剩余存储空间大于零且小于等于FIFO深度的百分之三十,则计算认证数据状态值为一;
若当前剩余存储空间等于零,则计算认证数据状态值为零。
在一些实施例中,中央处理器配置用于当存在新数据处理请求时根据以下规则选择目标哈希算法:
响应于某一哈希算法对应的认证数据状态值等于零,则禁止将所述某一哈希算法选取为目标哈希算法;
响应于存在多个哈希算法对应的认证数据状态值不等于零,则认证数据状态值大的哈希算法优先级高于认证数据状态值小的哈希算法,并优先从优先级高的哈希算法中选择目标哈希算法。
在一些实施例中,步骤202,利用DMA控制单元基于待认证数据的存储信息通过DMA对待认证数据进行搬运,包括:
中央处理器通过AMBA总线从DMA控制单元的从接口配置DMA相关寄存器,包括DAM数据长度、DAM数据地址、DAM首段数据标志位、DAM末段数据标志位,以及配置DAM启动寄存器,其中,DMA首段数据标志位和末段数据标志位根据如下规则确定:
若待认证数据只需要一段DMA搬运,则DM首段数据标志位和DM末段数据标志位均为1;
若待认证数据需要两段DMA搬运,则第一次搬运过程DMA首段数据标志位为1,第一次搬运过程DMA末段数据标志位为0,第二次搬运过程DMA首段数据标志位为0,第一次搬运过程DMA末段数据标志位为1;
若待认证数据需要三段及以上DMA搬运,则第一次搬运过程DMA首段数据标志位为1,第一次搬运过程DMA末段数据标志位为0,中间几段DMA搬运过程DMA首段数据标志位和DMA末段数据标志位均为0,最后一次搬运过程DMA首段数据标志位为0,最后一次搬运过程DMA末段数据标志位为1;
在接收到配置DMA寄存器的同时采用如下规则统计总认证数据长度:
在第一段DMA认证数据配置时,将第一段数据长度的值赋给总的认证数据长度,在后续段DMA认证数据配置时将DMA数据长度累加;
根据DMA首段数据标志位和DMA末段数据标志位通过所述DMA控制单元的主接口读取待认证数据相应地址的数据至DMA控制单元,并将数据缓存至目标哈希算法对应的FIFO中。
在一些实施例中,步骤204中利用逻辑控制单元中与多种哈希算法一一对应的密钥子单元生成每种哈希算法的运算参数并存储包括:
对密钥进行填充并将填充后的密钥分别与ipad和opad进行异或处理生成ipadkey和opadkey;
对所生成的ipadkey和opadkey进行存储。
在一些实施例中,步骤204中利用逻辑控制单元中与多种哈希算法一一对应的分组子单元从FIFO中读取数据并进行位宽转换后发送,包括:
每个分组子单元执行以下操作进行数据转换和发送:
获取哈希算法需求的输入数据位宽;
将从对应FIFO中连续读出数据打包成等于需求的输入数据位宽;
等待哈希算法对应哈希处理核可接收数据时发送打包后的数据。
在一些实例中,步骤205中利用运算单元中的HMAC处理核接收所述分组子单元发送的数据并利用存储的与目标哈希算法对应的运算参数执行运算生成计算结果,包括:
获取所有哈希算法对应的ipadkey和opadkey;
从所述分组子单元接收数据并使用与数据的目标哈希算法对应的ipadkey和opadkey进行运算生成计算结果;
将所述计算结果、ipadkey和opadkey发送给对应的哈希处理核152。
在一些实例中,多种哈希算法包括md5算法、sha1算法、sm3算法,所述FIFO控制单元130包括三个与md5算法、sha1算法、sm3算法对应的FIFO,运算单元150包括md5算法处理核、sha1算法处理核、sm3算法处理核。
需要说明的是,关于HMAC算法处理方法的具体限定可以参见上文中对HMAC算法处理系统的限定,在此不再赘述。上述HMAC算法处理系统中的各个单元、子单元可全部或部分通过软件、硬件及其组合来实现。上述各单元、子单元可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个单元、子单元对应的操作。
在又一个实施例中,下面再次结合图2所示的HMAC算法处理系统,本实施例以支持md5、sha1、sm3三种哈希算法为例详细说明该系统各部分的交互过程,并比对传统的HMAC处理流程说明本方案的优势,具体说分为以下八个部分:
第一部分,读取工作状态;CPU通过AMBA总线slave接口读取相应的认证计算过程状态寄存器Hash_status(Hash_status_sm3、 Hash_status_md5、 Hash_status_sha1),若对应的状态寄存器不为0,则进入下面步骤,否则等待直到此寄存器的值不为0。
第二部分,配置HMAC寄存器;CPU通过第一部分读取到的3个hash算法的Hash_status和本身的业务操作要求判断优先使用哪一种认证计算过程。之后CPU通过AMBA总线slave接口配置hmac算法的相关寄存器,包括密钥key,密钥长度key_length、算法模式选择等。在实施例中,支持hmac_sm3、hmac_md5、hmac_sha1分别独立配置和使用密钥,在进行认证计算时,首次使用及密钥发生改变时必须重新配置密钥,在后续的认证计算过程中,若对应算法的密钥并未改变,可以不再配置。
第三部分,配置DMA寄存器;CPU通过AMBA总线slave接口配置dma相关寄存器,包括dma数据长度dma_length、dma数据地址、dma首段数据标志位、dma末段数据标志位,最后配置dma启动寄存器。
若一次认证的数据只需要一段dma搬运,则dma首段数据标志位和dma末段数据标志位均为1;
若一次认证的数据需要2段dma搬运,则第一次搬运过程dma首段数据标志位为1,dma末段数据标志位为0;第二次搬运过程dma首段数据标志位为0,dma末段数据标志位为1;
若一次认证的数据需要3段及以上dma搬运,则第一次搬运过程dma首段数据标志位为1,dma末段数据标志位为0;最后一次搬运过程dma首段数据标志位为0,dma末段数据标志位为1;中间几段的dma搬运过程,dma首段数据标志位和dma末段数据标志位均为0;
在接收到配置dma寄存器的同时,计算总的认证数据长度total_num。具体为:在第一段dma认证数据配置时,将第一段数据长度的值赋给总的认证数据长度,total_num=dma_length;
在后续段数据时,将dma数据长度累加,total_num=total_num+ dma_length。
第四部分,Dma control搬运数据;Dma control通过AMBA master接口读取相应地址的数据至本模块,并将数据缓存至对应的fifo中,在本提案中使用3个相同的fifo缓存待认证的数据,包括:HMAC_SM3 fifo;HMAC_MD5 fifo;HMAC_SHA1 fifo;例如,本次dma搬运的数据为 hmac_sm3认证的数据,则将其写入 HMAC_SM3 fifo中,以此类推。在将本次dma数据全部写入对应的缓存fifo中后,标志着此次dma过程完成,此时跳转回第一部分开始下一次数据搬运过程。
需要特别注意的是,下一次认证数据的搬运过程与前一次是完全独立的,例如前一次是 HMAC_SM3算法的第一段dma数据,下一次可以是HMAC_SM3的第二段数据,也可以HMAC_MD5或HMAC_SHA1的数据。这种方式最大程度的保证了上层软件操作的便利性和运算效率,减少了上层软件的数据缓存,同时也最大程度的提高了硬件在计算时的效率。
传统处理方案中,上层软件首先配置需要认证的算法和密钥,然后传输需要认证的数据至计算模块,在这期间数据必须是连续的,即在此次认证计算完成前,不允许使用其他的认证模块进行计算。
第五部分,密钥key预计算及缓存;由于3种认证计算的处理方式是一样的,是并行计算的,因此不再分开介绍,每种认证方式采用以下操作生成ipadkey和opadkey
a.密钥填充;
首先判断密钥的长度,若超过512bit,则首先将其送入对应的hash运算核心中,计算出摘要值(即计算结果),然后在摘要值后填充0,直到总长度达到512bit;若密钥长度小于512bit,则在密钥后直接填充0,直到总长度达到512bit;若密钥长度刚好512bit,则不需做处理。
b.填充后的密钥与ipad进行“异或”处理;
ipad是将比特系列00110110(即0x36)不断循环直到达到512bit,其中ipad中的i是inner(内部)的意思。异或运算之后得到的值也是512bit数据,我们将其称为ipadkey,也就是预计算结果。
c.填充后的密钥与opad进行“异或”处理;
opad是将比特01011100(即0x5C)不断循环反复直到达到512bit,其中opad中的o是outer(外部)的意思。异或运算之后得到的值也是512bit数据,我们将这一比特系列称为opadkey。
d.将预计算的结果进行缓存;
需要特别注意的是,使用这样的方式可以减少密钥的存储空间,这是因为密钥的长度最大可以达到256MB,而预计算结果仅为512bit,这极大的降低了所需的存储空间。与此同时,提前将密钥ipadkey计算出来,使得后续的计算每次只需要从step5开始计算,减少了后续的计算时间,提高了效率。
传统处理方案中,首先将密钥key全部存储下来,在进行认证计算时从存储空间中将其读出来,依次进行图1中的step1-9过程。
第六部分,分组数据转换monitor;3种认证计算的处理方式也是一样的,是并行计算的,因此不再分开介绍。md5、sm3、sha1算法核心要求输入数据格式为512bit位宽的数据,而dma通过AMBA总线搬运数据时的数据位宽一般远小于512bit,常用的为32bit和64Bit。因此需要将其重新打包成512bit数据,即从前级fifo中连续读出16个数据(以32bit位宽为例),并进行大小端转换,然后生成valid有效信号,等待后级算法模块表明可以接收数据的ready信号也为1时,表明此数据已经被后级模块接收,之后继续读取数据直到对应的前级fifo为空。
第七部分,数据流调度dispatch;此部分完成缓存fifo空间的计算、生成认证数据状态寄存器Hash_status。3种认证计算的处理方式也是一样的,是并行计算的。每种认证方式的调度方式参考如下:
首先计算缓存fifo的剩余存储空间,T_num=(T_num+ fifo_length - wr_en +rd_en)*4,T_num初始值为整个fifo的存储空间,每写入一个数据剩余的存储空间减少,每读一个,剩余的存储空间增加。 fifo_length为fifo的深度。其次生成认证数据状态Hash_status;
若当前T_num>0.7* fifo_length,则Hash_status为3;
若当前0.7* fifo_length >=T_num>0.3* fifo_length,则Hash_status为2;
若当前0.3* fifo_length >=T_num>0,则Hash_status为1;
若当前T_num=0,则Hash_status为0。
第八部分,HMAC计算;在这个部分3个算法共用一个HMAC,这是因为在前面的过程中,已经预计算出了3个算法的密钥ipadkey和opadkey,因此后续只需要按照数据接收顺序发送数据至相应的hash算法模块;同时,hash算法是一种压缩算法,数据需要多轮迭代压缩才可计算完成,即一组输入数据需要多个时钟周期才能计算完成,这就导致输入带宽远大于输出带宽,因此3个hash算法核心共用一个HMAC并不会降低整体的运算效率,反而会降低硬件资源的消耗。
具体过程如下:
a.依次将3个预计算ipadkey传递给后级的hash算法模块;
b.前级Logic control模块将格式为512bit位宽的数据传递给后级,hash算法核心每计算完成一组数据的计算,前级发送一组数据至后级,直到发送完成本次认证计算的最后一组数据。在发送最后一组数据时,同时发送总的认证数据长度 total_num给后级模块,同时将最后一组数据标志位置为1,标志是hash算法的最后一组数据,等待最后的计算结果,记为hash1
c.将预计算opadkey传递给后级的hash算法模块。由于认证数据长度和hash计算的复杂度不同,因此上一个步骤b的实际完成的先后顺序不同,只要当前认证算法的步骤b完成即可进入c步骤,不必等待其他认证算法的过程,3个过程独立并行。
d.将hash1传递给后级的hash算法模块,同时将最后一组数据标志位置为1,标志是hash算法的最后一组数据。在此次计算完成后,输出值即为本次hmac计算的最终结果(摘要值)。由于认证数据长度和hash计算的复杂度不同,因此上一个步骤c的实际完成的先后顺序不同,只要当前认证算法的步骤c完成即可进入d步骤,不必等待其他认证算法的过程,3个过程独立并行;
e.将对应的认证计算过程状态寄存器修改为空闲;
需要特别注意的是,3个认证算法共用一个HMAC并不会降低整体的运算效率,反而会降低硬件资源的消耗。
根据本发明的另一方面,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图请参照图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时实现以上所述的HMAC算法处理方法,具体来说,所述方法包括以下步骤:
利用AMBA总线接收中央处理器发出的对待认证数据进行处理的请求,其中,所述请求包括对待认证数据的存储信息及从多种哈希算法中选择的目标哈希算法;
利用DMA控制单元基于待认证数据的存储信息通过DMA对待认证数据进行搬运;
利用包括FIFO控制单元中与多种哈希算法一一对应的多个FIFO根据待认证数据的目标哈希算法对应缓存DMA搬运的数据;
利用逻辑控制单元中与多种哈希算法一一对应的密钥子单元生成每种哈希算法的运算参数并存储,以及利用逻辑控制单元中与多种哈希算法一一对应的分组子单元从FIFO中读取数据并进行位宽转换后发送;
利用运算单元中的HMAC处理核接收所述分组子单元发送的数据并利用存储的与目标哈希算法对应的运算参数执行运算生成计算结果,并将所述计算结果分发给共用所述HMAC处理核的多个哈希处理核中的目标哈希算法对应的哈希处理核以执行哈希运算。
根据本发明的又一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上所述的HMAC算法处理方法,具体来说,包括执行以下步骤:
利用AMBA总线接收中央处理器发出的对待认证数据进行处理的请求,其中,所述请求包括对待认证数据的存储信息及从多种哈希算法中选择的目标哈希算法;
利用DMA控制单元基于待认证数据的存储信息通过DMA对待认证数据进行搬运;
利用包括FIFO控制单元中与多种哈希算法一一对应的多个FIFO根据待认证数据的目标哈希算法对应缓存DMA搬运的数据;
利用逻辑控制单元中与多种哈希算法一一对应的密钥子单元生成每种哈希算法的运算参数并存储,以及利用逻辑控制单元中与多种哈希算法一一对应的分组子单元从FIFO中读取数据并进行位宽转换后发送;
利用运算单元中的HMAC处理核接收所述分组子单元发送的数据并利用存储的与目标哈希算法对应的运算参数执行运算生成计算结果,并将所述计算结果分发给共用所述HMAC处理核的多个哈希处理核中的目标哈希算法对应的哈希处理核以执行哈希运算。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (20)

1.一种HMAC算法处理系统,其特征在于,所述系统包括:
AMBA总线,所述AMBA总线用于接收中央处理器发出的对待认证数据进行处理的请求,其中,所述请求包括对待认证数据的存储信息及从多种哈希算法中选择的目标哈希算法;
DMA控制单元,所述DMA控制单元用于基于待认证数据的存储信息通过DMA对待认证数据进行搬运;
FIFO控制单元,所述FIFO控制单元包括与多种哈希算法一一对应的多个FIFO,每个FIFO用于根据待认证数据的目标哈希算法对应缓存DMA搬运的数据;
逻辑控制单元,所述逻辑控制单元包括与多种哈希算法一一对应的分组子单元和密钥子单元,由所述密钥子单元生成每种哈希算法的运算参数并存储,由所述分组子单元从FIFO中读取数据并进行位宽转换后发送;
运算单元,所述运算单元包括一个HMAC处理核和共用所述HMAC处理核且与多种哈希算法一一对应的哈希处理核,由所述HMAC处理核接收所述分组子单元发送的数据并利用存储的与目标哈希算法对应的运算参数执行运算生成计算结果,并由所述HMAC处理核将所述计算结果分发给目标哈希算法对应的哈希处理核以执行哈希运算。
2.根据权利要求1所述的HMAC算法处理系统,其特征在于,所述系统还包括寄存器堆,所述逻辑控制单元还包括调度子单元;
所述调度子单元用于对每个FIFO的剩余空间进行监控以生成与多种哈希算法一一对应的认证数据状态值;以及
利用所述寄存器堆记录所述认证数据状态值以使中央处理器下发新数据处理请求时根据每个哈希算法对应的认证数据状态和业务操作需求从多种哈希算法中选择一个作为目标哈希算法。
3.根据权利要求2所述的HMAC算法处理系统,其特征在于,所述调度子单元进一步用于:
计算每个FIFO的当前剩余存储空间,其中,剩余存储空间的初始值为整个FIFO的存储空间,每写入一个数据当前剩余的存储空间减少本次写入所占空间大小,每读一个数据当前剩余存储空间增加本次读取所占空间大小;
根据如下规则计算认证数据状态值并更新寄存器堆中记录:
若当前剩余存储空间大于FIFO深度的百分之七十,则计算认证数据状态值为三;
若当前剩余存储空间大于FIFO深度的百分之三十且小于等于FIFO深度的百分之七十,则计算认证数据状态值为二;
若当前剩余存储空间大于零且小于等于FIFO深度的百分之三十,则计算认证数据状态值为一;
若当前剩余存储空间等于零,则计算认证数据状态值为零。
4.根据权利要求3所述的HMAC算法处理系统,其特征在于,中央处理器配置用于当存在新数据处理请求时根据以下规则选择目标哈希算法:
响应于某一哈希算法对应的认证数据状态值等于零,则禁止将所述某一哈希算法选取为目标哈希算法;
响应于存在多个哈希算法对应的认证数据状态值不等于零,则认证数据状态值大的哈希算法优先级高于认证数据状态值小的哈希算法,并优先从优先级高的哈希算法中选择目标哈希算法。
5.根据权利要求1所述的HMAC算法处理系统,其特征在于,所述DMA控制单元包括主接口和从接口,中央处理器通过AMBA总线从所述从接口配置DMA相关寄存器,包括DAM数据长度、DAM数据地址、DAM首段数据标志位、DAM末段数据标志位,以及配置DAM启动寄存器,其中,DMA首段数据标志位和末段数据标志位根据如下规则确定:
若待认证数据只需要一段DMA搬运,则DM首段数据标志位和DM末段数据标志位均为1;
若待认证数据需要两段DMA搬运,则第一次搬运过程DMA首段数据标志位为1,第一次搬运过程DMA末段数据标志位为0,第二次搬运过程DMA首段数据标志位为0,第一次搬运过程DMA末段数据标志位为1;
若待认证数据需要三段及以上DMA搬运,则第一次搬运过程DMA首段数据标志位为1,第一次搬运过程DMA末段数据标志位为0,中间几段DMA搬运过程DMA首段数据标志位和DMA末段数据标志位均为0,最后一次搬运过程DMA首段数据标志位为0,最后一次搬运过程DMA末段数据标志位为1;
在接收到配置DMA寄存器的同时采用如下规则统计总认证数据长度:
在第一段DMA认证数据配置时,将第一段数据长度的值赋给总的认证数据长度,在后续段DMA认证数据配置时将DMA数据长度累加;
根据DMA首段数据标志位和DMA末段数据标志位通过所述主接口读取待认证数据相应地址的数据至DMA控制单元,并将数据缓存至目标哈希算法对应的FIFO中。
6.根据权利要求1所述的HMAC算法处理系统,其特征在于,每个密钥子单元执行以下操作生成运算参数:
对密钥进行填充并将填充后的密钥分别与ipad和opad进行异或处理生成ipadkey和opadkey;
对所生成的ipadkey和opadkey进行存储。
7.根据权利要求1所述的HMAC算法处理系统,其特征在于,每个分组子单元执行以下操作进行数据转换和发送:
获取哈希算法需求的输入数据位宽;
将从对应FIFO中连续读出数据打包成等于需求的输入数据位宽;
等待哈希算法对应哈希处理核可接收数据时发送打包后的数据。
8.根据权利要求6所述的HMAC算法处理系统,其特征在于,所述HMAC处理核进一步用于:
获取所有哈希算法对应的ipadkey和opadkey;
从所述分组子单元接收数据并使用与数据的目标哈希算法对应的ipadkey和opadkey进行运算生成计算结果;
将所述计算结果、ipadkey和opadkey发送给对应的哈希处理核。
9.根据权利要求1所述的HMAC算法处理系统,其特征在于,多种哈希算法包括md5算法、sha1算法、sm3算法,所述FIFO控制单元包括三个与md5算法、sha1算法、sm3算法对应的FIFO,运算单元包括md5算法处理核、sha1算法处理核、sm3算法处理核。
10.一种HMAC算法处理方法,其特征在于,所述方法包括:
利用AMBA总线接收中央处理器发出的对待认证数据进行处理的请求,其中,所述请求包括对待认证数据的存储信息及从多种哈希算法中选择的目标哈希算法;
利用DMA控制单元基于待认证数据的存储信息通过DMA对待认证数据进行搬运;
利用包括FIFO控制单元中与多种哈希算法一一对应的多个FIFO根据待认证数据的目标哈希算法对应缓存DMA搬运的数据;
利用逻辑控制单元中与多种哈希算法一一对应的密钥子单元生成每种哈希算法的运算参数并存储,以及利用逻辑控制单元中与多种哈希算法一一对应的分组子单元从FIFO中读取数据并进行位宽转换后发送;
利用运算单元中的HMAC处理核接收所述分组子单元发送的数据并利用存储的与目标哈希算法对应的运算参数执行运算生成计算结果,并将所述计算结果分发给共用所述HMAC处理核的多个哈希处理核中的目标哈希算法对应的哈希处理核以执行哈希运算。
11.根据权利要求10所述的HMAC算法处理方法,其特征在于,所述方法还包括:
利用所述逻辑控制单中的调度子单元对每个FIFO的剩余空间进行监控以生成与多种哈希算法一一对应的认证数据状态值;
利用寄存器堆记录所述认证数据状态值以使中央处理器下发新数据处理请求时根据每个哈希算法对应的认证数据状态和业务操作需求从多种哈希算法中选择一个作为目标哈希算法。
12.根据权利要求11所述的HMAC算法处理方法,其特征在于,利用所述逻辑控制单中的调度子单元对每个FIFO的剩余空间进行监控以生成与多种哈希算法一一对应的认证数据状态值,包括:
计算每个FIFO的当前剩余存储空间,其中,剩余存储空间的初始值为整个FIFO的存储空间,每写入一个数据当前剩余的存储空间减少本次写入所占空间大小,每读一个数据当前剩余存储空间增加本次读取所占空间大小;
根据如下规则计算认证数据状态值并更新寄存器堆中记录:
若当前剩余存储空间大于FIFO深度的百分之七十,则计算认证数据状态值为三;
若当前剩余存储空间大于FIFO深度的百分之三十且小于等于FIFO深度的百分之七十,则计算认证数据状态值为二;
若当前剩余存储空间大于零且小于等于FIFO深度的百分之三十,则计算认证数据状态值为一;
若当前剩余存储空间等于零,则计算认证数据状态值为零。
13.根据权利要求12所述的HMAC算法处理方法,其特征在于,中央处理器配置用于当存在新数据处理请求时根据以下规则选择目标哈希算法:
响应于某一哈希算法对应的认证数据状态值等于零,则禁止将所述某一哈希算法选取为目标哈希算法;
响应于存在多个哈希算法对应的认证数据状态值不等于零,则认证数据状态值大的哈希算法优先级高于认证数据状态值小的哈希算法,并优先从优先级高的哈希算法中选择目标哈希算法。
14.根据权利要求10所述的HMAC算法处理方法,其特征在于,利用DMA控制单元基于待认证数据的存储信息通过DMA对待认证数据进行搬运,包括:
中央处理器通过AMBA总线从DMA控制单元的从接口配置DMA相关寄存器,包括DAM数据长度、DAM数据地址、DAM首段数据标志位、DAM末段数据标志位,以及配置DAM启动寄存器,其中,DMA首段数据标志位和末段数据标志位根据如下规则确定:
若待认证数据只需要一段DMA搬运,则DM首段数据标志位和DM末段数据标志位均为1;
若待认证数据需要两段DMA搬运,则第一次搬运过程DMA首段数据标志位为1,第一次搬运过程DMA末段数据标志位为0,第二次搬运过程DMA首段数据标志位为0,第一次搬运过程DMA末段数据标志位为1;
若待认证数据需要三段及以上DMA搬运,则第一次搬运过程DMA首段数据标志位为1,第一次搬运过程DMA末段数据标志位为0,中间几段DMA搬运过程DMA首段数据标志位和DMA末段数据标志位均为0,最后一次搬运过程DMA首段数据标志位为0,最后一次搬运过程DMA末段数据标志位为1;
在接收到配置DMA寄存器的同时采用如下规则统计总认证数据长度:
在第一段DMA认证数据配置时,将第一段数据长度的值赋给总的认证数据长度,在后续段DMA认证数据配置时将DMA数据长度累加;
根据DMA首段数据标志位和DMA末段数据标志位通过所述DMA控制单元的主接口读取待认证数据相应地址的数据至DMA控制单元,并将数据缓存至目标哈希算法对应的FIFO中。
15.根据权利要求10所述的HMAC算法处理方法,其特征在于,利用逻辑控制单元中与多种哈希算法一一对应的密钥子单元生成每种哈希算法的运算参数并存储,包括:
对密钥进行填充并将填充后的密钥分别与ipad和opad进行异或处理生成ipadkey和opadkey;
对所生成的ipadkey和opadkey进行存储。
16.根据权利要求10所述的HMAC算法处理方法,其特征在于,利用逻辑控制单元中与多种哈希算法一一对应的分组子单元从FIFO中读取数据并进行位宽转换后发送,包括:
每个分组子单元执行以下操作进行数据转换和发送:
获取哈希算法需求的输入数据位宽;
将从对应FIFO中连续读出数据打包成等于需求的输入数据位宽;
等待哈希算法对应哈希处理核可接收数据时发送打包后的数据。
17.根据权利要求15所述的HMAC算法处理方法,其特征在于,利用运算单元中的HMAC处理核接收所述分组子单元发送的数据并利用存储的与目标哈希算法对应的运算参数执行运算生成计算结果,包括:
获取所有哈希算法对应的ipadkey和opadkey;
从所述分组子单元接收数据并使用与数据的目标哈希算法对应的ipadkey和opadkey进行运算生成计算结果;
将所述计算结果、ipadkey和opadkey发送给对应的哈希处理核。
18.根据权利要求10所述的HMAC算法处理方法,其特征在于,多种哈希算法包括md5算法、sha1算法、sm3算法,所述FIFO控制单元包括三个与md5算法、sha1算法、sm3算法对应的FIFO,运算单元包括md5算法处理核、sha1算法处理核、sm3算法处理核。
19.一种计算机设备,其特征在于,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器中运行的计算机程序,所述处理器执行所述程序时执行权利要求10-18任意一项所述的方法。
20.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时执行权利要求10-18任意一项所述的方法。
CN202211383706.1A 2022-11-07 2022-11-07 一种hmac算法处理系统、方法、设备及介质 Active CN115442026B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211383706.1A CN115442026B (zh) 2022-11-07 2022-11-07 一种hmac算法处理系统、方法、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211383706.1A CN115442026B (zh) 2022-11-07 2022-11-07 一种hmac算法处理系统、方法、设备及介质

Publications (2)

Publication Number Publication Date
CN115442026A true CN115442026A (zh) 2022-12-06
CN115442026B CN115442026B (zh) 2023-03-24

Family

ID=84252134

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211383706.1A Active CN115442026B (zh) 2022-11-07 2022-11-07 一种hmac算法处理系统、方法、设备及介质

Country Status (1)

Country Link
CN (1) CN115442026B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007164589A (ja) * 2005-12-15 2007-06-28 Seiko Epson Corp Hmac演算回路
KR20090005673A (ko) * 2007-07-09 2009-01-14 한국전자통신연구원 저전력 sha-1 해쉬 연산 장치 및 이를 이용한 저전력hmac 암호 장치
WO2013087039A1 (zh) * 2011-12-15 2013-06-20 华为技术有限公司 一种安全传输数据方法,装置和系统
CN111464308A (zh) * 2020-03-12 2020-07-28 烽火通信科技股份有限公司 一种实现多种哈希算法可重构的方法和系统
CN111953497A (zh) * 2020-08-06 2020-11-17 山东云海国创云计算装备产业创新中心有限公司 一种基于hmac算法的消息认证码生成装置及方法
CN114584291A (zh) * 2022-02-18 2022-06-03 杭州代码狗科技有限公司 基于hmac算法的密钥保护方法、装置、设备和存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007164589A (ja) * 2005-12-15 2007-06-28 Seiko Epson Corp Hmac演算回路
KR20090005673A (ko) * 2007-07-09 2009-01-14 한국전자통신연구원 저전력 sha-1 해쉬 연산 장치 및 이를 이용한 저전력hmac 암호 장치
WO2013087039A1 (zh) * 2011-12-15 2013-06-20 华为技术有限公司 一种安全传输数据方法,装置和系统
CN111464308A (zh) * 2020-03-12 2020-07-28 烽火通信科技股份有限公司 一种实现多种哈希算法可重构的方法和系统
CN111953497A (zh) * 2020-08-06 2020-11-17 山东云海国创云计算装备产业创新中心有限公司 一种基于hmac算法的消息认证码生成装置及方法
CN114584291A (zh) * 2022-02-18 2022-06-03 杭州代码狗科技有限公司 基于hmac算法的密钥保护方法、装置、设备和存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
蔡啸等: "HMAC-MD5的FPGA优化与实现", 《微电子学与计算机》 *

Also Published As

Publication number Publication date
CN115442026B (zh) 2023-03-24

Similar Documents

Publication Publication Date Title
US11615716B2 (en) Lightweight cryptographic engine
US8918646B2 (en) Data processing apparatus
US20190132118A1 (en) Technologies for low-latency cryptography for processor-accelerator communication
US8413153B2 (en) Methods and systems for sharing common job information
US8831221B2 (en) Unified architecture for crypto functional units
US8856198B2 (en) Random value production methods and systems
WO2017045484A1 (zh) 一种基于xts-sm4的存储加解密方法及装置
US10536264B2 (en) Efficient cryptographically secure control flow integrity protection
US8572374B2 (en) Continuous isochronous read access and measurement of data stored in non-volatile memory
CN115442026B (zh) 一种hmac算法处理系统、方法、设备及介质
CN116204911B (zh) 加解密系统、加解密控制方法、计算机设备及存储介质
US9092283B2 (en) Systems with multiple port random number generators and methods of their operation
WO2024098613A1 (zh) 一种hmac算法处理系统、方法、设备及非易失性可读存储介质
US11604900B2 (en) Data decryption system and data decryption method
CN115098040A (zh) 基于fpga的数据处理方法、装置、设备及存储介质
CN112035866B (zh) 一种数据加密方法、装置、设备和计算机可读存储介质
CN115391269A (zh) 工作量证明计算芯片、数据处理方法及电子设备
US8380137B2 (en) Circuit, process, and use of a memory for transmitting and/or receiving in a radio network
US11360911B2 (en) Dummy data removal in an authenticated encryption with associated data cryptographic scheme
CN117290897A (zh) 加解密电路、处理系统及电子设备
CN116781307A (zh) 支持用于密码/认证实现的可调谐对准的方法和装置
Xiao et al. IMSet-SHA3-Tree: The Efficient Data Integrity Verification Based on SHA3 and MSet-XOR-Hash
CN116244715A (zh) 加密方法和装置、解密方法和装置及存储介质
CN116865946A (zh) Hmac算法的实现方法、装置、电子设备及可读介质

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