2016012086+杨岚青+散列函数应用及安全性

1、给出散列函数的具体应用

(1)消息认证,防止系统遭到主动攻击。有两个方面的目的:

  a.验证消息的发送者是真的。

  b.验证数据完整性,消息在传输、存储过程中未被篡改、重放或延迟,由于雪崩性,稍有改动一比对就会发现。

(2)产生数字签名:计算H(m),然后私钥加密,确认信息发布者,提供身份认证和不可抵赖性。

(3)密钥推导:天生单向性,密钥导出函数KDF),用于将密钥扩展到更长的密钥或获得所需格式的密钥。

(4)伪随机数生成:通常使用TRNG来产生种子。不知道种子情况下,不管知道序列多少位,都无法预测下一位,从产生的任何值都不能推断出种子值。

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

散列函数的安全性

  (1)先说一下生日攻击,生日攻击法可用于攻击任何Hah算法,只依赖于Hash值的长度。生日悖论:在一个教室里只要有23或23以上的人数,至少有两个人生日相同的概率就大于等于0.5;在一个教室中,找一个生日与某人生日相同的概率不小于0.5时,只需要有学生183人。在碰撞中,使用生日攻击,当进行2^(n/2)次的选择明文攻击下成功的概率将超过0.63。所以生日攻击对散列函数安全性是非常大的,生日攻击对散列函数的安全提出一个必要条件,消息一定要够长。统计结果表明,当Hash值长度为128比特时,任意两个报文M1、M2具有相同hash值的概率接近零。标准安全hash值为160比特。

  (2)MD5。先了解了一下MD5的加密过程

  1.消息填充:将消息长度填充至差64位就是512的倍数。那64位是表示填充长度的,是先从低位表示填充长度的。

  2.填充后的消息是512的倍数,然后按512分组,每组又是16个32位长的字。

  3.初始化中间结果:128位的缓存区来存储中间结果,对其初始化4个32位长的寄存器分别存放四个固定的整数。

  4.迭代压缩:每个分组经压缩函数HMD5处理。

  5.    输出:最后一个HMD5的输出即为消息摘要。

  王小云教授的成就是找到了MD5迅速碰撞的方法,这是个巨大的进步,但距离实用价值还有很大距离。哈希函数是不可逆的,从MD5哈希值反向推出原始信息是不可能的,王教授只是找到了快速碰撞的方法。就是根据MD5哈希值快速找到另外一个报文也是这个哈希值,但是理论上一个MD5哈希值对应无穷多的原始报文,目前想根据MD5哈希值对原始报文信息进行篡改还是不可能的。

  (3)SHA-1。与前身MD5相比,SHA-1的输出长度更长(MD5输出长度为128bit,而SHA-1的输出长度为160bit),这也意味着出现哈希碰撞的概率更低。同时,SHA-1的安全性似乎也比MD5更好。王小云教授所在的团队提出了一个一种寻找SHA-1碰撞的,相对快速的攻击方法,这标志着SHA-1存在漏洞。

目前安全散列函数的发展

  2004年8月中国密码学家王小云教授等首次公布了提出一种寻找MD5碰撞的新方法。目前利用该方法用普通微机几分钟内即可找到MD5的碰撞,MD5已经被彻底攻破。MD5已经受了重伤;它的应用就要淘汰。SHA-1仍然活着,但也不会很长。著名计算机公司SUN的LINUX专家Val Henson则说:“以前我们说"SHA-1可以放心用,其他的不是不安全就是未知", 现在我们只能这么总结了:"SHA-1不安全,其他的都完了"。近些年,应用最广泛的散列函数是SHA。

  ● 1995年公布SHA-1
   ● 2002年,公布了SHA-2(SHA-256、SHA-384、SHA-512)
   ● 2008年,增加了SHA-224

  针对王小云教授等破译的以MD5为代表的Hash函数算法的报告,美国国家技术与标准局(NIST)于2004年8月24日发表专门评论,评论的主要内容为:“在最近的国际密码学会议(Crypto 2004)上,研究人员宣布他们发现了破解数种HASH算法的方法,其中包括MD4,MD5,HAVAL-128,RIPEMD还有 SHA-0。分析表明,于1994年替代SHA-0成为联邦信息处理标准的SHA-1的减弱条件的变种算法能够被破解;但完整的SHA-1并没有被破解,也没有找到SHA-1的碰撞。研究结果说明SHA-1的安全性暂时没有问题,但随着技术的发展,技术与标准局计划在2010年之前逐步淘汰SHA-1,换用其他更长更安全的算法(如SHA-224、SHA-256、SHA-384和SHA-512)来替代。”

  现在Google,facebook,微软,苹果等早已经换成了暂时安全的sha-256,sha-512等算法,属于sha-2系列,发布快十五年了,应该很快就可以看到国际主流的网站更换sha-3算法了

3、md5算法来验证软件完整性时可能出现的问题

  (1)对于第二个链接中的helloworld.exe和goodbyworld.exe两个可执行文件,会打印出不同的字符,但它们的MD5是一样的。密码学家曾使用“构造前缀碰撞法”来进行攻击,用了不到两天,得出结论:MD5算法不应再用于任何软件完整性检查或代码签名的用途!现在,如果仅仅是想要生成 MD5 相同而内容不同的文件的话,在任何主流配置的电脑上用几秒钟就可以完成了。
这几位密码学家编写的“快速 MD5 碰撞生成器”:

http://www.win.tue.nl/hashclash/fastcoll_v1.0.0.5.exe.zip
源代码:http://www.win.tue.nl/hashclash/fastcoll_v1.0.0.5_source.zip

  (2)签名算法受到威胁。王小云教授发现,可以很快的找到MD5的“碰撞”,就是两个文件可以产生相同的“指纹”。这意味着,当你在网络上使用电子签名签署一份合同后,还可能找到另外一份具有相同签名不同内容的合同,这样两份合同的真伪性便无从辨别。王小云教授的研究成果证实了利用MD5算法的碰撞可以严重威胁信息系统安全,这一发现使目前电子签名的法律效力和技术体系受到威胁。

原文地址:https://www.cnblogs.com/yanglqa/p/9032289.html