我们真的需要检查下载文件的完整性吗?[重复]


9

我下载了大量文件,但是最近才发现使用md5和sha作为完整性检查程序。从那时起,即使我从未发现它们已损坏,我也总是喜欢检查它是否包含大型下载文件。

我们真的需要检查下载文件的完整性吗?

如果需要,以我刚刚下载的Linux发行版为例,该发行版为1GB。

谢谢


对于现代互联网连接而言,这确实不是问题。这完全取决于您的个人喜好。
Ramhound

5
比较散列的重点可能是“有人(恶意地)更改了文件”,而不是“已正确下载了文件”。一个主要的示例是从非官方/不可信来源下载Windows ISO,并通过将MD5哈希与Microsoft在MSDN上发布的哈希值进行比较来检查文件的完整性。
TheUser1024

1
@ TheUser1024假设您的两个源相同,则MSDN版本可能不同。
埃里克·G

1
这个问题可能会得到更多的security.SE回应
埃里克·摹

3
实际上,它更注重完整性而不是安全性,因为即使这是文件下载中的重要点,我也只能从受信任的来源下载
maxpesa 2015年

Answers:


6

这取决于一些因素。

  1. 您的网路连线稳定吗?
    如果您的网络连接稳定,则无需检查文件的完整性,因为它很可能是正确的。我从来没有检查过哈希,也从来没有损坏过的文件。或一次断开远程服务器连接。

  2. 您是否要基于安全原因验证文件?
    如果您担心要下载的文件的安全性,则可以使用MD5哈希值来验证文件是否有所更改。您下载了一个文件,如果MD5哈希值不匹配,则意味着服务器上的文件与MD5哈希值不同,并且某种程度上出了问题。仅当您不信任要从中下载的服务器时,此方法才有效,但通常如果有人提供了哈希,他们通常也会尽力保持最新状态。但是,如果他们的网站遭到黑客入侵,并且您确实检查了MD5哈希,那么您将获得很少的收获。

总体而言,这2个选项对大多数人都不会。如果对您不满意,那完全取决于您。


1
稳定的互联网连接是不够的。您还必须确保RAM和存储驱动器不会损坏文件。但是,是的,可能性很小。如果您的计算机不是蓝屏死机,则您可能只关心安全性。
ChrisInEdmonton,2015年

6
文件校验和不是安全检查,因为可以修改文件的攻击者还可能修改校验和。
约翰尼,

1
如果我要入侵某个网站并用恶意网站替换该文件,我想我很聪明,知道可以更改列出的哈希值。
科尔·约翰逊

3
MD5不再足以验证文件的内容没有被有意更改。这仅适用于意外腐败。攻击者妥协两者的几率各不相同。在很多情况下,散列的存储与大文件下载的批量文件存储所使用的通道不同。为了安全起见,加密签名比简单的哈希更好,尤其是在您没有安全的哈希分发渠道的情况下。
珀金斯2015年

我认为哈希的想法是当提供的文件托管在与哈希不同的站点上时。例如,开发人员网站的哈希链接指向Sourceforge或某处。
马修·洛克

6

一个人做出的答案和选择将基于他/她的风险承受能力以及验证时间和精力的考虑。

检查MD5 / SHA1哈希值是一个很好的第一步,应该在有时间时进行。但是,您必须考虑信任提供的哈希的能力。例如,如果带有哈希值的作者网站被黑客入侵,则攻击者可以更改哈希值,因此您不会知道。如果计算散列是作为哈希提供的相同,你知道的东西到了。但是,仅因为哈希匹配不能保证文件良好。

对于软件作者而言,提供完整性和真实性的更好选择是通过分发的文件进行数字签名。这会将真实性信息附加到文件,并且不依赖于信任某些网站。如果作者以数字方式对文件进行签名,则伪造此文件的唯一方法是证书授权机构遭到破坏,或者开发人员的签名密钥被盗。与被黑客入侵的互联网网站相比,这两种情况的可能性要小得多。

最终,您必须进行自己的尽职调查,以确定是否要信任某些内容,然后采取对策(在沙盒,虚拟机等中运行),以减轻您在决定是否信任时遇到的任何未知因素或错误计算。


4

出于安全原因,是。考虑到在下载过程中发现Tor出口节点正在修补二进制文件,请记住您的ISP可能有或没有丝毫的道德操守,并且它们完全控制了您的Internet连接。


您对ISP的抱怨是,它们可以更改我的连接速度和优先级以及其他可能损坏文件的事实?
maxpesa

@maxpesa-他们可以根据需要修改流。修改后文件不会损坏。
Ramhound

@maxpesa-我指出您的ISP与所链接文章中的Tor出口节点处于同一位置-它具有控制通过电线传输内容的能力。如果他们愿意,他们可以随时修改您下载的二进制文件。
Michael Kohne

2
如果攻击者可以修改二进制文件,则攻击者可以最轻松地修改哈希。尽管与修补所有二进制文件相比,这将需要更有针对性的攻击,但仍然很有可能。当检查散列避免损坏,也不能保证。如果您关心安全性,那么第一步就是仅通过HTTPS下载-尤其是当您使用与tor之类的代理时!
kapex

1
要添加到@kapep的评论中,最好使用加密签名(使用通过安全通道分配的密钥)进行验证。这样,攻击者将不得不同时破坏密钥库存储库以更改二进制文件。
约翰尼,

4

只是添加到其他答案:

TLDR:对于完整性至关重要的文件,是

长答案:在执行文件高度完整性至关重要的操作时,我经常发现有必要。

一个示例是使用OpenWRT刷新路由器。如果文件已损坏,则该路由器将变砖,然后我要么必须:

  • 更换它(昂贵)
  • 修复它(很费时间。特别是如果我需要焊接串行电缆/ JTAG)

与检查散列的简单性相比,这两者都不方便。因此,我强烈建议对关键文件执行此操作。


0

通常,我通常只想检查下载是否中断,然后再恢复下载,因为带有查找偏移量的HTTP请求没有得到广泛使用,因此可能发生了一些愚蠢的事情。

在许多情况下,下载文件是压缩文件,即使文件损坏也不会解压缩。如果不是这种情况,检查不是一个坏主意。在将ISO刻录到一次写入媒体之前,我可能会检查它。

从其他安全性和安全性的角度来看,使用我从同一站点获得的哈希来验证它几乎没有用,就像其他答案和评论所说的那样。如果您是从镜像下载的,则它会更有用,但哈希是从原始上游下载的。或者,如果文件名模棱两可,并且由于某种原因您不确定要获得的确切版本。

关键是,发布哈希对于许多特殊情况很有用,而不仅仅是从托管哈希的同一站点下载文件。

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.