PGP 加密邮件:GPG 与端到端隐私

FreeGuideOnline 最新 2026-06-18

PGP 加密邮件完全指南:使用 GPG 实现端到端隐私

随着数字监控和个人数据泄露日益严重,学会加密电子邮件已成为保护隐私的核心技能。本教程将带你从零开始,掌握基于 OpenPGP 标准的 GPG(GNU Privacy Guard) 工具,实现真正的端到端加密邮件通信。你将理解其工作原理,学会生成密钥、加密解密邮件,并规避常见陷阱。


为什么需要 PGP 加密邮件

普通的电子邮件如同明信片,任何中间服务器和网络节点都可能阅读其内容。而 PGP(Pretty Good Privacy) 提供了一种标准化方法,确保只有你指定的收件人才能解密信息。这被称为 端到端加密(E2EE),即使邮件服务提供商也无法窥探内容。

GPG 是 PGP 的开源实现,完全免费且被广泛审计。通过 GPG,你不仅能加密邮件正文,还能进行 数字签名,验证发件人身份并确保消息未被篡改。


核心概念:公钥与私钥

在动手之前,你需要理解 PGPG 依赖的非对称加密模型:

  • 密钥对:由一把公钥(Public Key)和一把私钥(Private Key)数学关联组成。
  • 公钥:可以公开分享给任何人,用于加密要发给你的信息,或验证你的签名。
  • 私钥:必须绝对保密,由你自己保管,用于解密发给你的信息,或为你的邮件签名。
  • 信任模型:与其依赖中心化的证书机构,PGP 使用“信任网络(Web of Trust)”,通过互相签名来验证公钥归属。

核心原则:永远不要把私钥发送给任何人,永远不要把私钥上传到云存储或随机站点。


环境准备:安装 GPG

几乎所有操作系统都可以轻松安装 GPG。

Linux (Debian/Ubuntu)

sudo apt update && sudo apt install gnupg

macOS

推荐通过 Homebrew 安装:

brew install gnupg

Windows

使用官方 Gpg4win 安装包。访问 gpg4win.org 下载,其中包含了 GPG 命令行工具和图形界面 Kleopatra,适合初学者。

安装后,打开终端(Linux/macOS 的 Terminal,Windows 的 PowerShell 或 Git Bash)输入 gpg --version 确认安装成功。


第一步:生成你的密钥对

生成密钥是建立加密身份的第一步。

1. 启动生成向导

gpg --full-generate-key

2. 选择密钥类型

程序会提示选择密钥种类。直接按 Enter 选择默认的 RSA and RSA,既安全又通用。

3. 选择密钥长度

输入 4096,这是目前推荐的 RSA 密钥长度,在安全性与性能间取得良好平衡。

4. 设置有效期

你可以设定一个过期日期,例如 2y(2年)。密钥过期后可以向朋友们续期签名,也可设置永不超期。选择后按 Enter

5. 填写用户标识

你需要输入:

  • 真实姓名:你的姓名或常用昵称。
  • 电子邮件地址:你用来收发加密邮件的邮箱地址,务必填写准确。
  • 注释(可选):可以留空。

确认信息正确后输入 O(是)确认。

6. 设置私钥保护口令

弹出一个对话框要求你输入 强大且可记忆的密码短语。这个密码用于加密你的私钥文件,即便设备失窃,攻击者也难以使用你的私钥。请勿使用生日、简单单词。

生成过程可能需要随机数据,建议在此期间移动鼠标、打字或运行一些程序,以增强熵源。

完成后,终端会显示密钥指纹,例如 1A2B 3C4D 5E6F 7890 ABCD EF12 3456 7890 ABCD


基本密钥管理操作

掌握命令来查看、导出和导入密钥。

列出你的密钥

gpg --list-secret-keys --keyid-format LONG

你会看到类似 sec rsa4096/1234567890ABCDEF 2025-01-01 [SC] 的输出,其中 1234567890ABCDEF 就是你的密钥 ID。

导出公钥以便分享

你需要把公钥发给通信对象,他们才能加密邮件给你。

gpg --armor --export your-email@example.com > mypublickey.asc

参数 --armor 将二进制内容转为 ASCII 文本,方便粘贴。文件 mypublickey.asc 内容形如:

-----BEGIN PGP PUBLIC KEY BLOCK-----
...
-----END PGP PUBLIC KEY BLOCK-----

导入他人的公钥

收到别人的公钥文件(.asc 或 .gpg)后导入到你的密钥环:

gpg --import friend_publickey.asc

你也可以用 gpg --keyserver keys.openpgp.org --search-keys friend@example.com 从公钥服务器搜索并导入。

验证密钥指纹

导入后,务必通过另一信道(如电话或当面)确认密钥指纹,防止中间人攻击。

gpg --fingerprint friend@example.com

让对方念出完整的 40 位指纹,与你本地显示的一致。


实践:加密与解密邮件

不依赖特定邮件客户端,我们先用命令行理解核心流程,再迁移到任何软件。

加密邮件

假设要给朋友 friend@example.com 发送加密消息。创建一个文件 message.txt,写入邮件正文。

gpg --encrypt --armor --recipient friend@example.com message.txt
  • --recipient:指定收件人的邮箱地址(必须在密钥环中已导入其公钥)。
  • 执行后生成 message.txt.asc,内容即为加密后的密文。

你也可以用管道和 echo 直接加密一段文字:

echo "这是我们之间的秘密" | gpg --encrypt --armor --recipient friend@example.com

解密邮件

将收到的密文保存为 encrypted.asc,然后运行:

gpg --decrypt encrypted.asc

系统会提示你输入保护私钥的密码短语,成功后显示明文内容。

签名与验证签名

签名可以证明邮件确实由你发出,且未被篡改。

签名但不加密(适合公开声明):

gpg --clearsign message.txt

会生成一个 message.txt.asc 文件,包含明文邮件和签名。

验证签名

gpg --verify message.txt.asc

如果输出包含“Good signature”和签名者信息,则验证通过。

加密并签名(推荐私密通信):

gpg --encrypt --sign --armor --recipient friend@example.com message.txt

收件人解密的同时也会自动验证签名。


将 GPG 集成到邮件客户端

大多数现代邮件客户端都支持 PGP,无需每次手动命令。

Thunderbird (推荐)

安装 Thunderbird + 附件 “OpenPGP” (Thunderbird 78+ 已内置,无需额外插件)。

  1. 打开 Thunderbird,进入 工具 > OpenPGP 密钥管理器
  2. 如已有密钥对,选择 文件 > 从文件导入密钥,导入你的私钥(.asc);或直接生成新密钥。
  3. 在账户设置中,为对应邮箱指定使用的密钥。
  4. 写邮件时,工具栏会出现 加密数字签名 按钮。只要收件人公钥已导入,即可一键加密。

网页邮件 + Mailvelope 浏览器扩展

如果你使用 Gmail、Outlook Web 等,推荐安装 Mailvelope 浏览器插件。

  • 在扩展中导入自己的密钥对和联系人公钥。
  • 撰写邮件时,页面会集成加密功能,自动加密并替换邮件内容为密文。

其他客户端

  • macOS 邮件:通过 GPG Suite 集成。
  • K-9 Mail (Android):搭配 OpenKeychain 实现移动端加密。
  • Canary Mail、ProtonMail、TutaNota 等原生支持 PGP。

公钥分发与信任网络

如何让别人找到你的公钥?可组合使用多种方式:

  • 直接发送公钥文件:将 mypublickey.asc 通过即时通讯或网站提供给亲朋好友。
  • 上传到密钥服务器gpg --keyserver keys.openpgp.org --send-keys 你的密钥ID
  • 在个人网站、社交简介中放置公钥
  • 信任网络:参加密钥签名聚会,相互签名公钥,从而构建去中心化的信任链。

安全最佳实践与常见误区

  • 永远保密主私钥:考虑为日常使用创建子密钥,将主密钥离线保存。命令 gpg --edit-key 可管理子密钥。
  • 定期轮换密钥,发布吊销证书:生成密钥后,立即生成吊销证书:gpg --output revoke.asc --gen-revoke your-email,并安全存储。一旦私钥泄露,可用此证书宣告公钥作废。
  • 切勿在不可信设备上使用私钥:云虚拟服务器、公共电脑都视为不安全。
  • 加密不会保护元数据:邮件主题行、发件人、收件人、时间等依然是明文的。如需隐藏,需结合匿名邮件服务或加密隧道。
  • 端到端加密仅保护存储和传输中的内容:接收方设备如果被入侵,明文仍然可读。保护终端设备同等重要。
  • 口令备份:用密码管理器保存私钥密码,并制作纸质备份放在安全位置。

故障排查与帮助

  • 解密失败“No secret key”:说明你没有安装相应的私钥。检查 gpg --list-secret-keys 确认已导入。
  • 加密失败“Key not found”:你需要先导入收件人的公钥,且其信任级别需足够。用 gpg --edit-key friend@example.com 输入 trust 设置信任度。
  • 忘记私钥密码:无解,只能吊销密钥并生成新密钥。因此务必安全备份口令。
  • 复制粘贴密文乱码:确保使用 --armor 产生的 ASCII 装甲文本,而非二进制文件。

从今天开始加密你的通信

PGP 并不是一个复杂的黑客工具,而是每个人都能掌握的隐私基石。本教程提供了从概念到实操的完整路径。现在你应该可以:

  • 生成并安全保管 GPG 密钥
  • 加密和签名邮件
  • 将 GPG 整合到日常邮件客户端
  • 建立自己的可信联系人网络

选择一位朋友,交换公钥,发送你的第一封加密邮件吧。哪怕只是一句“你好,密文测试”,也是迈向隐私自主的重要一步。

拓展阅读与资源

  • GNU Privacy Handbook:https://www.gnupg.org/gph/en/manual.html
  • Email Self-Defense(自由软件基金会):https://emailselfdefense.fsf.org/
  • OpenPGP 最佳实践指南:https://riseup.net/en/security/message-security/openpgp/best-practices