SSH 密钥:Ed25519 与 RSA

信息安全 密码学 SSH RSA 电子抄送
2021-08-14 04:06:40

很多人建议使用SSHEd25519而不是RSA密钥。

Ed25519( http://ed25519.cr.yp.to/ )的介绍页面说:
[..] breaking it has similar difficulty to breaking [..] RSA with ~3000-bit keys [..]

所以只谈安全性(不是速度!),为什么不应该喜欢呢? 如果只提供约 3000 位的密钥强度,那么 4096 位应该更安全吗?RSA 4096Ed25519
Ed25519RSA

2个回答

关键优势及其等价物在达到“无法用现有和可预见的技术破解”的区域时就变得毫无意义,因为没有比这更安全的东西了。尝试将密钥大小视为提供某种安全裕度是一种常见的反应,但这种推理在某些方面失败了。

基本上,用于破解 RSA 和破解椭圆曲线的最著名算法在 25 年前就已经为人所知。从那时起,由于计算机速度更快,破解效率得到了提高,速度是正确预测的。这是对研究人员的致敬,他们可以通过大量微调来跟上这个速度,如下图所示:

随时间的因式分解记录

(从这个答案中提取)。

底线是,虽然更大的密钥提供了更长的可预测阻力,但这种预测只有在确实可以预测技术改进的情况下才有效,并且任何声称他知道计算机能够做什么的人超过 50多年后,要么是先知,要么是疯子,要么是骗子,要么是所有这些。

50 年后,上面引用的答案中给出的乐观公式 ((year - 2000) * 32 + 512) 意味着,RSA 记录最多可以考虑接近 2592 位。

结论是,从安全的角度来看,没有任何有意义的方法可以相互比较 3000 位和 4000 位 RSA 密钥。它们都“在可预见的未来牢不可破”。一把钥匙不能坏的比不坏的少。

另一个重要的一点是 SSH 中的“永久”密钥(您生成并存储在文件中的密钥)仅用于签名破解这样的密钥将允许攻击者冒充服务器或客户端,但不能解密过去记录的会话(实际的加密密钥来自短暂的 Diffie-Hellman 密钥交换或其椭圆曲线变体)。因此,在下个世纪,您的钥匙是否会被破坏,这并不重要。为了实现“终极”安全性(至少在计算机世界的背景下),您的 SSH 密钥所需要的只是一个现在无法破解的密钥,以及现在已知的科学和技术。

关于同一件事的另一个观点是,您的连接只能与两个端点一样安全。没有什么能限制你的敌人,无论他们是邪恶的罪犯、间谍还是其他任何东西,都试图通过“公平”并试图预先破解你的加密来打败你。雇佣成千上万的线人来监视每个人(以及彼此)是非常昂贵的,但它已经完成了,这比破解一个 2048 位的单个 RSA 密钥要多得多。

根据gitlab

《实用的 Go 密码学》一书建议 ED25519 密钥比 RSA 密钥更安全、更高效。

推荐

如果您为 SSH 使用 RSA 密钥……那么您使用的密钥大小至少为 2048 位。

ED25519 键更好

ssh-keygen -t ed25519 -C "<comment>"

如果使用 rsa,则最小大小为 2048 但最好使用大小 4096:

ssh-keygen -o -t rsa -b 4096 -C "email@example.com"

ED25519 已经将密钥加密为更安全的 OpenSSH 格式。