id_rsa.pub和id_dsa.pub有什么区别?


Answers:


64

id_rsa.pub并且id_dsa.pub是公开密钥id_rsaid_dsa

如果你问有关SSHid_rsaRSA密钥,可以用SSH协议1或2中使用,而id_dsaDSA关键,只能用SSH协议2.使用 两者都是非常安全的,但DSA似乎是这些天的标准(假设您所有的客户端/服务器都支持SSH 2)。

更新:自从撰写本文以来,DSA被证明是不安全的。下面的答案提供了更多信息。


我必须不同意这一点。如今(尽管程度较小,也在2010年发布),认为1024位(DSA可用的最大密钥大小)太弱了。因此,RSA是更好的选择。关于SSH v1:十年前我并不认为这种安全性。
亚当·卡兹

3
@AdamKatz DSA自2009年以来就支持2048位和3072位密钥(按照FIPS 186-3的规定)。大多数ssh客户端/服务器都支持更大的DSA密钥,包括OpenSSH和PuTTY。大多数密钥生成器还支持更大的DSA密钥,但是OpenSSH的ssh-keygen仍然不支持(即使ssh和sshd都支持)。对于Linux,您可以按照本博客文章中所述使用OpenSSL生成更大的DSA密钥。
Mike Pelley 2015年

1
有趣!我还不知道,但这肯定有助于在两者之间建立平衡(尽管缺少OpenSSH支持确实很糟糕)。不过,我不会说DSA是标准(现在或2010年),而RSA绝对是标准(并且我们正在过渡到诸如Ed25519的椭圆曲线系统)。
亚当·卡兹

46

SSH使用公钥/私钥对,因此 id_rsa您的RSA私钥(基于质数)也是如此,id_dsa DSA私钥(基于指数)更安全。保持私钥安全,id_rsa.pubid_dsa.pub广泛共享您的公钥。

DSA不安全

如果您计算机的随机数生成器未达到标准水平,则DSA具有可猜测的参数,该参数会显示您的秘密密钥。 ECDSA(DSA的椭圆曲线升级)同样容易受到攻击。即使具有良好的随机数,DSA也需要考虑其他强度问题PDF格式在Diffie-Hellman也可以找到这些问题)。

OpenSSH创建不安全的1024位密钥解决方法,现在默认情况下禁用DSA

尽可能使用Ed25519

椭圆曲线密码术以较小的密钥大小提供了更高的复杂性。 Ed25519(基于平面建模的椭圆曲线的复杂度)是首选的实现方式,因为它假定没有干预(泄漏的文件显示,美国国家安全局削弱了加密标准)。

不幸的是,Ed25519仍然很新,需要OpenSSH 6.5GnuPG 2.1(请参阅完整列表)。

如果Ed25519不可用,请使用4096位RSA

4096位的RSA密钥大小应具有与Ed25519相当的复杂性。

尽管人们担心RSA可能会遭受与DSA相同的强度问题,但Ed25519仍然比RSA更为可取,尽管将这种利用方法应用于RSA的难度将大大提高。


2
只是一项更正:自2009年以来,DSA已支持2048位和3072位密钥(按照FIPS 186-3的规定)。我上面的评论中有更多信息。
Mike Pelley 2015年

2
Infosec SE 对这个问题有一个很好的答案,而且这个答案更加深入。它引用了Black Hat 2013的一次演讲,该演讲表明DSA不再安全,即使密钥更大也是如此。
亚当·卡兹

2
我已更新此答案,以更全面地了解DSA的问题。现在比(同等有效的)Infosec SE答案更为详细。将鼠标悬停在某些链接上时,甚至还有更多详细信息。
亚当·卡兹

1
这篇文章教了我很多东西,需要更多的赞誉。
liljoshu


1

rsa被认为更安全。

现在不一样了(2020年5,十年后),用OpenSSH的8.2,作为报告胡里奥

未来弃用通知

现在可以1执行不到USD $ 50K对SHA-1散列算法选择前缀攻击。
因此,在不久的将来的版本中,默认情况下,我们将禁用依赖SHA-1的“ ssh-rsa”公钥签名算法

(请参阅“ SHA-1是一场混乱:SHA-1的首次选择前缀冲突及其在PGP信任网络中的应用 ” 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-rsa从ssh(1)的允许列表中删除该算法后,尝试连接到该服务器:

ssh -oHostKeyAlgorithms=-ssh-rsa user@host

如果主机密钥验证失败,并且没有其他受支持的主机密钥类型可用,则应升级该主机上的服务器软件。

OpenSSH的未来版本将UpdateHostKeys默认启用,以允许客户端自动迁移到更好的算法。
用户可以考虑手动启用此选项


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.