出于安全原因,OpenSSH 决定弃用 SHA-1 验证算法
| 2020-05-28 17:57:07 评论: 0
破坏一个 SHA-1 生成的 SSH 验证密钥,现在的成本大约为 5 万美元,使得重要的远程服务器面临着被攻击的风险。
最受欢迎的连接和管理远程服务器的实用工具 OpenSSH 今天宣布,计划放弃对其 SHA-1 验证方案的支持。在这个宣布当中,OpenSSH 团队列举了 SHA-1 散列算法的安全问题,该算法目前被认为是不安全的。
SHA-1 算法在 2017 年 2 月的一次实际的、真实世界的攻击中被破解,当时谷歌密码学家披露的 SHAttered 技术可以使两个不同的文件拥有相同的 SHA-1 文件签名(这称之为“碰撞”)。
在当时,创建一个 SHA-1 碰撞被认为需要非常昂贵的计算成本,谷歌的专家认为 SHA-1 在实际应用中至少还能用上五年,直到成本下降。
然而,随后在 2019 年 5 月和 2020 年 1 月发布的研究报告中,详细介绍了一种更新的方法,将 SHA-1 选择-前缀碰撞攻击chosen-prefix collision attack的成本分别降低到 11 万美元和 5 万美元以下。
对于高级威胁攻击者,例如国家黑客和高端网络犯罪集团,如果他们能够生成一个 SSH 认证密钥,使他们能够远程不被发现地访问关键服务器,那么 5 万美元是一个很小的代价。
OpenSSH 关闭 ssh-rsa 模式
“由于这个原因,我们将在不久的未来版本中默认禁用 ssh-rsa 公钥签名算法。”OpenSSH 开发者今天表示。
OpenSSH 应用程序使用 ssh-rsa 模式来生成 SSH 验证密钥。这些密钥中的一个存储在用户要登录的服务器上,另一个存储在用户的本地 OpenSSH 客户端中,这样用户就可以在每次登录时不需要输入密码就可以访问服务器,而是以本地认证密钥来代替。
在默认情况下,OpenSSH ssh-rsa 模式通过使用 SHA-1 哈希函数生成这些密钥,这意味着这些密钥容易受到 SHAterred 攻击,使攻击者能够生成重复的密钥。
“遗憾的是,尽管有更好的替代方案存在,但这种算法仍然被广泛使用,它是原始的 SSH RFC 规定的唯一剩下的公钥签名算法”,OpenSSH 的开发人员今天表示。
OpenSSH 团队现在要求服务器所有者检查他们的密钥是否已经使用默认的 ssh-rsa 模式生成,并使用不同的模式生成新的密钥。
OpenSSH 团队表示,推荐的模式是 rsa-sha2-256/512(从 OpenSSH 7.2 开始支持)、ssh-ed25519(从 OpenSSH 6.5 开始支持)或 ecdsa-sha2-nistp256/384/521(从 OpenSSH 5.7 开始支持)。
这里是最近公告中的最好的消息。让我们为所有的嵌入式系统和设备永远不会看到 OpenSSH 中废弃的 ssh-rsa SHA-1 密钥的升级而默哀一分钟。
- Julio (@juliocesarfort) 2020 年 5 月 27 日
OpenSSH 项目将在未来(目前还未确定)的版本中默认禁用 ssh-rsa 模式,但是在此之前,他们还计划默认启用 UpdateHostKeys 功能,让服务器所有者可以轻松自动地从旧的 ssh-rsa 模式迁移到更好的验证算法。
依赖 OpenSSH 管理远程系统的服务器管理员可以在 OpenSSH 8.3 的变更日志中找到更多关于如何测试他们的服务器是否有基于弱 SHA-1 的密钥的详细信息。
在之前的一个版本中,在 8.2 版本中,OpenSSH 团队还增加了对基于 FIDO/U2F 的硬件安全密钥的支持,这也可以用来更安全地登录远程服务器。