如何验证Linux ISO的校验和,并确认它没有被篡改

linux

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

Linux发行版发布校验和,以便您可以确认下载的文件是他们声称的,并且这些文件经常签名,因此您可以验证校验和本身没有被篡改。 如果您从主站点以外的其他位置(例如第三方镜像)或通过BItTorrent下载ISO,在这里人们更容易篡改文件,这是特别有用的。

这个过程如何工作

检查ISO的过程有点复杂,所以在我们进入确切的步骤之前,让我们准确地解释过程是什么:

  1. 您将从Linux发行版的网站或其他地方下载Linux ISO文件,就像往常一样。
  2. 您将从Linux发行版的网站下载校验和及其数字签名。 这些可能是两个单独的TXT文件,或者您可能会得到一个包含两个数据的TXT文件。
  3. 您将获得属于Linux发行版的公共PGP密钥。 你可以从Linux发行版的网站或者由同一个人管理的单独的密钥服务器上获得这个,这取决于你的Linux发行版。
  4. 您将使用PGP密钥来验证校验和的数字签名是由创建密钥的同一个人(在这种情况下是该Linux分发的维护者)创建的。 这确认校验和本身没有被篡改。
  5. 您将生成下载的ISO文件的校验和,并验证它与您下载的校验和TXT文件匹配。 这确认ISO文件没有被篡改或损坏。

该过程对于不同的ISO可能有所不同,但通常遵循该一般模式。 例如,有几种不同类型的校验和。 传统上,MD5的总和是最受欢迎的。 然而,现代Linux发行版更频繁地使用SHA-256和,因为SHA-256对理论攻击更具抵抗力。 我们将在这里主要讨论SHA-256总和,尽管类似的过程将用于MD5总和。 一些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〜/下载 

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

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

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

不要担心密钥没有通过“可信签名”认证。这是因为PGP加密的工作原理 - 您没有通过从受信任的人导入密钥来设置信任网。 这个错误会很常见。

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

  sha256sum --check sha256sum.txt 

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

您还可以直接在.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文件而不检查,反正好多了。

您现在应该可以选择文件>验证校验和文件,并确认校验和文件中的信息与下载的.iso文件匹配。 但是,这对我们没有用 - 也许只是Fedora的校验和文件布局的方式。 当我们尝试这个与Linux Mint的sha256sum.txt文件,它的确工作。

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

现在,单击文件>创建校验和文件,并选择您下载的ISO文件。 Kleopatra将从下载的.iso文件生成一个校验和并将其保存到一个新文件。

您可以在文本编辑器(如记事本)中打开这两个文件 - 下载的校验和文件和您刚刚生成的文件。 确认校验和与您自己的眼睛相同。 如果它相同,您已确认您下载的ISO文件没有被篡改。


这些验证方法最初不是用于防范恶意软件。 它们旨在确认您的ISO文件正确下载,并且在下载过程中未损坏,因此您可以刻录并使用它而不必担心。 他们不是一个完全万无一失的解决方案,因为你必须相信您下载的PGP密钥。 然而,这仍然提供了比仅使用ISO文件而不检查它的更多的保证。

图片来源: 爱德华多Quagliato在Flickr

赞 (0)
分享到:更多 ()