我下载了大量文件,但是最近才发现使用md5和sha作为完整性检查程序。从那时起,即使我从未发现它们已损坏,我也总是喜欢检查它是否包含大型下载文件。
我们真的需要检查下载文件的完整性吗?
如果需要,以我刚刚下载的Linux发行版为例,该发行版为1GB。
谢谢
我下载了大量文件,但是最近才发现使用md5和sha作为完整性检查程序。从那时起,即使我从未发现它们已损坏,我也总是喜欢检查它是否包含大型下载文件。
我们真的需要检查下载文件的完整性吗?
如果需要,以我刚刚下载的Linux发行版为例,该发行版为1GB。
谢谢
Answers:
这取决于一些因素。
您的网路连线稳定吗?
如果您的网络连接稳定,则无需检查文件的完整性,因为它很可能是正确的。我从来没有检查过哈希,也从来没有损坏过的文件。或一次断开远程服务器连接。
您是否要基于安全原因验证文件?
如果您担心要下载的文件的安全性,则可以使用MD5哈希值来验证文件是否有所更改。您下载了一个文件,如果MD5哈希值不匹配,则意味着服务器上的文件与MD5哈希值不同,并且某种程度上出了问题。仅当您不信任要从中下载的服务器时,此方法才有效,但通常如果有人提供了哈希,他们通常也会尽力保持最新状态。但是,如果他们的网站遭到黑客入侵,并且您确实检查了MD5哈希,那么您将获得很少的收获。
总体而言,这2个选项对大多数人都不会。如果对您不满意,那完全取决于您。
一个人做出的答案和选择将基于他/她的风险承受能力以及验证时间和精力的考虑。
检查MD5 / SHA1哈希值是一个很好的第一步,应该在有时间时进行。但是,您必须考虑信任提供的哈希的能力。例如,如果带有哈希值的作者网站被黑客入侵,则攻击者可以更改哈希值,因此您不会知道。如果计算散列是不作为哈希提供的相同,你知道的东西到了。但是,仅因为哈希匹配不能保证文件良好。
对于软件作者而言,提供完整性和真实性的更好选择是通过对分发的文件进行数字签名。这会将真实性信息附加到文件,并且不依赖于信任某些网站。如果作者以数字方式对文件进行签名,则伪造此文件的唯一方法是证书授权机构遭到破坏,或者开发人员的签名密钥被盗。与被黑客入侵的互联网网站相比,这两种情况的可能性要小得多。
最终,您必须进行自己的尽职调查,以确定是否要信任某些内容,然后采取对策(在沙盒,虚拟机等中运行),以减轻您在决定是否信任时遇到的任何未知因素或错误计算。
通常,我通常只想检查下载是否中断,然后再恢复下载,因为带有查找偏移量的HTTP请求没有得到广泛使用,因此可能发生了一些愚蠢的事情。
在许多情况下,下载文件是压缩文件,即使文件损坏也不会解压缩。如果不是这种情况,检查不是一个坏主意。在将ISO刻录到一次写入媒体之前,我可能会检查它。
从其他安全性和安全性的角度来看,使用我从同一站点获得的哈希来验证它几乎没有用,就像其他答案和评论所说的那样。如果您是从镜像下载的,则它会更有用,但哈希是从原始上游下载的。或者,如果文件名模棱两可,并且由于某种原因您不确定要获得的确切版本。
关键是,发布哈希对于许多特殊情况很有用,而不仅仅是从托管哈希的同一站点下载文件。