欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 一种基于HMAC算法的消息认证码生成装置及方法独创技术21464字

一种基于HMAC算法的消息认证码生成装置及方法

2021-02-11 02:56:14

一种基于HMAC算法的消息认证码生成装置及方法

  技术领域

  本申请涉及密码学技术领域,特别涉及一种基于HMAC算法的消息认证码生成装置及方法。

  背景技术

  HMAC(Hash-based Message Authentication Code,密钥相关的哈希运算消息认证码)是一种基于Hash函数和密钥进行消息认证的方法。HMAC是当前许多安全协议所选用的提供认证服务的方式,应用十分广泛,例如目前HMAC在IPSec和其他网络协议(如SSL)中都有广泛应用,并且经受住了多种形式攻击的考验,现在已经成为事实上的Internet安全标准。

  HMAC可以与任何迭代散列函数捆绑使用,然而,在实际应用中,一种消息认证装置一般只支持一种散列函数,因此,在不同的场景需求下需要预先准备好支持不同散列函数的多种消息认证装置,场景适应能力差,且成本较高。

  发明内容

  本申请的目的是提供一种基于HMAC算法的消息认证码生成装置及方法,用以解决当前的基于消息认证装置的认证方案场景适应能力差,且成本较高的问题。

  第一方面,本申请提供了一种基于HMAC算法的消息认证码生成装置,包括:

  输入输出接口:用于与外部进行数据交互;

  第一存储单元:用于通过所述输入输出接口获取外部输入的密钥和待认证消息,并进行存储;

  配置寄存器单元:用于通过所述输入输出接口获取外部输入的配置参数,将所述配置参数转换为硬件逻辑可识别的有效信息,并将所述有效信息发送至模式仲裁单元;

  模式仲裁单元:用于根据所述有效信息,确定目标散列函数的标识信息,将所述目标散列函数的标识信息发送至HMAC运算单元;还用于控制所述第一存储单元将所述密钥和所述待认证消息发送至所述HMAC运算单元;

  HMAC运算单元:用于存储HMAC算法的控制逻辑以及多种散列函数的控制逻辑;还用于根据所述标识信息确定目标散列函数,利用基于所述目标散列函数的HAMC算法对所述密钥和待认证消息进行运算,得到消息认证码;

  第二存储单元:用于存储所述HMAC运算单元生成的认证码。

  优选的,所述输入输出接口为AHB接口。

  优选的,所述第一存储单元为FIFO存储器,所述第二存储单元为RAM存储器。

  优选的,所述配置寄存器单元还用于:

  从所述模式仲裁单元获取当前的运算状态,通过所述输入输出接口向外部输出所述运算状态。

  优选的,所述HMAC运算单元包括:

  密钥填充子单元:用于对所述密钥进行填充,得到目标密钥,将所述目标密钥分别发送至IPAD运算子单元和OPAD运算子单元;

  IPAD运算子单元:用于对所述目标密钥和和预先设置的IPAD进行异或运算,将异或运算的结果与所述待认证消息进行拼接,并利用所述目标散列函数对拼接结果进行运算,得到第一运算结果;

  OPAD运算子单元:用于对所述目标密钥和预先设置的OPAD进行异或运算,利用所述目标散列函数对异或运算的结果进行运算,得到第二运算结果;

  输出子单元:用于利用所述目标散列函数,根据所述第一运算结果和所述第二运算结果,生成消息认证码。

  优选的,所述密钥填充子单元具体用于:

  若所述密钥的长度小于所述目标散列函数的明文分组长度,则在所述密钥末尾填充0;

  若所述密钥的长度大于所述目标散列函数的明文分组长度,则调用散列算法计算所述密钥的摘要,并在所述摘要末尾填充0。

  第二方面,本申请提供了一种基于HMAC算法的消息认证码生成方法,包括:

  通过输入输出接口获取外部输入的密钥和待认证消息,并存储至第一存储单元;

  利用配置寄存器单元通过所述输入输出接口获取外部输入的配置参数,将所述配置参数转换为硬件逻辑可识别的有效信息,并将所述有效信息发送至模式仲裁单元;

  利用所述模式仲裁单元,根据所述有效信息确定目标散列函数的标识信息,将所述目标散列函数的标识信息发送至HMAC运算单元;控制所述第一存储单元将所述密钥和所述待认证消息发送至所述HMAC运算单元;

  利用所述HMAC运算单元,根据所述标识信息确定目标散列函数,利用基于所述目标散列函数的HAMC算法对所述密钥和待认证消息进行运算,得到消息认证码,其中所述HMAC运算单元用于存储HMAC算法的控制逻辑以及多种散列函数的控制逻辑;

  将所述HMAC运算单元生成的认证码存储至第二存储单元。

  优选的,还包括:

  利用配置寄存器单元从所述模式仲裁单元获取当前的运算状态,通过所述输入输出接口向外部输出所述运算状态。

  优选的,所述利用基于所述目标散列函数的HAMC算法对所述密钥和待认证消息进行运算,得到消息认证码,包括:

  对所述密钥进行填充,得到目标密钥;

  对所述目标密钥和和预先设置的IPAD进行异或运算,将异或运算的结果与所述待认证消息进行拼接,并利用所述目标散列函数对拼接结果进行运算,得到第一运算结果;同时,对所述目标密钥和预先设置的OPAD进行异或运算,利用所述目标散列函数对异或运算的结果进行运算,得到第二运算结果;

  利用所述目标散列函数,根据所述第一运算结果和所述第二运算结果,生成消息认证码。

  优选的,所述对所述密钥进行填充,得到目标密钥,包括:

  若所述密钥的长度小于所述目标散列函数的明文分组长度,则在所述密钥末尾填充0;

  若所述密钥的长度大于所述目标散列函数的明文分组长度,则调用散列算法计算所述密钥的摘要,并在所述摘要末尾填充0。

  本申请所提供的一种基于HMAC算法的消息认证码生成装置,包括:输入输出接口、第一存储单元、配置寄存器单元、模式仲裁单元、HMAC运算单元和第二存储单元。其中,配置寄存器单元能够通过输入输出接口获取外部输入的配置参数,将配置参数转换为硬件逻辑可识别的有效信息,并将有效信息发送至模式仲裁单元;模式仲裁单元能够根据有效信息,确定目标散列函数的标识信息,将目标散列函数的标识信息发送至HMAC运算单元;还能够控制第一存储单元将密钥和待认证消息发送至HMAC运算单元;HMAC运算单元存储有HMAC算法的控制逻辑以及多种散列函数的控制逻辑,能够根据标识信息确定目标散列函数,利用基于目标散列函数的HAMC算法对密钥和待认证消息进行运算,得到消息认证码,最终存储至第二存储单元。

  可见,该装置通过配置寄存器单元和模式仲裁单元进行内部的整体控制,与HMAC运算单元相互独立,这样便于HMAC运算单元集成不同的散列函数,在工作时只需要更改配置参数就能够选择相应的散列函数算法。这种设计架构效率高,场景适应能力强,成本低。

  此外,本申请还提供了一种基于HMAC算法的消息认证码生成方法,其技术效果与上述装置的技术效果相对应,这里不再赘述。

  附图说明

  为了更清楚的说明本申请实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

  图1为本申请所提供的一种基于HMAC算法的消息认证码生成装置实施例的结构示意图;

  图2为本申请所提供的一种基于HMAC算法的消息认证码生成装置实施例的工作流程图;

  图3为本申请所提供的一种基于HMAC算法的消息认证码生成装置实施例的工作过程示意图;

  图4为本申请所提供的一种基于HMAC算法的消息认证码生成方法实施例的流程图。

  具体实施方式

  本申请的核心是提供一种基于HMAC算法的消息认证码生成装置及方法,通过配置寄存器单元和模式仲裁单元进行内部的整体控制,与HMAC运算单元相互独立,这样便于HMAC运算单元集成不同的散列函数,在工作时只需要更改配置参数就能够选择相应的散列函数算法。

  为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

  本实施例采用硬件逻辑语言对HAMC算法进行了设计实现,提出了一种硬件架构,即消息认证装置。该消息认证装置设计结构简单,控制逻辑清晰,可以有效的支持多种散列函数集成,便于后期算法升级。

  下面对本申请提供的一种基于HMAC算法的消息认证码生成装置实施例进行介绍,参见图1,该实施例包括:

  输入输出接口:用于与外部进行数据交互;

  第一存储单元:用于通过所述输入输出接口获取外部输入的密钥和待认证消息,并进行存储;

  配置寄存器单元:用于通过所述输入输出接口获取外部输入的配置参数,将所述配置参数转换为硬件逻辑可识别的有效信息,并将所述有效信息发送至模式仲裁单元;

  模式仲裁单元:用于根据所述有效信息,确定目标散列函数的标识信息,将所述目标散列函数的标识信息发送至HMAC运算单元;还用于控制所述第一存储单元将所述密钥和所述待认证消息发送至所述HMAC运算单元;

  HMAC运算单元:用于存储HMAC算法的控制逻辑以及多种散列函数的控制逻辑;还用于根据所述标识信息确定目标散列函数,利用基于所述目标散列函数的HAMC算法对所述密钥和待认证消息进行运算,得到消息认证码;

  第二存储单元:用于存储所述HMAC运算单元生成的认证码。

  具体的,本实施例中配置寄存器单元将外部输入的配置参数存储到寄存器区域中,并将其转换成硬件逻辑可识别的有效信息,传输到其他单元,从而有效控制整个消息认证的运作。

  作为一种优选的实施方式,上述配置寄存器单元还可以用于获取HMAC运算单元的运算状态,并通过输入输出接口向外部提供运算状态的查询功能。

  模式仲裁单元能够根据配置寄存器单元传输过来的有效信息,判断HMAC具体采用的散列函数,对第一存储单元进行资源调配,并控制HMAC运算单元选择具体的散列函数。

  作为一种具体的实施方式,上述第一存储单元作为内部存储空间,具体可以选用FIFO存储器。因此,模式仲裁单元主要用于进行FIFO资源调配和HMAC运算单元的选择。

  上述第二存储单元主要用于存储HAMC运算单元生成的认证码,在实际应用中,可以选用RAM存储器作为上述第二存储单元。

  如上所述,HMAC运算单元存储有HMAC算法的整体控制逻辑,并且该单元支持调用多种散列函数,例如MD5、SHA-1等。

  上述输入输出接口具体可以选用AHB接口,在实际应用中,通过AHB控制单元利用AHB接口协议进行数据传输。

  本实施例所提供一种基于HMAC算法的消息认证码生成装置,配置寄存器单元、模式仲裁单元、HMAC运算单元完全独立,可以很好的兼容各种散列函数。外部接口可以选用AHB通用接口,便于集成到不同的系统设计中,支持大部系统的集成,使用面广。在后期升级时候,由于模式仲裁单元和HMAC运算单元完全独立,通过修改配置参数模式仲裁单元就可以更改配置,后期升级算法只需要微调算法单元即可,升级容易,高效,并且不会对模块的稳定性造成太大影响,稳定性高。

  下面对本申请提供的一种基于HMAC算法的消息认证码生成装置实施例的工作过程进行介绍,其中数据传递过程请参见前文描述,此部分重点描述HMAC运算单元接收到密钥和待认证消息之后的运算过程。

  如图2所示,前述HMAC运算单元具体包括:

  密钥填充子单元:用于对所述密钥进行填充,得到目标密钥,将所述目标密钥分别发送至IPAD运算子单元和OPAD运算子单元;

  IPAD运算子单元:用于对所述目标密钥和和预先设置的IPAD进行异或运算,将异或运算的结果与所述待认证消息进行拼接,并利用所述目标散列函数对拼接结果进行运算,得到第一运算结果;

  OPAD运算子单元:用于对所述目标密钥和预先设置的OPAD进行异或运算,利用所述目标散列函数对异或运算的结果进行运算,得到第二运算结果;

  输出子单元:用于利用所述目标散列函数,根据所述第一运算结果和所述第二运算结果,生成消息认证码。

  作为一种具体的实施方式,所述密钥填充子单元具体用于:若所述密钥的长度小于所述目标散列函数的明文分组长度,则在所述密钥末尾填充0;若所述密钥的长度大于所述目标散列函数的明文分组长度,则调用散列算法计算所述密钥的摘要,并在所述摘要末尾填充0。

  在实际应用中,在HMAC的定义中用到一个密码散列函数H和一个密钥K。假设H是一个能够对明文进行分组循环压缩的散列函数,B为散列函数的明文分组长度(64byte),L为散列函数的输出长度(byte),若选择MD5为散列函数则L=16,若选择SHA-1为散列函数则L=20。认证密钥K可以为任意长度,一般密钥长度应大于明文分组的长度。

  本实施例定义两个常数:

  IPAD=一个字节(byte)的0x36重复B次;

  OPAD=一个字节(byte)的0x5C重复B次。

  若以“text”作为要计算HMAC的明文,则作如下操作:

  H(K XOR opad,H(K XOR ipad,text))

  整体的运算过程如图2所示:

  第一,先初始化进入idle状态,然后通过模式仲裁单元将密钥K的数据送入HMAC运算单元中。HMAC运算单元判断密钥K的长度,如果小于64byte,则在密钥K后面填充0,使其成为长度为64byte;如果长度大于64byte,则调用一次散列函数运算,例如调用MD5,输出16byte的摘要结果,再对该结果填充0至64byte。最后,同时进入IPAD状态和OPAD状态。

  第二,在IPAD状态,将第一步得到的64byte数据与常数IPAD进行异或,得出字符串X;将数据流text拼接到X后面;调用散列函数H计算消息摘要得到结果E。

  同时,在OPAD状态,将第一步得到的64byte数据与常数OPAD进行异或,得出字符串Y,调用散列函数H对Y进行运算,得到结果F。

  第三,当IPAD和OPAD都计算出结果后,进入Z状态。该状态将OPAD的结果F作为输入参数数据,对IPAD的结果E进行散列函数H计算信息摘要,最终输出HMAC的认证码结果。

  传统方案是将Y和E做拼接,然后经过散列运算,得出认证码结果。这个在散列运算过程是个迭代过程,实际上,在计算工程中也是先通过Y算出F,然后F作为参数继续参与E的部分数据计算出一个值比如X,X再参与E的剩余部分计算一个值,这样一直计算下去。而本实施例删除了拼接这一步,直接在OPAD的状态计算出了F,这样相比于之前,节约了拼接和拼接后的第一次运算出F的计算时间。

  可见,本实施例提供的一种基于HMAC算法的消息认证码生成装置,使得IPAD运算子单元和OPAD运算子单元可以并行同时参与运算,将OPAD运算的结果F作为参数,参与IPAD运算结果E的最后一次散列函数运算。这样设计不同于传统的设计,传统设计需要等待IPAD状态计算出结果E后,再与字符串Y拼接后才能进行下一步运算。因为传统设计拼接后的数据长度明显大于IPAD的输出结果E,必然导致运算时间更长,本设计巧妙更改了最后一次散列函数的计算过程,运用并行运算,节约了运算时间,提高了消息认证效率。

  此外,本申请还提供了一种基于HMAC算法的消息认证码生成方法实施例,该方法实施例基于前文所述的基于HMAC算法的消息认证码生成装置实现。

  如图4所示,该方法包括以下步骤:

  S401、通过输入输出接口获取外部输入的密钥和待认证消息,并存储至第一存储单元;

  S402、利用配置寄存器单元通过所述输入输出接口获取外部输入的配置参数,将所述配置参数转换为硬件逻辑可识别的有效信息,并将所述有效信息发送至模式仲裁单元;

  S403、利用所述模式仲裁单元,根据所述有效信息确定目标散列函数的标识信息,将所述目标散列函数的标识信息发送至HMAC运算单元;控制所述第一存储单元将所述密钥和所述待认证消息发送至所述HMAC运算单元;

  S404、利用所述HMAC运算单元,根据所述标识信息确定目标散列函数,利用基于所述目标散列函数的HAMC算法对所述密钥和待认证消息进行运算,得到消息认证码,其中所述HMAC运算单元用于存储HMAC算法的控制逻辑以及多种散列函数的控制逻辑;

  S405、将所述HMAC运算单元生成的认证码存储至第二存储单元。

  在一些具体的实施例中,还包括:利用配置寄存器单元从所述模式仲裁单元获取当前的运算状态,通过所述输入输出接口向外部输出所述运算状态。

  在一些具体的实施例中,所述利用基于所述目标散列函数的HAMC算法对所述密钥和待认证消息进行运算,得到消息认证码,包括:对所述密钥进行填充,得到目标密钥;对所述目标密钥和和预先设置的IPAD进行异或运算,将异或运算的结果与所述待认证消息进行拼接,并利用所述目标散列函数对拼接结果进行运算,得到第一运算结果;同时,对所述目标密钥和预先设置的OPAD进行异或运算,利用所述目标散列函数对异或运算的结果进行运算,得到第二运算结果;利用所述目标散列函数,根据所述第一运算结果和所述第二运算结果,生成消息认证码。

  在一些具体的实施例中,所述对所述密钥进行填充,得到目标密钥,包括:若所述密钥的长度小于所述目标散列函数的明文分组长度,则在所述密钥末尾填充0;若所述密钥的长度大于所述目标散列函数的明文分组长度,则调用散列算法计算所述密钥的摘要,并在所述摘要末尾填充0。

  本实施例提供的基于HMAC算法的消息认证码生成方法基于前文所述的基于HMAC算法的消息认证码生成装置实现,因此,该方法的技术效果与前述装置的技术效果相对应,这里不再赘述。

  本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

  结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

  以上对本申请所提供的方案进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

《一种基于HMAC算法的消息认证码生成装置及方法.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)