我下载了大量文件,但最近才发现 md5 和 sha 可以作为完整性检查器。从那时起,我总是喜欢对下载的大文件进行检查,即使我从未发现它们被损坏。
我们真的需要检查下载文件的完整性吗?
如果您愿意的话,选择我刚刚下载的 Linux 发行版作为示例,它有 1GB。
谢谢
答案1
这取决于几个因素。
您的互联网连接稳定吗?
如果您的互联网连接稳定,则无需检查文件的完整性,因为它很可能是正确的。我从不检查哈希值,也从未遇到过损坏的文件。或者也许有一次远程服务器断开连接。您是否想基于安全原因验证该文件?
如果您担心所下载文件的安全性,可以使用 MD5 哈希来验证文件是否被更改。您下载了一个文件,如果 MD5 哈希不匹配,则意味着服务器上的文件与 MD5 哈希不同,并且存在某种问题。这仅在您不信任所下载文件的服务器时才有效,但通常如果有人提供哈希,他们通常也会尽力保持更新。但如果他们的网站被黑客入侵,并且您确实检查了 MD5 哈希,那么您会得到一点奖励。
总体而言,大多数人都会拒绝这两个选项。如果您也拒绝,那当然完全取决于您。
答案2
人们做出的答案和选择将基于他/她的风险承受能力以及对验证的时间和精力的考虑。
检查 MD5/SHA1 哈希是一个很好的第一步,你应该在有时间的时候做这件事。但是,你必须考虑你是否能够信任所提供的哈希。例如,如果包含哈希的作者网站被黑客入侵,那么攻击者可以更改哈希,所以你不会知道。如果你计算的哈希是不是与提供的哈希值相同,您就知道出了问题。但是,仅仅因为哈希值匹配并不意味着不是保证文件完好。
对于软件作者来说,提供完整性和真实性的更好方法是通过对文件进行数字签名分发。这会将真实性信息附加到文件中,而不依赖于信任某个网站。如果作者对文件进行数字签名,则伪造该文件的唯一方法是证书颁发机构受到损害或开发人员的签名密钥被盗。这两种情况发生的可能性都远低于互联网上网站被黑客入侵的可能性。
最终,您必须自行尽职调查以确定是否要信任某事物,然后采取对策(在沙箱、虚拟机等中运行)以减轻在决定是否信任时所产生的任何未知因素或错误计算。
答案3
出于安全原因,可以。假设 Tor 出口节点被发现下载期间修补二进制文件,那么请记住,您的 ISP 可能有或可能没有丝毫的道德,并且他们完全控制着您的互联网连接。
答案4
我通常只会检查我的下载是否被中断并且稍后再恢复,因为具有搜索偏移的 HTTP 请求并不被广泛使用,所以可能会发生一些愚蠢的事情。
在许多情况下,下载的文件是压缩文件,如果损坏则无法解压。如果不是这种情况,检查一下也不错。我可能会在将 ISO 刻录到一次性写入媒体之前检查一下。
从安全角度来看,使用我获取它的同一站点的哈希值进行验证几乎没有用处,正如其他答案和评论所说。如果您从镜像下载,但哈希值来自原始上游,则可能会更有用。或者如果文件名不明确,并且出于某种原因您不确定是否获得了所需的确切版本。
重点是,发布哈希值除了从托管哈希值的同一站点下载文件之外,还对于很多特殊情况很有用。