利用OpenPGP实现邮件端到端加密

简介

什么是OpenPGP?

OpenPGP是一种以安全的“端到端”方式对数据(例如电子邮件)进行加密和/或签名的方法。这意味着,邮件在您的计算机上使用收件人的公钥进行加密,电子邮件服务器不知道邮件的内容。然后,邮件的收件人使用其私钥在自己的计算机上解密邮件。

我们不是来探讨技术原理的,所以说,本文不会深入涉及密码学概念,实用是本文的目的。邮件本身就是实用的东西,我们每天都在用QQ、163发文件,存资料,然而我们邮件的内容是否是安全的呢?邮件的内容是否会受到
或泄露?有没有大他者正watching
you?不搞清楚这些问题,总感觉安全感受到侵犯。可惜国内公司一向不重视用户隐私权,在他们眼里,“中国用户愿意用隐私换‘便利’”,窥视用户数据好像成了一件里所应当的事情。口头上的承诺是廉价的,只有技术上的保证是有力的。

OpenPGP推出十多年了,然而在国内未得到重视,未被广泛使用,向普通用户介绍这一工具,从而维护通信自由与秘密的权利,这就是我写下本文的目的。

邮箱客户端

以下是使用OpenPGP加密邮件的必要条件:

1.一个支持IMAP/POP3和SMTP的邮箱账户
2.支持PGP的邮箱客户端
3.双方都有可用的PGP密钥
4.知道对方的公钥

注册邮箱用第三方客户端登陆邮箱账户不在本文讨论范围。由于端到端加密的特性,我们可以不考虑邮件服务器的安全性了。

根据官网介绍,Windows平台上支持OpenPGP的邮箱客户端有Claws Mail、eM Client、EverDesk、The Bat!等,我则推荐选用Mozilla开发的Thunderbird,它功能强大,开源,可扩展性强,用户较多。Linux/Max平台上的客户端则大多支持OpenPGP标准。安卓可用K-9 Mail,顺便提一句,前两天Thunderbird好像接手了K-9 Mail的开发。

网上一些年代比较久远的教程还涉及PGPDesktop、Enigmail插件等,而Thunderbird早已原生自带了一个简洁易用的OpenPGP密钥管理器,不必另行安装,方便很多。

官网:https://www.thunderbird.net/zh-CN/

创建个人密钥

生成密钥

通过右上角菜单键,打开“账户设置”标签页,进入“端到端加密”设置页,点“添加密钥”为账户创建OpenPGP密钥

如果已有密钥,导入到新客户端则选第二项,验证并导入私钥。

有效期可以设置的长一点,不必频繁换。据估计,按照目前的算力,破解RSA-3072需要二十年,破解EdDSA密钥则更久,况且也没人会闲的搞你去。密钥类型,ECC体积小,运算快,RSA则兼容性更好。

如图,成功生成了OpenPGP密钥

备份密钥

设置密码,之后就得到了一个私钥备份。要留存好这个私钥,更换电脑了需要导入它。公钥则不必备份,因为公钥是私钥的一部分,通过私钥可以推算出公钥,反过来则不行。

导出公钥,并发布到公共服务器

前面提到,要给人写邮件,必须知道对方的公钥,那现在换位思考,如果别人要给你写邮件的话,也需要知道你的公钥。

如果写邮件之前都手动交换密钥当然可以,但未免有点麻烦,PGP Key Server则解决了这个问题。KeyServer是一个数据库,用户把各自的公钥上传上去,别人要给你写邮件只需到KeyServer上查询你的公钥即可。

KeyServer服务器 :
https://keys.openpgp.org/ (推荐)
http://keyserver.pgp.com/
https://keyserver.ubuntu.com/
http://pgp.mit.edu/
……

访问 https://keys.openpgp.org/upload ,上传刚刚导出的公钥(文件名里带pub的)

点”Send Verification Email“,发送验证邮件,然后登录邮箱,访问链接验证。完事。

邮件收发

获取公钥

要给别人发邮件,需要对方的公钥。如果对方也使用OpenPGP,并在KeyServer公布了公钥,我们就可以在网上检索到。

点Thunderbird右上角菜单-工具,打开OpenPGP密钥管理器,点密钥服务器-在网上寻找密钥,查询到后接受并导入。(Protonmail等加密邮箱也支持OpenPGP,也能搜到,给Proton邮箱发件记得附带公钥)

发邮件

启用加密。加密确保内容私密,签名可确保内容完整,不签也行。主题加密就是标题也加密。对方给你发件也需要你的公钥,如果对方知道你的公钥可不附带。

成功收到邮件。必须用支持OpenPGP的客户端,否则收到被加密的附件。客户端必须导入了你的OpenPGP私钥,才能正确解密。

(原发布于:2022-06-17 zhihu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
欢迎联系测试!

我的邮箱:
ZhuCR@hotmail.com

PGP公钥:
-----BEGIN PGP PUBLIC KEY BLOCK-----
xjMEY0/txxYJKwYBBAHaRw8BAQdAGUw1e7Lj/K3mXA/ZSztgncuZyQJV5ZZf8+Vs
43fF1LnNH0NoZW5nIFIuWmh1IDx6aHVjckBob3RtYWlsLmNvbT7CkwQTFgoAOxYh
BLLP6v2ir+7agvNmoq1l8xB8PD+7BQJjT+3HAhsjBQsJCAcCAiICBhUKCQgLAgQW
AgMBAh4HAheAAAoJEK1l8xB8PD+7kpsBAKcZ2+RebLihFm5zH8VIEW4AcGBILxa4
OclDzSdZHceOAQCdfAYg2xFLm1WcigwbC6MpuqT5JmicdePN/lbSYXNdCM44BGNP
7ccSCisGAQQBl1UBBQEBB0DbLczjolTYwinnPJGegvZp1tO2u6qBWAfrgKdnm2ke
AAMBCAfCeAQYFgoAIBYhBLLP6v2ir+7agvNmoq1l8xB8PD+7BQJjT+3HAhsMAAoJ
EK1l8xB8PD+7/J8A/0cg98mxD0D4siaxt2NPdfDitg1i428XtCvOc+G9w2lKAQDM
bodQCEJk2U8UfXSSWUGgP/Xm2A4tcZoh5BsEe3PDBw==
=nVJu
-----END PGP PUBLIC KEY BLOCK-----

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!