当您签署 PGP 密钥时,您在说什么?

信息安全 pgp 电子签名 gnupg 信任网络
2021-08-25 05:01:36

当您签署 PGP/GPG 密钥时,您究竟对每个看到您签名的人说了什么?您是在验证此人还是电子邮件地址?

为了解释我的意思,举以下两个例子:

验证此人: “我相信该密钥0x559E3EE8属于会计部门的 Bob;他在午餐时亲自递给我一张带有该公钥的纸。我不知道 Bob 的电子邮件地址是什么,但如果他将其列为其中之一他的 UID 在他的密钥中,我相当确定它属于他。

验证的电子邮件地址(UID): “我相信,关键0x559E3EE8是属于bob.stanford@examplecorp.com,我不知道他是在现实生活中谁,但我们已将加密的电子邮件来回,我肯定知道,他可以解密和阅读我发给他的电子邮件,因为他有时会引用我写给他的东西。我也可以非常确定,在我的计算机和他的邮件服务器之间没有人在中间。”

3个回答

OpenPGP 没有为认证定义任何规则

来自RFC 4880,签名类型:

[...] 请注意,这些含义的模糊性不是缺陷,而是系统的一个特点。因为 OpenPGP 将有效性的最终权威赋予签名的接收者,所以一个签名者的随意行为可能比其他权威的积极行为更严格。[...]

非正式的最佳实践

不过,有一种非正式的最佳实践。通过发布未定义或临时信任级别的证书sigsig2,签名类型0x100x12),您声明确认签名者的身份这可能是通过查看官方文件或非常了解某人而发生的。通常,人们会发送包含签名作为附件的加密邮件,以验证邮件地址的所有权

正信任级别的认证sig3,类型0x13)通常要求签名者对他正在做的事情有一些高级确定性这可能是因为对签名者的长期了解,或者对所提供的知名文件(例如,您自己国家的护照)的高度信任。

认证政策

由于没有通用的、强制执行的认证规则,有些人发布了他们声称遵守的认证政策。它们通常只代表非正式的最佳实践,但可以帮助其他人证明您的认证声明的合理性。

这些通常包含有关您如何验证密钥、您需要什么文件、您如何处理签名者姓名的变化等信息,可能还有更多信息。通常,它们是经过签名的文件,并从每个颁发的 GnuPGcert-policy-url选项的认证中引用。

你应该两者都做。您可以选择仅签署特定 UID 或所有 UID,并且您应该只签署您可以担保的 UID。例如,如果您在 Example Inc 工作并且 Bob 拥有“bob@example.com”和“bob@president.gov”,那么您应该只签署他的 bob@example.com UID。

PGP 签名声明以下内容

  1. 我保证这把钥匙属于 Bob
  2. 我保证他的证书上列出的这个电子邮件 ID 属于 Bob

实际上,很少有人会做#2,而且大多数人只是在不检查的情况下签署所有 UID。

参与 PGP 的人应该有一份认证实践声明 (CPS),但这并不像应该的那样普遍,例如,

这些政策通常具有与该人会面的共同点,验证他们的政府颁发的 ID 是否与他们展示自己的姓名相匹配,并确保该人可以控制相关的电子邮件地址。

我喜欢 CPS 的形式,尤其是涉及到有关签署别名密钥或组织密钥的政策时。

CPS 将指示权威机构何时以及为何签署密钥或证书。 http://en.wikipedia.org/wiki/Certification_Practice_Statement

要分叉,您可以出于任何原因签署任何人的密钥。如果您发布签名,您应该有一个 CPS,并且您应该对 CPS 进行数字签名。如果有人问你为什么要签署某人的密钥,你可以指出他们。