The quiter you become,the more you are able to hear!

在 OS X 上使用 PGP 发送加密邮件

Author: geneblue

Blog: https://geneblue.github.io/

一直没用过 PGP 发送加密邮件,现在需要用到,顺便把过程记录下来。

0x01 PGP介绍

什么是 PGP?PGP 意为 Pretty Good Privacy(更好地保护隐私),是一个基于 RSA 公匙加密体系的邮件加密软件。可以用它加密邮件内容,防止第三者非授权阅读,还可以对邮件添加数字签名,这样接收者根据签名信息可以确定发件人身份,确信邮件内容没有被篡改。这些神奇的功能都是建立在公钥密码学基础上,伟大的公约密码啊……

0x02 下载安装

GPG Suite 集合了 PGP 操作相关的工具,可以去官网下载安装包,也可以使用 Homebrew 命令安装:

1
brew install Caskroom/cask/gpgtools

安装完毕,launcher 里就会有 GPG Keychain 工具,使用该工具来生成自己的证书。

点击新建,按提示配置就好,生成的公钥会被上传到公钥服务器上,这样别人就可以根据名字或者 key ID 搜索到我的公钥。

新建证书

证书导出,吊销这些基本功能 GPG Suite 都提供。

0x03 使用

我们可以设置一些快捷键来方便我们使用 PGP,在 系统偏好设置->键盘->快捷键->服务 中,根据自己的偏好设置快捷键就好。当然,右键服务里也有对应的选项。

获取公钥

生成好了证书,那应该怎样去发加密邮件呢?首先,我们要知道邮件接收方的公钥是什么,我们用对方的公钥加密邮件内容,对方就可以用自己的私钥解密出邮件内容,知道对方的邮件地址,key ID 或者 名字都能在公钥服务器上搜索到对方的公钥,也就是 GPG Suite 中提供的 查找公钥 功能。如果对方有多个公钥,选择最新的那个。

加密

发邮件前,选中邮件内容,右键服务中选择 OpenPGP:Encrypt Selection,然后选择公钥,之后邮件内容会被加密。比如,如下内容:

1
hihi

加密成:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-----BEGIN PGP MESSAGE-----

hQIMA1ZXVS4+LnyeARAAwliVfeHpvEPpY4UXNqbVc8APYJbGH1f0wojEWgk3mgoo
oj7rFpACbOGAiKt0D+kSnmfqR+NZxfsHRY5ngnCWPN2/D/Bv0gn0GSMZdWNq5EO1
zf/mRpmvhRhQaMF/aivRUgulbsdbaaEXJNrOMGyPREkL+m/9EnD2o4BxGGa6St02
26LCABi6x8GXyEzIFp+KZqjShTP0G/+bA9i/L1s+iJeXEcxAjjKxYGlgMxbnOf1G
/vAXnmeUP8rf3M+5lTG/82OvxOfvMX4xcvwrma8cp6YtfZ2JtroQ6qpDoVny1hpC
Ve0uGibLG3w43CCnfGmauK1t/4Mj0AVugoWJuS89FLzgg/vms2KlXH/rmdfmNYVu
T3QaV2ccg9/ZrSkFxs7X0TRoPRTEFx2/BInEADUH/HEfrsi3fY96eHnXhQtut/c3
oN+a8zlv9XfWxhR6Nze3fqdIr0S8ssMIvYS/fuH343TUmLstlhSg89qch8zme9sN
pcOlrfJUwYpTLeL+4y4TFgQC178Thc+ERHPbOYrMfyP2G441fj5qjoa+qD4Dw6a/
uxp1Q38wj9/ocO6OTt3Sn0Au8f3iOcQE2qM6hw3J+ChQ7SDVfdHcOs+SpJmFqwjR
xXHpQ5+dJx5PfS/W7Cg5Rbe5bB9ovq/hbFwL0/SuYkFbrtbpnZ3Lr+pUUt9/u33S
PwEbCEiBDDtw6pT1P6kzf71Mq0hBAi0hPPOh/wicO5gGWmyaWz5UK6XMLDNGX5o7
ff53QG1QoezcezX5COiv+g==
=QLE+
-----END PGP MESSAGE-----
签名

为了方便对方验证邮件发送者,我们还可以附加上签名信息,选中加密后的信息,右键服务中选择 OpenPGP:Sign Selection,然后输入自己证书的私钥短语,签名信息就可以附加上:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

- -----BEGIN PGP MESSAGE-----

hQIMA1ZXVS4+LnyeARAAwliVfeHpvEPpY4UXNqbVc8APYJbGH1f0wojEWgk3mgoo
oj7rFpACbOGAiKt0D+kSnmfqR+NZxfsHRY5ngnCWPN2/D/Bv0gn0GSMZdWNq5EO1
zf/mRpmvhRhQaMF/aivRUgulbsdbaaEXJNrOMGyPREkL+m/9EnD2o4BxGGa6St02
26LCABi6x8GXyEzIFp+KZqjShTP0G/+bA9i/L1s+iJeXEcxAjjKxYGlgMxbnOf1G
/vAXnmeUP8rf3M+5lTG/82OvxOfvMX4xcvwrma8cp6YtfZ2JtroQ6qpDoVny1hpC
Ve0uGibLG3w43CCnfGmauK1t/4Mj0AVugoWJuS89FLzgg/vms2KlXH/rmdfmNYVu
T3QaV2ccg9/ZrSkFxs7X0TRoPRTEFx2/BInEADUH/HEfrsi3fY96eHnXhQtut/c3
oN+a8zlv9XfWxhR6Nze3fqdIr0S8ssMIvYS/fuH343TUmLstlhSg89qch8zme9sN
pcOlrfJUwYpTLeL+4y4TFgQC178Thc+ERHPbOYrMfyP2G441fj5qjoa+qD4Dw6a/
uxp1Q38wj9/ocO6OTt3Sn0Au8f3iOcQE2qM6hw3J+ChQ7SDVfdHcOs+SpJmFqwjR
xXHpQ5+dJx5PfS/W7Cg5Rbe5bB9ovq/hbFwL0/SuYkFbrtbpnZ3Lr+pUUt9/u33S
PwEbCEiBDDtw6pT1P6kzf71Mq0hBAi0hPPOh/wicO5gGWmyaWz5UK6XMLDNGX5o7
ff53QG1QoezcezX5COiv+g==
=QLE+
- -----END PGP MESSAGE-----
-----BEGIN PGP SIGNATURE-----

iQIcBAEBCgAGBQJY9lFgAAoJEEf4W28ow4hib9EP/2sPwWZvrsaFbqmLhBRRKnSL
5yxx8uZnwRMLFxJGu6oyk7pSP4Ce8hQScJLFB2MAiU65J5MSEqc7MWkA/mLb9aaC
HfEfGvSfjTVmP1E+xzwEjeQYRAP9OWdRisqoz6ChE/XD6eaAre31w4MhbWk07J+K
koHK11g7nmdYCESc3bHNcjEYouciGq9XZ4MaPq1DLD97EgFQV5h0fiNaLzAlBUgD
pDmqS3eC7A4SxP9iATIT+Gyp+JgzLX2uo5NN/BUfMl2yEzVAAYDFl5GH+jeIm0fe
YDD7BiRUSzUZNKNsC94l0v7X4TwInx32wiMhWfcZrZr5KsU4tf3rq5KvWFW1/Ftz
sOJxLaG4OI9WS40kDQkqWfWxcq03kI6MxS8VBQkAdrQjMG9H5NdslR8G9iBVMkSV
0HAy90zL0vmHhFBpJ92AkT7ppTuGcMKptLXtcPdvsV35HWeqYlSwZvh7ZSW5gPJ6
f8U5CGWPNbbcRwNudbVcXD4vJbKYUNbvQCE9wRcBG9PBFle9rJhC0IyM6aGhmquL
kYJh1niizVgxery2tt8+9ZpMEjiY8B4oaUWepATfTzxXUQUmHhpOV9E85ei/MgKo
WoAksxAb7WV20g0JQqBjAhjFM75puPLXI6/ppIAbj6lgQOnIBwvbQrl1HZlOcEnr
RVH7glSgYBnBoH5M2tDJ
=iT60
-----END PGP SIGNATURE-----
验证签名

当邮件接收者收到邮件之后,对方可以选中 从 -----BEGIN PGP SIGNED MESSAGE----------END PGP SIGNATURE----- 的内容(包括这两个标签),右键服务选择 OpenPGP:Verify Signature of Selection,对方通过签名校验就可以知道发送者身份。

解密

对方解密邮件内容也很简单,选中 从 - -----BEGIN PGP MESSAGE------ -----END PGP MESSAGE----- 的加密内容(包括这两个标签),右键服务选择 OpenPGP:Decrypt Selection,对方输入自己的私钥短语,即可解密内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

hihi
-----BEGIN PGP SIGNATURE-----

iQIcBAEBCgAGBQJY9lFgAAoJEEf4W28ow4hib9EP/2sPwWZvrsaFbqmLhBRRKnSL
5yxx8uZnwRMLFxJGu6oyk7pSP4Ce8hQScJLFB2MAiU65J5MSEqc7MWkA/mLb9aaC
HfEfGvSfjTVmP1E+xzwEjeQYRAP9OWdRisqoz6ChE/XD6eaAre31w4MhbWk07J+K
koHK11g7nmdYCESc3bHNcjEYouciGq9XZ4MaPq1DLD97EgFQV5h0fiNaLzAlBUgD
pDmqS3eC7A4SxP9iATIT+Gyp+JgzLX2uo5NN/BUfMl2yEzVAAYDFl5GH+jeIm0fe
YDD7BiRUSzUZNKNsC94l0v7X4TwInx32wiMhWfcZrZr5KsU4tf3rq5KvWFW1/Ftz
sOJxLaG4OI9WS40kDQkqWfWxcq03kI6MxS8VBQkAdrQjMG9H5NdslR8G9iBVMkSV
0HAy90zL0vmHhFBpJ92AkT7ppTuGcMKptLXtcPdvsV35HWeqYlSwZvh7ZSW5gPJ6
f8U5CGWPNbbcRwNudbVcXD4vJbKYUNbvQCE9wRcBG9PBFle9rJhC0IyM6aGhmquL
kYJh1niizVgxery2tt8+9ZpMEjiY8B4oaUWepATfTzxXUQUmHhpOV9E85ei/MgKo
WoAksxAb7WV20g0JQqBjAhjFM75puPLXI6/ppIAbj6lgQOnIBwvbQrl1HZlOcEnr
RVH7glSgYBnBoH5M2tDJ
=iT60
-----END PGP SIGNATURE-----

至此,可以完整的使用 PGP 发送接收加密邮件了!=…… ### 0x04 参考 - 防篡改防偷窥,OS X 上发送 PGP 加密邮件