信息安全作业(一)

有关散列函数安全性的知识扩展

作业题目:散列函数的应用及其安全性。

内容要求

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

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

(3) 结合md5算法中的选择前缀碰撞以及第二个链接中的helloworld.exe和goodbyworld.exe说明md5算法来验证软件完整性时可能出现的问题。

https://www.win.tue.nl/hashclash/

http://www.win.tue.nl/hashclash/SoftIntCodeSign/

一、散列函数在信息安全方面的应用主要体现在以下的3个方面

1)文件校验

我们比较熟悉的校验算法有奇偶校验和CRC校验,这2种校验并没有抗数据篡改的能力,它们一定程度上能检测并纠正数据传输中的信道误码,但却不能防止对数据的恶意破坏。

MD5 Hash算法的"数字指纹"特性,使它成为目前应用最广泛的一种文件完整性校验和(Checksum)算法,不少Unix系统有提供计算md5 checksum的命令。

2)数字签名

Hash 算法也是现代密码体系中的一个重要组成部分。由于非对称算法的运算速度较慢,所以在数字签名协议中,单向散列函数扮演了一个重要的角色。对 Hash 值,又称"数字摘要"进行数字签名,在统计上可以认为与对文件本身进行数字签名是等效的。而且这样的协议还有其他的优点。

3)鉴权协议

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

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

近些年,应用最广泛的散列函数为安全Hash算法(SHA)。由于其他每一种被广泛应用的散列函数都已经被证实存在这密码分析学中的缺陷,从2005年以来,SHA或许仅存的安全散列算法。SHA由美国国家标准与技术研究院(NIST)开发。

·1995年,发布SHA-1(160bit)

·2002年,公布了SHA-2(SHA-256、SHA-384、SHA-512)

·2008年,增加了SHA-224

三、结合md5算法中的选择前缀碰撞以及第二个链接中的helloworld.exe和goodbyworld.exe说明md5算法来验证软件完整性时可能出现的问题。

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

(1)MD5不防碰撞,可能被第三方非授权用户利用MD5的冲撞攻击缺陷,使用快速MD5碰撞生成器,获得相同MD5值数据,从而恶意篡改软件,软件的完整性受到威胁

(2)第二连接中helloworld.exe和goodbyworld.exe两个文件在执行时显示了不变得行为,一个是好的,一个是坏的,但是现在文件具有相同的MD5 哈希值,在无害的程序上获得的数字签名对恶意软件同样有效

(3)攻击者能够在文件被散列或签名之前对其进行操作,在软件完整性保护或代码签名方案中滥用chosen-prefix冲突

(4)用户不能确定已发布的散列值或数字签名只对他下载的可执行文件有效。特别是当软件完整性验证发生在后台时,用户不知道操作系统或某个隐藏的应用程序正在悄悄地验证安装阮加的数字签名,用户可能更容易被引诱安装恶意软件

(5)攻击者不需要从源代码构建两个可执行程序,他完全可以作为第一个文件从任何来源的任何可执行文件,并且作为第二个文件产生第二个可执行的恶意软件,然后在两个文件中添加一个字节块,这样产生的文件具有相同的MD5哈希值。如果攻击者得到第一个文件,这个签名也将对攻击者构建的恶意软件有效

故MD5不应再用作软件完整性或代码签名目的的散列函数

猜你喜欢

转载自www.cnblogs.com/shaorj750/p/9033735.html