我应该制作多少个 OpenPGP 密钥?

信息安全 密钥管理 pgp gnupg 打开pgp
2021-08-20 04:11:24

我正在学习如何在 GnuPG 中使用 OpenPGP 密钥,我想知道人们通常用来维护单独的 OpenPGP 密钥的阈值是多少。维护大量的密钥并不好,因为它很难被其他人信任。另一方面,我的感觉是,维护单个密钥可能无法将单独的事物分开。

几把钥匙合适?有多少是太多了?

2个回答

一般来说,每个身份一个密钥应该没问题。

一个关键可以包括:

  • 多个 UID(用于单独的邮件地址,...)
  • 多个子密钥(用于不同的设备,因此您可以在手机上放置一些子密钥;如果丢失,仅撤销这个)

好处

  • 在签署密钥、与密钥服务器交互、交叉签署密钥时减少麻烦
  • 减少维护您的密钥的麻烦,包括移动到其他计算机、吊销证书......
  • 实际使用时少麻烦
  • 减少污染:如果有人想使用您的公钥,则更容易找到正确的公钥,因为它们以语义方式分组。想象一下,查找一个人的姓名并为他正在使用的所有不同地址找到十几个密钥,用于加密?

无论如何都有多个键

如果您想管理多个不应直接连接的 ID(我可以想象一个个人 ID,一个在您的雇主处,一个用于可能不包含您的真实姓名的东西 - 我认为政府压力,......),感觉当然可以免费使用多个主键。

子项的限制

为您加密的其他人将始终选择最新的子密钥。无法将子键连接到特定的用户 ID(例如,工作和家庭具有不同的子键)。这将是使用多个主键的一个很好的理由(此外,您的雇主可能需要私钥,这取决于您当地的法律)。这对签署子密钥无效:每台计算机将只使用可用的子密钥;如果您只分发特定的子密钥,您可以轻松地强制执行给定的子密钥。

从 2.1 版开始,GnuPG 只能为主键合并不同的私有子键集。确保在一台机器上拥有所有子项并根据需要导出,或升级 GnuPG。有一种使用gpgsplitand的方法cat,但它很乏味并且需要深入了解 RFC4880(OpenPGP 规范)。

创建和导出子项

运行gpg --edit-key [key-id]主键生成子键,然后使用addkey命令启动子键生成助手(之后不要忘记save)。要导出一个子键(或一组子键),运行gpg --export-secret-subkeys [subkey-id]! >subkey.pgp-- 不要忘记感叹号!,否则 GnuPG 会将子键解析为关联的主键(并导出这个主键)。您可以使用普通gpg --import [file]命令导入它。


我强烈推荐Debian 关于子键的文档以供进一步阅读。

几把钥匙合适?有多少是太多了?

如果您想拥有多个断开连接的身份,则只需要多个密钥。身份是经过签名的,并且一个密钥上可能有多个身份。因此,您可以拥有一把钥匙,其中包含您希望声明的所有身份。

同样,您可以创建任意数量的密钥以断开身份。至于您认为有多少合适且个人可管理,这完全是个人问题。