如何验证Linux ISO的校验和并确认其未被篡改

上个月,Linux Mint的网站遭到黑客攻击,修改后的ISO被提供下载,其中包括一个后门。虽然问题很快就解决了,但它说明了在运行和安装下载的Linux ISO文件之前检查它们的重要性。这是怎么做的。

Linux发行版发布校验和,这样您就可以确认下载的文件是否如它们声称的那样,并且这些文件通常都经过签名,这样您就可以验证校验和本身没有被篡改。如果你从主站点以外的其他地方下载ISO文件,比如第三方镜像,或者通过BitTorrent下载,这特别有用,因为在BitTorrent上,人们更容易篡改文件。

此过程是如何工作的

检查ISO的过程有点复杂,因此在我们开始确切的步骤之前,让我们确切地解释一下该过程需要什么:

您将像往常一样从Linux发行版的网站或其他地方下载Linux ISO文件。 您将从Linux发行版的网站下载校验和及其数字签名。这可能是两个独立的TXT文件,也可能是包含两个数据的单个TXT文件。 您将获得一个属于Linux发行版的公共PGP密钥。根据您的Linux发行版,您可以从Linux发行版的网站或由相同人员管理的单独密钥服务器获得。 您将使用PGP密钥来验证校验和的数字签名是否由创建该密钥的同一个人创建-在本例中,是该Linux发行版的维护人员。这证实了校验和本身没有被篡改。 您将生成下载的ISO文件的校验和,并验证它是否与您下载的校验和TXT文件匹配。这确认ISO文件没有被篡改或损坏。

对于不同的ISO,该过程可能会略有不同,但通常遵循该一般模式。例如,校验和有几种不同的类型。传统上,MD5和一直是最受欢迎的。然而,现代Linux发行版现在更频繁地使用SHA-256 SUM,因为SHA-256更能抵抗理论攻击。我们将在这里主要讨论SHA-256 SUM,尽管类似的过程也适用于MD5 SUM。一些Linux发行版可能还会提供SHA-1金额,尽管这种情况更不常见。

同样,一些发行版不会用PGP签署校验和。您只需要执行步骤1、2和5,但是该过程更容易受到攻击。毕竟,如果攻击者可以替换下载的ISO文件,他们也可以替换校验和。

使用PGP要安全得多,但也不是万无一失。攻击者仍然可以用他们自己的公钥替换公钥,他们仍然可以欺骗您认为ISO是合法的。然而,如果公钥托管在不同的服务器上-就像Linux Mint的情况一样-这就不太可能了(因为他们必须攻击两台服务器,而不是只攻击一台)。但是如果公钥与ISO和校验和存储在同一台服务器上,就像某些发行版的情况一样,那么它就不能提供那么高的安全性。

尽管如此,如果您试图验证校验和文件上的PGP签名,然后使用该校验和验证您的下载,那么作为下载Linux ISO的最终用户,这是合理的做法。你仍然比那些不费心的人安全得多。

如何在Linux上验证校验和

这里我们将使用Linux Mint作为示例,但是您可能需要搜索您的Linux发行版的网站来查找它提供的验证选项。对于Linux Mint,在其下载镜像上随ISO下载提供了两个文件。请下载ISO,然后将“sha256sum.txt”和“sha256sum.txt.gpg”文件下载到您的计算机。右键单击这些文件,然后选择“链接另存为”进行下载。

在Linux桌面上,打开终端窗口并下载PGP密钥。在本例中,Linux Mint的PGP密钥托管在Ubuntu的密钥服务器上,我们必须运行以下命令才能获得它。

gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 0FF405B2

您的Linux发行版的网站将为您提供所需的密钥。

现在我们拥有了所需的一切:ISO、校验和文件、校验和的数字签名文件和PGP密钥。因此,接下来,我们将其更改为下载到…的文件夹

cd ~/Downloads

…。并运行以下命令检查校验和文件的签名:

gpg --verify sha256sum.txt.gpg sha256sum.txt

如果gpg命令让你知道下载的sha256sum.txt文件有一个“良好的签名”,你可以继续。在下面屏幕截图的第四行,GPG告诉我们,这是一个声称与Linux Mint的创建者Clement Lefebvre有关的“好签名”。

不要担心密钥没有通过“可信签名”进行认证。这是因为PGP加密的工作方式-您没有通过从受信任的人导入密钥来建立信任网络。此错误将非常常见。

最后,现在我们知道校验和是由Linux Mint Maintainers创建的,现在运行以下命令,从下载的.iso文件生成一个新的校验和,并将其与您下载的校验和TXT文件进行比较:

sha256sum --check sha256sum.txt

如果您只下载了一个ISO文件,您会看到很多“没有这样的文件或目录”的消息,但是如果您下载的文件与校验和匹配,您应该会看到一条“OK”消息。

您还可以直接对.iso文件运行校验和命令。它不会检查.iso文件并输出其校验和。然后,您可以只需通过用眼睛查看两者来检查它是否与有效的校验和匹配。

例如,要获取ISO文件的SHA-256总和,请执行以下操作:

sha256sum /path/to/file.iso

或者,如果您有md5sum值,并且需要获取文件的md5sum:

md5sum /path/to/file.iso

将结果与校验和TXT文件进行比较,看它们是否匹配。

如何在Windows上验证校验和

如果你从Windows机器上下载Linux ISO,你也可以在那里验证校验和-尽管Windows没有必要的内置软件。因此,您需要下载并安装开源的GPG4Win工具。

找到您的Linux发行版的签名密钥文件和校验和文件。“这里我们将使用Fedora作为示例。Fedora的网站提供校验和下载,并告诉我们可以从https://getfedora.org/static/fedora.gpg.下载Fedora签名密钥

下载完这些文件后,需要使用GPG4Win附带的Kleopatra程序安装签名密钥。启动Kleopatra,然后单击文件>导入证书。选择您下载的.gpg文件。

现在您可以检查下载的校验和文件是否已使用您导入的其中一个密钥文件进行签名。要执行此操作,请单击文件>解密/验证文件。选择下载的校验和文件。取消选中“输入文件是分离的签名”选项,然后单击“解密/验证”。

如果您这样做,您肯定会看到一条错误消息,因为您没有费力确认这些Fedora证书实际上是合法的。这是一项更困难的任务。这就是PGP的工作方式-例如,您可以亲自会面和交换密钥,并将信任网络拼凑在一起。大多数人不是这样使用的。

但是,您可以查看更多详细信息,并确认校验和文件已使用您导入的密钥之一签名。无论如何,这比只信任下载的ISO文件而不检查要好得多。

现在,您应该能够选择File>Verify Checksum Files,并确认校验和文件中的信息与下载的.iso文件匹配。然而,这对我们不起作用--也许这只是Fedora校验和文件的布局方式。当我们在Linux Mint的sha256sum.txt文件中尝试此功能时,它确实起作用了。

如果这对您选择的Linux发行版不起作用,这里有一个解决方法。首先,单击设置>配置Kleopatra。选择“Crypto Operations”,选择“File Operations”,并将Kleopatra设置为使用“sha256sum”校验和程序,因为这就是生成此特定文件校验和的程序。如果您有MD5校验和,请在此处列表中选择“md5sum”。

现在,单击File(文件)>Create Checksum Files(创建校验和文件)并选择下载的ISO文件。Kleopatra将从下载的.iso文件生成校验和,并将其保存到新文件。

您可以在记事本之类的文本编辑器中打开这两个文件-下载的校验和文件和您刚刚生成的文件。用您的眼睛确认两者的校验和相同。如果相同,则您已确认下载的ISO文件未被篡改。

这些验证方法最初并不是为了保护自己免受恶意软件的攻击。它们旨在确认您的ISO文件下载正确且在下载过程中没有损坏,因此您可以放心地刻录和使用它。它们不是完全万无一失的解决方案,因为您必须信任您下载的PGP密钥。然而,与只使用ISO文件而根本不检查相比,这仍然提供了更多的保证。

图片来源:Flickr上的爱德华多·夸利亚托(Eduardo Quaglito)

相关文章