Exin 团队在用的 PGP 全平台教程

一 前言


PGP 是 Pretty Good Privacy 的缩写,由 Philip R. Zimmermann 于 1991 年编写并上传到 USENET 而在全球流行,被广泛用于文本、电子邮件、文件甚至整个磁盘分区的签名、加密和解密。上传行为因涉嫌违反美国的加密软件出口限制而使 Zimmermann 陷入长达三年的犯罪调查。政府的调查终止之后,Zimmermann 创立了 PGP 公司,PGP 由此成为商业软件(PGP 公司在辗转多次之后最终被 Symantec 收购)。

OpenPGP 是由 PGP 衍生出的开源规范,而 GnuPG(简称 GPG)就是遵循 OpenPGP 规范的 GNU 实现。在不需要特别说明差异的情况下,三者统称为 PGP。

PGP 使用的就是非对称加密算法。在此简单描述下使用方法,A 生成公私钥对,B 也生成公私钥对,A 将自己的公钥给 B,B 也将自己的公钥给 A,也就是 A 和 B 互相交换自己的公钥。然后 A 使用 B 的公钥并且用自己的私钥加密文本,将加密后的文本发给 B,B 用自己的私钥解密文本,反之亦然。

此外,本教程针对文本的加密解密,文件的操作类似。此外,终端覆盖 macOS、Windows、iOS、Android、浏览器,可以算是全平台的 PGP 教程。Exin 团队内部也在使用 PGP 作为日常的敏感信息传输,希望对大家有所帮助。

多图预警。

二 macOS


2.1 新建公私钥对

1、下载 GPG Suite,下载链接:https://gpgtools.org

2、安装 GPG Suite,如果期间需要信任,点击确定。

3、安装好后,打开 GPG Keychain,点击 New,名字填写你的名字,输入您的电子邮件(注意不要用国内邮箱),点击「高级设置」,密钥类型「RSA」,长度选择「4096 比特」,「有效期」取消勾选,点击「Generate Key」,如图:

4、稍等片刻,等待创建。创建成功之后,如果出现如图所示的说明,选择「No, Thanks」。为了安全起见,建议不要将公钥上传到公共的的服务器。

2.2 导出公私钥

2.2.1 导出公钥

1、选择需要导出的 Keychain,点击 「Export」,如图:

2、选择导出路径,点击「Save」,如图:

3、导出成功提示,如图:

2.2.2 导出私钥

1、导出私钥和导出公钥操作类似,导出的时候选择「Include secret key in exported file」,如图:

2、输入 Key 的密码,如图:

3、导出成功提示,如图:

2.3 导入公私钥

2.3.1 导入公钥

导入公钥操作比较简单,在此略过。

2.3.2 导入私钥

导入私钥和导入公钥类似,在此略过。

2.4 加密文本

注意,macOS 部分编辑器或者软件无法调用系统的服务,所以可以配合浏览器部分的 Mailvelope 使用。

1、在编辑器输入一行明文,然后右键,选择服务,「OpenPGP: Encrypt Selection」,如图:

2、Recipients 选择对方的公钥,Your Key 选择自己的,「Encrypt with password」可以不勾选,最后点击「Encrypt」,如图:

3、输入你的 Key 的密码,注意不要勾选「Save in Keychain」,如图:

4、将加密后的文本通过邮件或者 IM(如 Telegram、Mixin)发给对方。

2.5 解密文本

注意,macOS 部分编辑器或者软件无法调用系统的服务,所以可以配合浏览器部分的 Mailvelope 使用。

1、对方收到你加密的文本后,右键选择服务,「OpenPGP: Decrypt Selection」,如图:

2、对方输入自己的 Key 密码,即可解密成功。

三 Windows


3.1 新建公私钥对

1、下载 Gpg4win,下载链接:https://www.gpg4win.org

2、右键 Gpg4win,以管理员运行,语言选择「Chinese (Simplified)」,如图:

3、来到 Gpg4win 安装引导首页,点击「下一步」,如图:

4、选择组件,保持全部勾选,如图:

5、选择安装位置,保持默认即可,如图:

6、正在安装,如图:

7、安装完成,点击「下一步」,如图:

8、勾选「Run Kleopatra」,点击完成,如图:

9、来到 Kleopatra 首页,点击「文件」,点击「新建密钥对」,如图:

10、格式选择「创建个人 OpenPGP 密钥对」,如图:

11、进入密钥创建向导,名字填写你的名字,输入您的电子邮件(注意不要用国内邮箱),点击「高级设置」,密钥类型「RSA」,长度选择「4096 比特」,证书用途,勾选:签名、验证,「有效期」取消勾选,点击 OK,如图:

12、点击「显示全部细节」确认信息,如图:

13、输入密钥对的密码,强烈建议密码长度在 64 位以上,如图:

14、输入的密码注意校验安全性,如图:

15、密钥创建成功如下图,注意,下一步下面的 3 个选项(生成您的密钥对的副本、通过电子邮件发送公钥、将公钥上传到目录服务器)都不要勾选,点击完成。

「生成你的密钥对的副本」可以让你保存密钥和公钥到其他地方,「将公钥上传到目录服务」可以将你的公钥上传到服务器,这样的话别人就可以通过昵称/邮箱或指纹搜索到你的公钥(只有指纹具有唯一性)。注:将公钥上传到服务器是一种不可逆的行为,就算密钥到期了也不会被删除而是会被标记上「已过期」。

Kleopatra 默认密钥服务器地址:http://pool.sks-keyservers.net

16、创建成功如图:

3.2 导出公私钥

3.2.1 导出公钥

1、选中某个证书,然后点击「导出」,如图:

2、选择导出路径,此处以「桌面」为例,如图:

3.2.2 导出私钥

1、回到首页,点击「导出私密证书」,如图:

2、点击「文件夹」图标,选择保存位置,此处以「桌面」为例,如图:

注意不要把公钥覆盖了,截图中加了 sec 标识。

3、切记勾选 ASCII 形式,否则导出的文件为加密文件,无法直接查看。

4、输入密码,点击 OK,如图:

5、提示「绝密密钥导出成功」。

3.3 导入公私钥

3.3.1 导入公钥

1、回到首页,点击「导入」,如图:

2、提示导入路径,将别人的公钥保存为 asc 后缀的文件,选择即可,如图:

3、导入成功后,提示认证流程,如图:

4、勾选「用户编号」和「我已经验证了此指纹」,点击「下一步」,如图:

5、根据需要选择「只认证自己」和「认证所有可查看证书的人」,如果选择「认证所有可查看证书的人」,不要勾选「稍后将认证过的证书发到服务器」,如图:

6、输入密码,点击「OK」,如图:

7、提示「认证成功」,点击「完成」,如图:

3.3.2 导入私钥

操作类似,在此略过。

3.4 加密文本

1、在「收件人」选项中,签名身份选择「当前」,为他人加密选择「别人的邮箱」,如图:

2、在文本框中填入内容,此处将 Xxx 改为 xxx,以作区分,如图:

3、点击「签名/加密 Notepad」,输入密码,即可签名和加密成功,将此加密信息发给别人即可。

3.5 解密文本

1、点击工具栏最后一项「记事本」,可以对纯文本进行加解密和签名校验。将别人发给你的加密信息拷贝到文本框,如图:

2、点击「Decryep /Verify Notepad」,输入密码,即可解密文本,如图:

四 iOS


1、iOS 操作和 Mac、Windows 类似,不过用的软件不一样。iOS 推荐使用 PGP Everywhere,注意,需要使用非大陆 Apple ID。此外,这个是收费软件。

2、导入公钥、私钥在这个页面,如图:

3、加密、解密在这里,如图:

4、当然,你还可以将 PGP Everywhere 设置成键盘,输入文字、选择文本的时候就可以进行加密、解密操作,非常方便。

5、帮助文档链接:http://www.pgpeverywhere.com/help.html

五 Android


1、Android 操作和 Mac、Windows 类似,不过用的软件不一样。Android 推荐使用 OpenKeychain: Easy PGP

2、导入公钥、私钥在这个页面,如图:

3、加密、解密在这里,如图:

六 浏览器


6.1 Chrome

1、下载安装 Mailvelope 插件,链接:https://chrome.google.com/webstore/detail/mailvelope/kajibbejlbohfaggdiogboambcijhkke

2、Chrome 设置,「More Tools」,「Extensions」,选择 Mailvelope,然后点击「Options」。

3、选中「Key Management」,导入公私钥对,如图:

4、文本加密操作如图:

5、将加密后的文本发给对方。

6、文本解密选择「Text Decryption」。

7、输入密码即可解密,为了安全起见,注意不要勾选「Remember password temporarily」,如图:

6.2 Firefox

Firefox 里的 Mailvelope 和 Chrome 类似,在此不赘述。下载链接:https://addons.mozilla.org/firefox/downloads/latest/mailvelope

七 总结


PGP 的安全性毋庸置疑。使用了 PGP,即使在某些接受监管的平台里,也能安全地发送敏感信息。不过还是建议在 Telegram、Mixin 内发送。只要自己的私钥安全、密码安全,可以说只有信息交互的双方才能解密,再顶级的黑客也无能为力。一般情况下,连自己的私人公钥也不要泄漏。此外,读者还可以把 Keybase 用起来,私人在用的和公开暴露的 PGP 公钥尽可能分开。保护隐私非常重要,PGP 就是一个非常实用的利器。

Enjoy!

© 2019 Exin

发表评论

电子邮件地址不会被公开。 必填项已用*标注