第五章 消息认证与数字签名.ppt

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

第五章 消息认证与数字签名 回顾 计算机系统安全的五个属性: 可用性(Availability) 可靠性(Reliability) 完整性(Integrity) 保密性(Confidentiality) 不可抵赖性(Non-Repudiation) 消息认证 完整性需要验证: 信息发送方是否真实?接收方是否真实? 信息在传输过程中是否被改变? 信息的到达时间是否在指定的期限内? 完整性技术: 奇偶校验 检错码 纠错码 消息验证码(MAC) 散列函数 散列函数: 特性: 一致性 随机性 唯一性 单向性 散列函数的用法 MD5 来历 MD5的全称是message-digest algorithm 5(信息-摘要算法),在90年代初由MIT laboratory for computer science和RSA data security inc的Ronald l. Rivest开发出来,经MD2、MD3和MD4发展而来。/rfc/rfc1321.txt,是一份最权威的文档,由Ronald l. Rivest在1992年8月向IETF提交。 用途 MD5的作用是对一段信息(message)生成信息摘要(message-digest),该摘要对该信息具有唯一性,可以作为数字签名。用于验证文件的有效性(是否有丢失或损坏的数据),对用户密码的加密,在哈希函数中计算散列值。 特点 输入一个任意长度的字节串,生成一个128位的整数。由于算法的某些不可逆特征,在加密应用上有较好的安全性。并且,MD5算法的使用不需要支付任何版权费用。 说明 唯一性和不可逆性都不是绝对的,从理论上分析是一种多对一的关系,但两个不同的信息产生相同摘要的概率很小。 不可逆是指从输出反推输入所需的运算量和计算时间太大,使用穷搜字典的方法又需要太多的存储空间。 MD5-算法描述 算法输入是一个字节串,每个字节是8个bit。 Step1:补位 扩展数据至LEN=K*64+56个字节,K为整数。 补位方法: 补一个1,然后补0。相当于补一个0x80的字节,再补值为0的字节。这一步里总共补充的字节数为0~63个。 Step2:附加数据长度 用一个64位的整数表示数据的原始长度(以bit为单位),将这个数字的8个字节按低位在前,高位在后的顺序附加在补位后的数据后面。这时,数据被填补后的总长度为: ? LEN = K*64+56+8=(K+1)*64 Bytes。 注意:这个64位整数是输入数据的原始长度而不是填充字节后的长度。 Step3:初始化MD5参数 有四个32位整数变量 (A,B,C,D) 用来计算信息摘要,每一个变量被初始化成以下以十六进制数表示的数值,低位的字节在前面。 ? word A: 01 23 45 67 ? word B: 89 ab cd ef ? word C: fe dc ba 98 ? word D: 76 54 32 10 注意:低位的字节在前面指的是Little Endian平台上内存中字节的排列方式。 Step4:处理位操作函数 定义四个MD5基本的按位操作函数: X,Y,Z为32位整数。 ? F(X,Y,Z) = (X and Y) or (not(X) and Z) ? G(X,Y,Z) = (X and Z) or (Y and not(Z)) ? H(X,Y,Z) = X xor Y xor Z ? I(X,Y,Z) = Y xor (X or not(Z)) 再定义四个分别用于四轮变换的函数。 设Mj表示消息的第j个子分组(从0到15),s表示循环左移s位,则四种操作为: ? FF(a,b,c,d,Mj,s,ti)表示 a=b+((a+(F(b,c,d)+Mj+ti)s) ? GG(a,b,c,d,Mj,s,ti)表示 a=b+((a+(G(b,c,d)+Mj+ti)s) ? HH(a,b,c,d,Mj,s,ti)表示 a=b+((a+(H(b,c,d)+Mj+ti)s) ? II(a,b,c,d,Mj,s,ti)表示 a=b+((a+(I(b,c,d)+Mj+ti)s) Step5:对输入数据作变换 处理数据,N是总的字节数,以64个字节为一组,每组作一次循环,每次循环进行四轮操作。 要变换的64个字节用16个32位的整数数组M[0 ...15]表示。而数组T[1 ... 64]表示一组常数,T[i]为4294967296*abs(sin(i))的32位整数部分,i的单位是弧度,i的取值从1到64。 具体过程如下: /* 设置主循环变量 */ For i = 0 to N/16-1 do /*每循环一次,把数据原文存放在16个元素的数组X中. */ For j = 0 to 15 do S

文档评论(0)

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

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

1亿VIP精品文档

相关文档