如何验证PGP签名? 您所在的位置:网站首页 签名验证服务器异常 如何验证PGP签名?

如何验证PGP签名?

2024-07-18 08:32| 来源: 网络整理| 查看: 265

如何验证PGP签名?

PGP(Pretty Good Privacy)是一种基于公钥的加密程序。 PGP 用非对称密钥算法补充对称密钥,使该软件成为混合密码系统,通常称为混合密码系统。

PGP 不仅用于保护信息免受网络威胁,还用于检查文件完整性。

本教程轻松解释 PGP 的工作原理以及如何验证 PGP 签名。

PGP 的工作原理

下图描绘了 PGP 公钥。该 PGP 公钥只能使用特定的 PGP 私钥来解密。下面的公钥的颁发者还颁发了 PGP 私钥,因为它们是在同一过程中生成的。他只共享公钥。如果您使用他的公钥来加密发给他的消息,他将能够使用他的私钥解密该消息。只有他的私钥才能解密您使用他的公钥加密的消息。

该信息使用公钥加密,并使用私钥解密。这称为非对称加密。

因此,即使攻击者在没有私钥的情况下设法拦截消息,他也无法看到消息内容。

非对称加密的优点是交换密钥简单。但它的缺点是无法加密大量数据,这就是 PGP 实现这两者的原因。

当使用公钥来加密受保护的数据时,应用对称加密。使用公钥,发送方会做两件事:首先生成对称加密来保护数据,然后应用非对称加密,非对称加密不会加密数据本身,而是加密对称密钥,从而保护数据。

更技术性地说,在应用对称密钥之前,数据在使用对称密钥和公钥加密之前也会被压缩。整个流程如下图所示:

PGP 签名

PGP 还用于检查包的完整性。这是通过数字签名来实现的,可以使用 PGP 来完成。

首先,PGP 生成使用私钥加密的哈希值。私钥和哈希都可以使用公钥解密。

例如,PGP 使用 DSA 或 RSA 算法为 ISO 映像创建数字签名。在这种情况下,私钥会附加到软件或 ISO 映像中,这与前面描述的操作相反。公钥也被共享。

用户使用公钥来验证发布的软件所附带的签名。

下面的流程图展示了私钥和哈希如何附加到软件上,以及用户如何将带有附加哈希和私钥的软件与公钥一起验证签名:

如何验证PGP签名?

第一个示例展示了如何验证 Linux 内核签名。要尝试它,请访问 https://kernel.org 并下载内核版本及其 PGP 文件。对于本示例,我将下载文件 linux-5.12.7.tar.xz 和 linux-5.12.7.tar.sign。

第一个示例显示如何使用单个命令验证签名。根据手册页,此选项组合将在未来版本中被弃用。然而,它仍然被广泛使用,虽然特定的组合将被弃用,但选项将保留。

第一个选项–keyserver-options允许为存储公钥的密钥服务器定义选项。基本上,这允许实现公钥获取选项。

–keyserver-options 与 –auto-key-retrieve 选项结合使用,可在验证签名时自动从密钥服务器检索公钥。

为了查找公钥,此命令将读取签名,通过使用 Web 密钥目录的查找过程来查找定义的首选密钥服务器或签名者 ID。

gpg --keyserver-options auto-key-retrieve --verify linux-5.12.7.tar.sign

正如你所看到的,签名是好的,但是有一条警告消息说 gpg 无法确认签名属于所有者。任何人都可以以 Greg Krohan-Hartman 的身份发布公共签名。您知道该签名是合法的,因为您信任从中下载该签名的服务器。在这种情况下,它是在从 kernel.org 下载的 .sign 中指定的。此警告始终存在,您可以通过使用选项 -edit-key trust 将签名添加到签名受信任列表来避免此警告>。事实是没有用户这样做,Gpg 社区要求删除警告。

验证 SHA256SUMS.gpg

在下面的示例中,我将验证在我的盒子中找到的旧 Kali Linux 映像的完整性。为此,我下载了属于同一 iso 映像的 SHA256SUMS.gpg 和 SHA256SUMS 文件。

下载 iso 映像、SHA256SUMS.gpg 和 SHA256SUMS 后,您需要获取公钥。在下面的示例中,我使用 wget 和 gpg –import 获取密钥(Kali 验证说明链接到此密钥服务器)。

然后,我通过使用 –verify 参数调用 gpg 来验证文件完整性:

wget -q -O - https://archive.kali.org/archive-key.asc | gpg --import gpg --verify SHA256SUMS.gpg SHA256SUMS

可以看到,签名良好,验证成功。

以下示例显示如何验证 NodeJS 下载。第一个命令返回错误,因为没有公钥。该错误表明我需要搜索密钥 74F12602B6F1C4E913FAA37AD3A89613643B6201。通常,您还可以在说明中找到钥匙 ID。

通过使用选项–keyserver,我可以指定搜索密钥的服务器。通过使用选项–recv-keys,我检索密钥。然后验证工作:

gpg --verify SHASUMS256.txt.asc

我复制需要获取的密钥,然后运行:

gpg --keyserver pool.sks-keyservers.net --recv-keys 74F12602B6F1C4E913FAA37AD3A89613643B6201 gpg --verify SHASUMS256.txt.asc搜索 gpg 密钥:

如果自动检索密钥不起作用并且您找不到特定于验证的说明,您可以使用选项–search-key在密钥服务器中搜索密钥。

gpg --search-key 74F12602B6F1C4E913FAA37AD3A89613643B6201

如您所见,钥匙已找到。您还可以通过按要检索的密钥的号码来检索它。

结论

验证下载的完整性可以防止严重问题或解释这些问题,例如,当下载的软件无法正常工作时。使用 gpg 的过程非常简单,如上所示,只要用户获得所有必需的文件即可。

了解非对称加密或基于公钥和私钥的加密是在互联网上安全交互(例如使用数字签名)的基本需求。

我希望有关 PGP 签名的教程对您有所帮助。继续关注 Linux Hint 以获取更多 Linux 技巧和教程。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有