2016012100+邓茜茜+散列函数的应用及其安全性

Posted dengqq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2016012100+邓茜茜+散列函数的应用及其安全性相关的知识,希望对你有一定的参考价值。

作业题目:散列函数的应用及其安全性。内容要求:(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) 给出散列函数的具体应用

散列函数的具体应用一
散列函数的具体应用二

 散列算法在信息安全方面的应用主要体现在以下的3个方面:

 

1.文件校验

 

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

 

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

 

2.数字签名

 

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

 

3.鉴权协议

 

如下的鉴权协议又被称作挑战--认证模式:在传输信道是可被侦听,但不可被篡改的情况下,这是一种简单而安全的方法。以上就是一些关于hash以及其相关的一些基本预备知识。
 
(2) 结合生日攻击、以及2004、2005年王晓云教授有关MD5安全性和2017年google公司SHA-1的安全性,说明散列函数的安全性以及目前安全散列函数的发展。问题2的回答可以参考下面给出的第一个链接。

 1.生日攻击

生日攻击是利用“两个集合相交”问题的原理生成散列函数碰撞,达到目的的攻击。生日攻击方法没有利用Hash函数的结构和任何代数弱性质,它只依赖于消息摘要的长度,即Hash值的长度。生日攻击对Hash函数提出了一个必要的安全条件,即消息摘要必须足够长。生日攻击隐含着消息摘要的长度的一个下界。一个40比特长的消息摘要是很不安全的,因为仅仅用2^20(大约一百万)次随机Hash可至少以1/2的概率找到一个碰撞。为了抵抗生日攻击,通常建议消息摘要的长度至少应取为128比特,此时生日攻击需要约2^64次Hash。安全的Hash标准的输出长度选为160比特是出于这种考虑。

2.MD5安全性

从技术的角度讲,MD5很安全,因为无法解密。王晓云教授的成果集中在加速构造碰撞对。原来理论上构造出一个MD5碰撞对需要2^64次尝试,而现在只需要2^39次,其算法大大加速了这一过程。它的价值在于在此算法基础上衍生出来的一系列MD5的算法,能够在部分场景下,构造出一个有意义的伪造信息,并且MD5值保持不变。所以,单单看这个算法本身就说MD5不安全,有些夸大其实。但是,在解释长度拓展攻击出现之后,MD5的安全性就有些令人担忧了。解释长度拓展攻击,就是在已知输入M的长度(注意是长度)和其MD5值的情况下,可以在原文M后面附加任意内容,同时能够推算出新的MD5。在某些将MD5作为签名手段的系统中,攻击者可以在原文后面随意添加内容同时能够提供正确的MD5值。存在这一问题的原因是算法使用了Merkle–Damg?rd construction进行数据的压缩,不止MD5,很多流行的算法都存在这个问题,比如SHA-1。

3.SHA-1的安全性

SHA-1 是单项散列函数,广泛地应用在信息安全和数字签名等各个领域。SHA-1算法很容易受到相同冲突的攻击,这被称为Freestart 冲突。当相同的散列值(指纹)产生了两个不同的信息时,就可以被利用并伪造电子签名,从而使攻击者破解使用SHA-1算法编码的通信。

(3)结合md5算法中的选择前缀碰撞以及第二个链接中的helloworld.exe和goodbyworld.exe两个可执行文件的md5消息摘要值和两个文件的执行结果说明md5算法在验证软件完整性时可能出现的问题。

 

通过校验md5验证软件完整性

1.选择前缀碰撞

如果我们使用选择前缀碰撞法来攻击md算法,只需要用很少的时间就能生成 md5 相同而内容不同的文件的。选择碰撞攻击可以让两个软件的md5一致,却又都能正常运行,并且可以做完全不同的事情。

2.两个可执行文件的md5消息摘要值和两个可执行文件的执行结果

通过执行helloworld.exe和goodbyworld.exe这两个文件,得到这两个文件的md5消息摘要值是一样的,但是两个文件的执行结果(在屏幕上打印得到的字符)是不一样的摘要得到的消息是不完整的。所以通过比较md5消息摘要值不能确定是否是一个文件。消息摘要值不唯一,一个原始数据,只对应一个md5消息摘要值;但是一个md5消息摘要值,可能对应多个原始数据。

 

 

 

 

以上是关于2016012100+邓茜茜+散列函数的应用及其安全性的主要内容,如果未能解决你的问题,请参考以下文章

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

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

散列函数及其应用

2016012026 管凌波 散列函数的应用及其安全性

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

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