FairEmail 中文文档 下载 App

FairEmail OpenPGP 端到端加密配置与使用

什么是 OpenPGP 端到端加密

常规的邮件发送路径是:你的客户端 → 邮件服务商服务器 → 收件人邮件服务商服务器 → 收件人客户端。这条路径上,邮件服务商(Google、微软等)在技术上有能力读取邮件内容(尤其是非加密邮件)。

OpenPGP 端到端加密(End-to-End Encryption,E2EE)改变了这一点:

密钥管理采用非对称加密体制:公钥可以公开分享,私钥必须自己保管。用对方公钥加密 → 只有对方私钥能解密。用自己私钥签名 → 对方公钥能验证。

FairEmail 的 OpenPGP 支持方式

FairEmail 本身不包含 PGP 实现——它依赖 Android 系统上安装的 OpenPGP 兼容应用来完成加密解密操作。最常用的开源 PGP 应用是 OpenKeychain。

为什么要设计成依赖外部 PGP 应用

开发者的理由:PGP 加密是一个复杂且容易出错的领域,FairEmail 选择让专业的 PGP 应用来处理密钥管理和密码学运算,自己只负责触发和展示结果。这样既保持了 FairEmail 的轻量,又能复用成熟的加密库。

前置条件

安装 OpenKeychain

  1. 从 F-Droid 或 GitHub 下载安装 OpenKeychain(Play Store 上也有但已下架,推荐 F-Droid 版本)
  2. 首次启动 OpenKeychain,按引导创建自己的 PGP 密钥对(或导入已有密钥)
  3. 密钥创建后,OpenKeychain 会显示你的公钥指纹——这个指纹就是别人用来找到你公钥的标识

导入联系人公钥

要给某人发送 PGP 加密邮件,你需要先获取对方的公钥:

在 FairEmail 中启用 PGP

启用 PGP 加密分两步:为每个账户开启 PGP 支持,然后在需要发送加密邮件时手动勾选加密选项。

第一步:账户级开启

  1. FairEmail 设置 → 手动设置 → 账户 → 选择某个账户
  2. 找到「加密」相关选项
  3. 勾选「启用 OpenPGP 加密」
  4. 勾选后 FairEmail 会自动扫描你 OpenKeychain 中的密钥对和联系人公钥

第二步:手动选择加密

在写信界面:

  1. 点击右上角的「锁」图标(PGP 功能开启后才会出现)
  2. 在弹出菜单中:

FairEmail 会自动检测当前收件人是否有可用的 PGP 公钥。如果有,加密按钮会亮起;如果没有,FairEmail 会提示「收件人没有可用的 PGP 公钥」。

接收和验证 PGP 邮件

当有人给你发来 PGP 加密或签名的邮件时,FairEmail 会自动处理:

解密加密邮件

  1. FairEmail 检测到邮件是 PGP 加密格式(-----BEGIN PGP MESSAGE----- 开头的 block)
  2. 自动调用 OpenKeychain 解密
  3. OpenKeychain 可能要求你输入私钥的口令(Passphrase)来解锁密钥
  4. 解密成功后,FairEmail 显示正常的邮件内容
  5. 解密失败 → 显示加密的原始文本 + 错误提示

验证签名邮件

  1. FairEmail 检测到邮件有 PGP 签名 block
  2. 用发件人公钥验证签名
  3. 签名有效 → 邮件头区域显示绿色 ✓ 图标 + 「签名已验证」
  4. 签名无效 → 显示红色 ✗ 图标 + 「签名无效,邮件可能被篡改」
  5. 未知签名者 → 提示「签名来自未知密钥,你确定这是发件人吗?」

发送加密邮件的完整流程

假设你要给 bob@example.com 发一封加密邮件:

  1. 已经在 OpenKeychain 中导入了 Bob 的公钥(指纹 ABCD1234)
  2. FairEmail 账户已开启 PGP 支持
  3. 写信界面填写收件人 bob@example.com、主题、正文
  4. 点击右上角锁图标 → 勾选「加密」
  5. FairEmail 自动找到 Bob 的公钥,加密选项亮起
  6. 点击「发送」
  7. FairEmail 调用 OpenKeychain,用 Bob 的公钥加密邮件内容
  8. 加密后的邮件作为附件(.asc 文件)或直接在邮件正文中发送
  9. Bob 收到后,FairEmail 自动调用 OpenKeychain 解密

常见问题

「收件人没有可用的 PGP 公钥」

你还没有导入这个收件人的公钥。解决方法:让对方发一份公钥文件(或公钥指纹),导入 OpenKeychain。

解密时要求输入口令

这是正常的——OpenKeychain 为了保护你的私钥,在创建时会要求你设置一个口令。每次使用私钥(解密邮件、签名邮件)时都需要输入这个口令。你可以设置一个较短的解锁超时(比如 5 分钟内重复操作不需要再输口令)。

OpenKeychain 找不到我的密钥

确认:

YubiKey 硬件密钥

OpenKeychain 支持 YubiKey 等硬件安全令牌存储 PGP 密钥。在 FairEmail 中使用 YubiKey 时,加密 / 解密 / 签名操作需要物理接触 YubiKey(比如触摸一下)。