时空主站

嗨,我是时空,一名来自中国的开发者。

PGP

PGP

我鼓励读者使用 GnuPG 向我发送加密的信息。不要说你的信息不重要根本没必要加密,等你要用加密的时候就已经太晚了 —— 对于互联网。

PGP(Pretty Good Privacy)/ OpenPGP 是一套公开密钥加密标准。它的核心思想是:你用我的公钥加密信息,只有持有对应私钥的我能解开。 这样即使邮件中途被截获、被服务商存储,旁人也读不出明文。下面会一步步说明如何获取并核对公钥,以及如何用它给我写一封加密信。

  • 我的 PGP 标识[email protected]
  • 指纹FFFFA487A0E51D2E6F0C4E685968BC2CEE74E569

获取公钥

通过 HTTPS 获取公钥时,TLS 已经验证了服务器身份——你拿到的确实是来自 openpgpkey.stx8.com 的公钥,网络层的中间人攻击已被 TLS 拦截。

命令行(GnuPG)

方式一:WKD 自动发现(推荐)

写收件人邮箱 [email protected] 时,GnuPG 会自动通过 WKD(Web Key Directory)从我的服务器拉取公钥:

1
gpg --locate-keys [email protected]

这将显示类似下面的内容(指纹、子密钥等细节可能随我轮换密钥而不同,但应看到公钥被成功导入):

1
2
3
4
5
gpg: key 5968BC2CEE74E569: public key "shikong <[email protected]>" imported
gpg: Total number processed: 1
gpg: imported: 1
FFFFA487A0E51D2E6F0C4E685968BC2CEE74E569
uid [ unknown] shikong <[email protected]>

如果报错(比如 No valid OpenPGP data found),说明 WKD 没拉到,请改用下面的公钥服务器方式。

方式二:从公钥服务器获取

从 keys.openpgp.org 拉取:

1
gpg --keyserver hkps://keys.openpgp.org --recv-keys FFFFA487A0E51D2E6F0C4E685968BC2CEE74E569

或从 keyserver.ubuntu.com 拉取(前者不可达时的备用镜像):

1
gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys FFFFA487A0E51D2E6F0C4E685968BC2CEE74E569

成功时会看到 gpg: key ... imported 之类提示。如果两个密钥服务器都拉不到,请参照下面的__解决方法(使用公钥)__。

解决方法(使用公钥)

如果你遇到了无法解决的问题,不妨下载并使用这个公钥来代替。或者,你还可以使用以下指令:

1
curl -fsSL https://openpgpkey.stx8.com/.well-known/openpgpkey/stx8.com/hu/s8y7oh5xrdpu9psba3i5ntk64ohouhga | gpg --import -

我的公钥也可在 keys.openpgp.org 上找到,并可从 这个链接 下载。

图形界面

Thunderbird(内置 OpenPGP)

Thunderbird 78 及以上版本内置了 OpenPGP 支持,无需额外安装。写信给 [email protected] 时,Thunderbird 会自动通过 WKD 发现我的公钥:

  1. 新建邮件,收件人填 [email protected]
  2. 点击底部「加密」按钮
  3. 如果本机还没有我的公钥,Thunderbird 会自动从 openpgpkey.stx8.com 拉取(WKD)
  4. 加密成功即可发送

如果自动发现失败,也可以手动搜索:进入「OpenPGP 密钥管理器」→「查找」→ 输入 [email protected] 或指纹 FFFFA487A0E51D2E6F0C4E685968BC2CEE74E569,从 keys.openpgp.org 导入。

Mailvelope(浏览器插件)

如果你不想碰命令行,可以装 Mailvelope 浏览器插件,它能在网页邮箱里直接加解密:安装后进入「Key Management」→「Search」,把指纹 FFFFA487A0E51D2E6F0C4E685968BC2CEE74E569 填进去搜索导入。

用公钥给我写一封加密信

公钥到手之后,就可以加密了。假设你想加密的明文存在 message.txt 里:

1
gpg -aer [email protected] message.txt

这会在同目录生成 message.txt.asc——一份 ASCII 形式的密文。命令说明:

  • -a--armor):输出 ASCII 文本(方便粘贴进邮件正文),不加则生成二进制 .gpg
  • -e--encrypt):加密。
  • -r [email protected]--recipient):用我的公钥作为收件人(gpg 会按邮箱找到刚才导入的钥匙)。

message.txt.asc 的全部内容发给我即可。只有用我这边对应的私钥才能解密,任何中间环节(邮件服务商、网络监听者)看到的都只是一堆乱码。

小提示:如果你希望我回信时也能加密给你,请在信里附上你自己的公钥(gpg -a --export 你的邮箱 的输出),并简要说明那是你的公钥。这样我回复时就会用你的公钥加密。

公钥信息 · [email protected]

导入后可以用下面的命令核对指纹:

1
gpg --fingerprint FFFFA487A0E51D2E6F0C4E685968BC2CEE74E569

输出应与下方的主指纹完全一致。下面是这把钥匙的详细参数,供深度核对或记录:

  • 算法 / 创建 / 到期:brainpoolP512r1 · 2026-07-09 · 2030-12-31
  • 主指纹FFFA A487 A0E5 1D2E 6F0C 4E68 5968 BC2C EE74 E569
  • 签名子密钥(ed25519):8C18 B451 EE94 15F6 F6AA E7D7 5C93 D746 5B87 2D84 · 到期 2030-12-31
  • 认证子密钥(ed25519):E5AC 0502 E734 C58F 6DF4 CB33 29F3 F79B FC5A 5BDF · 到期 2030-12-31
  • 加密子密钥(rsa4096):1B3D 73D1 6D09 F3B3 F70D 9FC8 1E4F 7695 F703 AC71 · 到期 2030-12-31
  • 加密子密钥(cv25519):F450 BAE2 9B41 9C96 66E0 F3C6 E436 3812 34B9 3729 · 到期 2030-12-31
0%