信息安全作业5——散列函数的应用及其安全性+2016012008

作业题目:散列函数的应用及其安全性。内容要求:(1) 给出散列函数的具体应用。(2) 结合生日攻击、以及2004、2005年王晓云教授有关MD5安全性和2017年google公司SHA-1的安全性,说明散列函数的安全性以及目前安全散列函数的发展。问题2的回答可以结合下面给出的第一个链接。(3)结合md5算法中的选择前缀碰撞以及第二个链接中的helloworld.exe和goodbyworld.exe两个可执行文件的md5消息摘要值和两个文件的执行结果说明md5算法来验证软件完整性时可能出现的问题。

链接1:https://www.win.tue.nl/hashclash/

链接2:http://www.win.tue.nl/hashclash/SoftIntCodeSign/

(1)散列函数的具体应用

    1,数据校验/文件校验
       HASH函数有类似数据冗余校验类似的功能,但是它比简单的冗余校验碰撞的概率要小得多,顾而在现在密码学中总是用HASH来做关键数据的验证。

  我们比较熟悉的校验算法有奇偶校验和CRC校验,这2种校验并没有抗数据篡改的能力,它们一定程度上能检测并纠正数据传输中的信道误码,但却不能防止对数据的恶意破坏。MD5 Hash算法的"数字指纹"特性,使它成为目前应用最广泛的一种文件完整性校验和(Checksum)算法,不少Unix系统有提供计算md5 checksum的命令。
    2,数字签名
  Hash 算法也是现代密码体系中的一个重要组成部分。由于非对称算法的运算速度较慢,所以在数字签名协议中,单向散列函数扮演了一个重要的角色。对 Hash 值,又称"数字摘要"进行数字签名,在统计上可以认为与对文件本身进行数字签名是等效的。而且这样的协议还有其他的优点。

    3,碰撞约束以及有限固定摘要长度
       数字签名正是运用了这些特点来提高效率的。非对称加密算法速度较低,通过HASH处理可以使其仅仅作用于HASH摘要上,从而提高效率。
    4,可以运用HASH到随机数的生成和密码,salt值等的衍生中
       因为HASH算法能够最大限度的保证其唯一性,故而可以运用到关键数据的衍生中。

    5,鉴权协议
  如下的鉴权协议又被称作"挑战--认证模式:在传输信道是可被侦听,但不可被篡改的情况下,这是一种简单而安全的方法。

(2) 结合生日攻击、以及2004、2005年王晓云教授有关MD5安全性和2017年google公司SHA-1的安全性,说明散列函数的安全性以及目前安全散列函数的发展。问题2的回答可以结合下面给出的第一个链接。

散列函数的安全性:

   攻击散列函数的方法有:生日攻击、模差分攻击(比特追踪法);

   散列函数是安全的是指它具有:

          一致性:相同的输入产生相同的输出。

          随机性:消息摘要外观是随机的,以防被猜出源消息。

          唯一性:几乎不可能找到两个消息产生相同的消息摘要。

          单向性:即如果给出输出,则很难确定出输入消息。

    安全的Hash算法生成的Hash值有足够多的位数;

目前安全散列函数的发展:

    1.目前,已经出现了SHA-3,但是还是采用的是SHA-2。之所以全世界没有迁移到SHA-3,首要原因是世界上目前几乎没有任何软件或硬件支持该算法。

    2.前量子计算算法的Grover算法和Shor算法已经可以破译当今广泛使用的密码。Shor算法是一种量子计算机求解离散对数问题的算法,它能够攻破RSA、DSA和ECDSA密码,Grover算法没有Shor算法有效,它的作用相当于把密码的秘钥长度减少一半,密码技术人员可以通过加长秘钥长度来抵抗Grpver算法攻击。
    值得注意的是,国外的量子计算机发展迅速,已有像谷歌这样的著名公司将量子计算机投入使用,用于提高信息搜索效率和研究量子人工智能。如今的量子计算机还不足以通过执行Shor算法或Grover算法来大肆攻击现有密码。

   3.MD5 和 SHA1 是目前应用最广泛的Hash算法,而它们都是以 MD4 为基础设计的。MD4(RFC 1320)是 MIT 的Ronald L. Rivest在 1990 年设计的,MD 是 Message Digest 的缩写。它适用在32位字长的处理器上用高速软件实现--它是基于 32位操作数的位操作来实现的。

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

    Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。

MD5算法的应用:

 一致性验证:

    MD5的 典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。比如,在 Unix下有很多软件在下载的时候都有一个文件名相同,文件扩展名为.md5的文件,在这个文件中通常只有一行文本,大致结构如:MD5 (tanajiya.tar.gz) = 38b8c2c1093dd0fec383a9d9ac940515,这就是tanajiya.tar.gz文件的数字签名。

    数字签名:

   MD5的典型应用是对一段Message(字节串)产生fingerprint( 指纹),以防止被“篡改”。

   安全访问认证。

   因此,MD5算法在验证软件完整性的时候可能出现以下情况:

    1.两种不同格式的程序,其文件MD5是相同的;

    2.如果安全软件在系统升级后没有考虑到双签名验证的情况,很有可能按照类似“正常”的逻辑判定这个恶意样本伪造的签名有效;

猜你喜欢

转载自www.cnblogs.com/gancl2016012008/p/9007225.html
今日推荐