zoukankan      html  css  js  c++  java
  • 2016012091 颜超一 散列函数的应用及其安全性

    一、给出散列函数的具体应用

    (1)错误校正

      使用一个散列函数可以很直观的检测出数据在传输时发生的错误。在数据的发送方,对将要发送的数据应用散列函数,并将计算的结果同原始数据一同发送。在数据的接收方,同样的散列函数被再一次应用到接收到的数据上,如果两次散列函数计算出来的结果不一致,那么就说明数据在传输的过程中某些地方有错误了。这就叫做冗余效验。

    (2)语音识别

      从一个已知列表中匹配一个MP3文件可以使用传统的散列函数——例如MD5,但是这种方案会对时间平移、CD读取错误、不同的音频压缩算法或者音量调整的实现机制等情况非常敏感。

    (3)信息安全领域(三个方面)

      1)文件效验

        MD5 Hash算法的"数字指纹"特性,使它成为目前应用最广泛的一种文件完整性校验和(Checksum)算法,此算法具有抗数据篡改的能力

      2)数字签名

         由于非对称算法的运算速度较慢,所以在数字签名协议中,单向散列函数扮演了一个重要的角色。对 Hash 值,又称"数字摘要"进行数字签名。

      3) 鉴权协议

        挑战--认证模式:在传输信道是可被侦听,但不可被篡改的情况下,这是一种简单而安全的方法。

    二、结合生日攻击、以及2004、2005年王晓云教授有关MD5安全性和2017年google公司SHA-1的安全性,说明散列函数的安全性以及目前安全散列函数的发展。

    (1)简述生日攻击

        利用“两个集合相交”问题的原理生成散列函数碰撞,达到目的的攻击称为生日攻击,也称为平方根攻击。

    (2)MD5和SHA-1的破解

      2005年美国密码会议上,王小云教授给出了计算MD5等散列算法的碰撞的方法,该方法可以很快的找到MD5的“碰撞”,就是两个文件可以产生相同的“指纹”。 2017年2月23日,谷歌在blog上宣布实现了SHA-1的碰撞。

    (3)对于散列函数攻击的方式

       1穷举攻击(又称暴力攻击)

        暴力攻击的强度完全依赖于算法生成的散列码长度。可以对任何类型的散列函数进行攻击,典型代表是“生日攻击”。下面贴出了了生日悖论的描述。

     

      2)密码分析法

        依赖于对散列函数的结构和代数性质分析,采用针对散列函数弱性质的方法进行攻击。这类攻击方法有中间相遇攻击、差分分析等。

    (4)安全散列函数的发展

     

      目前使用最多的哈希函数有MD(Message-Digest Algorithm)系列(MD4、MD5、HAVAL、RIPEMD)和SHA系列(SHA-1、SHA-256)

      1)MD4

      1990年Ronald L. Rivest设计,通过3圈的操作将任意长度的消息变换成128位的哈希值。MD4算法的前两圈已被Dobbertin等人攻破,证明MD4算法是不安全的,但整个算法并没有被攻破过。

       2)MD5

      MD5(RFC 1321)是 Rivest 于1991年对MD4的改进版本。它对输入仍以512位分组,经过一系列处理之后,其输出是4个32位字的级联,与 MD4 相同。MD5算法被王小云证明是可攻破的,因此也已经不安全了。

       3)HAVAL

    HAVAL是MD5的改进版本,其轮数可以是3、4或5(每轮16步),输出长度分别为128、160、192或224位。HAVAL用高非线性的7-变量函数取代了MD5的简单非线性函数。

     

      4)SHA1

      SHA由美国国家标准技术研究所NIST开发,与1993年发表,SHA-1是基于MD4设计的。输入最大长度为2^64位的数据,输出160位的消息摘要,同样以512位数据块进行处理。

      5)SHA-256

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

      6)SHA-384

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

      7)SHA-512

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

     

    输入位数

    输出位数

    迭代次数

    分组长度

    找到碰撞

    MD4

    无限

    128bit

    48

    512bit

    MD5

    无限

    128bit

    64

    512bit

    SHA-1

    264-1

    160bit

    80

    512bit

    理论260

    SHA-2

    SHA-256

    264-1

    256bit

    64

    512bit

    SHA-384

    2128-1

    384bit

    80

    1024bit

    SHA-512

    2128-1

    512bit

    80

    1024bit

    SHA-3

    224/256/384/512

    24

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

    (1)运行两个可执行文件helloworld.exe和goodbyworld.exe

     

    (2)比较两个可行性文件的md5消息摘要值

             安装MD5效验工具

            

       

      经比较,这两个可执行文件md5消息摘要值相同,但两个程序会在屏幕上打印出不同的字符,这是用 “构造前缀碰撞法”(chosen-prefix collisions)来进行此次攻击的(是王小云所使用的攻击方法的改进版本)。其结论是MD5 算法不应再被用于任何软件完整性检查或代码签名的用途。

    (3)可能出现的问题

      攻击者可能会伪造一个与双方沟通文件MD5值完全相同的文件,文件完整性无法被保障和文件签名的目的也无法达到。

  • 相关阅读:
    使用RationalRose画活动图
    使用RationalRose画用例图
    UML工具RationalRose下载和安装
    使用BootStrap布局网站首页
    BootStrap入门
    使用JQuery发送请求局部刷新页面
    使用JQuery完成表单的校验(扩展)
    Window 由于未经处理的异常,进程终止。
    MySQL数据类型DECIMAL用法
    推荐收藏 —— MySQL视图详细介绍
  • 原文地址:https://www.cnblogs.com/yanchaoyi/p/9031581.html
Copyright © 2011-2022 走看看