基于FPGA的HMAC_SHA1_96算法设计与实现
发布时间:2008/5/28 0:00:00 访问次数:862
摘要:在简要介绍安全散列函数sha1和hmac_sha1_96算法体系的基础上,结合fpga芯片(altera 的apex20ke系列)的特点,进行信息安全加密验证算法的硬件系统优化设计和验证。本文讨论了该优化设计的步骤和方法, 给出了较好的验证结果。
关键词: 安全散列函数;安全性; fpga 中图分类号:tp301.6 文献标识码:a 文章编号:1003-353x(2003)06-0025-04 | ||||||
1概述
随着信息社会的发展,数据交换,网上交易等活动日益频繁,从而网络安全成为人们关注的重要问题。随着信息技术的发展与应用,信息安全的内涵也在不断延伸,从最初的信息保密性发展到信息完整性、可用性、可控性和不可否认性,进而又发展为攻(攻击)、防(防范)、测(检测)、控(控制)、管(管理)、评(评估)等多方面的基础理论和实施技术[1]。目前对于安全性有以下三个指标:身份验证、数据完整性和机密性。 hmac_sha1算法在身份验证和数据完整性方面可以得到很好的应用,在目前网络安全也得到较好的实现。然而大多数应用通过软件实现,但其安全性很难得到真正的保障,于是研究安全算法的硬件 2sha1函数 sha1函数[2,3,5]是由美国国家标准和技术局和美国国家安全局设计的与dss一起使用的安全散列算法sha,并作为安全散列标准(shs)的联邦信息处理标准(fips)而公布,sha1是sha的修订版。当输入长度小于2 64bit消息时,输出160bit的摘要,其算法步骤如下: 步骤一:填充附加位。一般经过填充使报文长度512取模余64bit。该步骤通常是需要的,即使报文长度已经是所希望的长度。因此填充长度范围为1到512,最高位为1,其余为0。 步骤三:初始化变量。可以使用160bit的缓存(即160bit寄存器)来存放该散列函数的初始变量、中间摘要及最终摘要,但首先必须初始化, 给初始变量赋值,即: a=0x67452301,b=0xefcdab98, c=0x98badcfe,d=0x10325476,e=0xc3d2e1f0 步骤四:处理512bit报文分组。在该步骤中包括四个循环,每个循环有20个处理步骤,而每个循环对 b﹑c﹑d所用的非线性函数不同,并且所用的常数也不同: 对于t=0~19, ft (b,c,d)=(b∧c )∨((¬b)∧d), kt=0x5a827999 对于t=20~39, ft (b,c,d)=b⊕c ⊕d, kt=0x6ed9eba1 对于t=40~59, ft (b,c,d)=(b∧c )∨(b∧d)∨(c∧d), kt=0x8f1bbcdc 对于t=60~79, ft (b,c,d)=b⊕c ⊕d, kt=0xca62c1d6 注:∧表示“与”;∨表示“或”;⊕表示“异或”;¬表示“取反”。 在每一步骤中都将执行如下的算法过程(图1)。 归纳为以下形式﹐其中 <<< 表示循环左移: a’, b’, c’, d’, e’← ((a<<<5) + ft (b,c,d)+et +wt +kt ), a, (b<<<30), c, d 由于我们输入的是16个32bit消息,而sha1运算需要80个32bit数据,所以存在一个由512bit 消息生成2560bit数据的转换过程(即生成w运算) ,其转换机制如下: 对于t=0~15, w t=mt; 对于t=16~79, wt=(m t-3⊕mt-8⊕mt-14 ⊕mt-16)<<<1。 步骤五:结果输出。512bit报文运算完就输出 160bit的报文摘要。 3hmac_sha1_96算法 hmac_sha1_96算法[2,3,6] 是基于单向散列函数sha1和以密钥为基础的完整性检查验证机制,它是从生成的160bit摘要中选择从高到低的96bit作为最终输出。在该算法中主要就是sha1函数和hmac算法。它的作用在于生成摘要放在消息后面以验证消息在传输时是否受到修改或变动,保证消息的完整性。根据hmac的定义,本设计的hmac_sha1_96算法原理图如图2。 图2算法的几点说明:① _ipad表示补位后的密钥与ipad 异或的结果,k_opad表示补位后的密钥与opad异或的结果;② 次sha1运算包括生成w运算;③ 由sha1运算输出的结果是经过加法处理的结果;④ 虚线部分表示图上忽略的信息分组和相
|