#1 获取部件

本指南需要安装 自由许可的 软件;它是完全透明的,任何人都可以复制它,并制作自己的版本。这使得它比专有软件(比如 Windows 和 Mac OS)更难受到监控。为了你免受监控,我们推荐你换用像 GNU/Linux 这样的自由软件操作系统。你可以在 fsf.org 上了解更多有关自由软件的信息。

在开始之前,你需要安装 IceDove 邮件程序。对于你的操作系统来说,IceDove 可能以其别名 Thunderbird 存在于你的系统。电子邮件程序是另一种访问邮箱账号的途径(你也可以像 Gmail 那样通过浏览器访问),但它提供了更多的功能。

如果你已经有了电子邮件程序,你可以跳至 Step 1.b

Step 1.a 配置电子邮件帐号

打开你的邮件程序,按照向导程序的提示逐步设置好你的邮箱账号。

在配置你的账号时,留意服务器右侧的 SSL, TLS 或 STARTTLS 字样。如果你没有看到他们,你仍将有能力使用加密,但这意味着运行邮件系统的人以低于行业标准的规范保护着你的安全与隐私。我们建议你,向他们发送一份友好的邮件,要求他们为邮件服务器启用 SSL, TLS 或 STARTTLS。他们会知道你说的是什么,如果你不是系统安全的专家,这是一个值得的请求。

疑难解答

向导程序没有启动
你可以自行启动它,但不同邮件程序的菜单选项不尽相同。启动它的按钮在程序的主菜单里,“新建”或者类似的,标题类似于“添加账号”(Add account)或者“新建/已有电子邮件帐户”(New/Existing email account)。
向导程序没有找到我的账号或者不能下载我的邮件
在网上搜索解决方案之前,我们建议你问问你身边使用相同邮件系统的人,以检查设置是否正确。

Step 1.b 下载 GPG4Win 获取 GnuPG

GPG4Win 是一个包含 GnuPG 的软件包。下载 并安装它,无论提示什么都选择默认选项。安装后,你可以关闭程序创建的窗口。

在 GPG4Win 3.1.2 前的版本存在重大安全漏洞。请确保安装的是 GPG4Win 3.1.2 及其之后的版本。

Step 1.c 给电子邮件程序安装 ENIGMAIL 插件

在邮件程序的菜单栏里,选择“附加组件”(Add-ons,它可能在工具选项里)。确认选上了左侧的“扩展”(Extensions)。看到了 Enigmail 吗?确保安装的是最新版本。如果是,请跳过此步。

如果没有,在右上方的搜索框里搜索“Enigmail”。你可以在这里获取到它。安装完成后重启邮件程序。

在 Enigmail 2.0.7 前的版本存在重大安全漏洞。请确保安装的是 Enigmail 2.0.7 及其之后的版本。

疑难解答

我找不到菜单。
在许多新型电子邮件程序中,主菜单是用三横杠图标表示的。
我的电子邮件看起来很奇怪
Enigmail 往往不能在 HTML 格式(它是一种常见的邮件格式)里表现的很好,所以它会自动禁用 HTML 格式。要想发送不加密或不带签名的 HTML 格式邮件,单击“撰写消息”(compose)时按住 Shift 键,你就可以撰写邮件,仿佛 Enigmail 不存在一样。

#2 生成密钥

要使用 GnuPG 体系,你将会用到一把公钥(public key)和一把私钥(private key),他们合称为密钥对(keypair)。每一把都是随机生成的一长串数字和字母的值,它是独一无二的。你的公钥和私钥是由一种特殊的数学函数联系在一起。

你的公钥不像现实中的钥匙,它公开储存在被称之为密钥服务器(keyserver)的在线目录上。人们可以下载使用它,借助 GnuPG,人们向你发送加密邮件。你可以把密钥服务器想象成一本电话簿;想要给你发送加密邮件的人能够找到你的公钥。

你的私钥更像是现实中的钥匙,你需要自行保管它(在你的计算机中)。你使用 GnuPG 和你的私钥来解密他人发给你的加密邮件。无论如何,你都不应该改向他人分享你的私钥。

除了加密和解密,你可以使用这些密钥对消息进行签名,并检查其他人签名的真实性。我们将在下一节里详细探讨它。

Step 2.a 生成密钥对

Enigmail 安装向导可能会自动运行。如果没有,在你的邮件程序你选择 Enigmail → Setup Wizard。如果你不愿意,你不必去阅读弹出窗口中的文字,但读一读总归是好的。点击下一步而不对默认选项作修改,但除了下列情况以外:

  • 在“加密”(Encryption)界面,选中“默认加密我的所有消息,因为隐私对我很重要”。
  • 在“签名”(Signing)界面,选中“默认不对我的消息签名”。
  • 在“密钥选择”(Key Selection)界面,选择“我想为数字签名和加密邮件创建新密钥对”。
  • 在“生成密钥”(Create Key)界面。取一个强壮的密码吧!你可以自行取密码,也可以使用 Diceware 模式。自己取密码虽然快捷,但不安全。使用 Diceware 需要更长时间,并要求掷骰子,但它能生成攻击者难以辨识出的密码。要使用它,请阅读 Micah Lee 写的 这篇文章 的“使用 Diceware 生成安全密码 ”(Make a secure passphrase with Diceware)一节。

如果你喜欢自己取密码,想一个你记得起的至少十二字符长的东西,至少包含一个小写和一个大写字母,和一个数字或标点符号。永远不要使用你在其他地方使用过的密码。不用使用任何可辨认的规律,诸如生日、电话号码、宠物名字、歌词或书中的名言。

在“生成密钥”(Key Creation)界面,程序需要花费小会儿完成下一步。等待时,你可以在计算机上做一些其他事情,比如看电影或浏览网页。此时你计算机使用的越频繁,密钥生成的速度越快。

当 “密钥已生成”(Key Generation Completed)窗口弹出,选中“生成证书”(Generate Certificate)并选择把它储存在计算机上安全的地方(我们推荐新建一个名为“吊销证书”的目录在你的家目录下,并将它保存在那里)。这是本指南重要的一步,你将会在 Section 5 了解到更多信息。

疑难解答

我找不到 Enigmail 菜单。
在许多新型电子邮件程序中,主菜单是用三横杠图标表示的。Enigmail 可能在“工具”选项里。
向导程序无法找到 GnuPG
打开你常用来安装软件的程序,搜索 GnuPG,并安装它。通过 Enigmail → Setup Wizard 来重启 Enigmail 安装向导。
我的电子邮件看起来很奇怪
Enigmail 往往不能在 HTML 格式(它是一种常见的邮件格式)里表现的很好,所以它会自动禁用 HTML 格式。要想发送不加密或不带签名的 HTML 格式邮件,单击“撰写消息”(compose)时按住 Shift 键,你就可以撰写邮件,仿佛 Enigmail 不存在一样。
更多资源
如果你对我们的说明有问题或是想了解更多,请访问 Enigmain 对于生成密钥说明的维基页面

进阶指南

使用命令行生成密钥
如果你偏爱使用命令行,以获得更高级别的控制,你可以参考文档 The GNU Privacy Handbook。确保你选择的是"RSA and RSA" (the default),因为它比文档中推荐的算法更新更安全。同时确保你的密钥至少 2048 bits,如果你想更安全的话 4096 bits 也是可以的。
高级密钥对
当 GnuPG 创建一个新的密钥对时,加密函数和签名函数会通过 子密钥(subkeys)分离开来。如果你谨慎地使用子密钥,你能够更加安全地保证 GnuPG 身份,并迅速从密钥泄漏中恢复回来。Alex CabalDebian wiki 提供了对设置一支安全子密钥的配置说明。

Step 2.b 上传公钥到密钥服务器

在你的电子邮件程序菜单里,选中 Enigmail → 密钥管理。

在你的密钥那里右键,选择“上传公钥到密钥服务器”(Upload Public Keys to Keyserver)。使用弹窗中默认的密钥服务器。

现在,想给你发送加密信息的人可以从因特网上下载到你的公钥了。上传时,菜单中有多个密钥服务器可供选择,他们拥有彼此的完整副本,所以你选择哪一个无关紧要。然而,新密钥上传后,服务器间可能要数小时才能完成同步。

疑难解答

进度条一直没有结束
关闭上传窗口,确保你已连接上网络,再试一次。如果还不行,则选择其他密钥服务器。
我的密钥没有显示在列表中
尝试选中“默认显示全部密钥”(Display All Keys by Default.)。
更多文档
如果你对我们的指南有困难,或仅仅是想了解更多,请查看 Enigmail's documentation

进阶指南

使用命令行上传公钥
你也可以通过 命令行 上传公钥到密钥服务器。The sks Web site 维护着一个高度相互连接的密钥服务器列表。你也可以 直接导出公钥 文件到你的计算机中。

什么是 GnuPG,OpenPGP?

通常,术语 GnuPG, GPG, GNU Privacy Guard, OpenPGP 和 PGP 可以互换其称呼。技术上说,OpenPGP(Pretty Good Privacy)是一种加密标准, GNU Privacy Guard(常被缩写为 GPG 或 GnuPG)是实现该标准的程序。Enigmail 是一个电子邮件程序的插件,它提供了 GnuPG 的界面。

#3 试一试

现在你将要尝试与名为 Edward 的计算机程序进行通信,它掌握了如何加密。除非另有说明,你与真人通信时也遵循同样的步骤。

Step 3.a 发送你的公钥

这一步很特别,因为你和真人通信时不需要做。在你的邮件程序菜单中,找到 Enigmail → 密钥管理。你应当看到你的密钥在弹窗的列表中。在你的密钥处右键,选择“通过邮件发送公钥”(Send Public Keys by Email)。这会创建一封草稿消息,就好像你点击了“撰写”按钮。

收信人地址填写 edward-en@fsf.org。在邮件主题栏和正文里任意撰写内容。先别发送。

左上方的锁形图标应当是黄色的,这意味着加密已经启用。我们需要这第一封特别的邮件是未经加密的,因此需要单击图标让它关闭。此时锁形图标会变成灰色,并带有小蓝点(以提醒你默认设置已发生改变)。加密关闭后,点击发送。

爱德华可能需要两三分钟回复邮件。在这期间,你可以跳过前面的部分并查阅本指南 善用加密 章节。爱德华回复后,继续下面的步骤。从这里开始,你所要做的与真人通信时相同。

你打开爱德华回复的邮件,在使用私钥解密消息时,GnuPG 可能会弹窗要求输入密码。

Step 3.b 发送一封测试加密邮件

在你的邮件程序中写一封新的邮件,收信人地址填写 edward-en@fsf.org。在主题中填写“加密测试”或类似的词语,并在正文中写一些内容。

窗口左上放的锁形图标应当是黄色的,这意味着加密已启用。这会是你今后的默认设置。

你会注意紧挨着锁形的铅笔图标。我们马上就会用到它。

点击发送。Enigmail 会弹出窗口提示“收件人不合法,不受信任或未找到”。

要给爱德华发送加密邮件,你需要他的公钥,接下来你要 Enigmail 从密钥服务器下载它。点击“下载缺失的密钥”,并使用默认的密钥服务器。一旦它找到公钥后,选择第一支密钥(以 C 开头的 Key ID),并确定。在下一个弹窗中选择确定。

现在你返回“收件人不合法,不受信任或未找到”界面,查看爱德华公钥的窗口,点击发送。

因为你使用了爱德华的公钥加密邮件,解密则就要求爱德华的私钥。只有爱德华自己有它的私钥,因此除了他,没人能解密消息。

疑难解答

Enigmail 无法找到爱德华的公钥
关闭点击发送时的弹窗,确保你已经连接上因特网并再试一次。如果仍然无效,重复此过程,选择其他密钥服务器。
已发送文件夹中解密的消息
即便你无法解密用其他人公钥加密过的消息,你的邮件程序会自动用你的公钥保存一份副本,这就使得你能够在已发送文件夹像查看普通邮件一样查看它。这是正常的,它并不代表你已发的邮件没有被加密。
更多资源
如果你仍对我们的说明感到困惑,或想了解更多,请查阅 Enigmail's wiki

进阶指南

使用命令行加密消息
如果你喜欢,你也可以用 命令行 加解密消息和文件。命令选项 --armor 能够使加密输出显示为常规字符集。

重要: 安全提示

即便你加密了邮件,主题行是不受加密的,因此不要在那里填写私人信息。发送人和接收人的邮件地址也是不经过加密的,因此监控系统可以识别出你在和谁通信。同时,监控代理将会知道你使用了 GnuPG,即便不知道你说了什么。当你发送附件时,Enigmail 会让你选择加密与否,它是独立于真实邮件的。

出于安全原因,你可以关闭 HTML 格式,而使用纯文本渲染消息主题。

Step 3.c 接收回信

当爱德华收到你的邮件,他会使用他的私钥去解密消息,下面使用你的公钥(你在 Step 3.A 发给他了)加密他给你的回复。

爱德华可能需要两三分钟回复邮件。在这期间,你可以跳过前面的部分并查阅本指南 善用加密 章节。

当你接收爱德华的邮件并打开它时,Enigmail 会自动检测它是否使用你的公钥加密的,接下来使用你的私钥解密消息。

留意消息上方的通知条,它会显示爱德华公钥状态的信息。

Step 3.d 发送一封测试签名邮件

GnuPG 提供了对消息或文件签名的方式,验证它们的确来自于你,并且始终未被篡改。这些签名比笔头签名更强有力——因为无法被伪造,没有你的私钥就无法签名(这是保护私钥安全另一个的原因)。

你可以向任何人签名消息,因此让对方意识到你在使用 GnuPG——他们可以和你安全的通信——是个不错的主意。如果他们没有 GnuPG,他们仍将有能力阅读你的消息并查看你的签名。如果他们有,他们将有能力验证你签名的真实性。

要想对发给爱德华的邮件签名,并撰写一些消息给他,点击紧邻锁形图标的铅笔图标,它会变成金黄色。你要是对消息签名,GnuPG 可能会在你点击发送消息前询问你密码,这是因为签名需要解锁私钥。

锁形和铅笔图标能够让你对每封消息选择加密、签名、两者都要或者都不要。

Step 3.e 接收回信

当爱德华收到你的邮件,他将会使用你的公钥(你在 Step 3.A 发给他了)去验证你签名的真实性,以及你发送的消息未经篡改。

爱德华可能需要两三分钟回复邮件。在这期间,你可以跳过前面的部分并查阅本指南 善用加密 章节。

爱德华的回复会是加密的,因为他能加密就加密。如果一切顺利,他会回复“你的签名已被验证”。如果你的测试签名邮件也是加密的,他会优先提及。

#4 了解信任网

邮件加密是一种强有力的技术,但它有弱点;它要求验证某人的公钥的确是属于他的。否则,无法阻止攻击者使用你朋友姓名和邮件地址,生成密钥,进行冒充。这就是为什么自由软件程序员开发出密钥签名(keysigning)和信任网(the Web of Trust)。

当你签署了某人的公钥,相当于你公开声称这把公钥经你验证是属于他的,而不是其他人。

签署密钥和消息签名使用了同种类型的数学运算,但有着不同的含义。通常,对自己邮件进行签名是一种良好实践,但随意签署别人的公钥,最终你可能会意外地为冒充者做了担保。

使用你的公钥的人可以看到谁签署了此公钥。长期使用 GnuPG 后,你的密钥可能有数百支签名。你可以认为,公钥上你信任的人的签名数量越多,那么这支公钥越可信。信任网是 GnuPG 用户的聚集地,他们用签名传递着信任链,连接彼此。

Step 4.a 签署密钥

在邮件程序菜单中,选择 Enigmail → 密钥管理。

爱德华公钥处右键,在上下文菜单中选中“签署密钥”。

在弹窗中,选中“我不会回应”并点击确定。

现在你返回 Key Management 菜单。选择 Keyserver → Upload Public Keys 并点击确定。

你刚刚有力地表达了“我信任爱德华的公钥,它的确属于爱德华”。由于爱德华是一个机器人,这对它并不意味着什么,但这是一个良好的实践。

验证密钥:指纹和 ID

人们的公钥通常是由他们密钥指纹确定的,它是像 F357AA1A5B1FA42CFD9FE52A9FF2194CC09A61E8 (爱德华的密钥)的数字串。通过在你邮件程序菜单 Enigmail → Key Management ,在密钥上右键密钥属性,你能看到你的公钥以及计算机上其他公钥的指纹。在告诉他人你邮箱地址的同时,分享你的指纹是一个不错的实践,这样人们可以在从服务器下载你公钥的时候,再次检查下载的公钥是否正确。

你可能已经看到有人使用短 key ID 表示公钥。Key Management 窗口中,你可以直接看到 key ID。这八位字符曾经用于表示身份,现已经不再安全可靠。你需要检查完整的指纹,以验证你拥有通信对方正确的密钥。不幸的是,被有意生成两个指纹后八位字符相同的密钥,这种冒充是很常见的。

重要: 签署密钥时需要考虑什么

在签署密钥前,你需要严格确认密钥是属于他的,的确是他自己所声称的那个人。这种确信来自逐步地沟通交流,以及目睹了他与其他人的交流过程。任何时候签署密钥都应该要求查看完整的公钥指纹,而不只是短 key ID。如果你认为,所要签署人的公钥相当重要,可以要求他出示身份证明,确保身份证上的姓名与公钥的姓名相符。在 Enigmail 里,诚实地回答弹出窗口问题“你对所签署的公钥确实属于那个名字的人验证的严格程度?”

进阶指南

精通信任网
不幸地是,信任并不是像 大多数人想象的 那样在用户之间传递。深入 理解 信任网是如何运作的,并在条件允许的情况下,谨慎地对尽可能多的人的密钥进行签名,是增强 GnuPG 社区的最佳方式。
设置信任级
如果你对某人的信任足够验证其他人的密钥,你可以在 Enigmail 的 Key management 窗口中,为他们指派一个信任级(ownertrust)级别。在其他人密钥处右键,选中“选择信任级”(Select Owner Trust)菜单选项,选择信任级,并点击确定。在充分理解信任网的前提下,完成这一步。

#5 善用加密

每个人使用 GnuPG 方法不尽相同,遵循一些基本实践是保护邮件安全的重要方式。一旦不遵守,你便是拿着通信双方的隐私做冒险,并且危及信任网。

何时该加密?何时该签名?

加密消息是多多益善的。如果你只是偶然加密邮件,每封的加密消息就像是为监控系统竖红旗。如果全部邮件都是加密的,做监控的人会不知道从何处开始——这不是说加密部分邮件毫无帮助——它使大规模监控变得困难,这是重要的开始。

除非你不想暴露身份(这还要求其他保护措施),没有理由不对每封信签名,无论是否加密。除了允许 GnuPG 验证消息确实来自于你,签名是一种非侵入性的方式,提醒别人你在使用 GnuPG,并表示对安全通信的支持。如果你经常给不熟悉 GnuPG 的人发送签名消息,在你的标准邮件签名(这里的签名指的是文字,而非密码学签名)中附上本指南的链接将会不错。

警惕非法密钥

GnuPG 能够使邮件更安全,但仍要小心非法密钥,它可能导致消息落入坏人之手。使用非法密钥加密的邮件可能能被监控程序读取。

在你的邮件程序里,回到爱德华发给你的第一封加密邮件。因为爱德华用你的公钥加密了它,Enigmail 的上方会有一条消息,它可能是这样写的:“Enigmail:消息部分已加密”。

使用 GnuPG 时,要养成看通知条的习惯。如果你收到的邮件是用不受信任的密钥签名的,程序会提醒你。

备份吊销证书到安全的地方

还记得你何时生成密钥和保存 GnuPG 生成的吊销证书的吗?是时候将证书备份到安全的数字储存设备上——理想的地方是闪存盘,磁盘或者硬盘,他们存放在家中安全的地方——而不是你随身携带的设备。

如果你的私钥丢失或被盗,你需要这张证书文件以让人们知晓,你不再使用这对密钥对了。

重要: 如果有人得到了你的私钥,要迅速行动

如果你丢失了私钥或是有人得到了它(这是说,你的计算机被偷或者被入侵)。在其他人使用你私钥阅读你的加密邮件或是伪造签名前,立即吊销它显得格外重要。本指南不包含如何吊销密钥,但你可以遵循这些 指示。在你吊销完成后,生成新的密钥对,并给所有使用你的密钥的人发送邮件,并附上新密钥的拷贝,确保他们知道发生了什么。

网页邮箱和 GnuPG

当你使用网页浏览器获取你的邮件,那么你使用的是网页邮箱(webmail),它是一个直接储存在网站里的电子邮件程序。和网页邮箱不同,你的桌面邮件程序是运行在你自己的计算机上。即使网页邮箱无法解密加密过的邮件,它仍然会以加密形式显示出来。如果你常用的是网页邮箱,当你收到一封混乱的电子邮件时,你应当知道去打开你的电子邮件客户端。