首页/我的作品/密码学/9.4 电子邮件加密:给普通邮件加上信封
密码学:守护数字世界的秘密

9.4 电子邮件加密:给普通邮件加上信封

第 53 / 78 篇 · Crazy Boy

电子邮件诞生于互联网的早期,那时人们还天真地以为网络上的所有人都是友善的。于是,电子邮件的设计者把邮件做成了明信片——任何人都可以在传输途中看到内容。直到今天,默认的电子邮件依然如此:它像一张没有信封的明信片,从你的发件箱出发,经过一个又一个邮件服务器,最后抵达收件人。沿途的每一个节点,都可以阅读、甚至修改邮件内容。

这就引出了一个问题:我们能不能给电子邮件加上一个“信封”,让只有真正的收件人才能打开?

答案是肯定的。这就是电子邮件加密要做的事情。

电子邮件为什么不安全?

在你点击“发送”之后,一封普通邮件会经历这样的旅程:

  1. 你的邮件客户端(如 Outlook、Gmail 网页)将邮件发送到你的邮件服务器(SMTP 服务器)。
  2. 服务器根据收件人地址,将邮件转发到收件人的邮件服务器。
  3. 收件人从自己的服务器下载邮件(通过 POP3 或 IMAP)。

在这条路径上,邮件的每一个停留点都可能被查看。你的邮件服务商、中间转发服务器、甚至是网络上的窃听者,都能读到邮件内容。更糟的是,邮件的“收件人”“发件人”“主题”这些元数据更是完全暴露的。

如果你在邮件里写信用卡号、合同内容、甚至一句“我爱你”,这些信息在互联网上几乎是透明的。

给邮件加上“信封”的两种方式

给邮件加密,主要有两种方法:端到端加密和传输层加密。

  • 传输层加密:比如 Gmail 默认使用的 TLS。它只保护邮件在“传输途中”不被窃听,但邮件在服务器上依然是明文的。你的邮件服务商可以阅读你的邮件(事实上它们确实会扫描邮件内容来推送广告)。这种方式就像你把信装进信封,但信封在邮局里可以被工作人员拆开看。
  • 端到端加密:邮件在发送前就被加密,只有收件人才能解密。邮件服务商看到的只是乱码。这才是真正的“信封”。

我们常说的“电子邮件加密”,通常指的就是端到端加密。目前有两种主流的端到端加密标准:PGP(Pretty Good Privacy)和 S/MIME(安全多用途互联网邮件扩展)。

PGP:用信任网保护你的邮件

PGP 是由菲利普·齐默尔曼(Phil Zimmermann)在 1991 年开发的。它一诞生就引起了巨大争议,因为它把军用级别的加密技术交到了普通人手中。美国政府甚至曾以“出口军火”的罪名调查他,最终撤诉。

PGP 的核心思想是:每个人都有一对密钥(公钥和私钥)。你把自己的公钥公开,任何人都可以用它给你发加密邮件。当你发送邮件时,用收件人的公钥加密邮件内容,只有收件人的私钥能解密。这个过程和我们之前学过的非对称加密完全一样。

但 PGP 解决了一个关键问题:你怎么知道某个公钥真的属于某个人? PGP 没有依赖中心化的证书颁发机构(CA),而是引入了一种去中心化的信任模型——信任网(Web of Trust)。

在信任网中,你可以亲自签署其他人的公钥,证明你认识这个人,并且确认这个公钥确实属于他。当你收到一个陌生人的公钥时,你可以看看有多少你信任的人签署了这个公钥。如果信任链条足够长,你就可以认为这个公钥是可信的。这就像现实世界中,你通过朋友介绍认识一个新朋友一样。

PGP 还支持数字签名。你可以用私钥对邮件签名,收件人用你的公钥验证,从而确认邮件确实是你发的,且没有被篡改。

今天,PGP 最常见的实现是GnuPG(GPG),一个开源的免费软件。你可以在命令行使用它,也可以在各种邮件客户端(如 Thunderbird、Apple Mail)中通过插件集成。

S/MIME:企业世界的标准

S/MIME 是另一种端到端加密标准,它更依赖中心化的证书体系。与 PGP 不同,S/MIME 使用我们熟悉的 X.509 数字证书。你需要向 CA(证书颁发机构)申请一个电子邮件证书,这个证书绑定了你的邮箱地址和公钥。

当你发送加密邮件时,你的邮件客户端会自动从收件人的证书中获取公钥(通常通过 LDAP 或公钥目录服务)。收件人用私钥解密。

S/MIME 的优势在于它与现有的企业 IT 基础设施(如 Active Directory)集成得很好,证书的管理也更规范。许多企业邮件系统(如 Microsoft Exchange)原生支持 S/MIME。缺点是,你需要付费购买证书(虽然现在也有一些免费的邮件证书),而且用户需要手动配置。

端到端加密的挑战

尽管技术已经成熟了几十年,但端到端加密的电子邮件并没有像 HTTPS 那样普及。原因有几个:

  1. 密钥管理复杂:普通用户很难理解什么是公钥、私钥,更不用说去交换公钥了。
  2. 互操作性问题:PGP 和 S/MIME 不兼容。一个使用 PGP 的人没法给一个使用 S/MIME 的人发加密邮件。
  3. 移动端支持不足:手机邮件客户端对端到端加密的支持一直很差。
  4. 搜索困难:加密后的邮件内容是乱码,无法被邮件服务商索引,也就无法在服务器端搜索。

近年来,一些新的端到端加密邮件服务(如 ProtonMail、Tutanota)尝试解决这些问题。它们不依赖 PGP 或 S/MIME,而是采用自己的加密体系,并把密钥管理完全封装在服务中,用户甚至不需要知道什么是密钥。但这些服务的问题是:你只能和同服务的人加密通信,跨服务时又退回到普通邮件。

小结:你的邮件需要“信封”吗?

对于普通人的日常聊天,也许不需要加密邮件。但当你发送敏感信息——合同扫描件、身份证照片、财务数据——时,一个数字信封就至关重要了。

你可以选择:

  • 如果对方也使用 Gmail 等大型服务商,传输层加密(TLS)能防止中途窃听,但邮件在服务器上仍是明文。
  • 如果双方都愿意稍作学习,可以配置 PGP(如使用 GPG 和 Thunderbird)实现真正的端到端加密。
  • 如果你们都是同一加密邮件服务(如 ProtonMail)的用户,直接用该服务即可。
  • 如果是在企业内部,可以启用 S/MIME,利用已有的企业证书体系。

无论如何,电子邮件加密的概念本身并不复杂:它就是用我们学过的公钥加密,给邮件套上一个只有收件人才能打开的数字信封。这个信封不仅保护了内容,还能验证发件人的身份。在数字时代,学会使用它,是对自己隐私的一种基本尊重。