![下载时使用 MD5 和 SHA1 校验](https://linux22.com/image/1260813/%E4%B8%8B%E8%BD%BD%E6%97%B6%E4%BD%BF%E7%94%A8%20MD5%20%E5%92%8C%20SHA1%20%E6%A0%A1%E9%AA%8C.png)
我注意到在下载许多开源工具(Eclipse 等)时都有 MD5 和 SHA1 校验和的链接,但不知道这些是什么或它们的用途是什么。
我知道这些是哈希算法,我也确实了解哈希算法,所以我唯一的猜测是它们用于对下载目标的某些组件进行哈希处理,并将它们与服务器端存储的“官方”哈希字符串进行比较。也许这样就可以确定目标是否已从其正确版本进行了修改(出于安全和其他目的)。
我是否接近或完全错了?如果错了,它们是什么?!?!
谢谢!
答案1
你几乎完全正确。唯一的更正就是它们是整个文件的哈希值。
有时,无论使用何种方式传输文件,下载过程中都可能出现文件损坏的情况。哈希值可以确保文件完好无损。这对于网络连接较差的用户尤其有用。当我使用传真调制解调器时,我经常会遇到下载损坏的问题。
一些下载管理器(比如 GetRight,如果我没记错的话)甚至可以自动计算文件的哈希值并将其与已知值进行比较。
另一个有趣的观点是安全性。开源工具的一个潜在问题是你对分发者的信任程度。Eclipse 等程序通常是软件公司使用的主要工具,因此,对于它们来说,从开发人员到用户的完整转移极其重要。由于程序是开源的,因此有可能制作看似正常的受感染版本,但将源代码泄露给某些远程服务器,或者用病毒感染软件制作的程序(我认为这实际上发生在某些版本的 Delphi 上)或类似情况。因此,拥有官方正确的哈希值非常重要,可用于检查分发的文件是否是其声称的文件。
关于分发渠道的一些想法。通常,可以在大量网站上找到免费软件,而大多数流行的网站(例如 SourceForge)都拥有大量镜像。假设 Barland 中有一个服务器,它镜像了一个大型软件分发站点。FooSoft 使用站点分发的程序,它们位于 Barland 旁边的 Baz 共和国。如果有人想渗透 FooSoft,他可以只修改 Barland 镜像中的副本,然后希望地理定位软件确保 FooSoft 获得修改后的版本。由于其他镜像中的版本没有问题,因此检测到恶意软件的可能性较低。您还可以让恶意软件检测计算机的 IP 地址,并且只有当它来自某个范围时才激活,这样可以降低被发现的机会等等。
答案2
MD5 和 SHA1 不仅仅是校验和。它们是加密校验和。这意味着理论上两个不同的文件可能具有相同的校验和,但这种情况发生的概率非常小,几乎为 0。因此,您可以使用相反的方法:不同的校验和意味着您获得不同内容的概率几乎为 1。因此,加密校验和用于检测文件中的更改。这些可能是故意进行的恶意更改,也可能只是下载过程中发生的错误。