SSH 密钥究竟是如何生成的?

SSH 密钥究竟是如何生成的?

在 Twitter 上看到一个关于在新安装后将当前的 SSH 密钥移动到同一台机器的问题。

这引起了我的好奇心,我问自己它们是怎么做的。我了解生成密钥的过程以及私钥和公钥之间的区别。

从逻辑上讲,我假设密钥是随机生成的,与它们所在的硬件/操作系统无关(除了最后一行与用户/计算机有关)。

感谢您的见解。我总是喜欢学习事物如何“运转”。

答案1

SSH 使用预先生成的公钥和私钥。生成后,这些密钥将被存储以备将来使用。密钥的内容与硬件或操作系统无关,但取决于它们提供的随机数。

传输密钥的格式多种多样。如果您从一个平台转移到另一个平台,则可能需要更改密钥格式。Putty 使用的格式与 OpenSSH 不同,但两者都有工具可以转换格式。

私钥很少需要传输。如果需要,则必须保证其安全。公钥和私钥可自由分发,并在连接期间自动交换。通常存储已知密钥,以便在后续连接中不需要验证对话框。

我通常会为新设备生成新密钥,因为这样更安全。它确实需要重新建立信任关系。复制旧密钥可能会允许信任转移。有时信任包括其他信息,例如主机名和/或 IP 地址,从而阻止信任转移。

可以转移现有的已知主机列表。这允许您转移您信任的设备列表。但这并不能保证他们会信任您。

答案2

确保你清楚自己要做什么——这里面有很多数学知识。非对称密钥加密的工作原理是利用两个非常大的素数的乘积生成一个模数,这两个素数是使用加密安全的伪随机数生成器随机选择的。利用这个模数和模数算法,可以生成两个密钥,这样就可以从私钥中推导出公钥,但反之则不行。

第一个 Wikipedia 链接是对公钥密码学的一般介绍。第二个链接是对 RSA 中密钥生成方式的具体描述。

答案3

有多种算法可以生成公钥/私钥对。你可以看看RSA数字减影动脉造影如果你感兴趣。

答案4

没有任何内容依赖于底层主机/操作系统/硬件。您可以安全地在系统之间传输密钥。

不过,除非有特殊需要,否则我会警告不要重复使用密钥。如果你不确定,你可能不需要它。但如果你确定,你就不需要进一步解释为什么。

相关内容