zoukankan      html  css  js  c++  java
  • Google震惊密码界:攻破SHA-1加密技术

    在美国的2月23日,Google在密码学领域干了件大事,它提交了第一次成功的SHA-1碰撞攻击。谷歌宣布找到SHA-1碰撞的算法,需要耗费110块GPU一年的运算量,并将在90天后公布源码。
     
     
    1、首先说说,什么是SHA-1?
    SHA-1,被称作哈希(Hash)算法,一个非常流行的加密散列函数。在许多安全协议中广为使用,通常被用做密码加密,文件校验等,曾被视为MD5的后继者,且存在不可逆性。
     
    简单来讲:
     
    比如,我有一个网站,用户在注册的时候会输入用户名和密码。大家都知道如果密码是明文的方式存储在数据库里的话,那么这个数据一旦泄漏或者内部人员作恶的话,会造成信息安全问题。
     
    所以通用的做法是,把用户输入的用户名密码做MD5或SHA-1的运算,这时会生成一个哈希值字串。
     
    举例:把“卡拉是条狗”保存为一个TXT文件,计算出这个文本文件的哈希值为b32200d4f3b0c50c5ce7e9801aecbcdce6adcbcc。
    因为这个算法的“不可逆”性,仅凭b32200d4f3b0c50c5ce7e9801aecbcdce6adcbcc这串哈希值无法反计算出明文是什么。
     
     
    2、再来说说,SHA-1碰撞是怎么一回事?
    当散列函数有漏洞,两个文件产生相同的哈希值时,就产生了碰撞。
     
    作为证明,Google在公布的结果中,显示了两个不同的PDF文件,经过SHA-1处理后,产生了相同的哈希值。
     
    3、SHA-1碰撞会产生什么危害?
    这里,为了能够简单易懂,我们先将SHA-1碰撞比喻成军事领域上的情报传递。
     
    首先,传递的情报一定都是加密的,不会明文。

    通过校验密文,我们可以保证接收到情报的正确性(加密的结果是唯一的,可以保证信息不被篡改),但是这次的问题在于,通过某种方式,我们造出了能得到相同密文的情报C。
     
    那么这时候,接受到密文a的人就懵逼了,究竟是该执行进攻,还是执行待命呢?
     
    而SHA-1碰撞就好似接收情报,因为它与合法文件有一样的哈希值,所以会让攻击者滥用恶意文件。
     
    此外,Google 在发表 SHA-1 冲突新闻的Shattered.it 网站上表示:
     
    我们已经通过这个实例演示了如何攻破 SHA-1 加密。
     
    这项被业内广泛用于数字签名、文件完整性验证、以及保护广泛的数字资产(包括信用卡交易、电子文档、开源软件资源库与软件更新等)的加密标准,现已被实际证明可精心制作出两份冲突的 PDF 文件。
     
    它们包含了不同的内容,却拥有相同的 SHA-1 数字签名,意味着一个有效签名可被另一份 PDF 文件所滥用。
     
    举例来说,别有用心的人可以利用这种方法制作两份内容不一致的租赁协议,然后用低价‘副本’欺骗他人‘签下’价格更高的那份合约。
     
    当然,想要达成 Google 这样的“成就”并非易事,因之实际上共执行了9,223,372,036,854,775,808 次 SHA-1 计算(9×10^18);破解分为两阶段,分别需要一个CPU 进行 6,500 年,和一个GPU 进行 110 年的计算才可完成。



    4、作为普通用户,我们需要恐慌吗?
        显然,Google找到新的破解算法,可以利用110块GPU,一年内完成破解。这里我们不妨猜想:如果是地下黑产,面对一个高价值的目标,会不会动用掌握的数百万台肉鸡电脑的计算能力,在更短的时间内完成碰撞攻击呢?
     
        做为一种老旧的加密演算法,SHA-1 渐渐被后来者如 SHA-2 和 SHA-3 新演算法,以及各种变体取代。三大浏览器 Chrome、微软 Edge / IE 和火狐浏览器都决定弃用 SHA-1。截至今年的1月1日,当你访问一个经由SHA-1加密的网站时,每一个主流的浏览器都会向你发出警告(一般情况是全屏红色),当证书过期后,浏览器将无法存取这些网站。Google 方面也建议 IT 人士采用 SHA-256 等更安全的算法,所以不必过于担心。
     
        随着硬件能力高速发展,GPU已取代CPU来处理数据,导致原有的加密技术面临走下神坛的危机。而任何的安全都是当下的安全,相信时间会改变这一切!
  • 相关阅读:
    42. Trapping Rain Water
    223. Rectangle Area
    645. Set Mismatch
    541. Reverse String II
    675. Cut Off Trees for Golf Event
    安装 VsCode 插件安装以及配置
    向上取整 向下取整 四舍五入 产生100以内随机数
    JS 判断是否为数字 数字型特殊值
    移动端初始配置,兼容不同浏览器的渲染内核
    Flex移动布局中单行和双行布局的区别以及使用
  • 原文地址:https://www.cnblogs.com/merlindu/p/6545588.html
Copyright © 2011-2022 走看看