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/g pgtools
安装完毕,launcher 里就会有 GPG Keychain
工具,使用该工具来生成自己的证书。
点击新建,按提示配置就好,生成的公钥会被上传到公钥服务器上,这样别人就可以根据名字或者
key ID 搜索到我的公钥。
新建证书
证书导出,吊销这些基本功能 GPG Suite 都提供。
0x03 使用
我们可以设置一些快捷键来方便我们使用 PGP,在
系统偏好设置->键盘->快捷键->服务
中,根据自己的偏好设置快捷键就好。当然,右键服务里也有对应的选项。
获取公钥
生成好了证书,那应该怎样去发加密邮件呢?首先,我们要知道邮件接收方的公钥是什么,我们用对方的公钥加密邮件内容,对方就可以用自己的私钥解密出邮件内容,知道对方的邮件地址,key
ID 或者 名字都能在公钥服务器上搜索到对方的公钥,也就是 GPG Suite
中提供的 查找公钥 功能。如果对方有多个公钥,选择最新的那个。
加密
发邮件前,选中邮件内容,右键服务中选择 OpenPGP:Encrypt
Selection
,然后选择公钥,之后邮件内容会被加密。比如,如下内容:
加密成:
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/9 EnD2o4BxGGa6St02 26 LCABi6x8GXyEzIFp+KZqjShTP0G/+bA9i/ L1s+iJeXEcxAjjKxYGlgMxbnOf1G/vAXnmeUP8rf3M+5lTG/ 82 OvxOfvMX4xcvwrma8cp6YtfZ2JtroQ6qpDoVny1hpCVe0uGibLG3w43CCnfGmauK1t/4Mj0AVugoWJuS89FLzgg/ vms2KlXH/rmdfmNYVu T3QaV2ccg9/ZrSkFxs7X0TRoPRTEFx2/ BInEADUH/HEfrsi3fY96eHnXhQtut/ c3 oN+a8zlv9XfWxhR6Nze3fqdIr0S8ssMIvYS/fuH343TUmLstlhSg89qch8zme9sN pcOlrfJUwYpTLeL+4 y4TFgQC178Thc+ERHPbOYrMfyP2G441fj5qjoa+qD4Dw6a/ uxp1Q38wj9/ocO6OTt3Sn0Au8f3iOcQE2qM6hw3J+ChQ7SDVfdHcOs+SpJmFqwjR xXHpQ5+dJx5PfS/W7Cg5Rbe5bB9ovq/ hbFwL0/SuYkFbrtbpnZ3Lr+pUUt9/u 33S 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/9 EnD2o4BxGGa6St02 26 LCABi6x8GXyEzIFp+KZqjShTP0G/+bA9i/ L1s+iJeXEcxAjjKxYGlgMxbnOf1G/vAXnmeUP8rf3M+5lTG/ 82 OvxOfvMX4xcvwrma8cp6YtfZ2JtroQ6qpDoVny1hpCVe0uGibLG3w43CCnfGmauK1t/4Mj0AVugoWJuS89FLzgg/ vms2KlXH/rmdfmNYVu T3QaV2ccg9/ZrSkFxs7X0TRoPRTEFx2/ BInEADUH/HEfrsi3fY96eHnXhQtut/ c3 oN+a8zlv9XfWxhR6Nze3fqdIr0S8ssMIvYS/fuH343TUmLstlhSg89qch8zme9sN pcOlrfJUwYpTLeL+4 y4TFgQC178Thc+ERHPbOYrMfyP2G441fj5qjoa+qD4Dw6a/ uxp1Q38wj9/ocO6OTt3Sn0Au8f3iOcQE2qM6hw3J+ChQ7SDVfdHcOs+SpJmFqwjR xXHpQ5+dJx5PfS/W7Cg5Rbe5bB9ovq/ hbFwL0/SuYkFbrtbpnZ3Lr+pUUt9/u 33S PwEbCEiBDDtw6pT1P6kzf71Mq0hBAi0hPPOh/wicO5gGWmyaWz5UK6XMLDNGX5o7 ff53QG1QoezcezX5COiv+g== =QLE+ - -----END PGP MESSAGE----- -----BEGIN PGP SIGNATURE----- iQIcBAEBCgAGBQJY9lFgAAoJEEf4W28ow4hib9EP/2 sPwWZvrsaFbqmLhBRRKnSL 5 yxx8uZnwRMLFxJGu6oyk7pSP4Ce8hQScJLFB2MAiU65J5MSEqc7MWkA/mLb9aaCHfEfGvSfjTVmP1E+xzwEjeQYRAP9OWdRisqoz6ChE/XD6eaAre31w4MhbWk07J+K koHK11g7nmdYCESc3bHNcjEYouciGq9XZ4MaPq1DLD97EgFQV5h0fiNaLzAlBUgD pDmqS3eC7A4SxP9iATIT+Gyp+JgzLX2uo5NN/BUfMl2yEzVAAYDFl5GH+jeIm0fe YDD7BiRUSzUZNKNsC94l0v7X4TwInx32wiMhWfcZrZr5KsU4tf3rq5KvWFW1/Ftz sOJxLaG4OI9WS40kDQkqWfWxcq03kI6MxS8VBQkAdrQjMG9H5NdslR8G9iBVMkSV 0 HAy90zL0vmHhFBpJ92AkT7ppTuGcMKptLXtcPdvsV35HWeqYlSwZvh7ZSW5gPJ6f8U5CGWPNbbcRwNudbVcXD4vJbKYUNbvQCE9wRcBG9PBFle9rJhC0IyM6aGhmquL kYJh1niizVgxery2tt8+9 ZpMEjiY8B4oaUWepATfTzxXUQUmHhpOV9E85ei/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/2 sPwWZvrsaFbqmLhBRRKnSL 5 yxx8uZnwRMLFxJGu6oyk7pSP4Ce8hQScJLFB2MAiU65J5MSEqc7MWkA/mLb9aaCHfEfGvSfjTVmP1E+xzwEjeQYRAP9OWdRisqoz6ChE/XD6eaAre31w4MhbWk07J+K koHK11g7nmdYCESc3bHNcjEYouciGq9XZ4MaPq1DLD97EgFQV5h0fiNaLzAlBUgD pDmqS3eC7A4SxP9iATIT+Gyp+JgzLX2uo5NN/BUfMl2yEzVAAYDFl5GH+jeIm0fe YDD7BiRUSzUZNKNsC94l0v7X4TwInx32wiMhWfcZrZr5KsU4tf3rq5KvWFW1/Ftz sOJxLaG4OI9WS40kDQkqWfWxcq03kI6MxS8VBQkAdrQjMG9H5NdslR8G9iBVMkSV 0 HAy90zL0vmHhFBpJ92AkT7ppTuGcMKptLXtcPdvsV35HWeqYlSwZvh7ZSW5gPJ6f8U5CGWPNbbcRwNudbVcXD4vJbKYUNbvQCE9wRcBG9PBFle9rJhC0IyM6aGhmquL kYJh1niizVgxery2tt8+9 ZpMEjiY8B4oaUWepATfTzxXUQUmHhpOV9E85ei/MgKo WoAksxAb7WV20g0JQqBjAhjFM75puPLXI6/ppIAbj6lgQOnIBwvbQrl1HZlOcEnr RVH7glSgYBnBoH5M2tDJ =iT60 -----END PGP SIGNATURE-----
至此,可以完整的使用 PGP 发送接收加密邮件了!= …… ### 0x04
参考 - 防篡改防偷窥,OS X
上发送 PGP 加密邮件