散列函数的应用及其安全性

作业题目:
散列函数的应用及其安全性。
内容要求:
(1) 给出散列函数的具体应用。
(2) 结合生日攻击、以及2004、2005年王晓云教授有关MD5安全性和2017年

google公司SHA-1的安全性,说明散列函数的安全性以及目前安全散列函数的

发展。问题2的回答可以参考下面给出的第一个链接。
(3)结合md5算法中的选择前缀碰撞以及第二个链接中的helloworld.exe和

goodbyworld.exe两个可执行文件的md5消息摘要值和两个文件的执行结果说明

md5算法在验证软件完整性时可能出现的问题。

链接1:https://www.win.tue.nl/hashclash/

链接2:http://www.win.tue.nl/hashclash/SoftIntCodeSign/


(1) 给出散列函数的具体应用。
答:
1)文件校验
  我们比较熟悉的校验算法有奇偶校验和CRC校验,这2种校验并没有抗数据

篡改的能力,它们一定程度上能检测并纠正数据传输中的信道误码,但却不能

防止对数据的恶意破坏。
  MD5 Hash算法的"数字指纹"特性,使它成为目前应用最广泛的一种文件完

整性校验和(Checksum)算法,不少Unix系统有提供计算md5 checksum的命

令。
  2)数字签名
  Hash 算法也是现代密码体系中的一个重要组成部分。由于非对称算法的

运算速度较慢,所以在数字签名协议中,单向散列函数扮演了一个重要的角色

。对 Hash 值,又称"数字摘要"进行数字签名,在统计上可以认为与对文件本

身进行数字签名是等效的。而且这样的协议还有其他的优点。
  3)鉴权协议
  如下的鉴权协议又被称作"挑战--认证模式:在传输信道是可被侦听,但

不可被篡改的情况下,这是一种简单而安全的方法。

(2)散列函数的安全性以及目前散列函数的发展
散列函数的安全性
1)单向性(原像稳固性)
    给定一个消息摘要y,很难找到符合h(x)=y的消息x。

2)第二原像稳固性
    给定x,很难找到一个x’,满足h(x)=h(x’)。

3)碰撞稳固性
    很难找到满足h(x)=h(x’)的二元组(x,x’)。

4)雪崩性
    c=Hash(m),c的每一比特都与m的每一比特有关,并有高度敏感性

。即每改变m的一比特,都将对c产生明显影响。

散列函数的发展
1)目前,已经出现了SHA-3,但是还是采用的是SHA-2。之所以全世界没有迁

移到SHA-3,首要原因是世界上目前几乎没有任何软件或硬件支持该算法。

2)前量子计算算法的Grover算法和Shor算法已经可以破译当今广泛使用的密

码。Shor算法是一种量子计算机求解离散对数问题的算法,它能够攻破RSA、

DSA和ECDSA密码,Grover算法没有Shor算法有效,它的作用相当于把密码的秘

钥长度减少一半,密码技术人员可以通过加长秘钥长度来抵抗Grpver算法攻击



3)值得注意的是,国外的量子计算机发展迅速,已有像谷歌这样的著名公司

将量子计算机投入使用,用于提高信息搜索效率和研究量子人工智能。如今的

量子计算机还不足以通过执行Shor算法或Grover算法来大肆攻击现有密码。

4)MD5 和 SHA1 是目前应用最广泛的Hash算法,而它们都是以 MD4 为基础设

计的。MD4(RFC 1320)是 MIT 的Ronald L. Rivest在 1990 年设计的,MD

是 Message Digest 的缩写。它适用在32位字长的处理器上用高速软件实现--

它是基于 32位操作数的位操作来实现的。

(3)验证软件完整性时可能出现的问题
1)md5算法中的选择前缀碰撞
    选择前缀冲突——前缀冲突只要求在碰撞后文件应该完全相等。在碰

撞之前,要找到碰撞的两个文件可以是任何东西:我们所选择的前缀碰撞查找

方法总是会产生一个冲突,该冲突可以被合并到两啥个文件中,而不管碰撞之前

存在什么数据。构造前缀碰撞法可制作两个内容不同但具有相同MD5验证码的

文件。例如所给出的两个可执行文件执行结果不同,但是其MD5相同。

2)md5算法来验证软件完整性时可能出现的问题
    MD5是消息摘要,消息摘要是哈希算法的一种应用,而消息摘要算法

是一种碰撞要求极其严格的哈希算法。这些信息摘要算法通常散列都十分均匀

,且不容易产生哈希碰撞。由此,我们可以用MD5的压缩来作为软件的完整性

验证。但是,在使用MD5算法来验证完整性时,由于MD5算法是公开的,所有人

都可以获得和使用MD5算法,那就意味着别人可以利用相同的算法针对你的加

密值不断地进行计算。如果不对MD5算法进行一些处理,那么当我们将自己的

重要接口暴露在互联网上的时候,比如登陆接口,攻击者就可以同样利用MD5

加密算法对我们进行撞库攻击和关键信息比对。

posted @ 2018-05-12 22:52  默羽明  阅读(131)  评论(0编辑  收藏  举报