著录项信息
专利名称 | 一种提高键入-散列法运算速度的方法 |
申请号 | CN03102441.6 | 申请日期 | 2003-01-28 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2004-08-18 | 公开/公告号 | CN1521982 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L9/28 | IPC分类号 | H;0;4;L;9;/;2;8;;;H;0;4;L;9;/;0;0查看分类表>
|
申请人 | 华为技术有限公司 | 申请人地址 | 广东省深圳市科技园科发路华为用服大厦
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 华为技术有限公司 | 当前权利人 | 华为技术有限公司 |
发明人 | 孙浩;张耀文;叶锦华;姚慧勇;毛文侠 |
代理机构 | 北京德琦知识产权代理有限公司 | 代理人 | 宋志强 |
摘要
本发明提供了一种提高键入-散列法运算速度的方法,将MD5算法嵌入所述HMAC以形成与信息算法相关联的键入散列法(HMAC-MD5),该方法包括以下步骤:a.先进先出缓冲区中设置不同的队列分别存放待加密的报文、HMAC-MD5算法的第一初始值以及第二初始值;b.放待加密报文和该算法第一初始值的缓冲区队列中,取得所需数据,运用MD5算法进行计算,将所得结果存入先进先出缓冲区中存放中间结果的队列中;从存放中间结果和该算法第二初始值的缓冲区队列中,取得所需数据,再次运用MD5算法进行计算,将结果存入先进先出缓冲区中存放最终结果的队列中。应用本发明,进行加密处理的速度有了明显提高,尤其对于短报文,其效果更加显著。
1、一种提高键入-散列法运算速度的方法,将信息-摘要算法MD5嵌入所 述键入-散列法HMAC以形成与信息摘要算法相关联的键入散列法HMAC- MD5,其特征在于,该方法包括以下步骤:
a、在先进先出缓冲区中设置不同的队列分别存放待加密的报文、HMAC -MD5算法的第一初始值以及第二初始值;
b、从存放待加密报文和该算法第一初始值的缓冲区队列中,取得所需数据, 运用MD5算法进行计算,将所得结果存入先进先出缓冲区中存放中间结果的 队列中;从存放中间结果和该算法第二初始值的缓冲区队列中,取得所需数据, 再次运用MD5算法进行计算,将结果存入先进先出缓冲区中存放最终结果的 队列中;
所述MD5算法的组合路径公式为A=B+((A+g(B,C,D)+X+T)<<< S),其中,A、B、C、D分别对应存放运算中间结果寄存器A、B、C、D中的 值,g(B,C,D)为非线性函数,X为输入报文信息字,T为MD5算法规定 的常数字,S为循环左移的位数,计算该公式加数的和时包括以下步骤:
b1、计算输入报文信息字X、MD5算法规定的常数字T以及寄存器A中 的值三者的和;
b2、将步骤b1的结果存入一临时寄存器中,在下一时钟周期内,再将临时 寄存器中的值与非线性函数g(B,C,D)进行模加,之后将该结果循环左移 预先设定的位数S;
b3、将移位后的结果与寄存器B中的值进行模加,输出该计算结果并保存 在寄存器A中;
b4、对寄存器A、B、C以及D进行循环赋值。
2、根据权利要求1所述的方法,其特征在于,该方法进一步包括:经判断 存放中间结果和该算法第二初始值的缓冲区队列中都存在数据时,步骤b才开 始再次运用MD5算法进行计算。
3、根据权利要求1所述的方法,其特征在于,在进行第一轮计算时,所述 存放运算中间结果的寄存器A、B、C和D的值都是预先给定的。
4、根据权利要求1所述的方法,其特征在于,在进行非第一轮的计算时, 步骤b1所述寄存器A的值为上一轮计算完毕后寄存器D中的值。
5、根据权利要求1或2所述的方法,其特征在于,步骤b所述MD5算法 是由MD5算法引擎来完成的。
技术领域\n本发明涉及数据通信领域,特别是指一种提高键入-散列法运算速度的 方法。\n背景技术\n随着数据通信的日益普及,数据安全和数据加密日益重要,众多的安全 协议和加密标准也应运而生。一种基于散列函数的键入-散列法(HMAC), 不但可以对信息的来源进行身份确认而且可以防止信息的非法改写、伪造。 在此,所关注的是一种嵌入信息-摘要散列函数(MD5)的键入-散列法,即 与信息-摘要算法相关联的键入散列法(HMAC-MD5)。HMAC-MD5是用 于网络安全的对信息进行加密的一种方法,它对于任意长度的信息,通过其 不可逆的字符串变换算法进行处理,得到几乎唯一的固定长度的摘要值(不 同信息产生同一结果的可能小到可以忽略不计),其目的是确保数据的来源 是可信的而且在传输过程中没有被修改过。\n图1所示为现有技术的HMAC-MD5算法的流程示意图。其中,图中的 b等于512,n等于128,K是输入的密钥,在密钥K的左边添加0来创建一 个字长为512bits字节串K+。例如,如果K的长度是160,而b=512,则K 左边会加入44个零字节0x00。该算法的具体处理过程可分为以下两大步骤:\n首先,将K+与一固定的字符串ipad做异或运算产生一个b bits的分组 Si,并将待加密的报文M填充至Si后,使用MD5算法计算填充后的数据流, 并输出结果,作为下一步计算的报文信息。\n其次,将K+与一固定的字符串opad(与ipad不相同的固定字符串)做 异或运算产生一个b bits的分组So,并将前一步的计算结果填充至So后, 再次使用MD5算法计算填充后的数据流,并输出最终结果\n对于一个报文而言,HMAC的执行时间近似等于嵌入散列函数的计算 时间,以及应用该散列函数进行运算所需的时间,即得到分组Si、分组So、 以及MD5算法计算填充后的数据流所占用的时间。\n图2所示为现有技术MD5算法结构示意图。在该算法中,首先把待加 密的报文信息的位流填充成512的整数倍,然后将已填充好报文信息分成若 干个512位块即K0~Klast,每512位块作为一个输出;每个运算单元即Hmd5 方框有两个输入:一是已经过填充的512位块的报文信息,另一个是运算初 始值,即上一个运算单元经过64轮操作后所得到的128位结果CV(第一个 运算单元的初始值是给定的),这样直到最后一个位块运算完毕后就得到 MD5算法最后输出的128位摘要值。图中的A,B,C,D是存放运算中间 结果的4个32位寄存器。\n其中,上面所述的64轮操作可分为四个阶段中,每个阶段为16轮操作, 每个阶段的运算函数和具体操作很相似,在此只举其中之一加以说明。\n该算法模块第二个阶段的组合路径公式如下所示:\nA=B+((A+g(B,C,D)+X+T)<<<S)\n其中,A,B,C,D,X,T均为32位的整数,A,B,C,D就是前面 所述的存放运算中间结果的4个32位寄存器中的值,g(B,C,D)是B, C,D的一个非线性函数,X是输入报文信息字,T是MD5算法规定的常数 字,S是循环左移命令字,该命令字是一个0到31之间的整数,“<<<” 表示循环左移操作,“<<<S”表示对前面的操作数进行S位的循环左移。 “+”表示32位模加操作。\n在该阶段的每轮操作之后,ABCD四个寄存器之间都要进行循环赋值, 即将A中的值赋予B,将B中的值赋予C,将C中的值赋予D,将D中的 值赋予A,即B=A,C=B,D=C,A=D。\n由此可看出,对于X和T的值,每轮操作时的变化是规律的,是可以 预见的,寄存器B中的值在每轮运算后将被刷新,而寄存器A中的取值实 际上是上一轮中寄存器D中的值(第一轮中是给定的)。\n图3所示为现有技术的MD5算法中第二个阶段的组合路径公式中的5 个加数的逻辑硬件实现结构图。针对上述公式,此结构在一个时钟周期内, 一共存在4次32位模加操作,有三级加法器的延迟,而且循环左移的存在 导致最后一级加法器必须等待中间结果的高位结果出来后才可以开始运算。 这样,在应用硬件实现该算法时,由于组合逻辑延时的增加,将导致每一时 钟周期变长,因而其频率会相对较低。\n从上述过程可以看出,运用HMAC-MD5算法对数据进行加密,需要大 量的运算,而后一步的计算要使用前一步的计算结果,这就使得后面的计算 要一直等待前一步计算完毕之后才能进行。这已远远达不到现在数据加密鉴 权的需求,尤其对于短报文(报文长度在64字节左右),用上述方法进行 处理,其效率更是成倍下降。\n另外,在应用硬件的方式进行MD5计算时,在一个时钟周期内又存在 多级加法延迟,因而时钟的频率相对较低,整个硬件系统的效率也会随之下 降。\n发明内容\n有鉴于此,本发明提供一种提高键入-散列法运算速度的方法,在原来 计算一个报文的时间内,可同时对两个不同的报文进行处理,且不相互影响, 从而大大提高运算速度。\n为达到上述目的本发明的技术方案是这样实现的:\n一种提高键入-散列法运算速度的方法,将信息-摘要算法(MD5)嵌入所 述键入-散列法(HMAC)以形成与信息摘要算法相关联的键入散列法(HMAC -MD5),该方法包括以下步骤:\na、在先进先出缓冲区中设置不同的队列分别存放待加密的报文、HMAC -MD5算法的第一初始值以及第二初始值;\nb、从存放待加密报文和该算法第一初始值的缓冲区队列中,取得所需数据, 运用MD5算法进行计算,将所得结果存入先进先出缓冲区中存放中间结果的 队列中;从存放中间结果和该算法第二初始值的缓冲区队列中,取得所需数据, 再次运用MD5算法进行计算,将结果存入先进先出缓冲区中存放最终结果的 队列中;\n所述MD5算法的组合路径公式为A=B+((A+g(B,C,D)+X+T)<<< S),其中,A、B、C、D分别对应存放运算中间结果寄存器A、B、C、D中的 值,g(B,C,D)为非线性函数,X为输入报文信息字,T为MD5算法规定 的常数字,S为循环左移的位数,计算该公式加数的和时包括以下步骤:\nb1、计算输入报文信息字X、MD5算法规定的常数字T以及寄存器A中 的值三者的和;\nb2、将步骤b1的结果存入一临时寄存器中,在下一时钟周期内,再将临时 寄存器中的值与非线性函数g(B,C,D)进行模加,之后将该结果循环左移 预先设定的位数S;\nb3、将移位后的结果与寄存器B中的值进行模加,输出该计算结果并保存 在寄存器A中;\nb4、对寄存器A、B、C以及D进行循环赋值。\n较佳地,该方法进一步包括:经判断存放中间结果和该算法第二初始值的 缓冲区队列中都存在数据时,步骤b才开始再次运用MD5算法进行计算。\n较佳地,在进行第一轮计算时,所述存放运算中间结果的寄存器A、B、C 和D的值都是预先给定的。\n较佳地,在进行非第一轮的计算时,步骤b1所述寄存器A的值为上一轮 计算完毕后寄存器D中的值。\n较佳地,步骤b所述MD5算法是由MD5算法引擎来完成的。\n应用本发明,使用二级流水结构处理HMAC-MD5算法,可实现对两个 不同报文的同时处理,而相互之间不产生干扰或影响等问题,从而提高了对 报文总流量的处理能力。尤其应用此结构对短报文进行处理时,其效果更加 显著。另外,由于改变了MD5算法中组合路径公式的硬件逻辑运算顺序, 使得其原来在同一时钟周期内的多级加法延迟分解到多个时钟周期内完成, 因而提高了时钟的频率,从整体上提高了运算速度。本发明利用现场可编程 阵列器(FPGA:Field Programmable Gate Array)实现该算法,使得加密处 理的速度有了明显提高,尤其在处理大流量的数据流时,具有现有技术所不 可比拟的优越性。同时,本发明为高要求的安全设备提供了一个良好的备选 模块。\n附图说明\n图1为现有技术的HMAC-MD5算法的流程示意图;\n图2为现有技术的MD5算法结构示意图;\n图3为现有技术的MD5算法中第二个阶段的组合路径公式中的5个加 数的逻辑硬件实现结构图;\n图4为应用本发明的HMAC-MD5算法逻辑硬件实现示意图;\n图5为应用本发明的实现提前预算的MD5算法中第二个阶段的组合路 径公式中的5个加数的逻辑硬件实现结构图。\n具体实施方式\n为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举 实施例,对本发明做进一步详细说明。\n本实施例是利用现场可编程阵列器(FPGA:Field Programmable Gate Array)实现该算法。\n图4所示为应用本发明的HMAC-MD5算法逻辑硬件实现示意图。在本 实施例中,HMAC-MD5的逻辑硬件由两个相同的MD5算法引擎,及先进 先出(FIFO)数据缓冲区构成。\n在此结构中,将待处理的报文保存在FIFO缓冲区的MD5Q队列中,将 第一初始值,即根据密钥K以及b所规定的字节数计算出K+的结果后,将 该结果K+与固定的字符串ipad做异或运算后的512位值,经MD5运算后 得到的128位值,存放在缓冲区的IV1Q队列中,将第二初始值,即根据密 钥K以及b所规定的字节数计算出K+的结果后,将该结果K+与固定的字 符串opad做异或运算后的512位值,经MD5运算后得到的128位值,存放 在缓冲区的IV2Q队列中。\nMD5算法引擎1完成HMAC-MD5算法的第一大步骤的运算,即在该 算法引擎中控制机的控制下,将队列IV1Q中的初始值加载到MD5算法引 擎1的运算单元中,并从MD5Q队列中读入待加密报文,经过填充及数据 排序后,按照每个输出的数据块为512位的原则,将已填充好的数据块逐块 送入MD5算法的运算单元中,进行运算,直到所有的数据块全部运算完毕 之后,再把该结果输出到FIFO缓冲区的MD501Q队列中,作为下一个MD5 算法引擎的报文信息。\n经检测MD501Q队列和IV2Q队列中都存在数据时,MD5算法引擎2 就开始进行HMAC-MD5算法的第二大步骤运算。同样地,在该算法引擎中 控制机的控制下,将队列IV2Q中的初始值加载到MD5算法引擎2的运算 单元中,并从MD501Q队列中读入上一步所得结果,经过填充及数据排序 后,按照每个输出的数据块为512位的原则,将已填充好的数据块逐块送入 M D5算法的运算单元中,进行运算,直到所有的数据块全部运算完毕之后, 把该结果作为HMAC-MD5算法的最终数据送到FIFO缓冲区的MD502Q队 列中。\n这种流水结构的前后两级MD5算法引擎是相对独立的,相互之间没有 穿插处理数据的问题,因此,不同报文信息可以在两个引擎中同时进行处理。 尤其是对于短报文而言,这种双引擎结构的处理能力是单引擎结构处理能力 的2倍以上。\n在上述实现结构的基础上,对MD5算法中的组合路径公式的逻辑运算 结构再做一些改进,其具体操作如下。\n图5所示为应用本发明的实现提前预算的MD5算法中第二个阶段的组 合路径公式中的5个加数的逻辑硬件实现结构图。由于组合路径公式中,X 和T的值在同一阶段每轮操作中的变化是规律的,是可以预知的,而在每轮 操作后,寄存器ABCD间都要循环赋值,因此寄存器A中的值除第一轮操 作中是预先给定的,在剩下的15轮计算操作中,实际为寄存器D中的值, 换言之,寄存器A中的值在每轮操作之前也是可知的。\n充分利用上述特点,在此结构中增加一寄存器TEMP,使X、T与寄存 器D中的任两个先进行模加,再与第三个进行模加运算,并将该提前预算 的结果保存在寄存器TEMP中,在下一时钟周期内,再将寄存器TEM P中 的值与g(B,C,D)进行模加,之后进行循环左移S位,最后将移位后的 结果与寄存器B中的值进行模加,输出该计算结果并保存在寄存器A中。 最后进行循环赋值,将A中的值赋予B,将B中的值赋予C,将C中的值 赋予D,将D中的值赋予A,即B=A,C=B,D=C,A=D。\n这样,由于将X、T与寄存器D的模加运算提前一时钟周期进行,使每 个时钟周期之内都只有两级加法运算,相当于把原来一个时钟周期内的多级 加法运算分到两个时钟周期内完成,从而使时钟的频率提高,进而大大的提 高了整体的运算速度。\n该算法中的其它几个相似的组合路径公式也应用此结构进行计算。\n以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本 发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在 本发明的保护范围之内。
法律信息
- 2017-03-22
未缴年费专利权终止
IPC(主分类): H04L 9/28
专利号: ZL 03102441.6
申请日: 2003.01.28
授权公告日: 2009.01.07
- 2009-01-07
- 2005-10-26
- 2004-08-18
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| | 暂无 |
2001-11-19
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 1 | | 2010-06-08 | 2010-06-08 | | |