侧边栏壁纸
博主头像
liveJQ博主等级

沒有乐趣,何来开始

  • 累计撰写 171 篇文章
  • 累计创建 67 个标签
  • 累计收到 2 条评论

gpg、sha512sum或md5sum验证包完整性

liveJQ
2019-03-10 / 0 评论 / 0 点赞 / 900 阅读 / 3,087 字

PGP签名(.asc文件)

PGP(英语:Pretty Good Privacy,中文翻译“优良保密协议”)是一套用于消息加密、验证的应用程序,采用IDEA的散列算法作为加密与验证之用,以RSA公钥&私钥及AES(Advanced Encryption Standard)等加密算法为基础。

20190310_RSA.png

PGP加密由一系列散列、数据压缩、对称密钥加密,以及公钥加密的算法组合而成。每个步骤支持几种算法,可以选择一个使用。每个公钥均绑定唯一的用户名和/或者E-mail地址。这个系统的第一个版本通常称为可信Web或X.509系统;X.509系统使用的是基于数字证书认证机构的分层方案,该方案后来被加入到PGP的实现中。

当前的PGP加密版本通过一个自动密钥管理服务器来进行密钥的可靠存放。

机密性

PGP可以用来发送机密消息。这是通过对称的一组密钥-公钥组合来实现的。消息采用对称加密算法加密,采用一组对称密钥。每个对称密钥只使用一次,所以也叫做会话密钥。会话密钥通过接收方的公钥来加密保护,因此只需确保仅接收方能解密会话密钥即可。加密的消息和加密的会话密钥一起发送给接收方。

数字签名

PGP支持消息认证和完整性检测。完整性检测被用来检查消息在传输过程中是否变更过(即验证消息完整性),而消息认证则是被用来决定消息是否确由某特定的人或实体发出(即数字签名验证)。在PGP中,这些特性默认是和消息加密同时开启的,而且同样可以被应用到明文的验证。发送者只需使用PGP为消息创建一个数字签名(签名算法采用RSA或DSA算法)。具体步骤为:PGP以数据或信息创建一个散列(参见消息摘要),然后使用发送者的私钥利用散列生成数字签名。

散列(.md5或.sha*文件)

sha是什么?

sha 为 安全散列算法(英语:Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。且若输入的消息不同,它们对应到不同字符串的机率很高。

SHA家族的五个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512,由美国国家安全局(NSA)所设计,并由美国国家标准与技术研究院(NIST)发布;是美国的政府标准。后四者有时并称为SHA-2。SHA-1在许多安全协定中广为使用,包括TLS和SSL、PGP、SSH、S/MIME和IPsec,曾被视为是MD5(更早之前被广为使用的杂凑函数)的后继者。

md5是什么?

md5 为 消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。

实例检验

PGP

20190310_gpg_command.png

首先下载一个软件包,并复制其附带的PGP和sha,然后放在一个目录下打开CLI(也就是git bash)。

$ gpg --verify apache-tomcat-9.0.16-windows-x64.zip.asc apache-tomcat-9.0.16-windows-x64.zip
gpg: Signature made 2019年02月 5日  0:32:50
gpg:                using RSA key A9C5DF4D22E99998D9875A5110C01C5A2F6059E7
gpg: Can't check signature: No public key

这是提示没有公匙,根据它提供的RSA key,可以通过连接服务器(内置链接)获得。

$ gpg --receive-keys A9C5DF4D22E99998D9875A5110C01C5A2F6059E7
gpg: key 10C01C5A2F6059E7: 38 signatures not checked due to missing keys
gpg: key 10C01C5A2F6059E7: public key "Mark E D Thomas <markt@apache.org>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1

然后验证成功

$ gpg --verify apache-tomcat-9.0.16-windows-x64.zip.asc
gpg: assuming signed data in 'apache-tomcat-9.0.16-windows-x64.zip'
gpg: Signature made 2019年02月 5日  0:32:50
gpg:                using RSA key A9C5DF4D22E99998D9875A5110C01C5A2F6059E7
gpg: Good signature from "Mark E D Thomas <markt@apache.org>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: A9C5 DF4D 22E9 9998 D987  5A51 10C0 1C5A 2F60 59E7

也可以验证文件的哈希值,将输出与SHA文件比较

$ gpg --print-md sha512 apache-tomcat-9.0.16-windows-x64.zip
apache-tomcat-9.0.16-windows-x64.zip: 3F9063CF BE78F6BD AF5015F4 914D1918E1F38311 CAECBEBE A76FD311 CBD01A2BE8AD1D18 9B0B3B0A C6A12C4F A62142250FCAA192 6B3A3ABD 94046FDD 6D2EE473

SHA

以sha512为例(将文件放在一个文件夹或者在其它文件夹但得提供路径):

$ sha512sum -c apache-tomcat-9.0.16-windows-x64.zip.sha512
apache-tomcat-9.0.16-windows-x64.zip: OK

稍稍改动压缩包的内容(随便加一个文件进去),看看会怎样

$ sha512sum -c apache-tomcat-9.0.16-windows-x64.zip.sha512
apache-tomcat-9.0.16-windows-x64.zip: FAILED
sha512sum: WARNING: 1 computed checksum did NOT match

果然,它发现原始文件被修改了。

上面是zip文件,然而后来发现对于tar.gz文件却好像没效果。

$ sha512sum -c subversion-1.11.1.tar.gz.sha512
sha512sum: subversion-1.11.1.tar.gz.sha512: no properly formatted SHA512 checksum lines found

最后用certutil -hashfile <filename> SHA512解决了(windows中也能用)。

GnuPG下载链接

相关文章

  1. md5sum 和 sha256sum用于 验证软件完整性
0

评论区