PGP加密介绍

点击上方蓝字[协议分析与还原]关注我们


 PGP使用避坑指南。

作为一款历史悠久的加密验证工具,PGP在商用领域和个人领域都有广泛的应用,从互联网远古时代开始,积累了一批又一批的粉丝。

我们先来了解一下PGP的状况。PGP的全称是Pretty Good Privacy,直译就是优良保密协议,这玩意确实优良,但就加密和验证来说,技术相当的好。

正宗的PGP,是商业软件,是PGP的发明者开发的,很多公司常用的PGP desktop就是PGP公司的产品,当然,是盗版的。

PGP公司在IETF公开了PGP的标准,符合标准的程序就叫做OpenPGP,于是有人开发了符合标准的开源软件GnuPG,即GPG,和PGP具有同类功能。

在没有边界的网络上,一批批符合PGP标准的应用此起彼伏,但诡异的是,在中文世界,却只有不多的几篇抄来抄去的介绍GPG的文章,都只介绍了它的基本功能,像密钥,加解密,签名之类,并且都有模有样,看着挺专业的样子,然后,就没有然后了,深究就会发现,这些文章的作者,顶多在写文章的时候用过几次GPG。为什么我这样讲,原因是他们写的这些命令操作,在中文的特殊环境里,在我国占主流的windows环境里,有不少问题需要解决,而他们并没有写到哪怕一点点。这些文章的起源,大概是翻译的英文文章。

在实际需求中,需要对商业软件PGP和开源软件GPG做出一个选择,如果是一般保密需求的公司或组织,可以直接选择商业软件PGP desktop,功能强,方便用,但是,要么花钱,要么用盗版;如果是高保密要求的公司或组织,那就最好不使用商业软件PGP desktop了,毕竟,你看不见代码,谁知道里面带没带后门,是不是在你的每个加密包里面加一个超级密钥呢,实在不放心呀,那就只能使用GPG了,还不能使用人家编译好的GPG,最好是自己下代码下来自己一行行检查并自己编译。

今天在这里,我就不介绍GPG和PGP的具体操作了,在网上搜下这些就可以出来,我来给大家捋一捋在windows上使用这两个软件的细节和坑,方便大家入坑和跳坑。

01

PGP desktop

在windows上,最完美的PGP工具当然是PGP Desktop,很多一般安全需求的公司都在用,基本不会有坑,但是需要注意,如果PGP主密钥选项里开启了主密钥列表,并在列表中加入了主密钥,但是该密钥被干掉了,大概这样:

当使用PGP加密的时候,会发现加密用不了,会有提示:

出现这个问题之后,到主密钥里把那个未知密钥删除就基本不会有其它问题了。

02

GnuPG之Kleopatra

作为开源软件的GPG,它在windows上用来配套的客户端是Kleopatra,在安装gpg windows版的时候基本就一起安装。但是这个软件很有毛病,不让使用管理员权限启动,有些版本的windows搞一搞能解决,但是,有些版本的windows,例如部分windows 7,就没法解决,会提示如下错误:

提示语:

Kleopatra cannot be run as administrator without breaking file permissions in the GnuPG data folder. To manage keys for other users please manage them as a normal user and copy the `AppData\Roadmin\gnupg' directory with proper permissions.

GPG的官网对这个问题有介绍,说是下个版本会改成提示,而不是现在这么变态的不让你用。具体链接如下:

https://wiki.gnupg.org/Gpg4win/RunAsUser

碰到这个问题,基本上就没法用这个客户端了,乖乖用gpg的命令行吧。

03

GnuPG之命令行

在没法用GPG的客户端的情况下,如果实在要用GPG,那就只能使用命令行了,具体的使用方法,网上一堆,直接去找,或者直接看命令行提示,这里就不介绍了,只说一些问题。

问题1、gpg --recipient xxx --encrypt file的加密提示

使用gpg命令行加密经常会有提示:

解决这个提示的方法是在gpg加密命令行参数中加上--trust-model always。

问题2、中文路径支持

这是一个大坑,虽然GPG号称是PGP的完美替代,符合PGP的标准,但是我们的windows,中文操作系统,如果使用gpg,当然会有中文的路径,gpg是没法支持的:

unicode编码语言的国家,都有这个问题,解决这个问题,只有路径全部改英文啦。

语言编码的问题,是应用国际化过程中必然会遇到的,可是作为一个开源的国际化工具,却不支持中文文件路径的处理,只能说用这个软件的国人太少了,少到人家都忽略了你的语言编码,没办法。

04

GnuPG之Python库

有些时候,需要使用Python来进行PGP加密,这个时候,通常想到的是安装python下的gnupg库,在python中,我找到一个python-gnupg库,使用pip安装即可。

在实际使用过程中,你会发现,这个gnupg库是其实是一个接口的封装,还是依赖于gnupg的可执行程序,本质上是在使用过程中调用了gpg的命令行来完成各项操作,因此,gpg命令行有的问题,它都有,gpg搞不定的问题,它也搞不定。

当然,python-gnupg库可以传入输入文件句柄,能规避输入文件的中文文件路径的问题,但是,输出文件的路径,还是必须得全英文,不然,出来的文件会是乱码的。

如果密钥描述带中文,而你又想输出,则需要对字符串进行一次编解码操作:

str.encode('raw_unicode_escape').decode()

为了更完美的体验,可以直接在python中调用gpg的命令行来进行加密操作。当然,更更完美的体验,还是在python中调用pgp的命令行软件来处理。

05

PGP命令行软件

虽然GPG是开源免费软件,但鉴于其在使用过程中体验并不怎么样,没法成为PGP的完美替代,所以,这里介绍一下PGP的命令行版本软件,它也是PGP公司出品的,功能很完善,用起来也很好用,命令基本和GPG命令行通用,也可以参考它的很棒的官方文档:

https://techdocs.broadcom.com/content/dam/broadcom/techdocs/symantec-security-software/information-security/pgp-solutions/10-4-2/generated-pdfs/pgpCmdline_usersguide_en.pdf

当然,和PGP Desktop一样,它需要license。同时,它在不同操作系统平台都有支持版本。

但仍有头疼之处,在一些版本的windows上,特殊的安装环境下,PGP desktop和PGP command line是没法同时存在的,安装包会搞事,先装的会被后装的搞坏,要么重新安装直至成功,要么重新注册license来激活,总之,不省心。

比较好的方法是将PGP command line制作成绿色免安装版,但还是有一定程度需要重新注册license。

06

加密SDA自解密文件

在PGP Desktop还有一个功能是加密自解密文件,即Self Decrypting Archive(SDA)。这个功能,其实和rar压缩文件差不多,都是用密码来解密,但是它加密的结果是可执行文件,在windows下,就是exe,在知道密码的前提下,可以在没安装PGP的机器上解密。

这个功能,是开源的GPG所没有的,我遍寻良方,在GPG的讨论区看到了相关人员的答复,认为该功能没必要,所以,GPG现在没有这个功能,将来也不会有。如果要加密SDA文件,各位还是老老实实去用PGP命令行和PGP Desktop了。

07

结束

PGP和GPG保护隐私和机密还是很有用的,只是,似乎大部分人并不重视自己的信息,还是李厂长说的好,中国的网民,愿意用隐私换取便利。

别忘点“在看”、“赞”和“分享”

新的规则,及时收推文要先给公号星标

别忘了星标一下,不然就错过了

长按进行关注,时刻进行交流。

猜你喜欢

转载自blog.csdn.net/yeyiqun/article/details/118886187
PGP