PGP 密钥签名策略

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

前言

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

    pub   rsa2048/0xFEBB1B95F7964FB5 2013-02-01 [SC] [expires: 2024-01-12]
          Key fingerprint = 328C 0C0A 5F78 B322 C7D0  7DA1 FEBB 1B95 F796 4FB5
    uid                   [ultimate] Allen Zhong (Personal Master Key) <allen@atr.me>
    uid                   [ultimate] Allen Zhong (Personal Development Key) <moeallenz@gmail.com>
    uid                   [ultimate] Zhong Benli (Amateur Astronomer) <asfunomy@wobu.se>
    uid                   [ultimate] Allen Zhong (Nyan~) <allen@moe.cat>
    uid                   [ultimate] Allen Zhong (Network Time Foundation) <zhong@ntp.org>
    sub   rsa2048/0xB2A5D98748A2992A 2013-02-01 [E] [expires: 2024-01-12]
    sub   rsa4096/0xE716D10E16EABFBF 2014-05-12 [S] [expires: 2024-01-12]
    sub   brainpoolP384r1/0xDB94E46EEDEB9AFD 2016-01-13 [S] [expires: 2024-01-12]
    sub   brainpoolP384r1/0x3917C25F85E6BE7E 2016-01-13 [E] [expires: 2024-01-12]
    sub   rsa4096/0xDCBABBBA797EBEB0 2016-08-24 [E] [expires: 2024-01-12]

    pub   ed25519/0x7D78D22D23333B33 2018-10-10 [SC] [expires: 2024-06-25]
          Key fingerprint = 5C7C FA3B 74A5 782B 5A20  441A 7D78 D22D 2333 3B33
    uid                   [ultimate] Allen Zhong (Personal Master Key) <allen@atr.me>
    uid                   [ultimate] Allen Zhong (Personal Development Key) <moeallenz@gmail.com>
    uid                   [ultimate] Allen Zhong (Nyan~) <allen@moe.cat>
    uid                   [ultimate] Allen Zhong (Network Time Foundation) <zhong@ntp.org>
    uid                   [ultimate] Zhong Benli (Amateur Astronomer) <allen@astronomical.party>
    sub   cv25519/0x4C01B18F97AA532A 2018-10-10 [E] [expires: 2024-06-25]
    sub   ed25519/0x60EEFC16A5CF56BC 2018-10-17 [S] [expires: 2024-06-25]
    sub   rsa4096/0x03EBA14C38FA65D9 2018-10-17 [SEA] [expires: 2024-06-25]

自2019年1月起,我默认使用新的 ECC 密钥 0x23333B33 为其他密钥签名,这一密钥在密码学上具有更强的安全性。旧有的 RSA 密钥 0xF7964FB5 亦继续使用,但可以预期其将在未来数年内被废弃。然而,由于一些较陈旧的 PGP/GnuPGP 实现对 ECC 密钥可能存在兼容性问题,在 ECC 密钥无法被支持时,我亦可使用旧的 RSA 密钥作出签名。我使用上述任一密钥对其他密钥作出的签名均具有同等效力。

本密钥长期存储在 pgp.gnd.pw 等密钥服务器上。你亦可从本页面获得 0xF7964FB50x23333B33 的密钥文件, 不过最新版本通常发布在密钥服务器上。

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

地理位置

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

签名级别

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

先决条件

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

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

gpg --fingerprint 0x12345678

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

签名操作

Level 0

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

Level 1

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

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

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

Level 2

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

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

特殊情况

目前除了上述步骤以外,没有我接受用于密钥验证的特殊方案。

一般操作

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

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

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

公平性原则

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

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

技巧

在使用 GnuPG 进行签名时,设置 --ask-cert-level 参数可以选择签名的级别。

Changelog

2023-03-15: 更新 UID 列表

2021-09-08: 更新密钥服务器并移除路径查询

2020-01-17: 添加“技巧”小节

2019-04-22: 小修改

2019-03-04: 加入新的 ECC 密钥 0x23333B33 并更新对 sig1 的说明

2018-05-20: 更新 UID 列表 & 移除不再适用的特殊验证条件

2017-05-03: 更新子密钥和密钥服务器

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

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

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

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

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

2013-10-14: 初稿

授权

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

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 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.txt