Hash函数(消息认证)_第1页
Hash函数(消息认证)_第2页
Hash函数(消息认证)_第3页
Hash函数(消息认证)_第4页
Hash函数(消息认证)_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

哈希函数——消息认证认证(authentication)是防止网络系统遭受主动攻击的重要技术认证的主要目的有两个第一,验证消息的发送者是真的,而不是冒充的,称为实体认证,包括信源、信宿等的认证和识别。第二,验证信息的完整性,即验证数据在传送或存储过程中未被篡改、重放或延迟,称为消息认证。11消息认证码带密钥的Hash函数称为消息认证码(MAC:messageauthenticationcode).消息认证码是实现消息认证的重要工具.MAC有两个不同的输入,一个是消息x,另一个是密钥K.MAC产生定长的输出.实例:某一个大公司A想给它的客户发布一个新产品的广告,A希望不对广告内容加密,但又希望其它公司不能修改广告内容或冒充公司A发布同样的广告,或者当广告内容被修改后能够发现.如果使用不带密钥的Hash函数,由于其它公司可能在修改广告内容后产生新的散列值,从而使A无法确认原广告是否被修改.

设计MAC算法的要求在不知道密钥的情况下,难以找到两个不同的消息具有相同的输出。21消息认证码基于分组密码CBC工作模式构造MAC基于分组密码CBC工作模式构造MAC算法已经成为ISO/IEC9797标准,它使用密文链接和双密钥三重加密技术。设EK表示以K为密钥的加密算法,设K’是一个与K不同的密钥,消息分组长度为n。首先把消息x分成L个n位块x=x1x2…xL,计算:hK是一个n位MAC.记为CBC-MAC.31消息认证码基于Hash函数构造MAC设h是一个(不带密钥)Hash函数,K是密钥,x是消息,则定义消息认证码hK如下:基于MD5算法直接构造消息认证码MD5-MACMD5-MAC算法使用96字节的常数其中下标加法运算是模3相加.如果密钥K的长度小于128位,则通过多次自行链接,最后截取左边128位作为以下算法中使用的密钥K。41消息认证码将密钥K扩展成3个16字节的子密钥K0,K1,K2,其中把K0,K1分成4个32位的子串Kj[i](j=0,1,i=0,1,2,3)对MD5进行修改:用K0代替MD5的4个32位寄存器ABCD.把K1[i]与MD5第i+1遍中每个常数232sin(j)进行模232加法.将512位的分组链接到消息x右边,再按MD5的要求进行填充.

将上一步的结果输入到修改后的MD5中,取其输出的前一半(64位)作为消息x的消息认证码MD5-MAC(x).MD5-MAC软件实现比较容易,其运算速度与MD5大体相近.52HMAC算法

消息认证码HMAC(keyed-hashingformessageauthenticationcode)是Bellare等人于1996年提出,1997年作为RFC2104发表,成为事实上的Internet标准,包括IPSec协议在内的一些安全协议都使用了HMAC算法。HMAC算法利用已有的Hash函数,关键问题是如何使用密钥。使用不同的Hash函数,就可以得到不同的HMAC。选用MD5时的HMAC记为HMAC-MD5,选用SHA-1时的HMAC记为HMAC-SHA1。62HMAC算法

HMAC算法描述设HMAC使用的Hash函数为h,每次处理的输入分组长度为b比特(使用MD5与SHA-1时,b=512),最后的输出长度为l比特(使用MD5时,l=128;使用SHA-1时,l=160)。如果HMAC的输入消息为x,则x=x1x2…xL,其中每一个分组xi(1≤i≤L)的长度为b比特。令HMAC使用的密钥为K,密钥K可以是任意的、长度不超过b比特的比特串(HMAC算法推荐密钥最小长度为l比特)。当密钥K的长度超过b比特时,使用Hash函数h对K进行压缩,把K作为h的输入,并将输出的l比特作为密钥K。72HMAC算法

HMAC算法的流程图

x2

x1

Si

xL…KipadSo

h(Si||x)KopadHMAC(x)Hash函数hHash函数h82HMAC算法

HMAC算法具体执行步骤(1)如果密钥K的长度小于b比特,则在其右边填充一些“0”,使其成为长度为b比特的比特串,仍记为K。(2)计算Si=Kipad,其中ipad是HMAC算法中规定的一个长度为b比特的比特模式串,它等于将00110110重复b/8次后得到的比特串。(3)把HMAC的输入消息x=x1x2…xL附加在Si的右端,得到Si||x=Si||x1x2…xL,将该比特串作为Hash函数h的输入,得到l比特的输出h(Si||x)。(4)计算So=Kopad,其中opad是HMAC算法中规定的另一个长度为b比特的比特模式串,它等于将01011010重复b/8次后得到的比特串。(5)将第(3)步得到的h(Si||x)附加在So的右端,并以该比特串作为Hash函数h的输入,得到l比特的输出。(6)将第(5)步的输出作为HMAC算法的最终输出结果,即消息x的消息认证码HMAC(x)。92HMAC算法

HMAC的安全性建立在嵌入Hash函数基础上的所有MAC,其安全性在某种程度上都依赖于该Hash函数的强度。对于HMAC,可以给出HMAC的强度与所嵌入Hash函数强度之间的关系。根据伪造者在给定时间内伪造成功和用相同密钥产生给定数量的消息-MAC对的概率,可以用于描述MAC的安全性。Bellare等人(1996年)已经证明,如果攻击者已知若干(时间、消息-MAC)对,则成功攻击HMAC的概率等价于对所嵌入Hash函数的下列攻击之一:(1)即使对于攻击者而言,IV是随机的、秘密的和未知的,攻击者也能计算压缩函数的输出。(2)即使IV是随机的和秘密的,攻击者也能找到Hash函数的碰撞。在目前的计算水平下,使用MD5和SHA-1等作为HMAC算法所嵌入的Hash函数,HMAC的安全性是可以保证的。103应用数据完整性数据完整性是指数据在生成、传送或存储过程中没有被非法篡改.使用Hash函数可以保证数据的完整性使用MAC

设用户A将消息x发送给接收者B,A与B共享秘密的MAC密钥K,hK是MAC。用户A计算x的MAChK(x),将数据C=x||hK(x)发送给B。B通过其它方法确定用户A的身份,分开接收到的数据x’,使用共享密钥K计算hK(x’),并与接收到的hK(x)相比较。如果hK(x’)=hK(x),则B确定消息x’是来自于具有密钥K的用户A,在传输过程中未被篡改。C发送方A接收方B比较x1xx1hK||xhK113应用

使用Hash函数和加密

设A与B共享分组密码的密钥K,EK是加密算法,h是公开的Hash函数.用户A计算C=EK(x||h(x)),并将数据C发送给B.B利用密钥K进行解密,得到x’和h(x),然后计算h(x’),并与接收到的h(x)相比较.如果h(x’)=h(x),则B确定消息x’是真实的.由于这里对h(x)进行了加密,所以对Hash函数h的要求可以适当降低.C发送方A接收方B比较x1xx1hEK||DKxh123应用

加密使用MAC和加密

设A与B共享分组密码的密钥K和MAC的密钥K’,EK是加密算法,hK’是MAC。用户A计算C=EK(x||hK’(x)),并将数据C发送给B.B利用密钥K进行解密,得到x’和hK’(x),然后计算hK’(x’),并与接收到的hK’(x)相比较.如果hK’(x’)=hK’(x),则B确定消息x’是真实的.该技术的优点是即使加密算法被攻破,MAC仍然能提供完整性保护作用.其缺点是需要管理K和K’两个密钥.C发送方A接收方B比较x1xx1hK’EK||DKxhK’133应用

实现数据源认证数据源认证也称为消息认证,它是要求证实一个实体在过去某个时刻建立的数据源.数据源认证也包括数据完整性.提供数据源认证的方法有:(1)使用消息认证码MAC;(2)对附加上散列值的消息进行加密.设用户A将消息x发送给接收者B,A与B共享密钥K,则用户A向B发送以下数据可实现数据源的认证.(1)EK(x||h(x)):提供保密(仅双方共享K)和认证(加密保护散列值);(2)x||EK(h(x)):提供认证(加密保护散列值);(3)x||h(x||S):提供认证(仅双方共享随机数S);(4)EK(x||h(x||S)):提供保密和认证(仅双方共享K、S)。143应用

由于加密软件慢、硬件费用高、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论