我经常在可下载的文件旁边看到校验和。这种做法的目的使我难以理解。显然可以检测到损坏的文件,但是可能导致此损坏的原因是什么呢?
由于网络协议已检测到传输错误,因此文件肯定不会因传输错误而损坏。当然,任何可以出于恶意目的更改文件的攻击者都可以更改给定的校验和。我们是否正在检查硬盘驱动器错误?写作和阅读时更有可能发生这种情况吗?我缺少重要的东西吗?
我经常在可下载的文件旁边看到校验和。这种做法的目的使我难以理解。显然可以检测到损坏的文件,但是可能导致此损坏的原因是什么呢?
由于网络协议已检测到传输错误,因此文件肯定不会因传输错误而损坏。当然,任何可以出于恶意目的更改文件的攻击者都可以更改给定的校验和。我们是否正在检查硬盘驱动器错误?写作和阅读时更有可能发生这种情况吗?我缺少重要的东西吗?
Answers:
检测损坏并不完全正确。确定软件的完整性将是更正确的用法。通常,不是从单个服务器分发软件。可以从许多服务器分发相同的软件。因此,当您下载特定软件时,会选择离您的目的地最近的服务器作为下载源,以提高下载速度。但是,这些“非官方”(第三方)服务器不能始终被信任。他们可能/可能在程序中包含特洛伊木马/病毒/广告软件/后门程序,这不是很好。
因此,为确保下载的软件与相关组织发布的“官方”软件完全相同,请使用校验和。用于生成校验和的算法是如此,即使程序中的微小变化也会导致完全不同的校验和。
MD5(蓝色框中有$ 1500。)= 05f8cfc03f4e58cbee731aa4a14b3f03
MD5(蓝色框中有$ 1100。)= d6dee11aae89661a45eb9d21e30d34cb
消息的区别仅在于单个字符(并且在该字符内仅具有单个二进制位),它们具有完全不同的消息摘要。
如果下载的文件具有与“官方”网站上给出的校验和相同的校验和,则可以假定该软件未修改。
旁注:理论上,两个不同的文件可以具有相同的哈希值。为了使哈希/校验和算法被认为是安全的,找到另一个产生相同校验和的文件在计算上会非常昂贵。
当然,任何可以出于恶意目的更改文件的攻击者都可以更改给定的校验和。
不总是。
您可能具有内容链接以及在HTTPS上提供的校验和。该链接可以是未加密的链接-纯HTTP或FTP或其他内容。
不利的一面是,未加密的连接很容易成为中型,而不利的一面,它对于网站管理员来说可以更快或更方便(所需的计算资源更少,并且网络可以缓存这些东西)。
如果校验和是在不中断的可信连接上提供的,并且有效负载与校验和匹配,那么您将获得两全其美的优势(前提是校验和在密码学上是安全的)。
就是说,您提醒我,那里有一些发行版声称是“安全的”,但他们的网站以及它们图像的链接也仅基于HTTP。
例子:
这很有趣,因为您可能无法获得更多的不安全感。即使他们本身不是恶意的,任何ISP都可以轻松地用假冒产品替换网站和图像,并且让某人安装经过操纵的操作系统,同时看起来好像他们正在获得“安全的” Linux版本一样,这是最终的选择。挤。
至于为什么TCP / IP错误检查不能捕获所有内容:从/programming//a/17083365/2551539
有可能发生不同的错误(TCP将检测到)[由Jacob Krall指出]:
编辑一些其他信息:
这项研究的第9页:http : //paperhub.s3.amazonaws.com/8ff1e4414c070e900da8ab3885593085.pdf表明,TCP可能无法检测到某些错误。我的理解是,当错误的数据报(在研究中称为“坏双胞胎”)与目标数据报(在研究中称为“好双胞胎”)具有相同的校验和时,就会发生这种情况。
传输错误可能发生。链路层协议通常包含校验和或纠错码来避免它们,但它们并不是完美的:错误很少会被纠正。TCP数据包还包含一个校验和,可将错误概率降低2 ^ 16。这使得传输错误的可能性很小,但非零。这是大多数人一生中永远不会在不知不觉中遇到的事情,但并不是在加密校验和的永不超过十亿年的范围内。
在下载后立即检查是不可能检测到客户端上的硬件错误(例如磁盘损坏)的,因为校验和将根据缓存的副本计算得出。另一方面,检查启动媒体是否无法启动是否损坏是很有用的-您实际上是在测试媒体,并且前提是硬件可能已经损坏。
计算校验和的真正原因实际上是检测软件级错误。这些确实发生了。可能的错误包括:
实际上,检查下载文件的大小会发现最常见的错误,这些错误会被截断或转换无效。校验和的优点是可以严格检测更多问题。
校验和还有助于防止由于以下情况导致的下载损坏:
服务器在提供下载服务时发生内部错误,因此下载被终止。
发生这种情况时,可能会有一些结果:
我已经在流行的客户端工具和服务器框架中看到了这些行为,因此当您不使用校验和时,那么在“良好服务器+不良客户端”或“不良服务器+任何客户端”的情况下,损坏的下载将不会被注意到。