使用 PGP/GPG 进行数字签名加密解密
PGP 是用于信息加密,应用程序来源验证的加密协议,这里会介绍 PGP 在 Windows 平台下的使用方法
PGP/GPG/GnuPG/OpenPGP 关系和区别
PGP 是 Phil Zimmermann 于1991年开发的商业应用程序,1997年7月,PGP Inc.与齐默尔曼同意 IETF 制定一项公开的互联网标准,称作 OpenPGP,任何支持这一标准的程序也被允许称作 OpenPGP。GnuPG 则是支持了这一标准的开源应用程序。提个小故事:
当年的 PGP 之父(Phil Zimmermann)因为发明了 PGP 这款文件/邮件加密工具,差点被美国政府抓去坐牢。当时(上世纪90年代初)的美国法律规定,“高强度加密技术”属于军用技术,不允许出口到海外。Phil Zimmermann 后来想了个妙计——通过 MIT 出版社出了一本书,把 PGP 的全部源代码放到书中,然后援引“美国宪法第一修正案”(出版物受“言论自由”的保护),才推翻了对他的指控。来源
PGP 加解密和数字签名简单介绍
我们可以生成世界上唯一的一组公钥和密钥,公钥用于加密,密钥用于解密。我们一般只公开公钥,他人使用公钥加密后在通过任何方式发送给我。但是因为密钥只能解密使用与自己配对的公钥加密后的数据,这样就保证了使用了我公钥加密后的数据只能由我解密查看。这就是PGP加解密的基本原理。
数字签名则是用来校验文件完整性的它不具备加密功能,它在发送的信息末尾都会加上一个用于检验的字段(签名)。这个签名是基于发布者的信息和文件计算出来的,接收者使用发送者的公钥就可以核对信息是否遭到篡改。大部分支持OpenPGP协议的应用,都会在加密的同时默认开启这个特性。
Windows 下使用 GnuPG 加密/解密/签名/校验
Windows 环境下我选择 Gpg4win 作为本次教程的对象,它使用 GnuPG 作为加解密后端、使用 Kleopatra 作为证书管理器和通用加密对话框。更多可查看关于,并且它拥有可视化图形界面,最重要的是它以及它包含的工具都是开源应用。
下载安装 Gpg4win
直接在 Gpg4win 主页 https://gpg4win.org 下载并安装到你认为合适的路径即可
使用 Gpg4win 加解密/签名检验文件
打开桌面或开始中的 Kleopatra ,并点击「新建密钥对」
在对话框中输入你所期望的信息(对任何人都是可见的)
会让你输入一个密码,用来加密密钥
「生成你的密钥对的副本」可以让你保存密钥和公钥到其他地方,「将公钥上传到目录服务」可以将你的公钥上传到服务器,这样的话别人就可以通过昵称/邮箱或指纹搜索到你的公钥(只有指纹具有唯一性)。注:将公钥上传到服务器是一种不可逆的行为,就算密钥到期了也不会被删除而是会被标记上「已过期」。
Kleopatra默认密钥服务器地址:http://pool.sks-keyservers.net/
新建密钥对后就可以选择加密文件了,点击左上角的「签名/加密」。选择一个文件加密后,别人在没有你的私钥的情况下就无法解密你的文件了。当你需要使用别人的公钥加密文件时,要先导入他人的公钥。并在加密文件时勾选「为他人加密」,在输入他人的名字并选中即可。
解密时你必须要先导入对应的密钥对,同时还需要提供密码,并点击「Save All」
使用 Gpg4win 加解密/签名检验文本
点击工具栏最后一项「记事本」,可以对纯文本进行加解密和签名校验。
在文本框中填入内容在「收件人」选项中选择加解密或签名检验密钥,点击上方的「签名/加密 Notepa」或「Decryep /Verify Notepa」可进行相应的操作。
导出密钥对
选中你的密钥,右键「导出绝密密钥」即可
来试试使用PGP解密以下纯文本吧
密文:https://st.blackyau.net/blog/file/Ciphertext.txt (你需要将里面的内容复制出来)
密钥对:https://st.blackyau.net/blog/file/LetPGPFly.gpg (可加密/解密)
公钥:https://st.blackyau.net/blog/file/LetPGPFly.asc (仅可加密)
其他平台
Android: OpenKeychain: Easy PGP(加密时第一项「加密到」需要你手动输入加密密钥的昵称)
Google Play:https://play.google.com/store/apps/details?id=org.sufficientlysecure.keychain F-Droid:https://f-droid.org/packages/org.sufficientlysecure.keychain/ LetITFly BBS@Yongmeng使用 OpenKeychain 管理 OpenPGP 密钥
Mac: GPG Suite
https://gpgtools.org/
Linux: GnuPG
https://www.gnupg.org/download/index.html
外部链接
分析一下 TrueCrypt 之死(自杀 or 他杀?),介绍一下应对措施 - 编程随想
为什么桌面系统装 Linux 可以做到更好的安全性(相比 Windows & macOS 而言) - 编程随想
上传到公钥服务器的gpg公钥过期了会被删除吗? 知乎@胡涵铭
使用GnuPG(PGP)加密信息及数字签名教程 - 月光博客
版权声明
本文中除引用自互联网内容外,其他内容均以CC0 1.0 通用 (CC0 1.0) 公共领域贡献方式授权。我已经将作品 贡献 至公共领域,在法律允许的范围,放弃所有我在全世界范围内基于著作权法对作品享有的权利,包括所有相关权利和邻接权利。 您可以复制、修改、发行和表演本作品,甚至可用于商业性目的,都无需同意和标出署名。