我一直在阅读密钥签名政策和最佳实践。我一直无法弄清楚的是如何验证附加到 GnuPG 密钥的 UID 的电子邮件地址。
我可以使用 ID 验证姓名,但如何验证电子邮件地址?我不仅要确定地址是否有效,而且还要确定该地址是否属于控制私钥的人。
我一直在阅读密钥签名政策和最佳实践。我一直无法弄清楚的是如何验证附加到 GnuPG 密钥的 UID 的电子邮件地址。
我可以使用 ID 验证姓名,但如何验证电子邮件地址?我不仅要确定地址是否有效,而且还要确定该地址是否属于控制私钥的人。
到目前为止,我见过的最常见的情况是签署密钥,然后通过电子邮件将签署的密钥(嗯,只是单个签名)发送到声称的电子邮件地址。如果密钥上有多个电子邮件地址,则您只需向每个地址发送该地址的签名,并使用其公钥加密。不要将签名上传到密钥服务器或以其他方式使其可用。然后这个人要么收到签名并且能够解密它并且一切都很好,要么他们没有并且你不在乎。
这当然只能解决密钥签名方情况(或类似情况)中的问题,例如,您向其他人证明 ID 由姓名(您使用身份证明文件检查)和电子邮件地址(使用上述协议检查)组成是正确的。为了确保您自己,您需要在本地删除签名(或者在第一种情况下不将其导入您的密钥环),然后等到收件人将其上传到密钥服务器。
有一个工具可以实现这个协议:caff。
与具有从根证书(通常由您的软件供应商/分销商选择)开始的分层信任的 X.509 证书模型不同,在 OpenPGP 中没有“默认”信任实体来验证用户 ID。颁发信任完全由您决定,您可以使用一个名为“信任网络”的工具来执行此操作。
认识到 OpenPGP 密钥服务器通常不进行任何验证非常重要,尤其是除了发送验证邮件(因此它们不验证用户 ID 中的名称部分)。
在继续回答之前需要澄清一些措辞:有效密钥是那些满足您的信任要求的密钥。有两种不同的信任,身份信任(OpenPGP 用户在声称验证了对方身份后证明另一个密钥,OpenPGP 中的签名)和信任其他用户的证书(也称为担保,在 OpenPGP 中简称为“信任”) )。认证和签名这两个术语经常被等同使用。
信任网络是在它们之间发布的所有密钥和证书的集合。
只有在正确验证签名者的身份后才能颁发证书。通常,这是由签名者将其密钥(或指纹,以从密钥服务器获取密钥)和一些文件(例如护照或身份证)交给签名者来执行的。通常,它们是双向执行的(双方交换密钥和文档,反之亦然),但也很容易是单向的。
OpenPGP是GnuPG(一个自由软件)实现的标准,也是PGP(OpenPGP 的根源,但现在是商业软件)和其他一些产品实现的标准。
如果你自己核对了对方的身份,你就可以很确定对方的身份,因此你自己的密钥认证的密钥被认为是有效的。为此,您自己的密钥配备了“终极”信任。所有具有最终信任的密钥都可以与 X.509 中的根证书颁发机构进行比较。
现在,在开始交流之前很难见到每个人,有些人可能住在很远的地方,而且为了身份验证而旅行可能很难做到。
这就是信任网络发挥作用的地方。显然,您不能仅通过查看传入的证书来认为密钥有效:创建密钥和证书既简单又便宜,您甚至可以伪造成百上千个密钥和证书。要验证另一个密钥,您需要在您的密钥(最终受信任的密钥)和其他用户之间构建一个信任路径,并且中间的所有密钥也是有效的。
例如,Alice 认证了 Bob,Bob 认证了 Carol。Alice 可以简单地验证 Bob 的密钥(她自己签名)。如果 Alice 还信任Bob 能够正确验证其他用户的身份(即 Bob 能够实现钓鱼文件,并且无意发布虚假证书),Alice 将信任 Bob。现在她还可以通过 Bob 验证 Carol 的密钥。
在 OpenPGP 中,有两个信任级别:中等信任和完全信任。如何使用它们取决于你,但 GnuPG 提出了以下信任模型:一个完全信任的密钥的认证很好(所以你真的需要很好地了解另一个人的意图,也许是为了朋友和家人),但是三个中等信任的认证密钥是必需的(根据您的个人要求,这些也可能是您不太了解的人,例如通过开源参与、出版物、科学...... ,在这种情况下是六只眼睛)。
作为信任网络基础的认证的规范来源是所谓的密钥签名方,一群人会面以相互验证他们的身份和签署密钥。
在信任网络中也有一些机构作为证书颁发机构,即CAcert也颁发 OpenPGP 证书,德国Heise Verlag运行不同的德国技术杂志。