第11章 密码学Hash函数.ppt

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

第11章 密码学Hash函数 在数字签名方案中也要用到散列函数。对需要签名的消息用一个函数,产生一个固定长度的消息摘要(Message Digest),最后对消息摘要进行签名,得到确定长度的签名消息。 散列(hash)函数也称为杂凑值或消息摘要。 11.1密码学Hash函数的应用 11.1.1消息认证 消息认证是用来验证消息完整性的一种机制或服务。消息认证确保收到的数据确实和发送时的一样(即没有修改、插入、删除或重放),且发送方声称的身份是真实有效的。 11.1.2 数字签名 11.1.3其他应用 产生单向口令文件:    如操作系统存储口令的Hash值而不是口令本身。 入侵检测和病毒检测:  将每个文件的Hash值H(F)存储在安全系统中,随后就能够通过重新计算H(F)来判断文件是否被修改过。 构建随机函数(PRF)或用做伪随机发生器。 11.3 需求与安全性 原像:对于Hash函数h=H(x),称x为H原像。 碰撞:因为H是多对一映射,所以对于任意给定的Hash值h,对应有多个原像。如果满足x≠y且H(x)=H(y),则称出现碰撞。 假设函数H的输入消息或数据块长度是b位,输出的长度为n位,且bn,则平均每个Hash值对应2b/n个原像。   散列函数应满足的条件: 散列函数的目的是为需认证的数据产生一个“指纹”。为了能够实现对数据的认证,散列函数应满足以下条件: 5)抗弱碰撞性:已知x,找出y(y≠x)使得H(y)=H(x)在计算上是不可行的。 如果单向散列函数满足这一性质,则称其是抗弱碰撞的。 6)抗强碰撞性:找出任意两个不同的输入x、y,使得H(x)=H(y)在计算上是不可行的。如果单向散列函数满足这一性质,则称其是抗强碰撞的。 7)伪随机性:H的输出满足伪随机性测试标准 11.5安全Hash算法(SHA) 安全散列算法(SHA)是由美国标准与技术协会(NIST)设计,并于1993年作为联邦信息处理标准(FIPS 180)发布,修订版于1995年发布(FIPS 180-1),通常称之为SHA-1。 SHA-1产生160比特的散列值。 2002年,NIST发布了修订版2,FIPS180-2,其中给出了三种新的SHA版本,散列值长度依次为256,384和512比特。分别称为SHA-256,SHA-384, SHA-512,这些算法被统称为SHA-2。这些新的版本和SHA-1具有相同的基础结构,使用了相同的模算术和二元逻辑运算。2005年,NIST宣布了逐步废除SHA-1的意图,到2010年,逐步转而依赖SHA的其他版本。 2008年发布了修订版FIPS 180-3,增加了224位版本。 11.5.1 SHA-512逻辑 这个过程包含下列步骤: 步骤1:附加填充位。填充消息使其长度模1024与896同余,即使消息已经满足上述长度要求,仍然需要进行填充,因此填充位数在1到1024之间。填充由一个1和后续的0组成。 步骤2:附加长度。在消息后附加一个128比特的块,将其看做是128比特的无符号整数,它包含填充前消息的长度。 步骤3:初始化散列缓冲区。散列函数的中间结果和最终结果保存于512比特的缓冲区中,缓冲区用8个64比特的寄存器(a,b,c,d,e,f,g,h)表示,并将这些寄存器初始化为下列64比特的整数: a=6A09E667F3BCC908 e=510E527FADE682D1 b=BB67AE8584CAA73B f=9B05688C2B3E6C1F c=3C6EF372FE94F82B g=1F83D9ABFB41BD6B d=A54FF53A5F1D36F1 h=5BE0CD19137E2179 步骤4:以1024比特的分组(16个字)为单位处理消息。算法的核心是具有80轮运算的模块。每一轮,如t,使用一个64比特的值Wt,该值由当前被处理的1024比特消息分组Mi导出。每一轮还使用附加的常数Kt,其中0≤t≤79,用来表示轮数。这些常数如下获得:前80个素数取三次根,取小数部分的前64比特。 步骤5:输出。所有的N个1024比特分组都处理完以后,从第N阶段输出的是512比特的消息摘要。 Ho=IV Hi=SUM 64(Hi-1,abcdefghi) MD=HN 11.5.2 SHA-512轮函数 T1=h+Ch(e,f,g)+( )+Wt+Kt T2=( )+M

文档评论(0)

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

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

1亿VIP精品文档

相关文档