散列函数的应用及其安全性(信息安全技术作业5)

一、给出散列函数的具体应用

1)文件校验

MD5 Hash算法的"数字指纹"特性,使它成为目前应用最广泛的一种文件完整性校验算法

2数字签名

因为非对称算法的运算速度比较慢,所以在数字签名协议中应用单向散列函数。对 Hash 值进行数字签名,在统计上可以认为与对文件本身进行数字签名是等效的。通过HASH处理我们可以使其仅仅作用于HASH摘要上,从而提高效率。

3)鉴权协议

如下的鉴权协议又被称作"挑战--认证模式:在传输信道是可被侦听,但不可被篡改的情况下,这是一种简单而安全的方法。

4)安全数据的安全存储

由于HASH函数的单向性,我们可以实现口令,密码等安全数据的安全存储。

5)数据校验

 HASH函数有类似数据冗余校验的功能,但是它比简单的冗余校验碰撞的概率要小得多,所以HASH来做关键数据的验证。

6)关键数据的衍生

因为HASH算法能够最大限度的保证其唯一性(从一个随机的种子数产生,并且不暴露种子本身秘密)。

 

二、结合生日攻击、以及2004、2005年王晓云教授有关MD5安全性2017年google公司SHA-1的安全性,说明散列函数的安全性以及目前安全散列函数的发展。

生日问题:

n个人中随机选取k个人,k为多大时能保证k个人中有两个人的生日是相同的?只要k=70,这其中两个人有相同生日的可能性就是99.9%。

20042005年王晓云教授有关MD5安全性

王小云教授发现,可以很快的找到MD5碰撞,就是两个文件可以产生相同的指纹。这意味着,当你在网络上使用电子签名签署一份合同后,还可能找到另外一份具有相同签名但内容迥异的合同,这样两份合同的真伪性便无从辨别。王小云教授的研究成果证实了利用MD5算法的碰撞可以严重威胁信息系统安全

2017google公司SHA-1的安全性

希值可与 PDF 文件内容冲突 SHA-1破坏性攻击的速度仍然较暴力破解攻击快10万倍,这意味着前者确实具有可行性。

散列函数的安全性:

什么样的散列函数可以说是安全的呢?

第一、寻找两个输入得到相同的输出值在计算上是不可行的,这就是我们通常所说的抗碰撞的

第二、找一个输入,能得到给定的输出在计算上是不可行的,即不可从结果推导出它的初始状态

目前安全散列函数的发展

SHA-22002年,NIST分别发布了SHA-256SHA-384SHA-512,这些算法统称SHA-22008年又新增了SHA-224这些目前算是比较安全的

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

什么是md5算法中的选择前缀碰撞

以同一个给定的前缀程序A为基础,在尾部添加不同的附加数据,得到两个具有相同MD5的样本BC,前缀构造法碰撞后的两个样本只有尾部少量字节不同,而程序代码是相同的。通过判断尾部数据的差异,两个样本可以执行不同的程序流程。由于这种碰撞手法是通过同一前缀程序碰撞生成的两个样本,如果其中有恶意代码流程则两个样本均包含恶意代码,所以比较容易被安全软件识别,隐蔽性较差。

可能出现的问题

1、不同程序的MD5可能是一样的。比如说HelloWorld.exeGoodbyeWorld.exe这两个程序,他们会在屏幕上打印出不同的字符,但是它们的MD5都是一致的。

2、容易对MD5进行冲撞攻击,普通的计算机可以在短时间内找到冲撞对。

3、可以利用MD5的这个漏洞来伪造数字签名

4不能通过校验MD5从而确保软件安全性

 

 

 

posted @ 2018-05-13 19:57  AnGeAgg  阅读(189)  评论(0编辑  收藏  举报