码迷,mamicode.com
首页 > 其他好文 > 详细

作业五

时间:2018-05-13 19:56:41      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:数字   利用   应用   hello   检测   技术分享   完整   字节   计算   

1.给出散列函数的具体应用。

A)消息验证

Hash码能够通过如下不同方法用于提供消息认证

技术分享图片

 

a) 使用对称密码E加密消息和Hash码,由于只有AB共享密钥K,所以消息必然发自A处,且可通过验证Hash码证明数据在传输过程中未被更改。

 b) 使用对称密码只对Hash码加密。由于明文无需加密性的应用,这种方案大大减少了加密操作的负担。

c) 不使用加密算法,仅使用Hash函数实现消息验证。该方案中,通信双方共享相同的秘密值S,发送方A将消息M和秘密值S串联后计算其Hash值,并将得到的Hash值附在消息M后发送。因为接收方B同时掌握S值,所以能够重新计算该Hash值进行验证。

d) 在方案c的基础上将整个消息和Hash值加密,以提供保密性。

B)数字签名

数字签名的应用比消息认证更加广泛。主要有如下两种方案:

技术分享图片

a) 使用发送方的私钥利用公钥密码算法对Hash码进行加密。这种方法也可提供认证;由于只有发送方可以产生加密后的Hash码,所以这种方法也提供了数字签名。

b) 若既希望保证保密性又希望有数字签名,则先用发送方的私钥对Hash码加密,再用对称密码中的密钥对象消息和公钥算法加密结果进行加密,这种技术比较常用。

D)其他应用

对于Hash函数,通常还被用于产生单向口令文件。在操作系统中,存储口令的Hash值而不是口令本身,当用户输入口令时,操作系统将比对输入口令的Hash值和存储在口令文件中的Hash值来进行用户验证。

Hash函数还能用于入侵检测和病毒检测。将每个文件的HashH(F)存储在安全系统中(CD-R),随后就能通过重新计算H(F)来判断文件是否被修改过。入侵者只能够改变F,而不能改变H(F)

密码学Hash函数能够用于构建随机函数PRF或用作伪随机数发生器。基于Hash函数的PRF可用于对称密码中的密钥产生。

  1. 结合生日攻击、以及20042005年王晓云教授有关MD5安全性和2017google公司SHA-1的安全性,说明散列函数的安全性以及目前安全散列函数的发展。问题2的回答可以结合下面给出的第一个链接。

生日攻击

生日攻击是利用概率论中的生日问题,找到冲突的Hash值,伪造报文,使身份验证算法失效。

场景说明

A要对一个合同文件进行签名,然后把合同文件和签名一起发送给接收者。

签名的方法:计算文件的Hash值(m位),然后使用A的私钥对这个Hash值进行 加密。

接收者使用A的公钥进行解密,然后比较Hash值,这样他就能确认:

接收到的合同文件是A发送的,并且合同文件未被修改过。

 

攻击者B想要伪造一份假合同文件,然后发送给接收者,并使接收者仍然相信:

接收到的合同文件是A发送的,并且合同文件未被修改过。

攻击方法

B先准备 2^m/2 个有效合同文件(集合X),每个文件包含与原合同文件相同的意思。

B再准备 2^m/2 个伪造合同文件(集合Y),每个文件也都是希望的伪造合同的意思。

然后比较集合X和集合Y,找到Hash值相同的两个文件,分别是有效合同和伪造合同。

B成功的概率会大于0.5,如果没有找到匹配的文件,就准备更多的有效文件和伪造文件,直到找到一对匹配的文件。

B把找到的有效合同文件提供AA看了一下,没什么问题,就做了签名,然后发送给接收者。

在接收者收到消息之前,B截获了这个消息,然后使用伪造合同替换有效合同,再把伪造合同和原签名一起发送给接收者。

因为伪造合同与有效合同的Hash值相同,所以它们产生相同的签名。

这样,即使B不知道A的私钥,他也能成功!

MD5

是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不管是MD2MD4还是MD5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。虽然这些算法的结构或多或少有些相似,但MD2的设计与MD4MD5完全不同,那是因为MD2是为8位机器做过设计优化的,而MD4MD5却是面向32位的电脑。

初始化处理后,MD5512位分组来处理输入文本,每一分组又划分为1632位子分组。算法的输出由四个32位分组组成,将它们级联形成一个128位散列值。

首先填充消息使其长度恰好为一个比512位的倍数仅小64位的数。填充方法是附一个1在消息后面,后接所要求的多个0,然后在其后附上64位的消息长度(填充前)。这两步的作用是使消息长度恰好是512位的整数倍(算法的其余部分要求如此),同时确保不同的消息在填充后不相同。

四个32位变量初始化为:

A=0x01234567

B=0x89abcdef

C=0xfedcba98

D=0x76543210

它们称为链接变量(chaining variable

接着进行算法的主循环,循环的次数是消息中512位消息分组的数目。

将上面四个变量复制到另外的变量中:AaBbCcDd

主循环有四轮(MD4只有三轮),每轮很相似。第一轮进行16次操作。每次操作对abcd中的其中三个作一次非线性函数运算,然后将所得结果加上第四个变量,文本的一个子分组和一个常数。再将所得结果向右环移一个不定的数,并加上abcd中之一。最后用该结果取代abcd中之一。

SHA1

安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准 (Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。 SHA1有如下特性:不可以从消息摘要中复原信息;两个不同的消息不会产生同样的消息摘要,(但会有1x10 ^ 48分之一的机率出现相同的消息摘要,一般使用时忽略)

 安全性

  技术分享图片

技术分享图片

  技术分享图片

         技术分享图片

发展前景:

  MD5 和 SHA1 是目前应用最广泛的Hash算法,而它们都是以 MD4 为基础设计的。MD4(RFC 1320)是 MIT 的Ronald L. Rivest在 1990 年设计的,MD 是 Message Digest 的缩写。它适用在32位字长的处理器上用高速软件实现--它是基于 32位操作数的位操作来实现的。

3.结合md5算法中的选择前缀碰撞以及第二个链接中的helloworld.exegoodbyworld.exe两个可执行文件的md5消息摘要值和两个文件的执行结果说明md5算法来验证软件完整性时可能出现的问题。

  传输过程中可能出现中断或者传输错误

  文件可能被恶意篡改

 

 

引用资料:

  https://www.cnblogs.com/block2016/p/5623902.html

  https://blog.csdn.net/ddk3001/article/details/52647990

作业五

标签:数字   利用   应用   hello   检测   技术分享   完整   字节   计算   

原文地址:https://www.cnblogs.com/lvgx/p/9032776.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!