美文网首页程序员
散列算法:SHA-1,SHA-2和SHA-256之间的区别(下)

散列算法:SHA-1,SHA-2和SHA-256之间的区别(下)

作者: ROW供享社 | 来源:发表于2018-07-31 18:32 被阅读85次

文|李伟志

SHA-1与SHA-2

如上所述,SHA代表安全哈希算法。SHA-1和SHA-2是该算法不同的两个版本,它们的构造和签名的长度都有所不一样,但可以把SHA-2理解为SHA-1的继承者。

首先,人们一般把哈希值位数长度作为重要的区别,SHA-1是160位的哈希值,而SHA-2是组合值,有不同的位数,其中最受欢迎的是256位。

因为SHA-2有多种不同的位数,导致这个名词有一些混乱。但是无论是“SHA-2”,“SHA-256”或“SHA-256位”,其实都是指同一种加密算法。但是SHA-224”,“SHA-384”或“SHA-512”,表示SHA-2的二进制长度。还要另一种就是会把算法和二进制长度都写上,如“SHA-2 384”。

SSL行业选择SHA作为数字签名的散列算法,从2011到2015,一直以SHA-1位主导算法。但随着互联网技术的提升,SHA-1的缺点越来越突显。从去年起,SHA-2成为了新的标准,所以现在签发的SSL证书,必须使用该算法签名。

也许有人偶尔会看到SHA-2 384位的证书,很少会看到224位,因为224位不允许用于公共信任的证书,512位,不被软件支持。

初步预计,SHA-2的使用年限为五年,但也许会被提前淘汰。这需要时间来验证。

下面是SSL证书的SHA-1和SHA-2签名对比

两者在表面上似乎没有什么特别,但是数字签名对于SSL / TLS的安全性具有重要的作用。

哈希值越大,组合越多,其安全性就越高。加密哈希算法的一个重要功能是产生独特的散列,当两个不同的值或文件可以产生相同的散列,则会创建所谓的碰撞。

只有在不发生碰撞时,才能保证数字签名的安全性。碰撞对于哈希算法来说是极其危险的,因为碰撞允许两个文件产生相同的签名。当计算机检查签名时,即使该文件未真正签署,也会被计算机识别为有效的。

多种不同哈希值

每个哈希位有两个可能值:0和1。每一个独立的哈希值通过位的可能值的数量。对于SHA-256,有2的256次方种组合。这是一个庞大的数值。

哈希值越大,碰撞的机率就越小。

在技术上,有无限数量的可输入[ 1 ],但是数量有限的。因此,每个散列算法,包括安全算法,都会发生碰撞。因为SHA-1的大小结构都碰撞的机率比较大,所以SHA-1被认为是不安全的。

迁移到SHA-2

去年,SSL行业最新证书全部迁移SHA-2,在2015 年12月31日前,CA机构仍可颁发SHA-1签名SSL证书。所以这两年,仍可看到安全SHA-1的数字签名证书。但日后,如果网站仍使用 SHA-1的SSL证书,客户端将会看到一个降级的安全指示器。在Chrome中,2016年过期的所有SHA-1证书都不会显示安全连接中的绿色挂锁,直接变成与不安全的HTTP连接相同的图标。客户端可以点击图标获取具体信息,了解详细原因,因为这与签名无关。

如果在浏览器(chrome)中看到了SHA-1证书,。要查看浏览器中该页面的内容,请访问https://sha1-2016.badssl.com

在2017年,浏览器会对SHA-1签署的证书进行更严格的安全警告,因为签名的安全性与证书的有效时间有直接关系。

保持安全的签名

随着时间的推移,对加密技术的攻击将会越来越强,其安全成本也有所降低。这使得有效的SHA-2签名将会越来越不安全。可见,安全算法防护要比实际要强,而短期的改善并不是一个长期的方案。对于特定的哈希算法来说,保持十年的安全性是不切实际。

虽然目前的SSL证书是可靠安全的数字签名。但全球的网络安全专家仍不断分析研究SHA-2和其他加密算法,日后将会推出更安全的算法。其中SHA-2的继承者已敲定为SHA-3,这两种可能是完全不同的算法,但不会影响SHA-3成为SSL行业的加密算法的选择。

作者简介:李伟志,职场作家、职业生涯咨询师。

相关文章

网友评论

本文标题:散列算法:SHA-1,SHA-2和SHA-256之间的区别(下)

本文链接:https://www.haomeiwen.com/subject/gnnhvftx.html