个人私钥的最佳做法

时间:2012-06-04 22:52:07

标签: rsa public-key-encryption

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

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

我有两台客户端计算机:

  1. 桌面
  2. 笔记本
  3. 我将验证两台服务器:

    1. 我自己的本地服务器
    2. 远程服务(例如Github)
    3. 因此,一般来说,在这种情况下,您会推荐多少个密钥对?

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

      如果其中任何一个都显着优于或差,你能概述每个人的利弊,以便一个人可以自己选择吗?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

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

  • 每个客户端一个:这个密钥是“这个客户端”,我把它放在我要从该客户端连接的每台服务器上。

    这使您可以轻松地在特定客户端受到攻击时撤消所有密钥 - 删除每个服务上的一个密钥。它也只能在客户端数量上线性扩展,这可能会使密钥管理更容易。它甚至可以与OpenSSH密钥模型完美匹配,即为每个客户端提供一个在多个服务器上使用的密钥。 (你可以使用OpenSSH做其他模型,这很不错。但这是最简单的事情,因为它不需要你付出任何努力。)

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

    这有一个缺点,即当单个客户端被泄露时强制你撤销多个密钥,但它无论如何都是每个服务的一个密钥,所以它并没有明显更糟。更好的好处是,一项服务在您和另一项服务之间充当中间人将变得非常困难。这在大多数情况下并不是真正的问题,但如果你的(笔记本电脑,服务器,SMTP)密钥突然被用于(笔记本电脑,服务器,SSH),你就有机会注意到它的奇怪之处。我不确定这种能力值得管理密钥的二次增加。