如何在Linux上验证已下载软件的PGP签名

PGP代表“相当不错的隐私”,是一种公共密钥加密软件。 PGP可用于加密和签名数据通信。 在本教程中,我们将研究 如何验证已下载软件的PGP签名

Linux用户可以从发行版的存储库中安全地安装软件。 但是有时您还需要从网站上下载和安装软件。 您如何确定下载的软件没有被篡改?

一些软件作者使用PGP程序(例如GPG)对他们的软件签名,GPG是openPGP标准的免费软件实现。 在这种情况下,您可以使用GPG验证软件的完整性。

过程相对简单:

  1. 您下载软件作者的公钥。
  2. 检查公共密钥的指纹,以确保它是正确的密钥。
  3. 将正确的公钥导入GPG公钥环。
  4. 下载软件的签名文件。
  5. 使用公钥验证PGP签名。 如果签名正确,则表示该软件未受到篡改。

我们将以VeraCrypt为例,向您展示如何验证已下载软件的PGP签名。

示例:验证VeraCrypt的PGP签名

尽管VeraCrypt是开源软件,但未包含在Ubuntu或其他Linux发行版的存储库中。 我们可以从官方网站下载VeraCrypt Linux安装程序。

或者,您可以使用以下命令在终端中下载VeraCrypt安装程序。

wget https://launchpadlibrarian.net/289850375/veracrypt-1.19-setup.tar.bz2

在VeraCrypt下载页面上,您还可以找到PGP公钥和PGP签名下载链接。 下载这两个文件。 或者,您可以使用以下命令在终端中下载它们。

PGP公钥

wget https://www.idrix.fr/VeraCrypt/VeraCrypt_PGP_public_key.asc

PGP签名文件

wget https://launchpad.net/veracrypt/trunk/1.19/+download/veracrypt-1.19-setup.tar.bz2.sig

在使用公共密钥进行任何操作之前,必须始终检查密钥的指纹以查看其是否为正确的密钥。 使用以下命令显示钥匙的指纹。

gpg --with-fingerprint VeraCrypt_PGP_public_key.asc

输出的第二行是按键的指纹。

pgp公钥指纹

将其与在VeraCrypt网站上发布的指纹进行比较。

veracrypt公钥指纹

如您所见,这两个指纹是相同的,这意味着公钥是正确的。 因此,您可以使用以下命令将公共密钥导入您的公共密钥环:

gpg --import VeraCrypt_PGP_public_key.asc

gpg导入公钥

现在,使用以下命令验证签名。 您需要指定签名文件和软件安装程序,其名称通常相同,只是文件扩展名不同。 这是一个分离的签名,这意味着签名和软件是相互独立的。

gpg --verify veracrypt-1.19-setup.tar.bz2.sig veracrypt-1.19-setup.tar.bz2

输出应显示“ Good Signature”。

验证pgp签名

签名是一个哈希值,使用软件作者的私钥加密。 GPG使用公钥解密哈希值,然后计算VeraCrypt安装程序的哈希值并进行比较。 如果这两个哈希值匹配,则签名是好的,并且该软件未被篡改。

如果GPG告诉您这是一个错误的签名,则说明软件安装程序已被篡改或损坏。

从可信来源导入公钥

请注意,如果软件作者在网站上告诉您他/她的公共密钥ID,则可以使用以下命令导入公共密钥:

gpg --recv-keys <key-ID>

然后通过以下方式显示指纹:

gpg --fingerprint <key-ID>

并将输出的指纹与网站上发布的指纹进行比较。 这是更安全的,因为公钥是从公钥服务器导入的,该服务器默认情况下设置为 hkp://keys.gnupg.net~/.gnupg/gpg.conf 文件。 由于所有主要密钥服务器都相互通信并同步密钥,因此您无需更改默认值。

而已!

我希望本教程可以帮助您验证软件下载的PGP签名。 与往常一样,如果您发现此帖子有用,请订阅我们的免费新闻通讯,或在Google +,Twitter或我们的Facebook页面上关注我们。

Sidebar