Hash函数与消息认证详解.ppt

  1. 1、本文档共83页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* Chaum?Heijst?Pfitzmann Hash函数是强抗碰撞的 用反证法,如果Hash函数h有一对碰撞,那么可以证明离散对数log??能被有效计算. 设(x1, x2),(x3, x4)是h的一对碰撞消息,即(x1, x2)?(x3, x4),h(x1, x2)=h(x3, x4),那么 5.4.2 基于离散对数问题的Hash函数 记d=gcd(x4?x2, p?1)。因为p?1=2q,且q是一个素数,所以d?{1,2, q, p?1}。下面对d的四个取值分别进行讨论。 * Chaum?Heijst?Pitzmann Hash函数是强抗碰撞的 5.4.2 基于离散对数问题的Hash函数 情况1:d =1 此时x4?x2关于模p?1有逆,设y=(x4?x2)?1 mod (p?1),则存在整数k,使得(x4?x2) y=1+ (p?1) k,则有 因此,可计算离散对数 * 5.4.2 基于离散对数问题的Hash函数 情况2:d =2 因为p?1=2q,且q是奇数,所以gcd(x4?x2, q)=1. 设y=(x4?x2)?1 mod q,则存在整数k,使得 (x4?x2) y=1+qk, 有 由于?q=?1 mod p,所以 容易检验二式中哪一个成立. 即离散对数log??能被有效计算. * 5.4.2 基于离散对数问题的Hash函数 情况3:d = q 因为 0≤x2≤q?1, 0≤x4≤q?1 ?? (q?1)≤x4?x2≤q?1 ?gcd(x4?x2, q?1)= q不成立. ?情况3不存在. 情况4:d =p?1 这种情况只有在x2=x4时才可能发生。这样就有 所以x1=x3,(x1, x2)= (x3, x4),与已知矛盾! 即情况4也不存在. * 第5章 Hash函数与消息认证 5.1 Hash函数概述 5.2 Hash函数MD5 5.3 安全Hash算法SHA?1 5.4 基于分组密码与离散对数的Hash函数 5.5 消息认证 * 5.5 消息认证 认证(authentication)是防止网络系统遭受主动攻击的重要技术 认证的主要目的有两个 第一,验证消息的发送者是真的,而不是冒充的,称为实体认证,包括信源、信宿等的认证和识别。 第二,验证信息的完整性,即验证数据在传送或存储过程中未被篡改、重放或延迟,称为消息认证。 * 5.5.1 消息认证码 带密钥的Hash函数称为消息认证码(MAC:message authentication code). 消息认证码是实现消息认证的重要工具. MAC有两个不同的输入,一个是消息x,另一个是密钥K . MAC产生定长的输出. 实例: 某一个大公司A想给它的客户发布一个新产品的广告,A希望不对广告内容加密,但又希望其它公司不能修改广告内容或冒充公司A发布同样的广告,或者当广告内容被修改后能够发现.如果使用不带密钥的Hash函数,由于其它公司可能在修改广告内容后产生新的散列值,从而使A无法确认原广告是否被修改. 设计MAC算法的要求 在不知道密钥的情况下,难以找到两个不同的消息具有相同的输出。 * 5.5.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. * 5.5.1 消息认证码 基于Hash函数构造MAC 设h是一个(不带密钥)Hash函数,K是密钥,x是消息,则定义消息认证码hK如下: 基于MD5算法直接构造消息认证码MD5-MAC MD5-MAC算法使用96字节的常数 其中下标加法运算是模3相加. 如果密钥K的长度小于128位,则通过多次自行链接,最后截取左边128位作为以下算法中使用的密钥K。 * 5.5.1 消息认证码 将密钥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中

您可能关注的文档

文档评论(0)

共享文档 + 关注
实名认证
内容提供者

二级建造师持证人

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

领域认证该用户于2023年10月07日上传了二级建造师

1亿VIP精品文档

相关文档