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

    一、散列函数的具体应用:

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

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

      1、生日攻击

      利用“两个集合相交”问题的原理生成散列函数碰撞,达到目的的攻击称为生日攻击,也称为平方根攻击。生日攻击方法没有利用Hash函数的结构和任何代数弱性质,它只依赖于消息摘要的长度,即Hash值的长度。

    防范方法:

      (1)使用安全的Hash算法:安全的Hash算法生成的Hash值有足够多的位数。这样,攻击者在寻找两个具有相同Hash值的文件时就会非常困难。

    (2)加盐:在为文件签名之前,先向文件添加一个随机值,然后计算Hash值,再将文件、签名和随机值一起发送给接收者。这样,攻击者必须找出具有特定Hash值的伪造文件,这非常困难。

      (3)改动文件:在为文件签名之前,对消息或文件做少许改动。这样,攻击者必须找出具有特定Hash值的伪造文件,这非常困难。

    2、MD5算法和SHA-1的安全性

      MD5的前身有MD2、MD3和MD4。核心是哈希函数,2004年8月17日的美国加州圣巴巴拉的国际密码学会议(Crypto’2004)上,来自中国山东大学的王小云教授做了破译MD5、HAVAL-128、 MD4和RIPEMD算法的报告,公布了MD系列算法的破解结果。宣告了固若金汤的世界通行密码标准MD5的堡垒轰然倒塌。王小云教授的成果集中在加速构造碰撞对。原来理论上构造出一个MD5碰撞对需要2^64次尝试,而现在只需要2^39次,其算法大大加速了这一过程。但从应用场景上来看,它本身并不具备太多的应用价值,因为构造出的碰撞很可能毫无意义。它的价值在于,在此算法基础上衍生出来的一系列MD5的算法,能够在部分场景下,构造出一个有意义的伪造信息,并且MD5值保持不变。所以,单单看这个算法本身就说MD5不安全,有些夸大其实,但是,后续的长度拓展攻击,就是在已知输入M的长度(注意是长度)和其MD5值的情况下,可以在原文M后面附加任意内容,同时能够推算出新的MD5。在某些将MD5作为签名手段的系统中,攻击者可以在原文M后面随意添加内容同时能够提供正确的MD5值,使得MD5的安全性大大降低。2017年,Google公司宣布实现了对SHA-1算法的攻击。在实际中,安全散列函数永远不应该发生碰撞。然而,如果散列算法有一定的缺陷,如SHA-1,一个资金雄厚的攻击者就可以制造出碰撞。攻击者可以利用碰撞欺骗系统,这些系统根据HASH来接收一个恶意文件,从而代替了它的良性副本。

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

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

    目前发展:

      2005年MD5的攻破似乎宣告了SHA或许为仅存的安全散列算法。

      SHA-0:SHA由美国标准与技术研究所(NIST)设计并于1993年发表,该版本称为SHA-0,由于很快被发现存在安全隐患,

      SHA-1:1995年发布了SHA-1。

      SHA-2:2002年,NIST分别发布了SHA-256、SHA-384、SHA-512,这些算法统称SHA-2。2008年又新增了SHA-224。

      由于2017年SHA-1算法的攻破,目前已经有多家科技企业宣布逐步放弃SHA-1算法,微软已经确定会放弃在Edge以及IE浏览器上继续使用SHA-1算法的TLS证书,Google的Chrome在56版之后也会提示SHA-1加密的HTTPS网页并不安全,Mozilla则确定在今年7月开始停止SHA-1的支持。目前SHA-2各版本已成为主流

    三、d5算法在验证软件完整性时可能出现的问题

    (1)程序在屏幕上可能打印出不同的字符,但是它们的 MD5 都是一样的

    (2)不能通过校验MD5来知道网站是否被黑客攻击或者植入病毒木马

    (3)当软件过大时,在验证过程中所需的时间也会大大增加,第三方攻击的成功概率也会增加

    (4) 无法保证文件的完整性和正确性,文件可能被篡改或损坏

  • 相关阅读:
    Codeforces 451A Game With Sticks
    POJ 3624 Charm Bracelet
    POJ 2127 Greatest Common Increasing Subsequence
    POJ 1458 Common Subsequence
    HDU 1087 Super Jumping! Jumping! Jumping!
    HDU 1698
    HDU 1754
    POJ 1724
    POJ 1201
    CSUOJ 1256
  • 原文地址:https://www.cnblogs.com/liuz100/p/9031934.html
Copyright © 2011-2022 走看看