(1) 给出散列函数的具体应用。算法
Hash算法在信息安全方面的应用主要体如今如下的3个方面:
1)文件校验
咱们比较熟悉的校验算法有奇偶校验和CRC校验,这2种校验并无抗数据篡改的能力,它们必定程度上能检测并纠正数据传输中的信道误码,但却不能防止对数据的恶意破坏。
MD5 Hash算法的"数字指纹"特性,使它成为目前应用最普遍的一种文件完整性校验和(Checksum)算法,很多Unix系统有提供计算md5 checksum的命令。
2)数字签名
Hash 算法也是现代密码体系中的一个重要组成部分。因为非对称算法的运算速度较慢,因此在数字签名协议中,单向散列函数扮演了一个重要的角色。对 Hash 值,又称"数字摘要"进行数字签名,在统计上能够认为与对文件自己进行数字签名是等效的。并且这样的协议还有其余的优势。
3)鉴权协议
以下的鉴权协议又被称做"挑战--认证模式:在传输信道是可被侦听,但不可被篡改的状况下,这是一种简单而安全的方法。安全
(2) 结合生日攻击、以及200四、2005年王晓云教授有关MD5安全性和2017年google公司SHA-1的安全性,说明散列函数的安全性以及目前安全散列函数的发展。问题2的回答能够参考下面给出的第一个连接。函数
(1)散列函数的安全性google
一、已知哈希函数的输出,要求它的输入是困难的,即已知c=Hash(m),求m是困难的。这代表函数应该具备单向性。
二、已知m,计算Hash(m)是容易的。这代表函数应该具备快速性。
三、已知,构造m2使Hash(m2)=c1是困难的。这代表函数应该具备抗碰撞性。
四、c=Hash(m),c的每一比特都与m的每一比特有关,并有高度敏感性。即每改变m的一比特,都将对c产生明显影响。这代表函数应该具备雪崩性。
五、做为一种数字签名,还要求哈希函数除了信息m自身以外,应该基于发信方的秘密信息对信息m进行确认。
六、接受的输入m数据没有长度限制;对输入任何长度的m数据可以生成该输入报文固定长度的输出。md5
(2)安全散列函数的发展开发
三种最普遍使用的算法是MD5,SHA和RIPEMD; 然而全部算法都来自MD4的格式。近些年,应用最普遍的散列函数是SHA。因为其余每一种被普遍应用的散列函数都已经被证明存在这密码分析学中的缺陷,接着到2005年,SHA或许仅存的安全散列算法。SHA由美国国家标准与技术研究院(NIST)开发。1995年公布SHA-1;2002年,公布了SHA-2(SHA-25六、SHA-38四、SHA-512);2008年,增长了SHA-224。软件
3)结合md5算法中的选择前缀碰撞以及第二个连接中的helloworld.exe和goodbyworld.exe两个可执行文件的md5消息摘要值和两个文件的执行结果说明md5算法在验证软件完整性时可能出现的问题。信息安全
可能会感染病毒、植入木马/后门/人为篡改、传输故障。若是有第三方在验证软件完整性时截取软件代码,使用快速MD5碰撞生成器,在短期内伪造一份相同的MD5,并恶意篡改软件,那么安全性将会大大降低,当软件过大时,在验证过程当中所需的时间也会大大增长,对于第三方而言,攻击的成功几率也会增长。攻击者也不须要从源代码中构造出两个文件,彻底能够将第一个文件做为任何源的任何可执行文件,而且做为第二个文件生成第二个可执行文件做为恶意软件。而后,能够找到要附加到两个文件的字节块,使得获得的文件具备相同的MD5哈希值。攻击者只须要获取第一个文件就能够了。密码