一个人比另一个人更安全吗?
答案 0 :(得分:61)
id_rsa.pub
和id_dsa.pub
是id_rsa
和id_dsa
的公钥。
如果您询问SSH
,id_rsa
是RSA密钥,可以与SSH协议1或2一起使用,而id_dsa
是{ {3}}密钥,只能与SSH协议2一起使用。两者都非常安全,但DSA似乎确实是最近的标准(假设所有客户端/服务器都支持SSH 2)。 < / p>
更新:由于这是写的,DSA已被证明是不安全的。以下答案中提供了更多信息。
答案 1 :(得分:39)
SSH使用public/private key pairs,所以
id_rsa
是您的RSA私钥(基于素数),比您的id_dsa
DSA私钥更安全(基于指数) )。确保您的私钥安全,并广泛分享您的id_rsa.pub
和id_dsa.pub
公钥。
如果您的计算机的随机数生成器低于标准,则DSA会有guessable parameter,这将显示您的密钥。 ECDSA(DSA&#39;椭圆曲线升级)is similarly vulnerable。即使有良好的随机数,DSA也有other strength concerns(这些是also found in Diffie-Hellman)。
OpenSSH会创建不安全的1024位密钥(workaround),现在为disables DSA by default。
Elliptic curve cryptography使用较小的密钥大小提高了复杂性。 Ed25519(基于plane-modeled elliptical curves的复杂性)是首选实施方案,因为它假设缺乏干预(泄露的文件显示美国NSA weakens crypto standards)。
不幸的是,Ed25519仍然相当新,需要OpenSSH 6.5或GnuPG 2.1(请参阅full list)。
4096位的RSA密钥大小应具有与Ed25519相当的复杂性。
Ed25519仍然优于RSA,因为担心RSA可能容易受到与DSA相同的强度问题,尽管将该漏洞应用于RSA预计会更加困难。
答案 2 :(得分:2)
rsa被认为更安全。
不再(十年后的2020年5月),OpenSSH 8.2被reported冠以Julio
未来弃用通知
现在可以1对SHA-1哈希算法执行选定的前缀攻击,而费用不超过5万美元。
因此,我们将在不久的将来的版本中禁用默认情况下依赖SHA-1的“ ssh-rsa”公钥签名算法。
(请参见“ {SHA-1 is a Shambles: First Chosen-Prefix Collision on SHA-1 and Application to the PGP Web of Trust” Leurent,G和Peyrin,T(2020))
遗憾的是,尽管存在更好的替代方法,但该算法仍被广泛使用,它是原始SSH RFC唯一剩余的公钥签名算法。
更好的选择包括:
RFC8332 RSA SHA-2签名算法rsa-sha2-256 / 512。
这些算法的优点是使用与“ssh-rsa
”相同的密钥类型,但使用安全的SHA-2哈希算法。
自OpenSSH 7.2起已支持这些功能,并且如果客户端和服务器支持它们,则默认情况下已使用它们。ssh-ed25519签名算法。
自6.5版以来,OpenSSH已支持该功能。RFC5656 ECDSA算法:ecdsa-sha2-nistp256 / 384/521。
自5.7版以来,OpenSSH已支持这些功能。要检查服务器是否使用弱ssh-rsa公钥算法进行主机身份验证,请从ssh(1)的允许列表中删除
ssh-rsa
算法后,尝试连接到该服务器:ssh -oHostKeyAlgorithms=-ssh-rsa user@host
如果主机密钥验证失败,并且没有其他受支持的主机密钥类型可用,则应升级该主机上的服务器软件。
OpenSSH的未来版本将默认启用
UpdateHostKeys
,以允许客户端自动迁移到更好的算法。
用户可以考虑手动启用此选项。
答案 3 :(得分:1)
是的,rsa被认为更安全。
2014年10月,OpenSSH 7(Ubuntu 16.04LTS的默认设置)已禁用DSA的默认支持。将此视为DSA不再是推荐方法的强烈信号。
https://www.gentoo.org/support/news-items/2015-08-13-openssh-weak-keys.html
答案 4 :(得分:-6)