在 Thunderbird 中使用 OpenPGP —— 怎么做以及问题解答

本文为想要使用 Thunderbird 发送和接收按照 OpenPGP 标准加密和数字签名邮件的用户提供了详细的相关信息。这一特性通常叫做点对点加密(e2ee),它使沟通对第三方监听更加安全。Thunderbird 78 原生支持两种加密标准,OpenPGP 和 S/MIME。

本文也为原先在 Thunderbird 68 上使用 Enigmail 附加组件的用户向 Thunderbird 78 迁移提供了详细的信息。

目录

什么是点对点加密,它如何工作?

点对点加密(e2ee)可以使通讯对第三方监听更加安全。请参看 Introduction to End-to-end encryption in Thunderbird 一文了解基本原理。

Thunderbird 支持 OpenPGP 吗?

是的。Thunderbird 78 内置支持两种加密标准,OpenPGP 和 S/MIME。OpenPGP 从 版本 78.2.1 起默认启用。

此前版本的 Thunderbird(版本 68 及更早)内置支持 S/MIME,也可以通过使用 Enigmail 附加组件和 GnuPGand 软件添加对 OpenPGP 的支持。在版本 78,除了帮助以前的用户迁移到内置 OpenPGP 支持或指导大家如何恢复 Enigmail 的“Junior Mode”体验之外,Enigmail 附加组件已经没有了。

Thunderbird 78 中的 OpenPGP 和 Enigmail 一样吗?

不,它们在用户界面和功能方面有一些不同。Thunderbird 内置的 OpenPGP 不是 Enigmail 的简单复制。Thunderbird 要提供的是一个完全整合在一起的解决方案,而且不再默认使用 GnuPG 以避免许可证问题。以下文档解释了不同之处:
https://wiki.mozilla.org/Thunderbird:OpenPGP:Migration-From-Enigmail

我从未在 Thunderbird 中使用过 OpenPGP:我该如何设置 OpenPGP?

为了在Thunderbird使用OpenPGP功能,您需要为您的邮件地址设置所谓的个人密钥对。你可以在账户设置的End-to-End Encryption点对点加密部分实现这个功能。如果你在其他软件已经使用了OpenPGP,你需要导入一个你已经有的密钥的复制备份。否则你可以创建一个新的密钥。

  • > Account Settings账户设置 > select your account选择您的账户 > End-to-End Encryption点对点加密 > Add Key…添加密钥
    • 如果你在其他软件已经有了个人的OpenPGP密钥对,请选择Import an existing PGP key导入已有PGP密钥.
    • 如果你还没有密钥,请选择Create a New OpenPGP key创建新的OpenPGP密钥.
  • 在导入或创建密钥之前,仍在账户设置里,选择你想使用这个密钥所在的邮件账号。

需要注意的是,在总体介绍中已经阐述了使用OpenPGP的一些结果。给你的密钥做个备份并把它从你的常用电脑中分离出来存储在安全的地方很重要。

我以前使用的是 Enigmail,我该如何合并和配置?

你可以在老版本(如68.x版)升级你的Thunderbird设置到78.x版。建议您在第一次使用Thunderbird 78版之前给Thunderbird老版本的数据配置做个备份,因为您一旦升级了,Thunderbird 68版的数据配置就不能再使用。如果升级后你因为一些理由必须要重新使用Thunderbird 68版和Enigmail,有个备份可以让您轻易回到之前的版本。

Enigmail现在有2.1.x和2.2.x版两种版本可被获取:

  • Enigmail 2.1.x版只在Thunderbird 68版及更早的发布版本可以运行,它提供经典功能。
  • Enigmail 2.2.x版是一个经过特殊调整的版本,可以与Thunderbird 78及更新的版本一起运行。Enigmail 2.2.x不提供传统功能,而是为了帮助你迁移密钥和配置到Thunderbird 78版而存在的。

如果在有配置文件的情况下开启Thunderbird 78版的使用,并且之前的配置安装了Enigmail,那么Thunderbird 78版将会发现之前Enigmail 2.1.x版的附加组件与之不兼容。它应该会自动检查寻找新版本,也就是Enigmail 2.2.x版然后安装它。然后Enigmail将自动打开欢迎你的标签页说明它的可迁移性并可以开始迁移,

Enigmail使用GnuPG来存储和管理密钥对和信任设置。如果你点击了开始迁移的按钮,Enigmail的迁移软件将会一个一个读取你之前在GnuPG的密钥。您必须输入密码来确认GnuPG密钥的导出以允许它们被解锁并导入至Thunderbird新的内部密钥存储处。

与Enigmail不同,Thunderbird 78版使用不同的设置。在使用Enigmail的情况下,可以为邮件账号启用OpenPGP,但它会自己选择将要使用的密钥。Thunderbird 78 版融合了这些设置。为了给邮件账号启用OpenPGP,明确具体要使用的个人密钥很重要。

因此,如果您之前使用了自动选择的功能,那么迁移的过程可能还没选择密钥。在迁移后,您应该手动检查您所有邮件账户和身份的配置,必要的话,请手动选择合适的密钥。

迁移 Enigmail 成功完成了,但是我还是不能用 OpenPGP?

如果你在Thunderbird 68版为邮件账户启用了Enigmail,并且启用了“使用这个身份的邮件地址来识别OpenPGP密钥”配置,那么在Thunderbird 78版,OpenPGP可能不会被自动启用。你需要使用账号设置来手动为每个账号和身份选择想使用的OpenPGP密钥。不幸的是,Enigmail迁移不会自动为你选择它们。

迁移可以重复做吗?

如果在迁移的过程中出现任何问题你都可以再迁移一次。例如:Thunderbird出现一个漏洞导致你迁移失败了,或是你实在不记得你所有密钥的密码了只做了一部分的迁移。为了重复迁移,你需要在顶部菜单栏获取一条命令。如果你使用的是Windows或Linux系统,顶部菜单栏看不到的话,请用鼠标在Thunderbird主窗口的顶部区域右击,启用菜单栏。然后使用包含了“迁移Enigmail配置”命令的工具菜单。

我尝试导入公钥文件时,得到了文件过大的错误信息?

请参见如下问题的答案。

我以前使用的是 OpenPGP 和 GnuPG,不过用的是其他电子邮件软件。现在我该如何把密钥迁移到 Thunderbird 78?

首先你需要从其他的软件导出密钥,然后重新把它们导入至Thunderbird。

导出个人密钥(也叫私钥或密钥)的一种方式是,在命令行使用命令来把它们导出至文件。为了导出守 GnuPG 管理的密钥,你应该使用如下命令:

gpg --export-secret-keys --armor > my-secret-keys.asc

然后你就可以把它们导入到 Thunderbird。可以在 Thunderbird 账户设置的点对点加密里使用添加密钥和导入功能。也可以使用全局菜单栏来打开提供 OpenPGP 密钥管理功能的工具栏。点击从文件导入密钥,选择你之前创建的文件。可能你只有很少的密钥,因此这个方法应该有效。

你可以为导出通讯用的公钥使用类似的操作并使用如下命令:

gpg --export --armor > all-public-keys.asc

然而,如果你有很多密钥,受限于Thunderbird目前的限度你可能会遇到问题。 目前,Thunderbird 不能通过简单一步导入大的密钥集,导入文件超过 5 MB 就会被拒绝。

为了解决这种限制,您有两种选择:

  • 第一个选择是使用 GnuPG 的图形化密钥管理器然后导出你的密钥到分别的几个文件。例如,如果所有公钥总共有17 MB,你就不得不创建四个文件,为每个导出文件选择四分之一的公钥导出。这有些麻烦。
  • 另一个可供选择的是,你可以尝试使用 Enigmail 2.2.x 版迁移的附加组件来进行到 Thunderbird 的密钥导入,甚至你从没用过 Enigmail 也可以这样做。

为此,请使用 Thunderbird 78 并搜索 Enigmail 加载项。你将被提供安装 2.2.x 版本。 安装后,你可以从 Thunderbird 顶部菜单栏中的“工具”子菜单中手动访问“迁移 Enigmail 设置”命令。 请注意,这可能会失败,这取决于你在电脑上如何设置GnuPG软件,所以不能保证这种方法有效。

如果你的电脑上已经正确安装了 GnuPG 软件,则 Enigmail 迁移插件会找到它,并将 GnuPG 中的所有公钥逐一导入到 Thunderbird 中,不受上述大小限制的影响。

Enigmail 报告说密钥导入失败?

这可能意味着你正在尝试导入 RNP 尚不支持的密钥。 另一个可能的原因是计算机上 GnuPG 软件的安装不完整,尤其是在没有提示你输入密码来导出私钥的情况下–如果你最近在计算机上成功使用过 Enigmail,则该方法不适用。

确保正确安装 GnuPG 的一个好方法:

  • 将 Thunderbird 68 安装到一个单独的目录中,然后用参数 -P 运行 Thunderbird 68,并用一个单独的配置文件运行它。(你不需要配置电子邮件帐户,你可以取消这个建议)。
  • 然后将 Enigmail 安装到你的 Thunderbird 68 配置文件中,并执行 Enigmail 设置向导,这将帮助你正确设置 GnuPG 软件。

如果这样做没有帮助,则可以查看 Enigmail 常见问题解答: https://enigmail.net/index.php/en/faq-en?view=topic&id=14

何种 OpenPGP 密钥可用?

请注意:Thunderbird 使用 RNP 软件来处理密钥,可能还不支持某些类型的密钥,这意味着某些 GnuPG/Enigmail 支持的密钥可能在默认情况下无法使用,特别是一些高级结构的密钥。不过,对于私钥,你可以通过配置 Thunderbird 使用GnuPG 来解决这个问题,下一节会有说明。

以下是 Thunderbird 78 默认情况下不支持尚未支持的密钥:
  • 某些密钥不完整,例如使用离线主密钥的密钥。
  • 子密钥使用不同密码的密钥。
  • 钥匙位于智能卡上。
  • 使用 MD5 哈希算法的密钥。
  • 某些其他 RNP 可能还不支持的密钥。
如果你发现密钥不适用于 Thunderbird,请报告给我们!如果可以,并且仅当它是公共密钥时,请提供该密钥的副本。 请注意,千万不要把你的私钥发给我们!

如果 Thunderbird 不支持我的密钥,我该怎么办?

Thunderbird 78 允许你选择设置名为 GnuPG 的外部软件来处理你的秘钥(用于对收到的信息进行数字签名和解密)。 这将使你能够使用存储秘钥的智能卡或硬件令牌。你也可以使用它来处理存储在计算机上的文件中的密钥,而 Thunderbird 内置的 OpenPGP 实现并不支持这些密钥。 你需要自己安装和配置所需的 GnuPG 软件,因为它不能和 Thunderbird 一起分发。因此,该机制默认情况下是不启用的。 要了解如何使用它,请参考下一个关于智能卡的问题。

请注意,公钥和它们的接受设置(用于加密和签名验证)始终由 Thunderbird 的内部代码来处理。

在 Thunderbird 78 我能使用 OpenPGP 智能卡或硬件吗?

可以,我们提供了一种可选的机制。 它要求你自己安装 GnuPG 和所有必需的软件。 请参考此文档以获取更多详细信息: https://wiki.mozilla.org/Thunderbird:OpenPGP:Smartcards

如何发送加密和电子签名的邮件?

确保你已经为自己的电子邮件帐户或身份配置了个人密钥。 写邮件时,请使用“选项”菜单,或安全按钮上的菜单,然后启用你想使用的保护功能。

发送加密邮件需要什么?

  • 你必须设置并选择你的个人密钥。
  • 你必须为你要发送的加密信息的每个收件人准备一个可接受的公钥。公钥通常附在你的联系人的电子邮件中。在本文档的另一章节中,有更多关于从他人那里获取公钥的信息。
  • 你必须验证你的联系人的公钥是否真的属于他们。如果你在没有验证的情况下就接受了别人的公钥,则会使你的通信暴露在中间人攻击(MITM)之下。
  • 如果你没有每个收件人的公钥,那么你的信息发送将被阻止,并且 Thunderbird 会提醒你。你可以选择完全不发送邮件,或者禁用加密并在没有保护的情况下发送邮件。

密钥可接受是什么意思?

从技术上讲,任何人都可以使用他们想要的任何电子邮件地址,以任何人的名义创建 OpenPGP 密钥。没有人能够限制或阻止这一点。这就意味着,每当你收到一个通信者的公钥时,你就有可能收到一个试图欺骗你的假的密钥。 除非你已经验证了你的通信者的密钥,否则你可能就不是在进行秘密对话,而是可能成为中间人攻击(MITM)的受害者。 如果你关心这种攻击载体,则这是你的决定,你可能要根据通信者的情况单独决定。

如果你接受了一个密钥,就意味着你愿意使用该密钥向该通信者发送加密信息。如果你收到一封来自通信者的邮件,你的接受决定会控制数字签名的显示方式。只有来自已接受的密钥的签名才会被显示为有效。

为什么我需要把自己的密钥标记为可接受私人密钥?

这是关于理论上的攻击。Thunderbird 对个人密钥的处理方式不同,它对这些密钥给予了充分的信任,我们跳过了通常的接受问题(已验证、未验证等)。

理论上,攻击者可能会以你的某个联系人的名义创建一个密钥,将秘钥发送给你,然后骗你导入。通过要求你确认秘钥是你自己的密钥,你很可能会注意到它不是以你的名字命名的密钥,你很可能会拒绝它作为你的个人密钥使用。这样就可以阻止攻击。 这个设置类似于 GnuPG 将密钥设置为具有 “ownertrust ultimate” 的模式。

为什么回复加密邮件时是自动加密的?

当回复时,默认是引用(包括)你回复的消息中的信息。你的通信者可能有很好的理由来加密他们的信息,所以当你在发送的新信息中包含原始文本时,你应该非常小心。建议继续使用加密。如果你无法加密,如果你考虑不加密就回复,你可能应该把你写的邮件信息中所有引用的文字都删除。

如何获得联系人的公钥?

如果你的通信者给你发送的邮件中附上了他们的公钥,或作为常规附件,或根据 Autocrypt 标准包含在隐藏的邮件头中,那么 Thunderbird 将提供给你导入密钥。

你可以尝试通过电子邮件地址在线发现密钥,方法是点击你正在阅读的邮件中的电子邮件地址,使用弹出菜单中显示的“发现密钥”命令。目前,它将使用 WKD 协议搜索已发布的密钥,并且会在 keys.openpgp.org 密钥服务器中搜索密钥。同样的机制也可以从 OpenPGP 密钥管理器中使用,使用 Keyserver,“在线发现密钥 ”命令,它允许你通过任何电子邮件地址或密钥 ID 或指纹进行搜索。此外,当你尝试发送加密电子邮件并查看丢失的密钥信息时,也可以使用相同的发现机制。 如果密钥已在互联网上发布,你可以下载密钥,并使用OpenPGP密钥管理器导入下载的文件。或者你可以尝试从给定的 URL 下载导入。

Enigmail 曾经提供了在非验证密钥服务器上搜索的功能。目前 Thunderbird 并没有提供这个功能,因为最近在这些密钥服务器上发现了各种问题。如果你需要从目前 Thunderbird 78 不支持的密钥服务器上获取密钥,那么你必须其他软件获取,然后保存到一个文件中,然后你可以使用 OpenPGP 密钥管理器导入公钥文件。

你可以使用以下 gpg 命令从其他服务器上获得联系人的公钥:

gpg --keyserver pgp.key-server.io --armor --export PASTE_KEY_ID_HERE

请使用 OpenPGP 密钥管理器的编辑菜单("从剪切板导入密钥" 选项)将收到的公开 PGP 密钥拷贝并导入。

Thunderbird 是否支持机会或自动加密?

不支持。目前,Thunderbird 要求用户在撰写邮件时,通过启用相应的选项来控制和决定何时使用或不使用加密。

我的 Enigmail 附加组件配置的是信任所有可用密钥。Thunderbird 可以吗?

不可以,对于你想要或需要使用的每个通信人的公钥,Thunderbird 78要求你至少接受一次公钥。

为什么启用加密后 Thunderbird 自动启用数字签名?

信息加密本身只能提供内容的保密性,但并不能提供关于信息实际发送者的可靠信息。理论上,有人可以给你发送加密信息,但伪造了邮件的发件人,给你一个值得信赖的通信的假象。因为没有数字签名的加密邮件并不真正安全,所以强烈建议也对邮件进行数字签名。

Thunderbird 目前没有提供防止自动启用数字签名的选项。我们可能会考虑在未来提供这个选项作为默认配置。目前,如果你不想发送数字签名,你必须在发送每一封加密邮件之前手动关闭该选项。

为什么 Thunderbird 在数字签名后自动发送公钥?

对邮件进行数字签名的全部目的在于,收件人将能够验证数字签名是否正确。如果收件人的公钥不可用,数字签名就无法验证。为了确保收件人能够验证你的签名,最好始终包含你的公共密钥。

目前,我们不提供配置选项以在进行数字签名时自动排除你的公钥,而是需要你在发送前手动禁用它。

我的公钥由于签名多变得很大。每个签名邮件都加上公钥会很大。怎么办?

由于限制,我们目前还不能自动将你的密钥最小化。如果你想避免你的大密钥与每个数字签名的消息一起发送,你可以使用其他软件,比如 GnuPG,来编辑和最小化你的密钥。确保你有一个可靠的秘钥备份。然后导出你的密钥。使用其他软件将其最小化。然后在 Thunderbird 中删除你的密钥,导入最小化后的密钥,并确保调整你的账户设置以使用该密钥。 未来版本的 Thunderbird 可能会在适当的时候尝试自动最小化密钥,但这将取决于未来 RNP 库的功能。

我使用 GnuPG 的高级配置为一组收件人定义了密钥。

目前,Thunderbird 78 不支持这个功能,但我们希望在未来支持它。这个增强功能在 Bug 1644085 中进行了跟踪。

Thunderbird 是否支持对每个收件人设置规则和过滤器以便自动解密邮件?

请注意:Thunderbird 目前并 不支持 像 Enigmail 附加组件那样按收件人规则或过滤规则来自动解密邮件。请确保你的加密和数字签名设置符合预期。

是否可以不加密邮件标题?

不,目前不行。

Thunderbird 是否支持 Web Of Trust?

不。Thunderbird 不会自动信任或接受其他人签名的密钥。现在,即使你表明你已经验证过联系人的密钥,Thunderbird 也不会添加你的签名。Thunderbird 将来的版本可能会改变这一策略。

当你使用迁移工具将 Enigmail 的公钥迁移到 Thunderbird 时,这些密钥应该已经添加了你的私钥签名,它们会被自动标记为可接受的密钥,所以你不用重新再处理。

Thunderbird 如何保存哪些密钥被接受?

这些信息被保存在 Thunderbird 配置文件夹的 openpgp.sqlite 文件中。

Thunderbird 把 OpenPGP 密钥保存在哪里?

它保存在 Thunderbird 的配置文件夹。

如何导出我的私钥或公钥?

请使用 OpenPGP 的密钥管理器,你可以在工具菜单栏找到密钥管理器。选择你要导入的密钥,点击选中。打开窗口的文件菜单,选择 "导出公钥" 或 "备份私钥" 选项。OpenPGP 密钥管理器还可以导出联系人的公钥。

另外,打开要导入密钥的邮件账户的账户设置,选择端到端加密面板。每个个人的密钥旁边有一个小 chevron,你可以点击查看密钥详情。点击“更多”按钮查看可行的操作。选择 "导出公钥" 或 "备份密钥"。

我要同时使用 GnuPG 和 Thunderbird,我可以同步密钥吗?

目前,Thunderbird 使用自己的密钥副本,不支持与 GnuPG 同步密钥。唯一的例外是为智能卡提供的机制,可以使用 GnuPG 管理的个人密钥。

如何保护我的私钥?

在你将个人密钥导入 Thunderbird 时,我们会将其解锁,并使用自动(随机)创建的不同密码来保护它。Thunderbird 管理的所有 OpenPGP 密匙都将使用相同的自动密码。 你应该使用 Thunderbird 功能设置一个主密码。如果没有主密码,那么你在配置文件目录中的 OpenPGP 密钥将不受保护。

Thunderbird 支持 Autocrypt 吗?

Thunderbird 不支持 Autocrypt 的理念,即加密应该是全自动的。但是,Thunderbird 对支持 Autocrypt 的邮件客户端提供了有限的兼容性。

  • 当发送邮件并使用选项附加 OpenPGP 公钥时,如果你的公钥足够简单,可以兼容 Autocrypt,那么 Thunderbird 会在发出的邮件中添加相应的头,这可以让你的通信者了解你的公钥。
  • 当接收到在 Autocrypt 头中包含通信者公钥的邮件时,Thunderbird允许你导入该公钥。
  • 目前,Thunderbird 还不支持“Gossip”功能。

我以前使用 Enigmail 的 Junior 模式(绿、红、黄标识),现在我有其他选择吗?

Enigmail for Thunderbird 68 提供了两种非常不同的操作模式。一种是经典模式,在设置中被描述为“强制使用 S/MIME 和Enigmail”,另一种是“Junior 模式”,由 pEp 软件公司的软件实现。需要注意的是,Thunderbird 与 pEp 公司没有任何关系。

Thunderbird 78 并没有提供 Junior 模式,Thunderbird 78 提供的内置 OpenPGP 功能更类似于 Enigmail 的经典操作模式。

在启动 Thunderbird 78 时,当 Enigmail 升级到2.2.x版本(提供迁移辅助的版本)后,Enigmail 会打开一个由 pEp 公司提供的网页来提供给你下载他们软件的较新版本的资源。

如果你不想安装 pEp 软件,可以尝试手动迁移到 Thunderbird 的新内置 OpenPGP 功能。要做到这一点,你必须设置禁用之前 Junior 模式的配置。 打开 Thunderbird 常规设置,滚动到底部,打开配置编辑器,搜索“extensions.enigmail.juniorMode”。双击它进行修改,并将数值设置为0。这个配置的改变会让 Enigmail 迁移工具认为你之前使用的是 Enigmail 经典模式。

重启 Thunderbird 78。重启后,Enigmail 2.2.x迁移助手会提供给你进行密钥的迁移工作。因为 Enigmail 工具只能迁移使用 GnuPG 管理的密钥和设置,它不能迁移由 pEp 软件管理的信任设置。然而,Enigmail 应该能够迁移你的个人密钥,允许你解密用该密钥加密的邮件。Enigmail 也应该能够迁移你的通信者的公钥。然而,大多数或所有的通信者密钥在 Thunderbird 78 中可能会有 “不接受”的状态,所以当你试图使用它们时,你将不得不接受或验证一次。

重启 Thunderbird 78 后,如果没有显示迁移提议,那么你需要从顶部菜单栏中访问一个命令。如果你使用的是 Windows 或 Linux 系统,顶部菜单栏不可见,用鼠标右键点击 Thunderbird 主窗口顶部区域,启用菜单栏。然后打开“工具”菜单,里面有“迁移 Enigmail 设置”的命令。

我合并的是 Enigmail 2.2.x,但是导入卡住了。

也许软件遇到了问题。请参考关于获取更多故障信息的部分。

到哪里可以报告关于 OpenPGP 功能的问题?

如果你的问题没有在本页或链接的文件中得到解决,请参考下一页的“讨论”部分,了解如何联系我们: https://wiki.mozilla.org/Thunderbird:OpenPGP#Discussion

如何判断我的问题是否已经被提过?

请参考这里的“未解决的问题和待办事项”部分: https://wiki.mozilla.org/Thunderbird:OpenPGP#Open_issues_and_TODO_list

我想自己分析问题,该怎么办?

更多信息可以在“调试/跟踪”部分找到: https://wiki.mozilla.org/Thunderbird:OpenPGP#Debugging_.2F_Tracing

Thunderbird 自动升级到了版本 78,但是我想使用 Thunderbird 68 和 Enigmail。

只要你用配置文件启动了Thunderbird 78,你就不能轻易回到68,因为配置文件已经被迁移,Thunderbird 68会拒绝使用,无法启动。

  • 如果你有配置文件的备份,你可以尝试恢复它,然后你应该可以重新启动Thunderbird 68。
  • 如果你没有备份,可以用新的配置文件创建 Thunderbird 68,然后重新配置 Thunderbird。
  • 不推荐使用Thunderbird启动参数 --allow-downgrade,因为你会失去一些配置设置,并且可能会出现意外情况。

我收到一个发件人未知(key ID 0x00000000)的加密邮件,Thunderbird 无法解密。

目前还不支持这个功能。在此跟踪该功能的添加情况: https://github.com/rnpgp/rnp/issues/1275

这篇文章对您有帮助吗?

请稍候...

此文章在这些用户的协助下写成:

Illustration of hands

志愿者

分享知识并培养专业技能。解答问题并改进我们的知识库。

详细了解