5

我刚开始在日常工作中使用 RSA 密钥,我对使用它们的最佳方式有一些疑问。

最大的问题围绕着多个客户端和多个服务器的想法。这是一个场景:

我有两台客户端计算机:

  1. 桌面
  2. 笔记本电脑

我将验证两台服务器:

  1. 我自己的本地服务器
  2. 远程服务(例如 Github)

那么,一般来说,在这种情况下,您会推荐多少个密钥对?

  • 一对密钥:这把钥匙是“我”,我到处都用它。
  • 每个客户端一个:这个键是“这个客户端”,我把它放在我想从那个客户端连接到的每台服务器上。
  • 每个服务器一个密钥对:这是“此服务”的密钥,我将私钥带到我想连接到它的每个客户端。
  • 每个组合一个:每个唯一的客户端-服务器配对都有自己的密钥对。

如果这些都没有明显优于或差于任何其他,您能否概述每种方法的优缺点,以便人们可以自己选择?

4

2 回答 2

3

在您的四个选项中,我喜欢的两个是:

  • 每个客户端一个:这个键是“这个客户端”,我把它放在我想从那个客户端连接到的每台服务器上。

    这使您可以轻松地在特定客户端遭到破坏时撤销其所有密钥——删除每个服务上的一个密钥。它也只在客户端数量上线性扩展,这可能会使密钥管理更容易。它甚至与 OpenSSH 密钥模型完美契合,即为每个客户端提供一个可在多个服务器上使用的密钥。(你可以用 OpenSSH 做其他模型,这很好。但这是最容易做的事情,因为它发生时不需要你做任何努力。)

  • 每个组合一个:每个唯一的客户端-服务器配对都有自己的密钥对。

    当单个客户端受到威胁时,这会迫使您撤销多个密钥,但无论如何这将是每个服务的一个密钥,因此它不会变得更糟。更好的好处是,一项服务作为您和另一项服务之间的中间人将变得更加困难。大多数时候这不是一个真正的问题,但是如果您的 (Laptop,Server,SMTP) 密钥突然被用于 (Laptop,Server,SSH),您将有机会注意到这一奇怪之处。我不确定这种能力是否值得二次增加要管理的密钥。

于 2012-06-04T23:00:01.097 回答
2

执行此操作的常用方法是您的“每个客户一个”选项。这样,如果客户端密钥被泄露,您可以只从允许的服务器中撤销该密钥。如果你想要额外的工作,你可以做“每个组合一个”。

上述选项避免在主机之间复制私钥数据。

于 2012-06-04T22:58:05.230 回答