免费论文查重: 大雅 万方 维普 turnitin paperpass

浅析算法HMAC—SHA256算法优化设计一般

最后更新时间:2024-03-03 作者:用户投稿原创标记本站原创 点赞:4244 浏览:11062
论文导读:比特长)导出的32比特长的数。在所有的512比特长的分组处理完毕之后,SHA-256算法的最后一个分组产生的输出为256bit的报文摘要。输入数据为预处理过程产生的512bit数据块M(i),一个512bit块产生一个hash摘要的结果值。2HMAC算法HMAC(Keyed-HashingforMessageAuthentication)是基于hash函数的消息认证码。该算
摘要: 采用引入中间变量进行预计算的方法对SHA256算法的关键路径进行了优化,提高了SHA256运算速度。将SHA256和HMAC结合,实现了优化的HMAC-SHA256电路。该电路在选择信号的控制下,支持独立的HMAC和SHA256两种运算,分别在Xilinx和Altera平台对其进行综合实现,均达到了很高的数据吞吐率。并和现有一些论文中的实现结果比较,面积和性能均大大优于以往设计。
Abstract: This paper introduced pre-calculation method of intermediate variables to optimize the critical path of SHA256 algorithm, which improved computational speed of SHA256. Through the combination of SHA256 and HMAC, HMAC-SHA256 circuit optimization is achieved. Under the control of the selection signal of this circuit, it supports the independent SHA256 and HMAC, and respectively integrates and achieves it in Altera and Xilinx platforms, which all he reached a very high data throughput rates. And compared with results of a number of existing papers, the area and performance is much better than the previous design.
关键词: 散列函数;SHA256;HMAC;关键路径
Key words: hash function;SHA256;HMAC;the critical path
1006-4311(2012)29-0202-03
0引言
随着电子商务和网络通信的发展,网络信息安全的重要性越来越显著,目前对于安全性有以下三个指标:身份验证、数据完整性和机密性。以散列函数为基础的HMAC算法在身份验证和数据完整性方面得到了很好的应用,在网络安全方面也得到较好的实现。HMAC的安全性依赖于散列函数的安全性。
MD-5、SHA-1是国际上最常用的单向散列函数。近些年的研究成果使SHA-1算法和MD-4、MD-5等单向散列函数的安全性受到了质疑。本文采用安全性高的SHA256作为HMAC压缩函数,在分析SHA-256和HMAC算法的基础上,实现了对HMAC硬件电路在面积和速度上的优化设计。
1SHA-256算法
SHA-256 算法输入消息的最大长度不超过264 bit,输入按512 bit 分组进行处理,产生的输出是一个256bit 的消息摘要。该算法处理包括以下几步:
①消息填充。对消息填充,使得其比特长与448模512同余(即长度=448mod512),一次填充位数在1~512之间。填充方式是固定的,即第一位为1,其余各位皆为0。
②附加消息长度。在消息后附加64位,将其看作64位无符号整数(最高有效位在前),它表示了消息填充前的长度。填充后的消息被解析成N个512比特的分组。
③初始化缓存。在开始计算SHA-256以前,必须先设定初始值。它包含8个长度为32位的字,该初始缓存为:
A=0x6A09E667,B=0xBB67AE85,C=0x3C6EF372,
D=0xA54FF53A,E=0x510E527F,F=0x9B05688C,
G=0x1F83D9AB,H=0x5BE0CD19。
④迭代压缩。SHA-256算法使用了六种逻辑函数,由64步迭代运算组成。每步都以256位缓存值ABCDEFGH为输入,然后更新缓存内容用于下次迭代运算。每步使用一个32位的W和一个32位的常数值K。其中每一个都是针对长度为32位的字(x,y,z)的操作,其结果是得到一个新的长度为32位的字。六个逻辑函数的描述如下:
ch(x,y,x)=(x∧y)?堠(x∧z)
Maj(x,y,z)=(x∧y)?堠(x∧z)?堠(y∧z)
∑0(x)=ROTR28(x)?堠ROTR34(x)?堠ROTR39(x)
∑1(x摘自:学生论文www.7ctime.com
)=ROTR14(x)?堠ROTR18(x)?堠ROTR41(x)
σ0(x)=ROTR1(x)?堠ROTR8(x)?堠SHR7(x)
σ1(x)=ROTR19(x)?堠ROTR61(x)?堠SHR6(x)
其中?堠为比特异或,∧为比特与,RTOR右移,SHR循环右移。Wt是由当前的输入分组(512比特长)导出的32比特长的数。
在所有的512比特长的分组处理完毕之后,SHA-256算法的最后一个分组产生的输出为256bit的报文摘要。输入数据为预处理过程产生的512bit数据块M(i),一个512bit块产生一个hash摘要的结果值。
2HMAC算法
HMAC(Keyed-Hashing for Message Authentication)是基于hash函数的消息认证码。该算法用一个秘密密钥来产生和验证消息认证码。它的作用在于生成摘要放在消息后面以验证消息在传输时是否受到修改或变动,保证消息的完整性。运算如式(1):源于:普通论文格式范文www.7ctime.com