如何根据哈希值和 .gpg 文件验证下载的文件

如何根据哈希值和 .gpg 文件验证下载的文件

使用 GPG4Win,我使用 .sig 和签名密钥验证了 Tor、GPG4Win、Tails。为此,我阅读了文档并观看了视频。现在,我尝试使用 sha256sum 和 sha256sums.gpg 验证 Ubuntu。非 Linux 用户需要安装 GPG Tools - 我可以使用 GPG4Win 来代替吗 - 怎么做?我有 Ubuntu Mate 作为 VM,因此我尝试了规定的程序,但没有成功:

*m@ubuntu:~/Downloads$ gpgv --keyring=/usr/share/keyrings/ubuntu-
archive-keyring.gpg SHA256SUMS.gpg SHA256SUMS
gpgv: can't open `SHA256SUMS.gpg'
gpgv: verify signatures failed: file open error*

在“下载”中,我创建了一个文件夹,里面粘贴了“Pluma”上的校验和以及 SHA256SUMS.gpg。检查哈希值成功了。我需要的是使用 Linux 和 Win 进行验证的分步说明,因为这对我来说是一个新主题,没有任何经验。非常感谢您的建议。

PS:当我正要下载 Ubuntu 时,我在网上搜索“如何验证...”,结果发现在阅读完,我不愿意下载操作系统,不知道那会是什么样的下载。事实还是虚构?

答案1

验证不一定是最直接的过程,这取决于你想要达到多么万无一失或多么偏执(使用白话)。

当您下载 ISO 时,通常还会提供一个哈希值来验证下载内容。

如果没有,在 Ubuntu 下载页面上,有一个直接链接;访问父文件夹:http://releases.ubuntu.com/16.04.2/

SHA-256 总和文件就在那里,带有用于验证总和列表的签名

步骤1

gpg2 --verify SHA256SUMS.gpg SHA256SUMS

这将返回一些输出

gpg: Signature made Fri 17 Feb 2017 00:04:27 GMT using DSA key ID FBB75451
gpg: Can't check signature: No public key
gpg: Signature made Fri 17 Feb 2017 00:04:27 GMT using RSA key ID EFE21092

密钥指纹在最后;你现在需要从密钥服务器导入它们

第2步

从密钥服务器导入密钥

gpg2 --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys FBB75451 EFE21092

这将证实你想知道的内容:

gpg: key EFE21092: public key "Ubuntu CD Image Automatic Signing Key (2012) <[email protected]>" imported
gpg: key FBB75451: public key "Ubuntu CD Image Automatic Signing Key <[email protected]>" imported
gpg: marginals needed: 3  completes needed: 1  trust model: PGP
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: Total number processed: 2
gpg:               imported: 2

步骤3

您现在可以重新运行验证命令

gpg2 --verify SHA256SUMS.gpg SHA256SUMS

如果您以前从未扩展过信任网,您将收到有关受信任签名的警告。如果您信任从密钥服务器收到的指纹,那么这没问题。如果您想再进一步,您可以请具有扩展信任网的人为您验证;查看密钥签名事件gpg 信任网了解更多信息。

步骤4

下载所需的 ISO 后,请对其运行校验和工具:

sha256sum your_distro.iso

检查该总和是否与网站上的总和或 SHA256SUM 文件(只是一个包含校验和的文本文件)中的总和相匹配。

Reddit 链接引发的担忧

对于不使用 HTTPS 的 ISO 站点的担忧:服务器是已知服务器,内容也是已知内容。加密是不必要的,HTTPS 更适合通信保密和在线数据完整性。

如果文件在服务器硬盘上受到损害,我们需要其他东西:因此我们使用签名来验证静态数据的真实性和完整性。

对于钥匙和指纹本身的担忧,首先声明一下:以下阐述的是一般理解的内容,当然也包含一些注意事项。这不是专业的安全建议,而是一种时事论述。

你唯一需要确定的是信任从密钥服务器收到的密钥,这就是信任网络发挥作用的地方。

如果您的朋友或同事已经建立了可以验证指纹的信任链,并且您信任该人,那么您就可以信任该指纹。

一个普通人确定的方法是检查不同的网站和论坛,看看你拥有的指纹是否与在其他网站上看到和找到的指纹相符。

如果攻击者确实用假货替换了 Ubuntu ISO,并替换了伪造的签名文件,设法切换密钥服务器上的密钥,你仍然可以确保

  • 这些密钥不会与其他人导入的密钥匹配(只要他们拥有未被泄露的密钥)(信任网络场景)
  • 网络上论坛中记录的任何密钥(如上图所示,我粘贴了我所拥有的内容)不太可能也被替换过(除非所有网站都被黑客入侵,或者密钥在有人开始在论坛和 stackexchange 调试输出中记录它们之前就已经被替换过,例如)

如果您想了解更多,阅读 Linux Mint 网站黑客事件所带来的“教训”应该能为您提供有关这个问题的良好背景信息。

是的,验证 ISO 的过程应该更加简单,我同意这一点。

相关内容