【问题标题】:Best practices for personal private keys个人私钥的最佳实践
【发布时间】:2012-06-04 22:52:06
【问题描述】:
我刚开始在日常工作中使用 RSA 密钥,我有几个关于使用它们的最佳方式的问题。
最大的问题围绕着多个客户端和多个服务器的概念。这是一个场景:
我有两台客户端计算机:
- 桌面
- 笔记本电脑
我将验证两台服务器:
- 我自己的本地服务器
- 远程服务(例如 Github)
那么,一般来说,在这种情况下,您会推荐多少个密钥对?
- 一对密钥:这个密钥是“我”,我在任何地方都使用它。
- 每个客户端一个:这个键是“这个客户端”,我把它放在我想从那个客户端连接到的每台服务器上。
- 每台服务器一个密钥对:这是“用于此服务”的密钥,我将私钥带到我要连接到它的每个客户端。
- 每个组合一个:每个唯一的客户端-服务器配对都有自己的密钥对。
如果这些都没有明显优于或差,您能否概述每种方法的优缺点,以便人们自己选择?
【问题讨论】:
标签:
rsa
public-key-encryption
【解决方案1】:
在你的四个选项中,我喜欢的两个是:
-
每个客户端一个:这个键是“这个客户端”,我把它放在我想从那个客户端连接到的每台服务器上。
这使您可以轻松地撤销特定客户端的所有密钥,以防万一遭到破坏——删除每个服务上的一个密钥。它也只在客户端数量上线性扩展,这可能会使密钥管理更容易。它甚至与 OpenSSH 密钥模型完美契合,即为每个客户端提供一个可在多个服务器上使用的密钥。 (您可以使用 OpenSSH 做其他模型,这很好。但这是最简单的事情,因为它发生时无需您付出任何努力。)
-
每个组合一个:每个唯一的客户端-服务器配对都有自己的密钥对。
这有一个缺点,即当单个客户端受到威胁时,您必须撤销多个密钥,但无论如何它都是每个服务一个密钥,因此不会更糟。更好的好处是,一项服务作为您和另一项服务之间的中间人将变得更加困难。大多数时候这不是一个真正的问题,但是如果您的 (Laptop,Server,SMTP) 密钥突然被用于 (Laptop,Server,SSH),您将有机会注意到这一奇怪之处。我不确定这种能力是否值得管理键的二次增长。
【解决方案2】:
执行此操作的常用方法是“每个客户一个”选项。这样,如果客户端密钥被泄露,您可以从允许的服务器中撤消 仅该密钥。如果你想要额外的工作,你可以做“每个组合一个”。
以上选项避免在主机之间复制私钥数据。