MD5和SHA1校验和用于下载


8

我注意到,在下载许多开源工具(Eclipse等)时,有指向MD5和SHA1校验和的链接,并且不知道它们是什么或它们的用途是什么。

我知道这些是哈希算法,而且我确实了解哈希,因此,我唯一的猜测是,这些算法用于哈希下载目标的某些组件,并将它们与服务器端存储的“官方”哈希字符串进行比较。也许可以通过这种方式确定目标是否已从其正确版本进行了修改(出于安全性和其他目的)。

我是接近还是完全错了,如果错了,那是什么?!?!

谢谢!

Answers:


11

您几乎完全正确。唯一的更正是它们是整个文件的哈希值。

有时,文件在下载过程中可能会被破坏,无论使用哪种方式进行传输。那里有哈希以确保文件是完整的。这对于Internet连接不良的用户特别有用。回到我使用传真调制解调器时,我经常会遇到下载损坏的问题。

一些下载管理器(例如GetRight,如果我没记错的话)甚至可以自动计算文件的哈希并将其与已知值进行比较。

另一个有趣的地方是安全性。开源工具的潜在问题是您对发行人的信任程度。通常,诸如Eclipse之类的程序是软件公司使用的主要工具,因此,将它们完整地从开发人员移交给用户是极其重要的。由于程序是开源的,因此有可能例如制作看起来正常的受感染版本,但将源代码泄漏到某些远程服务器上或感染该软件编写的带有病毒的程序(我认为这实际上发生在某些版本的Delphi中)或类似的东西。因此,拥有官方正确的哈希值很重要,该哈希值可用于检查所分发的文件是否符合要求。

关于分销渠道的一些思考。通常在大量站点上都可以找到免费软件,例如SourceForge等最流行的站点上都有大量的镜像。假设Barland中有一台服务器镜像了一个大型软件分发站点。FooSoft使用按站点分发的程序,它们位于Barland旁边的Baz共和国。如果有人想渗透到FooSoft,他可以只在Barland镜像上修改副本,并希望地理位置软件可以确保FooSoft获得修改后的版本。由于来自其他镜像的版本很好,因此检测到恶意软件的机会会降低。您还可以使恶意软件检测计算机的IP地址,并且仅在一定范围内时才进行激活,这样就降低了发现机会等。


1
+1出于安全原因也被使用,例如,受感染的文件...
堆栈溢出已死,

@BloodPhilia确实。我只是在写一些安全原因。
AndrejaKo 2011年

谢谢!我认为这一定是基于这些理由,但在其他任何地方都找不到可靠的答案。
Zac

3
不错的答案;)
堆栈溢出死于

1

MD5和SHA1不仅是校验和。它们是加密校验和。这意味着从理论上讲,两个不同的文件可能具有相同的校验和,但是其可能性很小,几乎为0。结果,您使用了相反的方法:不同的校验和意味着您获得的内容不同,概率几乎为1。加密校验和用于检测文件中的更改。这些可能是故意进行的恶意更改,也可能只是下载期间发生的错误。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.