作业5散列函数安全性的知识扩展+2016012060+王政扬

一.散列函数的具体应用

(1)数据校验
    HASH函数有类似数据冗余校验类似的功能,但是它比简单的冗余校验碰撞的概率要小得多,顾而在现在密码学中总是用HASH来做关键数据的验证。
 (2)单向性的运用
    利用HASH函数的这个特点,我们能够实现口令,密码等安全数据的安全存储。密码等很多关键数据我们需要在数据库中存储,但是在实际运用的过程中,只是作比较操作,顾而我们可以比较HASH结果。这一点相信在银行等系统中有所运用,否则我们真的要睡不着觉了:)
  (3)碰撞约束以及有限固定摘要长度
    数字签名正是运用了这些特点来提高效率的。我们知道非对称加密算法速度较低,通过HASH处理我们可以使其仅仅作用于HASH摘要上,从而提高效率。
  (4)可以运用HASH到随机数的生成和密码,salt值等的衍生中
    因为HASH算法能够最大限度的保证其唯一性,故而可以运用到关键数据的衍生中(从一个随机的种子数产生,并且不暴露种子本身秘密)。

二.散列函数的安全性以及目前安全散列函数的发展

(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。

生日攻击:把人看成映射的输入,他的生日看成输出。那么只要远少于366次输入,就可以有很高的概率发生如下事件:这些人里至少有两个人生日相同,也就是发生了哈希碰撞。使用安全的Hash算法,安全的Hash算法生成的Hash值有足够多的位数,攻击者在寻找两个具有相同Hash值的文件时就会非常困难;在为文件签名之前,先向文件添加一个随机值,然后计算Hash值,再将文件、签名和随机值一起发送给接收者,攻击者很难找出具有特定Hash值的伪造文件。在为文件签名之前,对消息或文件做少许改动,攻击者很难找出具有特定Hash值的伪造文件。

Hash函数与数字签名(数字手印): HASH函数,又称杂凑函数,是在信息安全领域有广泛和重要应用的密码算法,它有一种类似于指纹的应用。在网络安全协议中,杂凑函数用来处理电子签名,将冗长的签名文件压缩为一段独特的数字信息,像指纹鉴别身份一样保证原来数字签名文件的合法性和安全性。在前面提到的SHA-1和MD5都是目前最常用的杂凑函数。经过这些算法的处理,原始信息即使只更动一个字母,对应的压缩信息也会变为截然不同的“指纹”,这就保证了经过处理信息的唯一性。为电子商务等提供了数字认证的可能性。
    安全的杂凑函数在设计时必须满足两个要求:其一是寻找两个输入得到相同的输出值在计算上是不可行的,这就是我们通常所说的抗碰撞的;其二是找一个输入,能得到给定的输出在计算上是不可行的,即不可从结果推导出它的初始状态。现在使用的重要计算机安全协议,如SSL,PGP都用杂凑函数来进行签名,一旦找到两个文件可以产生相同的压缩值,就可以伪造签名,给网络安全领域带来巨大隐患。 MD5就是这样一个在国内外有着广泛的应用的杂凑函数算法,它曾一度被认为是非常安全的。然而,王小云教授发现,可以很快的找到MD5的“碰撞”,就是两个文件可以产生相同的“指纹”。这意味着,当你在网络上使用电子签名签署一份合同后,还可能找到另外一份具有相同签名但内容迥异的合同,这样两份合同的真伪性便无从辨别。王小云教授的研究成果证实了利用MD5算法的碰撞可以严重威胁信息系统安全,这一发现使目前电子签名的法律效力和技术体系受到挑战。

SHA-1,安全哈希算法1,一个非常流行的加密散列函数设计于1995年由美国国家安全局,正式死亡后,一组研究人员从谷歌和CWI研究所在阿姆斯特丹宣布今天提交了第一次成功的SHA-1碰撞攻击 。SHA-1是1995年由国家安全局(NSA)设计的,作为数字签名算法的一部分。 与其他散列一样,SHA-1还将任何输入消息转换为长字符串的数字和字母,用作该特定消息的加密指纹。当针对两个不同的消息产生相同的散列值(指纹)时,出现冲突攻击,然后可以利用它们来伪造数字签名,从而允许攻击者中断使用SHA-1编码的通信。解释在技术上是棘手的,但你可以认为它是攻击者手术改变他们的指纹,以匹配你的,然后使用它来解锁你的智能手机。研究人员已经警告了十多年前SHA1缺乏安全性,但散列函数仍然被广泛使用。

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

一致性验证 :MD5的典型应用是对一段文本信息产生信息摘要,以防止被篡改。常常在某些软件下载站点的某软件信息中看到其MD5值,它的作用就在于我们可以在下载该软件后,对下载回来的文件用专门的软件(如Windows MD5 Check等)做一次MD5校验,以确保我们获得的文件与该站点提供的文件为同一文件。

数字证书:如果有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。
安全访问认证:在Unix系统中用户的密码是以MD5(或其它类似的算法)经Hash运算后存储在文件系统中。当用户登录的时候,系统把用户输入的密码进行MD5 Hash运算,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。

如果任何人对文件做了任何改动,其MD5值也就是对应的“数字指纹”都会发生变化。 我们常常在某些软件下载站点的某软件信息中看到其MD5值,它的作用就在于我们可以在下载该软件后,对下载回来的文件用专门的软件(如Windows MD5 Check等)做一次MD5校验,以确保我们获得的文件与该站点提供的文件为同一文件。利用MD5算法来进行文件校验的方案被大量应用到软件下载站、论坛数据库、系统文件安全等方面。 笔者上面提到的例子只是MD5的一个基本应用,实际上MD5还被用于加密解密技术上,如Unix、各类BSD系统登录密码(在MD5诞生前采用的是DES加密算法,后因MD5安全性更高,DES被淘汰)、通信信息加密、数字签名等诸多方面。 MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串。

猜你喜欢

转载自www.cnblogs.com/wzylt/p/9019463.html