隐私守卫者 PGP
我第一次提到过 PGP,是在 Helm 实践之配置管理 以及 Helm 实践之持续交付 里面,但当时只是提到它可以用来加密我们的配置,但没有拓展它,今天我们来简单拓展下。
简单介绍
菲利普 · 齐默曼(Philip R. Zimmermann)在 1991 年创造了第一个版本的 PGP,其名称 “Pretty Good Privacy”1。
显而易见,他发明这东西就是为了对抗政府的监视,一经发出,受到了广泛的欢迎。
由于这个软件是商业应用,无法大面积推广,后来就出现了 OpenPGP,是一个互联网标准,其中,最著名的莫过于 GunPG,也就是我们的主角 gpg(我在刚使用的时候,经常打错成 pgp)。
目前 PGP 的作用挺多,主要在于加解密(邮件内容加密)、数字签名(Ubuntu 的软件分发)等。
安装
1 | sudo apt-get install gnupg # ubuntu |
或者你可以去官网下载。
使用
管理2
1 | # 按照步骤,一步一步设置即可,最后的密码不要设置太简单 |
这里需要注意的是,从公钥服务器获取的证书不一定代表本人,我在上面提到的 keys.openpgp.org 也不一定完全值得信任。
但是,PGP 区别于 SSL 证书体系的不同就在于此了:它可以由使用者自行决定是否信任中央证书机构,比如你可以由朋友来当这个背书者,即由你的朋友来对新的公钥进行签名认证,从而信任新添加的证书。
加解密
首先你需要明白,加密是必须指定接收者的,你必须用朋友的公钥来进行加密,同时,你可以对加密内容进行签名,表示这个加密过的信息,是由你写的。
1 | # 加密,会生成一个 mail.txt.asc 的文件,你就可以直接发送给朋友了 |
签名
这是对内容的完整性进行保护了:
1 | # 签名有 clearsign 以及 detach-sign, |
实践
实际使用中,会有其它问题,比如,你如何在脚本中使用呢?
在上面的加密以及签名命令中,你需要用到私钥,因此在 Ubuntu 中你得在弹出的密码框中输入密码,而在脚本中,你是不能这么干的,有其它参数干这个事情。
1 | gpg --batch --yes --passphrase <passphrase> --detach-sign --armor app.tgz |
其中,--passphrase
可以换成 --passphrase-fd
或者 --passphrase-file
,来指定密码输入的方式。
另外,如果你需要直接使用 armor 公钥,一个方式是导入后使用,gpg --import pub.asc
,然后对签名进行验证,另一个是需要对公钥的格式进行转换,不然会出错:
1 | gpg --yes -o pub.gpg --dearmor pub.asc |
Ref
首发于 Github issues: https://github.com/xizhibei/blog/issues/147 ,欢迎 Star 以及 Watch
本文采用 署名-非商业性使用-相同方式共享(BY-NC-SA)进行许可作者:习之北 (@xizhibei)
原链接:https://blog.xizhibei.me/zh-cn/2020/08/12/privacy-guardian-pgp/