为什么端到端加密的 PGP 邮件没有被广泛使用?
看起来似乎是使用太复杂的缘故,真正的原因是所有邮件巨头对此项技术采取消极接纳的结果,如果积极推进使用的复杂性会马上得到解决。那么他们为什么要抗拒呢?一旦采用端到端的 PGP 加密,那些邮件服务商无法看到邮件的内容,无法扫描,也无法提供和内容关联的广告,总之无法从用户的邮件中获取信息。
当然作为程序员要面对现实,抱怨不解决任何问题,但我可以使用 PGP 加密,当越来越多的人使用 PGP 加密通讯时,反而会促进邮件厂商的跟进。目前的情况下,使用一款支持 PGP 的邮件客户端是普通人入门 PGP 加密邮件的最佳选择,thunderbird 几乎是不二的选择。
我是 a@example.com 要发送一封加密的邮件给 b@example.com 。打开 thunderbird 发送邮件的界面:

你会看到加密按钮是灰掉的,你需要在账号设置的端到端加密界面生成自己的密钥对。

密钥对生成之后:

这里有个发布按钮,这个会将你的邮箱的公钥发布到 keys.openpgp.org ,这个有什么用?等一下你给 b@example.com 发邮件时就会需要 b 的公钥,除非通过其它方式获取 b 的公钥,不然你没法给 b 发加密邮件。
当你的 a@example.com 账号有了密钥对之后,thunderbird 发送邮件的界面就会出现变化。此时加密按钮激活了。

然后当你输入 b@example.com 之后,并且点击加密按钮,此时 thunderbird 系统内还没有 b@example.com 的公钥,它会尝试获取这个电邮的公钥,比如 KWD ,keys.openpgp.org ,

点击解决,可以看到不同的导入方法,其中包括文件导入。

当你导入之后,就可以发送加密邮件了。 当 a 发给 b 时,用 b 的公钥加密,用 a 的私钥对内容签名(防篡改).反之则反之。
接下来谈谈 KWD ( web key directory),直接以例子说明可以直观的了解它的应用范围。比如一个邮箱 sky@never-lost.app ,如果邮箱主人同时拥有 never-lost.app 的域名,那么它可以在自己的站点部署 KWD 端点,类似于域名验证的挑战,都是在.well-known 的目录下。比如:
email: sky@never-lost.app
localpart: sky
domain: never-lost.app
wkd_hash: kh566nfd7omkgp7cxgo7qgx51gsmwefr
wkd_policy_url: https://never-lost.app/.well-known/openpgpkey/policy
wkd_hu_url: https://never-lost.app/.well-known/openpgpkey/hu/kh566nfd7omkgp7cxgo7qgx51gsmwefr
policy_record_exists: yes
hu_record_exists: yes
key_id: B4621D5A04EB1A1C
fingerprint: F08FD399804724A1307CE38DB4621D5A04EB1A1C
这个有什么用呢?当你在 thunderbird 发送邮件的界面输入 sky@never-lost.app 时,thunderbird 显示前面图片中的黄色警告,然后你点击 在网上寻找公钥,thunderbird 就会从该网站获取公钥。 如果域名不是你的,那么可以将你的公钥发送到 keys.openpgp.org ,thunderbird 也会从该网站查找。
怎么样?准备发送你的第一封 PGP 加密邮件了吗?如果你没有可接受加密邮件的邮箱,可以发送到 sky@never-lost.app ,会自动回复加密的邮件。

PGP 加密的私钥在你手里,你掌控你的信息。不是 Google ,微软,qq 或网易,如果你查看网页版的邮件,看到的是加密的内容(通常是附件形式)。
@jianglibo typo ,PGP 是用来加密邮件内容。
@jianglibo 我收发过,但第一印象还是太复杂了,各种 Key 很容易搞混用途/不正确配置
@nicaiwss gov 拿着?那不就是裸奔吗 给 gov 等于公开私钥 现在的国密就是这样 gov 想看内容就能看内容 你的私钥仅限于签名
依稀记得在本站,有人问为什么不用 pgp 代替 base64 编码邮箱防爬虫,被喷了好多楼……