gpg试用
iso文件,可以简单的理解为光盘文件,光盘是什么,现在都是用U盘了,不管是便携存储文件还是制作自启动媒介,N年以前安装操作系统,光驱是必备的,用来读取5元一张的Windows镜像,光驱升级为CD刻录机或DVD刻录机,就能自制光盘,烧录这活当年也是很有感的,盘片要成本,直接上硬盘就了的事,费了不少一直没用上的盘片...
提供iso文件下载的软件是相当正规的,通常会带有MD5校验,就是用这个码检查一下你下载的iso文件是否完整或是否是原生的,没被篡改过或增删,先民在逻辑上是认真的。这是10年以前的事了,亲见央视新闻曾报道山东某大学对MD5攻克关键点,致某国际研究小组解散,预见MD5验证会弃用。应用软件很少减提供验证码的,主要是操作系统,更侧重安全下使用,windows网页上转了一圈没见到,linux的发行版本就配备有asc和sha256验证文件,gpg之旅就从这开始的。
说起gpg,还需对小学生普及一下加密的知识。历史上的加密,一直都是对称加密,就是写文件和读文件的人持有相同的密码,按“写能阅读的文件->用密码把文件编成不可阅读的文字->把加密后的文件发送给读文件的人->读文件的人取得文件后用同一个密码解密->再还原出来可阅读的文字”,如需要回信,再走一遍前边的流程即可,途中密信就算被截获,只要没取得密码或被破解,传递的信息在一段时间内保密还是可以的。因为是对称的,一个字符对应的是另一个字符,传递的信息多了,被破解的可能就显著增加,故而还需要一个随机码,比如日期,这样同一个字符就会被不同的字符来展示,增加被破解的难度。对称密码的一个显著的问题就是更换密钥困难,假如两地山河阻隔,要把新密码传送给对方就费时费力,风险还巨大,一旦被截获又假装不知道让不再保密的密码抵达和使用,等于在自己的营盘里给对方开了全球通,就算知道密码被劫而启用新的,部署新密码也要延误大事。影视里,古代的信息仗更多的是两个熟人在切口,就像是土话或者黑话,注意一些言词,就能糊弄到一堂听众。对称密码的极致是二战的英格玛机。有了计算机之后,就把对密码的保护转成破解的难度,这就是非堆成加密,其包括两个密码,一个公钥,一个私钥,公钥加密,私钥解密。两个人要加密通信,需要两对公私密码,“甲的公钥给乙,乙的公钥给甲->甲用乙的公钥加密信息,公开发用给乙->乙接到信息,用自己的私钥解码,阅读->回信就是用甲的公钥加密,发送给甲->甲用自己的私钥解密,阅读”,如此反复,这样不用担心公钥传递的问题,只要自己的私钥保管好,就能让秘密在有限期内安全(计算机尝试所有组合需要巨量的时间和算力,百年之后就无所谓了,秘密的秘密除外)。
asc文件是签名,是验证文件的可靠性,验证此文件是某组织发布的;sha256是校验,是验证文件的完整性,就是验证此文件发布后未经修改和增删,防患接收到了带有不安全因素的被篡改了的文件。sha256在当前被广泛使用,因其安全性高很多,替代了过往的MD5和sha-1。gpg软件是GnuPG,是GNU版本的pgp软件,pgp是较早的校验工具,后转商用,GNU组织就开发了其版本的pgp软件以满足使用,称为gpg。
gpg的主页是https://www.gnupg.org,可直接下载二进制文件和源码。linux平台可直接pip install gnupg;windows平台可先winget install chocolatey,再choco install gnupg。
接下来具体操作一番,参考了“阮一峰13年的网络日志”。
- 生成自己的密钥对,gpg --gen-key
这步弹框,要输入一个保护密钥的密码,目的防止对当前系统的侵入而获得私钥,增加一层防护。
二次输入防护密码后,生成了所要的密钥对。输入 gpg --list-keys 查看已生成的密钥对。
接下来是把生成好的公钥上传至公钥服务器,让需要通讯的人下载使用。从截图上看--keyserver参数已失效,意味着gpg将使用自己的默认公钥服务器。
删除--keyserver参数,依旧报错,是gpg不认显式ID,换成指纹就ok了。
从上截图可以看到gpg的默认公钥服务器地址是hkps://keyserver.ubuntu.com,接下来切换的虚拟机,模拟下载公钥证书和加密一个文本文档:
证书上传到服务器要等上一两分钟才能下载,如上截图,试了第四次才如愿。
加密一份文件试试,转回传给拥有公钥的系统,即是我自己,来完成解密:
截图可以看到--output参数也失效了,直接删去
可以看到gpg能直接识别是本机上的那个公钥加密的文件,输入防护密码后获得原文
上图是签名的语法,可以验证到文件是有qiuwzh签发的。
网络日志里有即加密又签名的语法,如上图,但实际试了一下,验证报错,去除加密就可通过,后续再留意一下怎么回事。
在此只是验证了一下gpg的使用,生成的签名想要从服务器上撤销了:
生成revoke文件,再导入,再传入服务器
可见之前发布的公钥已撤销,搜索不到了。值得注意的是撤销这一步--keyserver参数和服务器地址不可少,--search-keys要加指纹码,试了多次,没加参数的撤销还能被搜索到,尽管服务器不是每回都找到,试多两次后居然又找到了...
240715补充:win11下载链接的SHA256验证