Hash函数(消息认证).ppt

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Hash函数(消息认证)概要1

哈希函数——消息认证 认证(authentication)是防止网络系统遭受主动攻击的重要技术 认证的主要目的有两个 第一,验证消息的发送者是真的,而不是冒充的,称为实体认证,包括信源、信宿等的认证和识别。 第二,验证信息的完整性,即验证数据在传送或存储过程中未被篡改、重放或延迟,称为消息认证。 1 消息认证码 带密钥的Hash函数称为消息认证码(MAC:message authentication code). 消息认证码是实现消息认证的重要工具. MAC有两个不同的输入,一个是消息x,另一个是密钥K . MAC产生定长的输出. 实例: 某一个大公司A想给它的客户发布一个新产品的广告,A希望不对广告内容加密,但又希望其它公司不能修改广告内容或冒充公司A发布同样的广告,或者当广告内容被修改后能够发现.如果使用不带密钥的Hash函数,由于其它公司可能在修改广告内容后产生新的散列值,从而使A无法确认原广告是否被修改. 设计MAC算法的要求 在不知道密钥的情况下,难以找到两个不同的消息具有相同的输出。 1 消息认证码 基于分组密码CBC工作模式构造MAC 基于分组密码CBC工作模式构造MAC算法已经成为ISO/IEC 9797 标准,它使用密文链接和双密钥三重加密技术。 设EK表示以K为密钥的加密算法,设K’是一个与K不同的密钥,消息分组长度为n。 首先把消息x分成L个n位块 x=x1 x2…xL, 计算: hK是一个n位MAC. 记为CBC-MAC. 1 消息认证码 基于Hash函数构造MAC 设h是一个(不带密钥)Hash函数,K是密钥,x是消息,则定义消息认证码hK如下: 1 消息认证码 将密钥K扩展成3个16字节的子密钥K0,K1,K2,其中 把K0,K1分成4个32位的子串Kj[i](j=0,1, i=0,1,2,3) 2 HMAC算法 2 HMAC算法 2 HMAC算法 2 HMAC算法 2 HMAC算法 3 应用 3 应用 3 应用 3 应用 3 应用 * 基于MD5算法直接构造消息认证码MD5-MAC MD5-MAC算法使用96字节的常数 其中下标加法运算是模3相加. 如果密钥K的长度小于128位,则通过多次自行链接,最后截取左边128位作为以下算法中使用的密钥K。 对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大体相近 . 消息认证码HMAC(keyed-hashing for message authentication code)是Bellare等人于1996年提出,1997年作为RFC 2104发表,成为事实上的Internet标准,包括IPSec协议在内的一些安全协议都使用了HMAC算法。 HMAC算法利用已有的Hash函数,关键问题是如何使用密钥。使用不同的Hash函数,就可以得到不同的HMAC。选用MD5时的HMAC记为HMAC-MD5,选用SHA-1时的HMAC记为HMAC-SHA1。 HMAC算法描述 设HMAC使用的Hash函数为h,每次处理的输入分组长度为b比特(使用MD5与SHA-1时,b=512),最后的输出长度为l比特(使用MD5时,l=128;使用SHA-1时,l=160)。如果HMAC的输入消息为x,则x=x1 x2…xL,其中每一个分组xi(1≤i≤L)的长度为b比特。 令HMAC使用的密钥为K,密钥K可以是任意的、长度不超过b比特的比特串(HMAC算法推荐密钥最小长度为l比特)。当密钥K的长度超过b比特时,使用Hash函数h对K进行压缩,把K作为h的输入,并将输出的l比特作为密钥K。 HMAC算法的流程图 x2 x1 Si xL … K ipad So h(Si|| x) K opad HMAC(x) Hash函数h Hash函数h HMAC算法具体执行步骤 (1)如果密钥K的长度小于b 比特,则在其右边填充一些“0”,使其成为长度为b比特的比特串,仍记为K。 (2)计算Si=K?ipad,其中ipad是HMAC算法中规定的一个长度为b比特的比特模式串,它等于复b/8次后得到的比特串。 (3)把HMAC的输入消息x=x

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档