1471 字
7 分钟Add commentMore actions
利用OpenPGP实现邮件端到端加密

什么是OpenPGP#

**PGP(Pretty Good Privacy)**是一个加密程序,为数据通信提供了加密和验证功能。PGP通常用于签名、加密和解密文本、电子邮件和文件。OpenPGP是一种非专有协议,为加密消息、签名、私钥和用于交换公钥的证书定义了统一标准。

NOTE

除了OpenPGP,现主流还有S/MIME,后者更多的适用于企业用户

什么是端到端加密?#

电子邮件的端对端加密(e2ee)可以用来确保只有发件人和收件人可以阅读邮件的内容。 如果没有这种保护,网络管理员、电子邮件供应商和政府机构很容易读取你的信息。

实现 e2ee 需要发件人和收件人都很小心。任何参与方的一个错误都足以破坏 e2ee 的安全性。

另外,电子邮件元数据也不能用 e2ee 来保护。例如,发件人和收件人的姓名和地址,信息发送的时间,或从哪台电脑发送或接收电子邮件。即使使用 e2ee,邮件的主题也可能不受保护且容易被读取。

NOTE

据估计,按照目前的算力,破解RSA-3072需要二十年,破解EdDSA密钥则更久,况且也没人会闲的搞你。ECC体积小,运算快,RSA则兼容性更好。

支持OpenPGP的邮箱客户端#

OpenPGP仅限于支持的客户端之间互相发送邮件,所以需要使用到支持OpenPGP的客户端

NOTE

并非只有第三方客户端支持该功能,如proton.me邮箱就默认支持该功能

Recommend

推荐开源且有聚合功能的 Thunderbird

OpenPGP与对称/非对称密码学#

  在对称密码学中,加密和解密使用同一个私钥,如果Bob使用对称加密算法将邮件加密发送给Alice,那么Bob需要将用于解密的私钥一起发送给Alice,如何保证这个私钥的安全性是一个难题。

  非对称密码学完美解决了这个问题,在非对称密码学(公钥密码学)中,使用成对的密钥:公钥(用于加密,可以广泛传播且不会影响私钥的安全性)和私钥(用于解密,仅所有者持有)。

  由于对称加密算法比非对称加密算法的加密速度快很多,在实际应用中,我们通常使用对称加密算法加密数据,再用非对称加密算法加密前者的私钥,这样做即拥有了对称加密的加密速度,又保障了私钥的安全性,在OpenPGP中亦是如此。

CAUTION

公钥和私钥是互相工作的,即其中一个加密另个一则可以解密。公钥加密、私钥解密私钥解密、公钥解密。请务必保管好私钥,私钥包含公钥,公钥无法反推私钥,

OpenPGP的公钥发布与吊销证书#

  我们知道公钥用于加密,可以公开发布,公钥可以点对点发送,也可以上传到密钥服务器。需要格外注意的是公钥中包含邮箱信息,如果你将公钥发布到密钥服务器(各个公钥服务器会互相同步),那么你将永远无法从密钥服务器上删除你的公钥信息。在某天你忘记密码口令或丢失私钥,你想要从密钥服务器上吊销你的公钥,唯一的补救措施是:你事先生成了吊销证书,使用吊销证书可以吊销公钥证书,使公钥其显示“吊销”字样,但依然无法从密钥服务器上删除公钥信息!所以务必要谨慎上传公钥,务必生成吊销证书备用!

如何使用OpenPGP#

以 Thunderbird 为例子:

添加账户后找到端对端加密 - 添加密钥 - 新建OpenPGP密钥后继续 - 选择密钥包含的邮箱 - 密钥过期时间自定义 - 控制密钥类型与密钥大小 - 生成密钥

alt text

alt text

alt text

接下来你就会得到一串类似于 0x1234567890123456 的密钥,你可以选择性在密钥服务器上发布公钥,允许其他人发现他,也可以自行与别人交换公钥

CAUTION

上传公钥到 公钥服务器 不是必要的,甚至是危险的。 如果你是新手,请不要发布你的公钥到 公钥服务器

公钥服务器#

公钥服务器能做到只需要交换短短的key id 或者user id就可以方便地从公钥服务器下载公钥。但是事实是,网络匿名环境中充满了不那么友好的, 甚至是恶意的使用者,在当今看来 ,KeyServer这个系统并不健壮,问题重重,许多问题已经被发现十多年,而且无望解决。

具体内容可以参考该文章:2021年,用更现代的方法使用PGP

使用 e2ee 的后果是什么#

如果你发送加密的信息,你发送的文件夹中的信息将被加密。如果你丢失了你的密匙,你将无法阅读你的存档信息。这些信息无法恢复!

所有你阅读加密信息的设备必须配置为使用相同的个人密钥。如果你使用的是 Thunderbird 以外的软件,该软件可能不支持端对端加密。例如,在你的手机上阅读加密邮件就需要进行一些设置。

如果你丢失了密匙,其他人可以继续给你发送加密的邮件,而你将无法阅读这些邮件。

注意:一般来说,搜索功能对加密邮件的正文内容不起作用。

利用OpenPGP实现邮件端到端加密
https://p1ume.vercel.app/posts/openpgp/
作者
p1ume
发布于
2025-05-31
许可协议
CC BY-NC-SA 4.0