如果 MD5 散列本身也可能被操纵,那么 MD5 校验和的值是多少?

Aus*_*ers 39 security download md5sum

网站上的下载有时具有 MD5 校验和,允许人们确认文件的完整性。我听说这不仅可以让损坏的文件在它们引起问题之前被立即识别,而且可以轻松检测到任何恶意更改。

就文件损坏而言,我遵循逻辑,但如果有人故意想要上传恶意文件,那么他们可以生成相应的 MD5 校验和并将其与更改的文件一起发布在下载站点上。这会欺骗任何下载文件的人认为它没有被更改。

如果无法知道校验和本身是否已被破坏,MD5 校验和如何提供任何保护以防止故意更改文件?

Dan*_*l B 89

我听说这是为了允许 [...] 检测到任何恶意更改。

那么你听错了。提供 MD5(或 SHA 或其他)校验和(在下载链接旁边,特别是)仅用于验证正确的下载。他们唯一要保证的是您拥有与服务器相同的文件。不多也不少。如果服务器受到威胁,您就是 SOL。就这么简单。

  • +1。它们主要用于防止*意外*损坏(网络传输错误、磁盘上的坏扇区等)。为了防止*恶意*损坏,校验和需要来自一个可信的未连接位置。与 PGP/GPG/类似签名的消息相同:只有当您信任从哪里获得公钥时,它们才能完全保证内容。 (31认同)
  • 扩展:如果它_确实_保证您拥有与服务器相同的文件,那么这将是一种合法的安全措施,因为这意味着您不必信任网络。这正是 TLS 中的 MAC 所做的——证明您得到的是服务器发送的内容,但 TLS 也无法对受感染的服务器做任何事情。如果一个好的散列通过可信连接传输,它可以提供安全性(源自可信连接);如果它通过与文件相同的连接发送,_那么_它是无用的,因为它不比文件本身更具有防篡改能力。 (3认同)
  • 甚至比这更糟糕 - 如果有人可以篡改您进出服务器的流量,那么即使服务器没有受到损害,他们也可以修改您收到的文件和校验和。 (2认同)
  • 这是错误的。有时校验和是安全提供的,但下载不是。由于 MD5 被破坏,提供的安全 MD5 校验和比更安全的校验和弱,但在 MD5 被破坏之前,与下载的 MD5 匹配的安全提供的 MD5(例如,通过 HTTP 签名或发送的)是强有力的证据收到的下载是服务器提供的下载。我现在将在下面添加更详细的答案。 (2认同)

pjc*_*c50 15

一些包管理系统(例如 dpkg)使用的解决方案是对哈希进行签名:使用哈希作为公钥签名算法之一的输入。见http://www.pgpi.org/doc/pgpintro/#p12

如果你有签名者的公钥,你可以验证签名,这证明散列是未修改的。这只会给您带来提前获取正确公钥的问题,尽管如果有人曾经篡改过密钥分发,他们也必须篡改您可能会用它验证的所有内容,否则您会发现正在发生一些奇怪的事情。


nsn*_*nsn 9

你的假设是正确的。不过也有例外。如果提供文件的服务器和散列所在的页面不是由同一实体管理的。在这种情况下,软件开发人员可能想说“嘿,人们从那个地方下载这个,但只相信 hash = xxxx”。(以 CDN 为例,这可能很有用)。我想这就是为什么有人首先这样做的原因。与其他人相比,只是认为显示哈希值会很酷。甚至没有考虑文件和哈希值都在同一个位置上有多大用处。

话虽如此,这是值得的。不要像其他人已经说过的那样对安全性假设太多。当且仅当您可以绝对信任原始哈希时,该文件才是好的。否则,具有足够动机和知识的攻击者可以篡改文件和哈希,即使它们位于不同的服务器中并由不同的实体管理。


Mat*_*TIN 8

有时校验和是安全提供的,但下载不是。由于MD5 被破坏,提供的安全 MD5 校验和比更安全的校验和弱,但在 MD5 被破坏之前,与下载是强有力的证据,表明收到的下载是服务器提供的下载。

多年来,我一直在写关于可悲的缺乏安全校验和的文章,这里

由于存在 MITM 攻击的风险,用户不应通过不受信任的网络下载不受信任的可执行文件并运行它们。参见,例如,P. Ruissen、R. Vloothuis 的“自动更新系统内的不安全”。

2014 年附录:不,“网页上发布的校验和用于检测恶意修改”并没有错,因为这是他们可以执行的角色。它们确实有助于防止意外损坏,如果通过 HTTPS 或经过验证的签名(或更好,两者兼有)提供服务,则有助于防止恶意损坏!我已经通过 HTTPS 获得校验和并验证它们多次匹配 HTTP 下载。

如今,二进制文件通常带有签名的、自动验证的哈希值,但即使这样也不完全安全的

摘自上述链接:“KeRanger 应用程序使用有效的 Mac 应用程序开发证书进行签名;因此,它能够绕过 Apple 的 Gatekeeper 保护。” ...“Apple 已经撤销了被滥用的证书并更新了 XProtect 防病毒签名,Transmission Project 已从其网站上删除了恶意安装程序。Palo Alto Networks 还更新了 URL 过滤和威胁防护,以阻止 KeRanger 影响系统。技术分析

两个受 KeRanger 感染的传输安装程序均使用 Apple 颁发的合法证书签名。列出此证书的开发人员是一家土耳其公司,其 ID 为 Z7276PX673,与用于签署传输安装程序以前版本的开发人员 ID 不同。在代码签名信息中,我们发现这些安装程序是在 3 月 4 日上午生成并签名的。”

2016 年附录:

@Cornstalks:回复。你在下面的评论:错了。正如目前在您链接到的碰撞攻击维基百科文章中所指出的,“2007 年,发现了针对 MD5 的选择前缀碰撞攻击”和“攻击者可以选择两个任意不同的文档,然后附加不同的计算值,导致整个具有相同哈希值的文档。” 因此,即使安全地提供 MD5 并且攻击者无法修改它,攻击者仍然可以使用包含恶意软件的选择前缀冲突攻击,这意味着 MD5 不安全用于加密目的。这就是为什么 US-CERT 说 MD5“应该被认为是加密损坏的并且不适合进一步使用”。

还有几件事:CRC32 是一个校验和。MD5、SHA等不仅仅是校验和;它们旨在成为安全的哈希。这意味着它们应该对碰撞攻击具有很强的抵抗力。与校验和不同,安全通信的安全散列可防止中间人 (MITM) 攻击,其中 MITM 位于服务器和用户之间。它不能防止服务器本身受到损害的攻击。为了防止这种情况发生,人们通常依赖于 PGP、GPG、Gatekeeper 等。

  • MD5 并没有*完全* 损坏:对它的攻击是[碰撞攻击](https://en.wikipedia.org/wiki/Collision_attack),而不是[原图附加](https://en.wikipedia. org/wiki/Preimage_attack)(这会更糟糕)。如果 MD5 是安全提供的并且攻击者无法修改它,那么攻击者就不能使用碰撞攻击(并且必须使用原像攻击),这意味着 MD5 仍然非常安全。MD5 值得被淘汰,因为它具有碰撞漏洞,但它没有(已知的)原像漏洞,因此它不会*完全* 损坏。刚断了一半。 (2认同)