PGP 密钥签名策略

以下是我签署他人 PGP 密钥时所遵循的程序。(English Version

前言

本策略适用于下列 GnuPG 密钥所作出的所有签名:

pub   rsa2048/F7964FB5 2013-02-01
      Key fingerprint = 328C 0C0A 5F78 B322 C7D0  7DA1 FEBB 1B95 F796 4FB5
uid         Allen Zhong (Personal Master Key) <allen@atr.me>
uid         Allen Zhong (Personal Development Key) <moeallenz@gmail.com>
uid         Allen Zhong (Network Time Foundation) <zhong@ntp.org>
uid         Zhong Benli (Hegu, Alibaba Group) <benli.zbl@alibaba-inc.com>
uid         Zhong Benli (Amateur Astronomer) <asfunomy@wobu.se>
uid         Allen Zhong (Nyan~) <allen@moe.cat>
sub   rsa2048/48A2992A 2013-02-01
sub   rsa4096/16EABFBF 2014-05-12 [expires: 2019-05-11]

本密钥长期存储在 keyserver.siccegge.depgp.mit.edu等密钥服务器上。你随时可以从这里获取密钥 0xF7964FB5, 不过最新版本通常发布在 密钥服务器上。

本策略最初撰写于 2013-10-14 且从此日期开始执行,不过也随时可能被更新版本替代。本文档的结构和内容系受到 Olaf GellertGnuPG Key Signing Policy 以及 Aaron ToponcePGP Keysigning Policy 启发。

地理位置

我目前在杭州工作并可能在假期返回成都,在任何时候均可进行签名。与我验证密钥的最简单方法是在杭州或成都与我直接会面。另一个与我当面接触的机会是在某些公共活动上约见。我同时也在 biglumber.com 注册有信息,这是一个协调密钥签名活动的网站。

签名级别

根据待签名密钥的具体情况,我将会签署以下不同级别的签名,请注意这些级别的描述和 GnuPG 文档中的对应说明并不完全一致。

先决条件

被签署人(希望从签署人,亦即我处获取密钥签名者)须将其 PGP 密钥上传至某一公众可访问的密钥服务器(如 keyserver.siccegge.de)。

若安排了线下会面,被签署人须准备一张纸条,其内容为以下命令的输出

gpg --fingerprint 0x12345678

(或非 GnuPGP 体系中的等效命令),其中 0x12345678 为待签署的密钥ID. 手写的包含希望我签名的密钥的指纹及所有 UID 的纸条也可接受。

签名操作

Level 0

被签署人须向我发送一封使用待签署密钥签名并经文档开头处所列我的密钥加密的电子邮件。邮件中须包含以下信息:

Level 1

我接受一种取巧地验证被签署人身份的方式,即我认为通过 Paypal 或支付宝进行的转账操作可以信任。故而在 Level 0 的基础上,待签署人需要额外准备:

由于上述邮件地址并未包含在我的密钥 UID 中,待签署人可(可选地)在转账信息中放入一个随机字符串,我会在后续的邮件内容中加入此字符串,作为我自身身份的校验。

不论签名流程成功与否,除非被明确要求,我不会退还这笔钱款。

Level 2

被签署人应该事先向我发送一封使用待签署密钥签名并经文档开头处所列我的密钥加密的电子邮件约定一次线下会面。

被签署人须准备一张前文所述的纸条及其本人被政府承认的带照片的身份证件,随后将上述材料带至会面现场并向我展示。我接受中华人民共和国境内的所有有效身份证件和任意其他国家的有效护照。

特殊情况

由于我当前供职于阿里巴巴集团,如果在内部员工系统中可以查询到个人信息,我可以不经第三方支付验证而签署 level 1 签名,作为替代,待签署人须提供其员工工号和域帐号,我将根据这些信息在内部员工系统中查询个人详细信息,并同其所对应的员工直接联系验证。

如果在前款所述的简单验证方式完成后,待签署人愿意在任一办公园区和我实际会面并向我展示其工牌,我可以签署 level 2 签名。

这一特殊验证方式仅在我能够正常访问阿里巴巴内网时可行。

一般操作

我会在住处向带待签名密钥中每个 UID 对应的电子邮件地址发送一封验证邮件。验证邮件会包含随机字符串并且经由纸条上所写指纹对应的密钥加密。在收到加密的回复邮件过后我会检查其中的随机字符串是否和我发出的相同。

通过上述测试的 UID 将由我进行签名。如果其中一个 UID 没有通过测试则我将会发送一封警告邮件至密钥中另一 UID 的邮箱,签名流程亦会被挂起,直至获得适当的答复或者被签署人放弃签名。

签名过后的密钥将会被上传至 keyserver.siccegge.de 服务器。被签署人可以从密钥服务器上获取或者选择通过电子邮件收取。显然,我希望被签署人在现实允许的最短时间内签署我的密钥。被签署人可以将签名后的密钥上传到某一密钥服务器或者通过邮件发回给我。

公平性原则

对于我请求他人做出的签名,我会(按照对方的签名策略)以相同级别签署对方的密钥。同时,我也希望从我所签署的密钥的持有者处获得与我所作出的相同级别的签名。

我希望对密钥进行交叉签名,所以若被签署人并不愿意签署我的密钥,则向我提出签名请求不具有任何意义。

路径查询

我的密钥在所谓的“强集”当中,你可以使用由 Henk P. Penning 在 http://pgp.cs.uu.nl/ 提供的路径查询工具来获得一个简单的文本输出:

你的密钥 ID:
你的密钥 ID:

我的密钥统计信息在这里

Changelog

2016-01-12: 更新 UID 列表 & 细部调整

2015-11-07: 加入一些说明 & 小修改

2015-11-04: 更新地点 & 增加同事间的特殊验证手段

2013-10-25: 增加路径查询

2013-10-16: 添加密钥本地下载地址并修复笔误,中文版发布

2013-10-14: 初稿

授权

Copyright © 2013-2016 Allen Zhong. 对于任何可能由于翻译原因造成的误解或混淆,均以英文版为准。

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation.

A signed version of this documentation is available at:
https://atr.me/~pgp/policy-signed.md.asc