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