下载的 MD5 校验和

MD5 Checksums on Downloads

为什么网站在文件下载时提供 MD5 校验和?例如,XAMPP 在 https://www.apachefriends.org/download.html

我的理解是,这是为了显示真实性和可信度,但如果是这样,网站就不能计算并提供他们交付给您的任何文件(恶意或非恶意)的校验和吗?

MD5 等哈希函数可验证文件的完整性。当您将哈希值与从经过身份验证的来源接收到的哈希值进行比较时,就提供了真实性验证,在本例中是 XAMPP 网站。哈希函数可以 运行 针对任何文件或数据流,所以是的,站点可以计算并提供 任何 文件的校验和,无论是否恶意。

确实,如果托管该文件的站点遭到破坏,这些哈希将提供很少的价值 - 但是第三方主机(以节省带宽,或提供备份源)。因此,如果我在我的站点上为文件提供哈希,但我使用的是第三方主机,您可以仔细检查该值以确保文件未被文件主机修改。

在您的情况下,安装程序实际上是由 sourceforge.net 提供的(至少在我尝试时是这样),具有讽刺意味的是,它 getting a lot of flack recently 用于修改文件,就像我们描述的那样。所以,仔细检查哈希可能是个好主意!

网站提供这些的另一个好处是因为 MitM 攻击可以修改传输中的文件(如可执行文件)。这意味着即使您信任站点和主机,也可能存在一些感染文件的中间漏洞。当然,足够高级的攻击可以操纵两者,但如果是这样的话,他们可能不需要去解决这个问题。

因此,散列并不是表示文件安全的一种方式。这是一种查看提供文件的主机是否提供相同文件的方法。如果您不信任该网页,则哈希值没有任何价值(安全方面)。


您没有问过这个问题,但同时提供 MD5 和 SHA1 哈希值的原因之一是虽然这可能 to create a file with an MD5 collision, and in some cases SHA-1 can be broken too,但我还没有听说过任何可以生成恶意软件的案例文件是两者的冲突。该站点计算多个哈希值是微不足道的,但攻击者创建一个 "double" 与真实文件冲突的恶意文件在计算上是不可行的(据我所知!)。