散列函数的应用及其安全性
散列函数的应用及其安全性
王璐瑶 2016012095
一、给出散列函数的具体应用
1、消息的完整性认证
文件的所有者为了保证一个文件的完整性,通常需要进行文件的完整胜验证。通常的做法是:文件的所有者用Hash算法计算出文件的Hash值,自己保存这个Hash值的一份拷贝,然后他可以把文件存放在一个公开的地方。每当他需要验迁文件的完整性时(如他需要使用这个文件时),他就用同一个Hash算法计算存储文件的Hash值.和原来他自己保存的Hash值相比较,如果相等,则文件是完整的,没有被改动;否则文件已经被改动。

a) 使用对称密码E加密消息和Hash码,由于只有A和B共享密钥K,所以消息必然发自A处,且可通过验证Hash码证明数据在传输过程中未被更改。
b) 使用对称密码只对Hash码加密。由于明文无需加密性的应用,这种方案大大减少了加密操作的负担。
c) 不使用加密算法,仅使用Hash函数实现消息验证。该方案中,通信双方共享相同的秘密值S,发送方A将消息M和秘密值S串联后计算其Hash值,并将得到的Hash值附在消息M后发送。因为接收方B同时掌握S值,所以能够重新计算该Hash值进行验证。
d) 在方案c的基础上将整个消息和Hash值加密,以提供保密性。
处于成本和速度方面的考虑,人们越来越对那些不包含加密函数的方法感兴趣,因此b和c方案更受青睐,不过如果对整个消息有加密型要求,则a和d仍具有实际意义。
2、数字签名技术
数字签名是一种身份确认的方式,传统签名用手写识别,数字鉴名用密码确认。两者在交往中的作用并无区别,但数字签名具有安全 快速 高效的特点。

a) 使用发送方的私钥利用公钥密码算法对Hash码进行加密。这种方法也可提供认证;由于只有发送方可以产生加密后的Hash码,所以这种方法也提供了数字签名。
b) 若既希望保证保密性又希望有数字签名,则先用发送方的私钥对Hash码加密,再用对称密码中的密钥对象消息和公钥算法加密结果进行加密,这种技术比较常用。
3、其他应用
对于Hash函数,通常还被用于产生单向口令文件。
Hash函数还能用于入侵检测和病毒检测。将每个文件的Hash值H(F)存储在安全系统中(如CD-R),随后就能通过重新计算H(F)来判断文件是否被修改过。入侵者只能够改变F,而不能改变H(F)
二、结合生日攻击、以及2004、2005年王晓云教授有关MD5安全性和2017年google公司SHA-1的安全性,说明散列函数的安全性以及目前安全散列函数的发展。
1、散列函数安全性
有两种方法可以攻击安全散列函数:密码分析法和暴力攻击法。散列函数抵抗暴力攻击的强度完全依赖于算法生成的散列码长度。
2004年8月中国密码学家王小云教授等首次公布了提出一种寻找MD5碰撞的新方法。目前利用该方法用普通微机几分钟内即可找到MD5的碰撞。MD5已经被彻底攻破。
在2017年,Google公司宣布实现了对SHA-1算法的攻击。SHA-1算法宣告攻破。不过需要注意的是,这次SHA-1算法破解的计算量相当于单个CPU计算6500年和单个GPU计算110年,因此就目前的PC硬件来看,依靠一台电脑完成破解是不现实的。然而密码学家认为,如果利用云计算技术来破解的话,这件事情将简单很多,可能只需要17万美元的预算即可完成,因此尽快改用安全性更高的SHA-2或SHA-3算法才是正确的做法。
2、目前安全散列函数的发展
2005年MD5的攻破似乎宣告了SHA或许为仅存的安全散列算法。
SHA-0:SHA由美国标准与技术研究所(NIST)设计并于1993年发表,该版本称为SHA-0,由于很快被发现存在安全隐患,
SHA-1:1995年发布了SHA-1。
SHA-2:2002年,NIST分别发布了SHA-256、SHA-384、SHA-512,这些算法统称SHA-2。2008年又新增了SHA-224。
由于2017年SHA-1算法的攻破,目前已经有多家科技企业宣布逐步放弃SHA-1算法,微软已经确定会放弃在Edge以及IE浏览器上继续使用SHA-1算法的TLS证书,Google的Chrome在56版之后也会提示SHA-1加密的HTTPS网页并不安全,Mozilla则确定在今年7月开始停止SHA-1的支持。目前SHA-2各版本已成为主流。
三、结合md5算法中的选择前缀碰撞以及第二个链接中的helloworld.exe和goodbyworld.exe两个可执行文件的md5消息摘要值和两个文件的执行结果说明md5算法来验证软件完整性时可能出现的问题。
理论上看,正如其他散列算法一样,一个MD5哈希值可对应无限个文件,但从现实的角度看,两个不同的文件几乎不可能有相同的MD5哈希值,除非其创建便是刻意为之。一般来说,任何对一个文件的非恶意变更都会导致其MD5哈希值改变
但由文件中
HelloWorld.exe
GoodbyeWorld.exe
这两个程序会在屏幕上打印出不同的字符,但是它们的MD5都是一致的。
也有几位密码学家通过一台 Sony PS3使用构造前缀碰撞法”(chosen-prefix collisions)在两天之内攻破MD5
因此MD5 算法不应再被用于任何软件完整性检查或代码签名的用途。
(1)两个不同的程序,MD5可能是相同的。
(2)不能通过校验MD5知道软件是否被侵入。
(3)易被攻破而使安全性大大下降

浙公网安备 33010602011771号