为什么需要将下载的校验和与同一服务器提供的另一个文件匹配?

信息安全 哈希 正直 md5
2021-08-16 04:36:45

可能重复:
对来自未签名网站的文件进行哈希处理是否会产生错误的安全感?

在许多提供文件下载的服务器上,有一个文件为每次下载提供校验和。示例 1 示例 2

我了解可以提供这些校验和以检查下载是否成功(文件未损坏)。不过,通过 HTTP 或 FTP 下载文件非常可靠。

但是为什么它会阻止我下载恶意文件呢?如果攻击者可以修改服务器上的下载,则意味着服务器已被入侵。因此,攻击者也可能修改了这些 MD5SUMS 文件。

那么,如果校验和和原始下载都是由同一台服务器提供的,是否真的有必要使用提供的校验和?

3个回答

真的,当他们在同一个站点上时,没有真正的安全价值。在尝试验证来自另一个来源的文件是否是同一个文件时,它仅具有安全价值(尽管由于对许多典型的错误检测哈希的碰撞攻击成功,即使这也可能是可疑的。)主要原因,因为你提到,只是为了确保您可以验证传输是否正常。

MD5 校验和是关于通过 HTTP(可能从镜像)下载大存档,同时从“安全”网站 (HTTPS) 获取 MD5 值。这样,您只需要专注于获得正确的 MD5 值,但您可以通过任何媒体从任何来源获取存档(从可疑的镜像、p2p 网络、CD/DVD、鸟类载体下载......只要哈希值匹配就很重要)。散列值只是将安全要求集中在一个足够小的值上(假设)使安全性更容易的一种方式。当然,这并不能解决问题:您仍然需要担心哈希值是否真实且未更改。

MD5 校验和还擅长检测非恶意更改,例如由于计算机上的 RAM 损坏而导致的位翻转(这种情况比通常假设的要普遍得多)。

前言

该问题要求进行校验和测试的“必要性”/“为什么必要”。即使或者可能是因为我假设了一个安全上下文,我还是有点困扰。我假设您的意思是说“使用相同来源的明文传输的哈希/校验和会带来什么安全收益”?

不,它对安全/安保不是很有用

正如您可能已经用您的怀疑/明智的问题所说的那样,在许多情况下,安全收益将非常有限。如果有人能够以“中间人”的身份即时篡改 600MB 下载,那么攻击者肯定能够生成合适的哈希文件,从而防止您注意到 600MB 文件的篡改。

也已经说明了(与安全无关的)原因“数据传输过程中潜在的数据损坏”。

我不想在这里将这个新的附加点称为“一个非常安全的功能”,但是如果您根据其努力和成本来感知攻击。可能攻击者能够在一两个时间点篡改一个 600MB 的文件(下载需要一些时间)。哈希/校验和文件(正如@Thomas Pornin 所说的那样非常集中安全要求)可以更快地下载(只有几个字节)。它可以很容易地多次下载(在不同的时间点)。无需您付出任何努力(因为文件很小),但需要攻击者以某种方式不断地监视。哈希集中安全性这一事实可能会使“努力平衡”转向您。您不会下载整个文件(比如说 600MB*.iso)3-4 次,只是为了检查它是否仍然相同(即没有明显的篡改迹象),但您可以考虑下载(非常很少的费用),来自不同日期的多个来源的哈希。努力(感谢哈希)对您来说很少。另一方面,攻击者仍然必须在那里(即使是几个字节),

当然,您可以认为这只是一个非常薄的、很小的附加安全性(由于成功运行攻击所需的工作量可能增加),但由于可以计算和传输散列(多次,多个来源)它可以促进增加安全性。

关于多个来源:您给出的示例可以视为

组合。允许您通过 HTTP 下载 iso(节省加密传输的计算能力),然后通过 HTTPS 下载 HASH/校验和,以在一定程度上减少攻击的机会。

顺便提一下。通常还使用文件签名,它们不仅包含哈希值,而且通过使用公钥/私钥签名可以检查真实性或来源,并且将击败(就安全性而言)唯一的哈希值/校验和文件。