zoukankan      html  css  js  c++  java
  • 信息安全作业5 有关散列函数安全性的知识扩展

     

    1、散列函数的具体应用

    Hash算法在信息安全方面的应用主要体现在以下的5个方面:

    (1)消息认证
          可以用来验证信息的来源是真实的,而不是伪造的,此为消息源认证。也可以验证消息的完整性,即验证信息在传送或存储过程中是否被篡改。

    (2)数字签名
          Hash 算法也是现代密码体系中的一个重要组成部分。由于非对称算法的运算速度较慢,所以在数字签名协议中,单向散列函数扮演了一个重要的角色。对Hash 值,又称"数字摘要"进行数字签名,在统计上可以认为与对文件本身进行数字签名是等效的。而且这样的协议还有其他的优点。

    (3)口令的安全性

    (4)文件的完整性

          譬如可信计算、文件病毒的检验、网页防篡改、黑白名单等许多应用。

    (5)密码协议的应用

          譬如零知识证明、比特承诺、投掷硬币、电子商务的安全协议等许多应用。

     


     

    2、散列函数的安全性以及目前安全散列函数的发展

    hash函数安全要满足三条性质:
    1.单向性(原像稳固性):给定一个消息摘要y,很难找到符合h(x)=y的消息x。
    2.第二原像稳固性:给定x,很难找到一个x’,满足h(x)=h(x’)。
    3.碰撞稳固性:很难找到满足h(x)=h(x’)的二元组(x,x’)。
    这其中解决第三个问题碰撞问题的难度是最小的,目前对md5、sha1的攻击也已经成功。

     

    生日悖论:

          如果一个房间里有23个或23个以上的人,那么至少有两个人的生日相同的概率要大于50%。对于60人以上,这种概率要大于99%。

          散列算法都是把数量为无限的数据、字符串、文件映射成有限长的hash,因此这个映射一定不是单射,这样的hash函数肯定存在两个数据M1,M2,使得HASH(M1) = HASH(M2)。根据生日悖论,如果哈希值的位数过短,很容易可以找到一组(两个)哈希值相同的输入,这就是一种最常用的生日攻击的应用。

    主动碰撞:

          王小云实现MD5碰撞:根据MD5这种Hash算法的特点,他们是任意长度的字符串变成固定长度的摘要信息,所以就有可能发生一个问题:不同的字符串在理论上是有可能产生相同的摘要信息。

          王小云所谓的碰撞法,碰撞的就是不同的字符串所产生的摘要信息是一样的那些字符串。王教授证明了MD5等Hash算法产生的摘要信息规则是可以在比较短时间内被破解的。

          2017年google宣布实现SHA-1碰撞:在实际中,可以构造两个SHA-1结果相同的PDF文件。这使得第二个文件SHA-1后的数字签名可以通过第一个文件SHA-1后数字签名的验证。

     

    安全散列函数的发展:

    1、MD4

          1990年Ronald L. Rivest设计,通过三圈的操作将任意长度的消息变换成128位的哈希值

    2、MD5

          Rivest于1991年对MD4的改进版本。运用了四轮变换,并且每轮加上前一轮的结果

    3、HAVAL

          为MD5的改进版本。轮数可以为3、4或5,输出长度分别为128、160、192或224位

    4、SHA-1

          由NIST开发,1993年发表。输入最大长度为2^64位的数据,输出160位的消息摘要

    5、SHA-256

          输出由160位扩大到256位,迭代次数由80次增加到128次

    6、SHA-384

          输出扩大到384位,迭代次数增加到192次

    7、SHA-512

          输出扩大到512位,迭代次数增加到256次

     


     

    3、MD5算法验证软件完整性时可能出现的问题

          MD5算法是一种摘要算法,它可以从多个字节组成的串中计算出由32个字节构成的“特征串”。对于超过32字节的串来说,MD5计算得出的值必然是其一个子集,所以必然存在两个(或更多)不同的串能够得出相同MD5值的情况,这种情况就叫做MD5碰撞。

          几位密码学家使用 “构造前缀碰撞法”(chosen-prefix collisions)来进行攻击(是王小云所使用的攻击方法的改进版本),他们所使用的计算机是一台Sony PS3,且仅用了不到两天。如果仅仅是想要生成MD5 相同而内容不同的文件的话,在任何主流配置的电脑上用几秒钟就可以完成。

          他们的结论:MD5 算法不应再被用于任何软件完整性检查或代码签名的用途。

          不仅仅是老师给出链接中的例子,这两张截然不同的图片却有相同的MD5:

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

    1、文件篡改

    2、木马病毒植入

    3、传输错误、中断

  • 相关阅读:
    图片下落效果
    处理springmvc的post和get提交参数乱码问题
    nginx 安装
    xml学习总结(二)
    xml学习总结(一)
    psp系统需求分析
    MySQL Workbench “Error Code: 1175”
    mysql 连接两列
    php UNIX时间戳转换为指定日期格式
    drupal错误: Maximum execution time of 240 seconds exceeded
  • 原文地址:https://www.cnblogs.com/huyifeng/p/9015263.html
Copyright © 2011-2022 走看看