文|李伟志
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行业的加密算法的选择。
作者简介:李伟志,职场作家、职业生涯咨询师。
网友评论