我刚开始在日常工作中使用RSA密钥,而且我有一些关于使用它们的最佳方法的问题。
最大的问题围绕多个客户端和多个服务器的想法。 这是一个场景:
我有两台客户端计算机:
我将对两台服务器进行身份验证:
那么,一般来说,在这种情况下你会推荐多少个密钥对?
如果这些都不是显着优于其他任何一个,那么你能否勾勒出每个人的利弊,以便一个人可以自己选择?
通常的方法是“每个客户一个”选项。 这样,如果客户端密钥被泄露,您可以从允许它的服务器中撤消该密钥 。 如果你想要额外的工作,你可以做“每个组合一个”。
以上选项可避免在主机之间复制私钥数据。
在你的四个选项中,我喜欢的两个是:
每个客户端一个:这个密钥是“这个客户端”,我把它放在我要从该客户端连接的每个服务器上。
这使您可以轻松地在特定客户端受到攻击时撤消所有密钥 - 删除每个服务上的一个密钥。 它也只能在客户端数量上线性扩展,这可能会使密钥管理更容易。 它甚至可以与OpenSSH密钥模型完美匹配,即为每个客户端提供一个在多个服务器上使用的密钥。 (您可以使用OpenSSH做其他模型,这很不错。但这是最简单的事情,因为它不需要您的任何努力就会发生。)
每个组合一个:每个独特的客户端 - 服务器配对都有自己的密钥对。
当单个客户端受到攻击时,这有一个迫使您撤销多个密钥的缺点,但无论如何它将是每个服务的一个密钥,所以它并没有明显更糟。 更好的好处是,一项服务在您和另一项服务之间充当中间人将变得非常困难。 这在大多数情况下并不是真正的问题,但如果你的(笔记本电脑,服务器,SMTP)密钥突然被用于(笔记本电脑,服务器,SSH),你就有机会注意到它的奇怪之处。 我不确定这种能力值得管理密钥的二次增加。