GPG签名使用与验证

GNU Privacy GuardGnuPGGPG)是一个密码学软件,用于加密签名通信内容及管理非对称密码学的密钥。GnuPG是自由软件,遵循IETF订定的OpenPGP技术标准设计,并与PGP保持兼容。

GnuPG是自由软件基金会GNU计划的一部分,曾受德国政府资助。

以上是关于GPG的维基百科简介

一般情况下,我们通常使用GPG来对发布的程序进行签名;以及验证程序的签名是否正常,以确认程序来源的可靠性。

验证程序签名

虽然大多数人没有这个习惯,但我们应当在从一个站点下载完程序后,对其进行安全性验证。一般常用的文件安全验证有如下几种方式:

  • 验证文件哈希值,MD5/SHA256 等
  • 查看 Windows执行文件 数字签名
  • 文件 GPG签名 验证

下面来介绍下这几种方式:

验证文件哈希值

部分从软件/程序官网下载的文件,会提供相对应文件的MD5/SHA256值:

例如,从Python官方下载的安装包:

验证很简单,计算我们下载完成的文件MD5,跟官方提供的进行对比即可,如一致可证明内容未没篡改。

Linux:

md5sum filename

Windows:

windows需要使用第三方工具。

查看Windows执行文件的数字签名

一般作为公司正式发布的Windows安装软件,都会为其添加签名,即满足Windows内部的安全机制,也证明安装程序为未被篡改的受信任发布者所发布的

GPG签名验证

从上面截图可以看出,Python的发布文件同样支持GPG签名验证。

要验证GPG签名,首先要导入官方提供的签名公钥:

在Python的总下载页面可以找到其所有发布的GPG公钥文件.

选择使用自己下载程序的对应版本的公钥即可,同时提供的还有一个叫key id的字符串,也就是公钥的“指纹”,当我们导入完公钥,可以以此来验证公钥的合法性:

wget https://keybase.io/nad/pgp_keys.asc?fingerprint=xxx -O pgp_keys.asc
gpg --import pgp_keys.asc
gpg --list-keys
gpg --fingerprint AA65421D

下载签名文件,并验证被签名的文件:

wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz.asc
gpg --verify Python-3.7.4.tgz.asc Python-3.7.4.tgz

当看到Good signature from xx时,说明主机中有一个公钥对此文件的签名验证成功。

发表评论

error: Content is protected !!