《一种优化的MD5算法与硬件实现.doc》由会员分享,可在线阅读,更多相关《一种优化的MD5算法与硬件实现.doc(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一种优化的MD5算法与硬件实现摘要:MD5算法是应用非常广泛的一种Hash算法,在数字签名和验签中占有重要地位,算法的效率会直接影响到签名和验签的速度.本文提出一种优化的MD5算法,采用三级加法器替代四级加法器、优化循环移位操作的方式缩短MD5算法单步运算的关键路径,并用VERILOGHDL语言进行硬件实现.通过仿真和FPGA验证,结果表明该设计功能正确,硬件资源消耗少,数据吞吐量大.该设计应用于一款密码安全芯片,采用0.18m工艺进行MPW流片,芯片面积为6mm2.时钟频率为150MHz,电压3.3V时,功耗约为10.7mW. 关键词:MD5算法;hash算法;签名和验签;散列函数 中图分类
2、号:TN335 文献标志码:A 互联网技术的高速发展给人们带来了许多便利的同时,也带来了诸多的问题.人们的生产和社会活动与网络密切相关,随时随地都在利用网络进行数据交互.提供一个高效性、隐私性和完整性的信息生存环境是时代的需求,是迫切需要解决的问题.在信息安全的研究领域中,密码学以及相关技术发挥着越来越关键的作用.加密哈希函数在密码学中扮演着至关重要的角色.它广泛应用于电子商务、信息安全和电子政务等安全性要求比较高的领域中1,同时也是实现数字签名、消息的完备性和消息可认证性的重要工具. MD5算法是MD结构的典型代表,是密码学中 应用广泛的一种哈希函数2.由Ronald Rivest在1991
3、年提出3.MD5算法可以将任意长度的数据输入压缩成128bit的输出,具有不可逆性、数据完整性、不可抵赖性等特点4,可以防止数据被篡改和数据丢失. MD5算法可通过软件和硬件的方式实现.软件实现的算法极其依赖计算机硬件平台,算法运算时间长,效率低,不能满足物联网高速发展的需求.传统的MD5算法一般采用软件或计算机硬件平台的方式实现,算法效率难以满足物联网高速发展的需求.本文提出一种优化的MD5算法,在循环迭代模式上利用三级加法器替代四级加法器、优化循环移位操作方式缩短关键路径,在流水线模式下采用32级流水线设计去搭建算法实现架构.最后通过VERILOGHDL语言进行硬件实现. 1算法介绍 MD
4、5算法以任意位的消息作为输入,将消息经过系列处理后以512位分组形式来处理输入消息,且每一分组会被分割成16个32位子分组,经过一系列的计算处理得到新的四个32位分组,将这四个32位分组级联后生成一个128位散列值就是所求的MD5算法加密的摘要值5. 1.1消息扩展 首先对输入消息进行填充,使其消息长度对512求余数的值为448.故消息长度扩展至N*512+448bits(N为正整数)6-7. 填充的方法如下:在消息后面填充一个1和无数个0,直至满足对512求余得448才停止对信息进行填充.然后再在其后加上一个以64位二进制表示的填充前的消息长度.经过这两步的处理,填充后的消息长度为N*512
5、+448+64=(N+1)*512bits,长度恰好是512的整数倍,以便后续分组8-9. 1.2消息分组 将每512-bit的消息划分成16组,每组32-bit,同时给出MD5中四个32位作为链接变量(ChainingVariable)的整数参数,分别为:A=0x01234567,B=0x89abcdef,C=0xfedcba98,D=0x7654321010.本文中填充好的消息数据以及链接变量均采用小端字节序的方式进行计算处理. 1.3循环运算 首先定义好每轮运算的逻辑函数,即:FF(a,b,c,d,Mj,s,t)i为 a=b+(a+F(b,c,d)+Mj+t)i s)(1)GG(a,b,
6、c,d,Mj,s,ti)为a=b+(a+G(b,c,d)+Mj+t)i s)(2)HH(a,b,c,d,Mj,s,t)i为a=b+(a+H(b,c,d)+Mj+t)i s)(3)H(a,b,c,d,Mj,s,t)i为 a=b+(a+(Ib,c,d)+Mj+t)i s)(4)其中包含了四个非线性基本函数为:F(x,y,z)=(xy)(|x z)(5)G(x,y,z)=(xy)(|x z)(6)H(x,y,z)=(xyz)(7)(Ix,y,z)=y(x|z)(8)ti表示4294967296*abs(sin(i)的整数部分11-12;Mj表示512-bit的消息的第j个子分组;s表示循环左移s位.
7、 当MD5算法进行运算时,先将链接变量A,B,C,D寄存到a,b,c,d中,再进入四轮循环,每轮操作非常相似.其中每操作就是计算对应轮的逻辑函数的值且每轮的循环次数为16次. 1.4摘要输出 四轮计算完后,将A,B,C,D加上对应的a,b,c,d得到新的A,B,C,D.如果还有512-bit分组,则可作为下一分组数据运算的链接变量,最终输出的A,B,C和D,A是低位,D为高位,DCBA组成128位输出结果,即MD5算法计算得出的消息的摘要值. 2优化MD5算法设计 硬件实现MD5算法有两种模式,其一为循环迭代模式,其二为流水线设计13.首先在循环迭代模式上对64步循环运算的单步运算关键路径进行优化,利用三级加法器替代四级加法器、优化循环移位操作的方式缩短MD5算法单步运算的关键路径.其次采用流水线设计实现64步循环运算并行化,一个时钟周期内实现2步运算,实现缩短单步运算关键路径,提高时钟频率,而且32个通道可同时进行MD5运算,提高数据处理速度,增大数据吞吐量.具体优化设计如下. 第 5 页 共 5 页
限制150内