PGP 过渡声明的目的是什么?

信息安全 公钥基础设施 密钥管理 pgp gnupg 打开pgp
2021-08-24 01:53:02

PGP 密钥持有者偶尔会用更新的 PGP 主密钥替换他们旧的 PGP 主密钥(例如,使用更安全的算法)。

这样做时,PGP 密钥持有者希望他们的新密钥由签署旧密钥的同一个人签署。

有一些文档描述了如何执行此操作:

他们每个人都提到,除其他外:

  • (a) 你的旧钥匙应该签署你的新钥匙

  • (b) 写一份转换声明,说明您正在从旧密钥转移到新密钥,并且您希望对新密钥进行签名

  • (c) 签署过渡声明

签署另一个具有相同 UID/电子邮件地址的密钥的行为是否足以证明旧密钥中的所有信任都应该由新密钥继承?因此,签署了我的旧密钥的 PGP 用户不应该愿意签署我的新密钥吗?

即:(a)足够,(b)可能有用(尽管可以被其他未经身份验证的通道代替),并且(c)是不必要的。

1个回答
(a) your old key should sign your new key

(b) write a transition statement, stating that you're moving from
    an old to a new key, and that you want your new key to be signed

(c) sign that transition statement

Isn't the act of signing another key that has the same UID/email
address, sufficient to prove that all trust placed in the old key
should be inherited by the new key?

不可以。仅签署密钥只会提供其他用户导入该密钥后由其他用户的信任策略确定的任何信任指标。

That is: (a) is sufficient, (b) is perhaps useful (though could be
replaced by other unauthenticated channels), and (c) is
unnecessary.

一旦其他 OpenPGP 用户收到信息,那将无法达到目的,并且效果将完全根据他们自己的策略而有所不同。如果您只用旧密钥签署新密钥,那么新密钥只会获得任何信任值,通常会从该签名产生的价值流有所减少。但是,这些信任值不是由您确定的,而是由其密钥环中的每个用户确定的。

当然,一个简单的演示是将您自己的密钥的信任值与公钥环中的任何其他内容进行比较;您的应该是“终极的”,而其他所有的都将少于此。很可能它们中的大多数将是“未知的”或未指定的。

如果您只用旧密钥签署新密钥,那么新密钥与您签署的任何其他密钥之间基本上没有区别,例如在密钥签名事件之后。转换声明的目的是明确确认新密钥替换旧密钥,并且任何签署旧密钥的人都应该能够使用该声明来确认转换并签署新密钥。对于您碰巧签署的不属于您的任何密钥,他们不会这样做,无论 UID 冲突(可能总是包含也可能不包含电子邮件地址)。

为了向您实质上向其发送签署新密钥的请求的人提供必要的保证和相关信息,您确实应该提供所有信息。我会在这里说“必须”,但我不想通过使用类似 RFC 的术语来混淆人们。

但是,通常建议使用未包含在上面列表中的转换语句的一件事是,(c) sign that transition statement应该对转换语句进行双重签名。即,转换语句文档由旧密钥和新密钥共同签署。

几年前,我从旧密钥 ( 0x371AC5BFA04AE313 ) 转换到当前密钥 ( 0x321E4E2373590E5D ) 并使用了这个转换文档),您可以使用它查看整个过程。如果您同时导入我的旧密钥和新密钥然后验证语句,您将看到签名数据包含两个签名而不是一个,尽管具有相同的时间戳。转换声明包含验证密钥的所有必要信息,这些信息通常会亲自验证或通过其他受信任的渠道(即通常在密钥签名方或 CryptoParty 处)进行验证,双重签名告诉接收者两个密钥仍然在同一个人的控制权,并且他们不相信在做出过渡声明时旧密钥已被泄露。

您还会看到我从 DKG 删除了我的过渡文件的大部分措辞。;)