我应该创建单独的 GPG 密钥对还是只创建用于多种用途(例如电子邮件、签名提交)的一个 GPG 密钥对?

我应该创建单独的 GPG 密钥对还是只创建用于多种用途(例如电子邮件、签名提交)的一个 GPG 密钥对?

为每个用例创建一个 GPG 密钥对是否更好,或者是否认为最佳做法是仅为多个用例创建一个 GPG 密钥对?

以下是我使用 GPG 密钥的原因:

  1. 签署电子邮件
  2. 加密电子邮件
  3. 签署承诺
  4. 使用它经过

答案1

取决于您认为密钥应受到何种保护。我的意思是:如果一个密钥有多种用途,且安全要求截然不同,那么它应该是两个不同的密钥。

例如,如果它加密了您的财务数据(wallet.dat?)并且需要严密保护,但同时它加密了您的闲置聊天电子邮件并且需要复制到您拥有的每一台台式机/笔记本电脑/手机上 - 这些应该是单独的密钥。

其他类似的例子包括为商业通信使用单独的密钥对(例如,如果由于法律原因而被迫放弃),为涉及自动 cronjobs 的任何事情使用单独的密钥对(例如,软件开发人员的机器自动签署夜间软件版本),等等。


请注意,在 PGP 中,签名和加密始终使用单独的子密钥,因此在此边界上导入“部分”密钥很容易。例如,您可以拥有一个仅保存加密子密钥的设备,并且能够读取您的加密数据,但仍然无法代表您签署任何内容。

此外,PGP 软件将“签署文件/消息”和“签署 PGP 密钥”识别为两个不同的目的,并允许您轻松地为它们设置单独的子密钥。(更准确地说,主密钥/根密钥始终用于签署其他人的 PGP 密钥,但子密钥可用于签署一般数据。)这意味着您可以拥有一个可以签署提交和电子邮件消息的设备,但仍然无法签署 PGP 密钥。

(后者很重要,因为这不仅仅是能够签署其他人的密钥——尽管这仍然应该受到高度保护——但也能签署更新你自己密钥,例如更改到期日期、添加新的电子邮件地址甚至带照片的身份证,甚至撤销密钥。)

但是,同一主密钥下的所有子密钥在外部获得的“信任”大致相同。例如,您无法将两个加密子密钥用于不同的特定目的,最终它们会混淆。因此,在需要按目的(例如个人目的与工作目的)区分它们的情况下,您需要两个完全独立的 PGP 密钥。

(子密钥主要用于密钥轮换,例如每年一个新的加密子密钥,或者使用不同算法的两个签名子密钥——我仍然使用 RSA4096 密钥来与旧的仅 RSA 系统兼容,但有一个 Ed25519 签名子密钥来制作 Git 提交签名很多比 RSA 要小。)

答案2

我不是 PGP 专家,但我要告诉你,除非你有不同的不相连的系统和角色,否则使用单个密钥似乎更好。

特别是如果你让其他人签署你的密钥,如果只有一个密钥,就更容易证明你的身份,而如果出现问题,也只有 1 个密钥可以被否认。

您可能需要考虑使用子密钥 - 这将允许您单独撤销一些密钥,但仍然维护 1 个主密钥 - 这可以让您对某些子密钥的安全性比其他子密钥略微宽松(请阅读https://wiki.debian.org/Subkeys

它有点旧了(但逻辑没有改变),https://security.stackexchange.com/questions/29851/how-many-openpgp-keys-should-i-make问了类似的问题,并得出了与我相同的结论。

相关内容