验证从官方网站下载的ISO是否值得?


36

我从https://www.ubuntu.com/download下载了ISO ,选择了默认的“ Ubuntu Desktop”选项。

该网站链接页面https://tutorials.ubuntu.com/tutorial/tutorial-how-to-verify-ubuntu,其中提供了有关如何验证ubuntu的说明。

这似乎很乏味,我想知道从官方网站下载的ISO问题到底有多现实。我注意到,验证过程本身要求我下载对我来说是新的软件,因此即使我要关闭另一个攻击媒介,也对我造成了另一种攻击。

对于它的价值,我计划仅使用Live USB,而不是完全安装Ubuntu。这有什么区别吗?


8
我的政治回答是“是的”。除了在许多月前的第一次下载中,我从未做过。我一直在下载和评估软件或补丁/错误修复程序,只是不被多余的步骤所困扰。另外,我的系统都是非生产性的,如果明天它们变得“糟糕”,我将耸耸肩继续前进。
WinEunuuchs2Unix

14
如果您不想检查md5sum,则可以使用Torrent。当您通过torrent获取文件时,将自动对其进行检查:-)使用torrent方法(与普通下载相比)通常会更快,但是一些互联网服务提供商阻止了该文件,因为他们认为该文件仅用于非法目的。
sudodus

2
大文件上的MD5校验和的主要用途是确保下载文件的完整性(例如,检测传输是否被过早取消),而不是减轻MITM攻击的机会。
rexkogitans

1
@rackandboneman不,这根本不是根本问题。
David Richerby

16
有趣的事实:与一生计算校验和相比,您可能会花更多的时间问这个问题。
el.pescado

Answers:


57

是的,值得。

md5sum / etc下载的ISO只需几秒钟,并且可以确保您没有受到MITM等的攻击。除此之外,如果您有一些错误和调试必要,那么这些秒是[小时]浪费时间的保证追逐错误没有人会因为您的下载而失败(例如,您遇到网络问题,因此尝试调试;但是由于出现了一些错误,所以网络已塞满了……)将校验和检查视为一种非常便宜的保险。

md5sum所需的软件通常会来自其他来源(较旧的版本,有时甚至是不同的OS /发行版),它非常小,已经存在于我们许多人中。

此外,它允许我从本地镜像下载,但是因为我从Canonical来源获取了md5sum;我保证镜子不会和它一起玩。同样,非常便宜的保险花费了我3秒钟的时间。


12
但是,如果下载使用HTTPS传输方法,则所有完整性检查已经进行。
Nayuki

15
如果文件在服务器上以某种方式损坏(磁盘/ FS驱动程序故障,镜像错误等),则@Nayuki这些完整性检查将毫无价值。
罗斯兰

6
@Nayuki仅仅因为您正在通过HTTPS访问网站,并不意味着从PC到保存您所下载文件的存储的整个链接都是端到端加密的。看到几年前Google数据中心的链接崩溃了。
CVn

29
如果有人拥有MITM的ISO,在您在网站上查看时,谁会说他们不是MITM的校验和?(如果您使用的是镜像,则很有用。)看到校验和和从同一实体下载的内容并不罕见。

13
永远不要假设校验和将检测到MitM。给定的校验和也可能是伪造的。正确的方法是验证签名,但这需要GPG(我只做过一次,这很痛苦)。
米歇尔·约翰逊

21

是的,非常建议您验证下载的图像,这是一些原因:

  • 只需花费几秒钟的时间,便可以告诉您文件的完整性是否正确,我的意思是文件未损坏。(损坏的常见原因是由于技术原因(例如,@ sudodus注释的互联网连接不稳定)而导致的传输错误。)
  • 如果文件已损坏,并且您将此ISO映像刻录到CD / USB驱动器中而无法正常工作,或者在安装过程中可能会失败,则会浪费时间和CD。
  • 您确定使用的是任何类型的ISO映像或软件的官方CLEAN版本,而不是经过修改的版本(可能由攻击者使用),请参阅此报告:看门狗海盗受坏血病的比特币挖矿恶意软件的袭击

如果您已经拥有GNU Linux发行版,则可以使用md5sum;如果在Windows中,则可以使用:WinMD5Free

希望能帮助到你。


3
对于Windows,您可以使用内置的certutilsuperuser.com/a/898377/521689
Kanchu,

1
我也回答了,但我赞成您的回答,因为我认为它也很好地回答了该问题,并且由于它没有像其他答案一样涉及太多技术细节,因此对更多读者很有用。
bitoolean

@sudodus网络具有自己的完整性检查。尽管并非不可能避免错误(TCP只使用一个简单的校验和,它不会检测单词交换,但是大多数链接使用CRC),但这并不是人们通常担心的事情。
Barmar

如果攻击者能够破坏文件,那么更改MD5框中的值也应该可以实现。
Pascal Engeler,

2

是的,但是Ubuntu似乎比应该做的要难。

最好的情况是,一次导入密钥后,只需下载foo.iso和foo.iso.sig并单击.sig文件(或在.sig文件上的shell上使用gpg)。这花费了几秒钟。

Ubuntu强迫您在仅对文件本身进行签名的情况下检查文件中的sha256总和,从而使其变得更加复杂。这对他们来说很方便,但对他们的用户来说却需要更多工作。

另一方面,当文件仅由生成时sha256sum * >SHA256SUMS,您可以使用进行检查sha256 -cOK/Bad/Not-Found作为输出获取。


2

检查您的服务器/proc/net/dev,看看到目前为止已收到多少错误的TCP帧。如果看到一个单位数值(最好是零),请继续阅读。如果您有很多错误或网络错误,请务必使用MD5来验证下载(尽管我宁愿调查根本原因,因为不可靠的网络意味着您无法信任通过HTTP收到的任何内容)。

当您通过对所有传输数据进行校验和的TCP下载时,下载大小完全相同的损坏文件的可能性很小。如果您确定要从官方网站下载(通常使用HTTPS并且通过了证书检查),则通常可以验证下载是否足够。体面的网络浏览器通常会为您进行检查,如果没有得到他们期望的数据量,他们会说“下载失败”,尽管我已经看到浏览器只是决定保留不完整的文件而不说任何内容给用户,在这种情况下,您可以手动检查文件大小。

当然,验证校验和仍然具有其价值,以防您在服务器上损坏正在下载的文件的情况下发生,但这种情况很少发生。不过,如果您打算将下载内容用于重要的事情,那是值得采取的步骤。

正如@sudodus在评论中所说,使用Bittorrent代替HTTPS是另一种选择,因为torrent客户端在处理Web浏览器处理不完整/损坏的数据时做得更好。

请注意,校验和并不能真正阻止您受到攻击,这就是HTTPS的目的。


5
TCP校验和不足以容纳与ISO文件一样大的内容。只有16位;在嘈杂的链接上,很有可能会发生一些腐败。
马克

1
@Mark对于大型ISO,将有许多TCP校验和:传输数据所需的每个单独的TCP段一个。
安东尼G-莫妮卡(Monica)的正义'18

3
@AnthonyGeoghegan,完全是。每个段都有一个独立的机会被损坏,并且考虑到ISO文件中涉及多少段,很有可能其中一个段会以仍然与该段的校验和匹配的方式被损坏。
马克

1
@Mark您可以检查/ proc / net / dev并告诉您收到了多少错误的TCP帧?我的计算机为0,正常运行时间为140天。如果我没记错的话,认证的千兆以太网设备可提供10 ^ -10或更高的误码率。当然,这全都取决于您所说的“好机会” ...
Dmitry Grigoryev,

1
@Mark您使用的是哪种类型的第2层,没有CRC或类似内容?使用以太网,您可以获得CRC检查 TCP校验和。还没有完成那个数学运算,但是我看不到你是如何得到“相当好的机会”的。
Voo

0

我发现了不检查总和的困难方法。我将刻录带有在下载过程中损坏的ISO的CD,并且无法引导它或运行时出错。

就像其他人所说的,它花费的时间很少。


这种体验最糟糕的是,如果您再次刻录ISO,则会在CD上收到相同的错误
thomasrutter

1
这就是为什么我使用RW CD和DVD的原因。:-)
fixit7 '18

7
十多年来,我从未写过任何CD / DVD。当有大量廉价的
Pendrive

0

您仅用一个用例就可以看到它,在大规模自动化的设置中,有助于对其进行验证。运行check的脚本,然后继续处理我们需要处理的图像


0

尽管我是一名程序员,但其他人却给出了我忘记的技术细节的答案(我的工作不涉及网络通信),所以我只想让您了解个人经验。

一个很长的时间以前,当我用经常刻录光盘,一次发生在我身上已经下载了这个Linux发行版ISO这似乎是正确下载。CD使我失败了,所以我检查了下载的文件,但不匹配。因此,我再次下载并成功。因此,自从我成为高级计算机用户和编程人员(从19年前的11岁开始使用计算机,并且我已经刻录了上千张光盘)以来,这种情况仅在15年内发生过一次。但这是有可能的证明。

我也通过BitTorrent发生过一次或两次,所以这也不是安全的。强制重新检查下载的文件时,它标识出损坏的文件。

我的结论是,HTTP(依靠TCP)可能会变得尽可能安全,但是Internet意味着您的设备和服务器之间存在中间节点,并且无法确定途中会发生什么(数据包甚至丢失了所有时间),有时我猜计算机无法分辨出数据有误。

没有人能回答您是否值得为之烦恼-这取决于具体情况,我相信您可以自己判断。对我来说,大多数时候都不值得。但是,如果要安装操作系统,则需要检查下载的映像。

注意:我只有一两次注意到下载损坏的事实并不意味着它仅在那时发生。也许其他时候它不会妨碍您,所以您不会注意到。

编辑:我什至还有其他更有经验的程序员在工作(甚至有些愤慨)认为,这些数据完整性验证哈希值使我们有可能知道文件是否与原始文件完全相同,但是我知道(我读过)两个文件产生相同散列的事实并不意味着它们是相同的-只是意味着它们不可能完全不同。它们有用的方式是,当文件不相同时,尤其是当它们非常不同时,它们产生的哈希码实际上将永远不会相同(此测试失败的可能性更低)。简而言之-如果哈希码不同,您就会知道文件也不同。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.