赞
踩
点击上方↑↑↑蓝字[协议分析与还原]关注我们
“ 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保护隐私和机密还是很有用的,只是,似乎大部分人并不重视自己的信息,还是李厂长说的好,中国的网民,愿意用隐私换取便利。
别忘点“在看”、“赞”和“分享”
新的规则,及时收推文要先给公号星标
别忘了星标一下,不然就错过了
长按进行关注,时刻进行交流。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。