第5讲 息认证.ppt

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

基于DES的消息认证码 基于DES的消息认证码(适合一般对称密码体制) 是联邦信息处理标准(FIPS PUB 113)和ANSI标准(X9.17)。 该算法定义为以密码分组链接(CBC)为操作方式的用0作为初始化向量的DES。被认证的数据(例如消息、记录文件或者程序)被分为连续的64 bit分组:D1,D2,…,DN。如果必要,用0填充最后分组的右边形成满64 bit的分组。 使用DES算法E,秘密密钥K、数据认证代码(DAC)可计算如下: O1 = EK(D1) O2 = EK(D2⊕O1) …… ON = EK(DN⊕ON-1) 消息认证码的构造 基于DES的消息认证码 消息认证码——使用举例 某大公司A想给它的客户发布一个新产品的广告,A希望不对广告内容加密,但又希望其他公司不能修改广告内容或冒充公司A发布同样的广告,或者当广告内容被修改后能够发现。 散列函数 散列函数的用途总结 SHA和MD5的比较 这里主要以SHA-1和MD5比较为主 抗穷举攻击的能力 给定散列值,产生碰撞消息,MD5代价是2128数量级,而SHA-1是2160数量级,SHA-512是2512数量级; 为给定散列值,产生碰撞消息,MD5代价是264数量级,而SHA-1是280数量级,SHA-512是2256数量级; 因此,SHA-1和SHA-256的抗穷举攻击能力比MD5强。 SHA和MD5的比较 抗密码分析的能力 SHA-1算法抗密码分析能力比MD5强,但仍比较弱; 2005年2月,王小云、殷益群和于红波发表对SHA-1的攻击,只需要少于269的计算复杂度; 2005年8月在CRYPTO会议上,王小云、姚期智、姚储枫发表更有效的SHA-1攻击方法,复杂度为263; 2006年,王小云等发表更有效的SHA-1攻击方法。 SHA1和MD5的比较 速度 SHA-1和MD5都是基于模232加法,适合在32位机上执行,而SHA-512适合在64位机上执行; 在相同环境下,SHA-1和SHA-512执行的速度比MD5慢得多。 SHA-512 信息准备:SHA-512强调原信息的长度要小于2128比特。也就是说如果信息的长度相等或者大于2128比特,就不能用SHA-512处理。2128比特很可能比任何一个系统的存储容量都要大。 SHA-512从一个比2128短的信息创建一个512比特的信息摘要。 例:一个2128比特的信息要占据多少页面? 假定一个字符是32或26比特,每一个页面都少于2048,或接近212字符。所以至少需要2128/218或2110个页面。所以不必要担心对信息长度的限制 SHA-512 步骤1:附加填充位。填充消息使其长度模1024与896同余(即长度≡896(mod1024),即使消息已经满足上述长度要求,仍然需要进行填充,因此填充位数在1~1024之间。填充由一个1和后续的0组成。 步骤2:附加长度。在消息后附加一个128位的块,将其视为128位的无符号整数(最高有效字节在前),它包含填充前消息的长度。前两步的结果产生了一个长度为1024整数倍的消息。如下图所示,扩展的消息被表示为一串长度为1024位的消息分组M1,M2,…MN,因此扩展消息的长度为N*1024位。 SHA-512 例:如果原信息的长度是2590比特,填充材料的数量是多少? (-2590-128)mod1024=354,填充一个1及353个0 例:如果原信息长度已经是1024的倍数,还需要进行填充吗? 是,还需要进行填充,需要添加长度域,填充使新的分组是1024的倍数 例:加到信息上的填充材料最大比特数和最小比特数是多少? (1)填充材料最小长度是0,(-M-128)mod1024=0 (2)填充材料最大长度是1023,(-M-128)1024=1023,原信息长度是897mod1024,此种情况,最后一个分组的长度超过了1比特。 SHA-512 步骤3:初始化Hash缓冲区。Hash函数的中间结果和最终结果保存于512位的缓冲区中,缓冲区用8个64位的寄存器(a,b,c,d,e,f,g,h)表示,并将这些寄存器初始化为下列64位的整数(16进制): a = 6a09e667f3bcc908 b = bb67ae8584caa73b c = 3c6ef372fe94f82b d = a54ff53a5f1d36f1 e = 510e527fade682d1 f = 9b05688c2b3e6c1f g = 1f83d9abfb41bd6b h = 5be0cd19137e2179 SHA-512 以上数据是从最前面的8个素数(2,3,5,7,11,13,17,19)计算出来的。相应素数取平方根,转化为二进制后只保留小数部分前64比特,即得到每一个值。

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档