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

要求:1. 给出散列函数的具体应用

    2.结合生日攻击以及20042005年王晓云教授有关MD5安全性和2017Google公司SHA-1的安全性,说明散列函数的安全性以及目前安全散列函数的发展,参考资料:https://www.win.tue.nl/hashclash/

    3.结合MD5算法中的选择前缀碰撞以及参考链接中的helloworld.exegoodbyworld.exe两个可执行文件的MD5消息摘要值和两个文件的执行结果说明MD5算法来验证软件完整性时可能出现的问题,参考链接:https://www.win.tue.nl/hashclash/SoftIntCodeSign/

 

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

   (1)消息认证:散列函数用于消息认证,函数值称为消息摘要,确保收到的数据和发送时的一样(即没有修改、插入、删除或重放),常见方法:

      a.使用对称密码算法E加密消息和散列码;

      b.使用对称密码算法E只对散列码进行加密;

      c.不使用加密算法,仅使用散列函数;

      d.将整个消息和散列值加密。

   (2)数字签名:散列函数用于数字签名,常见方法:

      a.使用发送方的私钥利用公钥密码算法对散列码进行加密;

      b.先用发送方的私钥加密散列码,再用对称密码中的密钥对消息和公钥算法加密结果进行加密。

  (3)产生单向口令文件

  (4)检测入侵和病毒

  (5)构建随机函数(PRF)或用于伪随机数发生器(PRNG

 

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

(1) 生日攻击:通过初等概率课程的“生日悖论”模型来分析散列碰撞的安全性。

       生日攻击的基本原理为假定散列函数H种可能输出(即输出为位),H作用于k个随机输入,则时至少有一个重复出现,发生碰撞现象。

(2) MD5安全性:Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。曾有人花费1000万美元设计一台专门用来搜索MD5算法碰撞的机器,平均需要24天可以找到一个碰撞。显然,搜索效率不尽人意。2004年、2005年王晓云教授首次公布了提出一种寻找MD5碰撞的新方法,目前利用该方法用普通微机几分钟内即可找到MD5的碰撞,MD5已经被彻底攻破。

(3) SHA-1的安全性:近年来,安全散列函数(SHA)是使用最广泛的散列函数。

事实上,由于其余的散列函数被发现存在安全性缺陷,从2005年以来SHA或许是这几年中仅存的散列算法标准。SHA-1产生160位的散列值,2002年,NIST发布了修订版FIPS 180-2,散列值长度依次为256384512位,这些算法被称为SHA-2

 散列函数的安全性:其安全性有散列码长度决定,散列函数抵抗暴力攻击的强

度完全依赖于算法生成的散列码长度。

  1. 输入长度可变;
  2. 输入长度固定;
  3. 效率;
  4. 抗原像攻击(单向性);
  5. 抗第二原像攻击(抗弱碰撞性);
  6. 抗碰撞攻击(抗强碰撞性);
  7. 为随机性;

       若一个散列函数满足前5个要求,称为弱散列函数;满足前6个性质,称为强散列函数。

安全散列函数的发展:有两种方法可以攻击安全散列函数:密码分析法和暴力攻击法。散列函数抵抗暴力攻击的强度完全依赖于算法生成的散列码长度。单向散列函数或者安全散列函数之所以重要,不仅在于消息认证(消息摘要,数据指纹),还有数字签名(加强版的消息认证)和验证数据的完整性。常见的单向散列函数有MD5SHA

 

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

(1)MD5算法:它的全称是message-digest algorithm 5(信息-摘要算法),经MD2MD3MD4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。

(2)MD5算法的选择前缀碰撞:如果两个文件存在任何碰撞(冲突)的地方,发生前缀碰撞后,这两个文件完全相同,即得到相同的MD5。第二个链接中的helloworld.exegoodbyworld.exe两个可执行文件的MD5消息摘要值相同,即文件内容不同,但是MD5相同,这说明MD5算法存在着不安全性。正如第二问中谈到,利用王晓云教授的方法,MD5算法已经被彻底攻破。

(3)MD5算法来验证软件完整性时可能出现的问题:

<1>无法保证文件的来源可靠性,即不能确认接收方接收到的文件与发送方

的发出文件一致;

<2>无法保证文件的完整性和正确性,即文件可能被篡改或损坏;

<3>当验证效率较低时,会出现验证时间过长,给中间攻击者的攻击行为提供足够的攻击时间而增加安全风险。

原文地址:https://www.cnblogs.com/symx/p/9022149.html