安全外壳(Secure Shell)的两个开源代码库的开发者将淘汰SHA-1散列算法。安全外壳是数百万台计算机用来创建彼此加密连接的协议。四个月前,研究人员在SHA-1的棺材上钉上了最后一颗钉子。
这些举措分别在发行说明和OpenSSH和libssh的代码更新中宣布,这意味着SHA-1将不再是一种对加密密钥进行数字签名的手段,这些密钥阻止监控或操作通过SSH连接的两台计算机之间传递的数据。SSH是Secure Shell的常见缩写。(周三关于OpenSSH中SHA-1弃用的发布说明逐字重复了开发人员在2月份发布说明中的内容,但直到现在似乎很少有人注意到计划中的更改。)。
加密散列函数生成称为散列摘要的长字符串。从理论上讲,对于馈送到函数的每个文件、消息或其他输入,摘要都应该是唯一的。实际上,考虑到可用计算资源的性能,摘要冲突在数学上肯定是不可行的。近年来,在研究人员展示了攻击者伪造使用SHA-1的数字签名的实用方法后,许多软件和服务已经停止使用SHA-1。专家们一致认为,它在几乎所有的安全环境中都不再安全。
“这是托儿所里的电锯,”安全研究员肯恩·怀特(Kenn White)在谈到1995年首次亮相的散列函数时说。
近十年前,研究人员开始警告说,SHA-1越来越容易受到碰撞的影响,这是一个密码术语,指两个或更多的输入产生相同的输出摘要。到那时,当国家支持的黑客利用同样脆弱的MD5算法发生冲突,劫持微软的Windows Update系统时,世界已经亲眼目睹了此类攻击的破坏性。
虽然SHA-1对这种碰撞攻击的要求更高,但达到这些要求只是个时间问题。2017年,SHA-1屈服于一种威力较小的碰撞攻击形式,生产成本仅为11万美元。在研究之前和之后的几个月里,大量浏览器、浏览器信任的证书颁发机构和软件更新系统都放弃了该算法。其他服务和软件产品继续使用SHA-1。
SHA-1的最后丧钟在1月份敲响了,研究人员揭开了一种更强大的碰撞攻击的面纱,成本只有4.5万美元。它被称为选择前缀冲突,允许攻击者模仿他们选择的目标,就像针对微软基础设施的MD5攻击一样。
正是在这样的背景下,OpenSSH开发人员在周三发布的发行说明中写道:
现在可以以低于50K美元的价格对SHA-1算法执行选择前缀攻击。因此,我们将在不久的将来版本中默认禁用";ssh-rsa";公钥签名算法。
不幸的是,尽管存在更好的替代方案,但该算法仍然被广泛使用,它是原始SSH RFC指定的唯一剩余的公钥签名算法。
考虑到数以百万计的组织依赖SSH连接到公司网络、Amazon和Azure云服务,以及互联网上的各种其他计算机,可以说,这些反对来得太晚了,这是可悲的,因为SSH依赖于SSH来连接到公司网络、Amazon和Azure云服务,以及互联网上的各种其他计算机。让事情变得复杂的是,在运行自动取款机和工业控制系统的网络交换机和低成本嵌入式机器中使用SSH。嵌入式系统经常接收不到更新,因为它们位于很远的地方,这使得在出现问题时很难排除故障。
在一封电子邮件中,Inria France研究员、1月份这项研究的合著者之一Gaëtan Leurent表示,他预计OpenSSH开发人员不会很快实现这些弃用功能。他写道:
当他们完全禁用SHA-1时,将不可能从最新的OpenSSH连接到使用旧SSH服务器的设备,但在此之前,他们可能会采取渐进的步骤(带有严重警告)。此外,具有SSH访问权限的嵌入式系统很多年都没有更新过,可能会有很多安全问题,所以也许干扰它们也不是太糟糕……。
无论如何,我对此相当满意,这正是我们想要达到的目标:-)。
随着OpenSSH和libssh最终宣布他们的弃用计划,SHA-1的拒绝名单变短了,但绝不会消失。OpenSSL的最新版本仍然支持老化功能,OpenSSL是许多网站和互联网服务用来实现HTTPS和其他加密协议的代码库。本月早些时候发布的GNU编译器集合的最新版本使用SHA-1进行了数字签名。
Leurent说,支付卡的EMV标准也使用SHA-1,但该标准使用了一种“奇怪的签名系统,似乎不会直接受到选择前缀冲突的影响。”Git也支持SHA-1,但仅限于数据完整性,大多数专家认为这不会构成安全威胁。