![为什么 SSH 只提供两个公钥密码?](https://linux22.com/image/869569/%E4%B8%BA%E4%BB%80%E4%B9%88%20SSH%20%E5%8F%AA%E6%8F%90%E4%BE%9B%E4%B8%A4%E4%B8%AA%E5%85%AC%E9%92%A5%E5%AF%86%E7%A0%81%EF%BC%9F.png)
也许 askubuntu 不是回答这个问题的最佳场所,但是,这个问题适用于所有 Linux 系统,包括 Ubuntu。斯诺登泄密事件发生后,许多人对 RSA 密钥的完整性提出了质疑。有人声称 RSA 算法中有一个后门。如果这是真的,那么地球上几乎每个服务器都处于危险之中。当然,有 DSA 密钥,但我们被告知 1024 位密钥不再足够强大,无法提供针对当今计算能力的可靠保护。
openssl 库有许多密码。OpenVPN 可以使用其中的很多密码,那么为什么 ssh 不能使用 RSA 或 DSA 以外的密码呢?为什么 DSA 密钥限制为 1024 位?我们难道不应该考虑放弃 RSA,转而使用更安全的密码,而这种密码中不可能有 NSA 后门吗?我发现另一件奇怪的事情是,当我生成 4096 位 RSA 密钥时,只需几秒钟。但是当我生成 4096 位 GPG 密钥时,可能需要相当长的时间。这告诉我,也许 RSA 的随机性并不是那么随机……?
我是不是漏掉了什么?在我看来,整个 Linux 社区,包括我自己,都在依赖一种可能不安全的密码来保护自己。为什么没有更多的密码可供选择?这是怎么回事?
答案1
这肯定是问错问题的地方了。
如果你担心 RSA 的安全性,你可能需要了解更多有关它的知识,学习数学,或者研究 openssh 的实现(http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/)这比猜测要好得多。
与 DES 或 AES 不同,RSA 中的“后门”概念毫无意义。
您现在已列入 NSA 的一份对超强加密感兴趣的人员名单中,名单上的人很可能使用了您的真名。如果您确实需要对他们保密,请务必小心。
答案2
DSA 密钥在设计上限制为 1024 位。较新版本的 SSH 支持 ECDSA 和 ED25519。OpenSSH 将主机默认值更改为 ECDSA。请注意,如果您在 known_hosts 文件中有一个主机,当主机开始默认提供该密钥时,它将使用该密钥,而不是更新到 ECDSA/ED25519。
另外要注意的是,签名算法和密码算法是两个不同的算法(一个通常为公钥算法,另一个为对称密钥算法)。