我从来没有在程序主页上检查和比较过 MD5 散列和真正的 MD5 散列。我下载的程序一直有效。
有人可以在下载过程中放置自己的代码吗?
散列根据其内容为文件提供(某种)唯一标识符。由于有损连接和传输方法不佳,以及四处飘荡的恶意文件副本,哈希提供了一种方法来证明您的文件与您尝试从服务器下载的文件相同。
您通过散列您获得的文件副本并查看散列是否相同来验证它。
人们可以注入讨厌的代码,更改正在下载的文件,或者您可能只是获得损坏的下载。
就损坏的下载而言,这是非常罕见的。我认为我从来没有下载过损坏的下载,除非它以某种方式被截断并且没有报告错误(当时的旧 FTP 客户端)。
如果您从镜像下载,并且您信任真实站点(发布 MD5)比您信任镜像(可能已过时,或邪恶,或有缺陷或 pwned,)可能会有一些安全优势,或其他东西,它和你之间的缓存网络代理也可能如此)。不过,这种情况不太可能发生,因为通常没有理由认为主站点比镜像更可靠或更安全。不过,这是第二种意见。
我通常不会检查已发布的校验和,除非有特定理由认为它们是正确的并且下载不安全(例如校验和位于 https URL 上而下载不是)。如果您担心作恶者,那么您需要签名,而不仅仅是不安全传输的校验和。
不过,我偶尔会在 virustotal 上使用基于散列的病毒扫描报告。我猜一个发布的 MD5sum 可以让你在下载文件之前对文件进行病毒检查,然后你必须在下载后检查总和,以确认你病毒检查的值确实是你下载的文件。
请注意,如果作恶者生成正版文件以及恶意加载病毒的文件,则 MD5 校验和是不安全的。可能会产生 MD5 冲突,尽管(还没有)完整的原像攻击。任何认真对待安全性的人都已在可能的情况下切换到 SHA256 总和。由于遗留和资源原因,这比您希望的要少。
有人可以在下载过程中放置自己的代码吗?
是的。如果下载是通过未加密的 HTTP 完成的,那么它会通过多个网络进行路由,人们肯定有机会操纵它并插入木马或病毒。
这正是下载的 MD5 校验和的目标,尽管这当然不是完美的安全性,因为校验和可以以相同的方式进行操作。但这需要攻击者更多的努力和协调。
总而言之,这不是一个非常常见的问题,因为目前还有其他攻击媒介对坏人更有用(主要是网络浏览器漏洞)。
可以检查文件是否损坏。这就是我想的。
MD5 哈希是一种验证形式。如果文件中的单个位不同,则提供的散列将与您下载的文件生成的散列不匹配。这会提醒您传输错误或犯规(罕见)。
除了使您能够确保您获得了您尝试下载的代码(它没有被有意或无意地损坏),如果您检查哈希,在发布代码时包含哈希的做法是良好的社会卫生。由于共享或销售软件的人通常在他们的代码中包含哈希值,而且我们相信有些人会定期检查它们(因为一些下载工具会自动执行),破解者会发现这是一种不太有用的传播恶意软件的方式。因此,那些只检查安全关键软件的哈希值的人,或者那些从不检查的人可以更有信心地相信该软件是它声称的那样。如果破解者试图开始将病毒或木马注入常用的下载站点,它们会很快被检测到,并且攻击会得到修复和公开。
因此,您可以通过偶尔检查来帮助每个人,即使您不检查,哈希的存在也应该提供一些保证,即代码可能与作者预期的一样,并且许多其他人下载了相同的代码。
它基本上回答了与身份验证相同的问题——说他是那个人的那个人是否真的是那个人。它可以帮助您确保您下载的程序实际上是作者首先提供的程序,并且在从供应商通过互联网迷宫进入您的桌面的过程中没有被篡改。
我大部分时间都检查md5。虽然可能只有一两次,是的,我确实得到了损坏的下载。
如果你下载了一些东西,检查它的 md5 并与文件一起存储,这也可能是以后检查发布者是否在不告诉任何人的情况下偷偷更改文件的一种方式。
完全浪费时间。
黑客会更改哈希和二进制文件,因此这只是针对无能黑客的安全措施。
大多数下载的二进制文件都使用内置的错误检查进行压缩,因此哈希完全没有实现任何目标,这就是为什么除了极客之外我从未见过任何人实际使用它们的原因。
现在,软件包安装程序使用的数字签名散列是不同的且值得的。