准备改用新的 GPG 密钥 - 我的旧密钥怎么办?

信息安全 密钥管理 gnupg 密钥生成
2021-09-04 21:06:41

我刚刚创建了一个新的离线 GPG 密钥,其中包含一个签名/认证主密钥和两个子密钥——一个用于签名,一个用于加密。Master 5 年到期,Subs 2 年。我的主密钥只有我的名字和我的出生日期作为 UID……子密钥(?)有 5 个 UID,包括我的名字和电子邮件。

顺便说一句,UID 是与一个子密钥、所有子密钥、主密钥还是与整个链相关联?是否可以将一个 ID 连接到一个特定的子键 - 例如。用于签署软件包的子密钥,并带有反映这一点的 UID。...或者为此目的制作一个单独的密钥,并用我的普通(以上)密钥签名/交叉签名更好?

我也有几个旧密钥 - 一些已过期 - 上传到密钥服务器。我想撤销这些密钥。

+++

如果我理解正确,我应该用我的旧密钥签署我的新(离线)密钥,以证明新密钥是我的......

但是我是否也应该使用我的新密钥来签署我的旧密钥,并将它们上传到密钥服务器(甚至是已经过期的密钥)?

最后,我将撤销除最新密钥之外的所有密钥......撤销主密钥就足够了,还是我也必须撤销所有子密钥(如果适用)?

在将修改后的密钥上传到密钥服务器之前,我可以在本地执行所有这些操作吗?或者,在上传带有他们签名的新密钥时,我已经撤销它们的事实是否会成为问题?
我建议的工作流程:创建新密钥,用旧密钥签署新密钥,用新密钥(?)签署旧密钥,撤销旧密钥,将所有密钥更新到服务器。

顺便说一句,当有一个带有用于加密和签名的子密钥的离线密钥时......我知道我使用签名子密钥来签署文件和消息......而且我必须使用完整的密钥(通常是离线部分) 用我的万能钥匙对我的钥匙进行自我签名更改......但是其他人的钥匙呢?我可以用我的签名子密钥签署他们的密钥 - 还是必须使用主密钥(完整密钥)?我可以两者都做,但推荐一个?

1个回答

感谢您的评论回复,这有所帮助。

这些是一般性建议,YMMV,您可以随时根据自己的需要调整它们。这只是一个很好的起点和需要牢记的事情,但正确的安全态势是个人的努力,而不是一劳永逸的事情。

首先,不要用旧密钥签署新密钥。如果您之前没有使用过旧密钥,那么它就没有现有的信任链,因此使用它来签署某些东西不会给身份断言增加太多(如果有的话)权重。一旦您撤销旧密钥(我们的下一步),它将为任何索赔增加零权重。这仅在您以前使用过旧密钥时才有用,因为它有助于向其他人保证新密钥不是骗局(他们信任旧密钥,这告诉他们信任 [签名] 新密钥)

注意:每当我说“钥匙”时,我的意思与您所说的“主钥匙”相同。在谈论“密钥”的特定用途后代时,我将指定“子密钥”。

其次,吊销您的旧密钥——确保在吊销中注明原因(原因是“不再使用”或“已被取代”),并输入包含您的新密钥 ID“密钥已被替换为后勤”的描述原因,新的 KeyID 是 12BC-A29D”。创建吊销证书后,将其发布到公钥服务器(实际上,只需将其发送到 MIT,它就会从那里生成)。这负责关闭旧密钥;您已将其撤销并在公共服务器中列为未使用(带有提示以及如何查找/验证您的新密钥)。在这一点上,你可以完全忘记你的旧钥匙。

永远记住从公钥服务器中删除密钥时,您必须颁发撤销证书并将其提交给服务器。即使某些服务器包含“删除此密钥”字段,它们也不会完全删除它。真正取消以前发布的密钥的唯一方法是发出撤销。

现在,转到您的新密钥。

你在这里有一个不错的开始。正常的建议如下:

  1. 使您的密钥有时间限制。

通常这会导致人们在他们的密钥上设置 1 年(我使用 13 个月)的到期日期。然后他们将每年进行维护,在此期间他们将延长到期时间并将更新的密钥发送到公共服务器。这可以防止丢失/未使用的密钥,除非您采取常规操作来刷新它们,否则它们将自动过期。

  1. 预先制作撤销证书

这是在丢失的情况下。一般建议是在您制作新密钥之后(甚至在您将其提交到公共服务器之前)制作“无理由”或“密钥泄露”撤销证书。然后打印此证书(我强烈推荐使用 OCR 字体)并将其扔到您的物理安全保存位置(家里的保险箱、银行存款箱,您可以将重要且难以替换的文件(如原始出生证明)存放在这些地方)或原始社会保障卡和护照)。如果发生某些事情导致您失去对密钥的控制,您仍然有办法撤销它;这使它成为一个非常好的以防万一的项目。

  1. 不用担心子键

我不是说不要使用子键。我只是说您正在使用制作精良的 PGP 实现(我的所有机器上都有 GPG,无论操作系统如何),它可以为您处理所有这些。您就子密钥 ID 或子密钥证明和管理提出了几点意见,虽然这些是我们在设计和实施方面必须担心的事情,但最终用户不需要担心这些事情。GPG 软件为您创建了一个密钥对,并且(根据您的指示)为特定目的创建了一组托管子密钥。当您使用 GPG 签名时,它会自动使用正确的子密钥;加密和身份验证也是如此(如果您创建了一个身份验证密钥并拥有可以使用它的东西)。如果你想深入了解 PGP 的工作原理,那就是一个更深的池塘,

  1. 你的钥匙是你

该 PGP 密钥现在被用作身份源。人们只需检查签名即可验证您是否完成了某些操作。不要通过创建完全独立的键来混淆水域。如果需要,您可以将更多用户 ID 添加到现有密钥(如果您获得新的电子邮件地址,或者如果您需要证明您携带的新角色很有用)。如果要签名,请使用您的签名子密钥钥匙; 这就是子键的全部原因。如果您曾经得到由主 ID 为 6742F54F27B19AC2 的 PGP 密钥处理的东西,那么您就会知道它来自我。关键是您,不要将您的身份分割成多个密钥,还要像保护您的出生证明和护照一样严密地保护您的密钥。您的保护可以从将密码添加到 PGP 密钥(GPG 应该提示您创建一个,但您可以选择不创建)到将私钥组件卸载到智能卡上(我这样做,使用 YubiKey)为您提供多因素和物理拥有的安全网;这在很大程度上是“最适合您个人的”项目之一。

TLDR - 不要用旧密钥签署新密钥。为旧密钥颁发撤销证书并将其提交给公共服务器。确保你的新密钥有一个到期日期,你可以让它不远,只是定期延长它。不必担心手动管理要使用的子键。不要为不同的目的创建第二个(或第三个)密钥。请保护您的密钥,就好像它足以窃取您的身份一样(因为它是)。