ssh 使用的 RSA、DSA 和 ECDSA 密钥有什么区别?

fou*_*ric 15 ssh encryption authentication

在我的/etc/ssh/目录中,我可以看到三个我拥有三种不同类型的 ssh 密钥:

-rw------- 1 root root    607 Oct  4 22:43 ssh_host_dsa_key
-rw-r--r-- 1 root root    623 Oct  4 22:43 ssh_host_dsa_key.pub
-rw------- 1 root root    241 Oct  4 22:43 ssh_host_ecdsa_key
-rw-r--r-- 1 root root    194 Oct  4 22:43 ssh_host_ecdsa_key.pub
-rw------- 1 root root   1602 Oct  4 22:43 ssh_host_rsa_key
-rw-r--r-- 1 root root    378 Oct  4 22:43 ssh_host_rsa_key.pub
Run Code Online (Sandbox Code Playgroud)

ssh 的 RSA、DSA 和 ECDSA 密钥之间有什么区别,我需要这三个密钥吗?

Enk*_*ami 12

你需要所有这些吗?
不,您的 ssh 服务器只需要一个,而客户端只需要支持一种用于 ssh 连接的密钥。


RSA、DSA、ECDSA、EdDSA、&Ed25519都用于数字签名,但只有RSA也可以用于加密。

RSARivest–Shamir–Adleman)是最早的公钥密码系统之一,广泛用于安全数据传输。它的安全性依赖于整数分解,因此永远不需要安全的 RNG(随机数生成器)。与 DSA 相比,RSA 的签名验证速度更快,但生成速度更慢。

DSA数字签名算法)是数字签名的联邦信息处理标准。它的安全性依赖于离散对数问题。与 RSA 相比,DSA 的签名生成速度更快,但验证速度更慢。如果使用错误的数字生成器,安全性可能会受到破坏。

ECDSA椭圆曲线数字签名算法)是 DSA(数字签名算法)的椭圆曲线实现。椭圆曲线加密能够以较小的密钥提供与 RSA 相对相同的安全级别。它还具有 DSA 对不良 RNG 敏感的缺点。

EdDSA爱德华兹曲线数字签名算法)是一种使用基于扭曲爱德华兹曲线Schnorr 签名变体的数字签名方案。EdDSA 中的签名创建是确定性的,其安全性基于某些离散对数问题的难处理性,因此它比 DSA 和 ECDSA 更安全,后者要求每个签名都具有高质量的随机性。

Ed25519,是EdDSA 签名方案,但使用SHA-512/256Curve25519;它是一个安全的椭圆曲线提供比 DSA、ECDSA 和 EdDSA更好的安全性,并且具有更好的性能(不会引起人的注意)。


其他说明
RSA 密钥是使用最广泛的,因此似乎是最受支持的。

ECDSA(在OpenSSH v5.7 中引入)在计算上比 DSA 轻,但除非您的机器处理能力非常低,否则差异并不明显。

OpenSSH 7.0 开始,SSH 默认不再支持 DSA 密钥 (ssh-dss)。根据 SSH 标准(RFC 4251 及后续标准),DSA 密钥曾经在任何地方都可以使用。

Ed25519 是在openSSH 6.5中引入的。

  • 是 EdDSA 还是 [ECDSA](https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm)? (2认同)

小智 9

它们是使用不同加密算法生成的密钥。使用 SSH 时可以选择使用不同形式的加密,有点类似于可以为 WiFi 选择不同的加密方法(WPA2、WPA、WEP 等)。

SSH 使用公钥加密,这意味着当您连接到 SSH 服务器时,它会广播一个公钥,您可以使用该公钥加密要发送到该服务器的进一步流量。如果服务器配置为使用 RSA,它将是由 RSA 算法生成的密钥。

您的计算机从您在问题中列出的密钥文件发回自己的公共 RSA 密钥。服务器需要此密钥才能连接回您并回复。

所有三个密钥都存在于您的计算机上,因为您连接的任何给定 SSH 服务器都可能被配置为使用这些算法中的任何一种。您的计算机将发回一个与服务器使用的类型相匹配的唯一密钥,您的密钥是通过相同的算法在您的计算机上生成的。

这里有一些进一步的资源:

https://security.stackexchange.com/questions/5096/rsa-vs-dsa-for-ssh-authentication-keys

http://en.wikipedia.org/wiki/Public-key_cryptography

http://en.wikipedia.org/wiki/RSA_(算法)

http://en.wikipedia.org/wiki/Digital_Signature_Algorithm

http://en.wikipedia.org/wiki/Elliptic_Curve_DSA

  • 您简要介绍了为什么所有三个都存在、ssh 密钥的用途以及这些密钥的共同点:这些密钥使用加密算法。你没说RSA、DSA和ECDSA密钥的区别是什么。 (2认同)