2016012097+范彦澜+作业5
(1)给出散列函数的具体应用。
答:1、消息认证
2、数字签名
3、产生单向口令文件
4、入侵检测和病毒检测
5、构建随机函数或用作伪随机数发生器
(2)结合生日攻击、以及2004、2005年王晓云教授有关MD5安全性和2017年Google公司SHA-1的安全性,说明散列函数的安全性以及目前安全散列函数的发展。
答:
1、密码学Hash函数H的安全性要求:输入长度可变、输出长度固定、效率、抗原像攻击(单向性)、抗第二原像攻击(抗弱碰撞性)、抗碰撞攻击(抗强碰撞性)、伪随机性。
前三个特性是使用散列函数实际应用的需求。第四个条件,抗原像攻击,防止攻击者能够回复秘密值。第五个性质抗弱碰撞性保证了对于给定的消息,不可能找到具有相同散列值的可替换消息。
满足前五个条件的Hash函数,称为弱Hash函数。满足前六个条件的,称为强Hash函数。
2、生日攻击
生日攻击利用“两个集合相交”问题的原理生成散列函数碰撞,达到目的。这种攻击没有利用Hash函数的结构和任何代数弱性质,只依赖于消息摘要的长度,即Hash值的长度。它利用Hash算法的代数结构及其所使用的分组密码的弱点来进行攻击。
理论上而言,若抗碰撞性一直为2^n,而强抗碰撞性因为生日攻击的原因会降至2^(n/2)时间。
由此可见,SHA-1已经越来越不安全了,2^80将不是一个无法逾越的计算时间。另外,因为计算机多为伪随机,因此现在SHA-1理论上所需的抗碰撞时间仅为2^55时间。
3、MD5安全性
MD5(RFC 1321)是 Rivest 于1991年对MD4的改进版本。它对输入仍以512位分组,其输出是4个32位字的级联,与 MD4 相同。MD5比MD4来得复杂,并且速度较之要慢一点,但更安全,在抗分析和抗差分方面表现更好,是计算机安全领域广泛使用的一种散列函数。
4、安全散列函数的发展
近年来,SHA是使用最广泛的Hash函数。事实上,由于其余的被广泛应用的Hash函数被发现存在安全性缺陷,从2005年以来SHA或许是这几年中仅存的Hash算法标准。
1995年公布SHA-1。
2002年,公布了SHA-2(SHA-256、SHA-384、SHA-512)。
2005年,NIST宣布了逐渐废除SHA-1的意图,计划到2010年逐步转而依赖SHA-2的其他版本。
2007年,NIST宣布公开征集新一代NIST的Hash函数标准,称其为SHA-3。
2008年,增加了SHA-224。
2014年,Chrome小组就宣布将逐渐淘汰对SHA-1的使用。Google希望自己针对SHA-1完成的实际攻击能够进一步巩固这一结论,让更多人意识到其已经不再安全可靠。
2017年2月23日,Google经过两年的研究,表示其已经成功破解了SHA-1加密。
(3)结合md5算法中的选择前缀碰撞以及第二个链接中的helloworld.exe和goodbyworld.exe两个可执行文件的md5消息摘要值和两个文件的执行结果说明md5算法在验证软件完整性时可能出现的问题。
答:1、不同的两个程序有可能有相同的MD5。
2、不能通过校验MD5来判断软件是否被入侵或者中病毒等。
3、无法确定文件的来源可靠性。
4、当MD5验证时间较长时,会增加安全风险,被攻击的几率会大大增加。