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值完全相同的文件,文件完整性无法被保障和文件签名的目的也无法达到。

  • 相关阅读:
    hdu 5101 Select
    hdu 5100 Chessboard
    cf B. I.O.U.
    cf C. Inna and Dima
    cf B. Inna and Nine
    cf C. Counting Kangaroos is Fun
    Radar Installation 贪心
    spfa模板
    Sequence
    棋盘问题
  • 原文地址:https://www.cnblogs.com/yanchaoyi/p/9031581.html
Copyright © 2011-2022 走看看