2016011998 张舒凯 散列函数的应用及其安全性
Posted canshou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2016011998 张舒凯 散列函数的应用及其安全性相关的知识,希望对你有一定的参考价值。
1.散列函数的具体应用
(1)消息认证:散列函数用于消息认证---消息认证是用来验证消息完整性的一种机制和服务,函数值称为消息摘要,确保收到的数据和发送时的一样(即没有修改、插入、删除或重放),发送者根据待发送的消息使用散列函数f计算一组散列值,再把散列函数值和消息发送出去;接受者收到后统一进行计算,并进行比对,具体方法:
1.使用对称密码算法加密消息和散列码;
2.使用对称密码算法只对散列码进行加密;
3.不使用加密算法,仅使用散列函数;
4.将整个消息和散列值加密。
(2)数字签名:散列函数用于数字签名,进行数字签名时使用用户的私钥加密消息的散列函数的计算值,这种方法应用更加广泛,常见方法:
a.使用发送方的私钥利用公钥密码算法对散列码进行加密;
b.先用发送方的私钥加密散列码,再用对称密码中的密钥对消息和公钥算法加密结果进行加密。
(3)散列函数可以用来产生单向口令文件
(4)散列函数可以用来检测入侵和病毒,通过将每个文件的散列值记录并计算验证是否被修改
(5)散列函数可以用来构建随机函数(PRF)或用于伪随机数发生器(PRNG)
(6)散列函数可以用于鉴权协议。
2.结合生日攻击以及2004、2005年王晓云教授有关MD5安全性和2017年Google公司SHA-1的安全性,说明散列函数的安全性以及目前安全散列函数的发展
(1) 生日攻击是一种通过 “生日悖论”模型来分析散列碰撞的安全性的方法。其基本原理为假定散列函数H有种可能输出(即输出为位),H作用于k个随机输入,则时至少有一个重复出现,发生碰撞现象。这种方法对散列函数的安全性提出了极大的挑战。
(2) MD5安全性:Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。然而,在2004年、2005年,王晓云教授提出的一种新方法已经成功攻破MD5,使用该方法只需要2^39次尝试就可以构造出一个MD5碰撞,因此,只需要一台普通的计算机在很短时间内就能破解MD5加密后的消息。
(3) SHA-1的安全性:近年来,安全散列函数(SHA)是使用最广泛的散列函数。然而在2017年已经被攻破,2002年,NIST发布了修订版FIPS 180-2,散列值长度依次为256、384和512位,即SHA-2算法。
(4)散列函数的安全性:其安全性由散列码长度决定,散列函数抵抗暴力攻击的强度完全依赖于算法生成的散列码长度。王晓云教授的碰撞算法提供了一种加速构造碰撞来破解MD5算法的方法,除此之外还有长度拓展攻击,暴力攻击,密码分析方法
(5)安全散列函数的发展:尽管散列函数方法比较优秀,但也不是万能的。常见的单向散列函数有MD和SHA两类。HAVAL为MD系列最新的版本,SHA-1在1995年出现,但目前已经被攻破,因此更加安全,但由于经济原因,应用SHA-1算法加密的https页面虽然并不安全,但无法立刻被SHA-2取代。
3.结合MD5中的选择前缀碰撞及链接中的helloworld.exe和goodbyworld.exe两个可执行文件的MD5消息摘要值和两个文件的执行结果说明MD5算法来验证软件完整性时可能出现的问题:
(1)MD5算法:它的全称是message-digest algorithm 5(信息-摘要算法),经MD2、MD3和MD4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。
(2)MD5算法的选择前缀碰撞:如果两个文件存在任何碰撞(冲突)的地方,发生前缀碰撞后,这两个文件完全相同,即得到相同的MD5。第二个链接中的helloworld.exe和goodbyworld.exe两个可执行文件的MD5消息摘要值相同,即文件内容不同,但是MD5相同,这说明MD5算法存在着不安全性。正如第二问中谈到,利用王晓云教授的方法,MD5算法已经被彻底攻破。
(3)MD5算法来验证软件完整性时可能出现的问题:
<1>无法保证文件的来源可靠性,即不能确认接收方接收到的文件与发送方
的发出文件一致;
<2>无法保证文件的完整性和正确性,即文件可能被篡改或损坏;
<3>当验证效率较低时,会出现验证时间过长,给中间攻击者的攻击行为提供足够的攻击时间而增加安全风险。
以上是关于2016011998 张舒凯 散列函数的应用及其安全性的主要内容,如果未能解决你的问题,请参考以下文章