从Internet下载各种可执行文件或zip文件时,我从未使用过校验和。我知道它用于检查一致性并增加一些安全性。但是,当您从像Apache或Microsoft这样受人尊敬的项目下载时,它是否有必要。我们中有多少人实际使用校验和或哈希码来验证内容?
仅供参考,如果我偏离了StackOverflow可接受的内容,请告诉我。
答案 0 :(得分:8)
当下载完整性至关重要的文件(例如linux发行版的iso)时,为了以防万一,我倾向于下载md5sum。
源可能是可信的,但您永远不知道自己的NIC硬件何时可能开始出现故障。
答案 1 :(得分:5)
另一个用途是验证您已拥有的文件与可从受信任来源下载的文件相同(即未更改,未损坏且当前)。
如果
,可能会发生这种情况答案 2 :(得分:1)
要确保您下载的文件是一个好的文件,而其他任何恶意的文件都没有修改过。正如Apache中的this信息所示:
“任何攻击者都可以创建公钥并将其上传到公钥服务器。然后他们可以创建由此假密钥签名的恶意版本。然后,如果您尝试验证此损坏版本的签名,它会成功,因为密钥不是“真正的”密钥。因此,您需要验证此密钥的真实性。“
要验证您是否可以按照here的步骤进行操作。
答案 3 :(得分:1)
这样您就可以检查文件的完整性。我用它所有的时间。你基本上只是运行一些程序,它将在文件上生成MD5校验和,或者使用任何散列方法,并查看两个校验和是否匹配。如果没有,那么文件是不同的。但是,请注意,可能有两个文件产生相同的校验和,但是你将遇到这种比较相同大小的两个文件的可能性非常低,除非你正在设想这个例子。
这非常有用。我最近在CD刻录程序中发现了一个错误;我一直在特定计算机上的特定文件有问题。我最后只是比较了CD中的文件和原始计算机上的文件的校验和,它们是不同的,我能够解决问题!
答案 4 :(得分:1)
Imho只有在下载了大文件并想要在重新下载之前检查它是否已损坏(例如,如果应用程序安装不正确)时,它才有用。
答案 5 :(得分:1)
虽然您选择从受信任的来源(例如Apache.org)下载,但您的下载请求可能会由mirror网站提供。受信任的站点确实具有为所有请求提供服务的资源,因此镜像可以提供有价值的功能。但是,受信任的站点不一定完全控制镜像站点,镜像的所有者(或第三方)可能会用恶意代码替换镜像的可执行文件。通过针对下载的文件验证受信任源的哈希,您可以确保它在传输过程中没有发生变化(无论出于何种原因)。
答案 6 :(得分:1)
它用于两种完整性原因(特别是在ftp站点上,您可能在ascii模式下错误地下载)。此外,它可用于验证下载是否未被更改,假设您从位置a下载并从位置b获取校验和(通常从镜像下载,并从官方站点散列)。
但出于完整性目的,签署文件比仅对其进行散列更有用。
答案 7 :(得分:0)
我在Mac OS X上使用MacPorts,这是一个基于源的包管理器;每个Portfile都包含如何在Mac OS X上下载,修补,编译和安装软件的说明。端口文件中包含要下载的特定Java版本的校验和。这有助于确保文件的完整性来自许多可能的问题;有时,人们会在不增加版本号的情况下更新tarball,这可能导致补丁无法应用或代码在某些条件下中断,或者某个时候软件包可能会损坏,或者攻击者可能会篡改软件你将安装它。
所以,我必须说是的,我每次安装软件时都使用校验和(虽然我的软件包经理会自动为我做,但我不直接这样做)。即使您从一个受人尊敬的项目手动下载,您也许希望从更快,更近的镜像下载代码本身,然后根据从更受信任的主服务器下载的副本验证校验和;这有助于防止攻击更加困难,因为多个服务器必须受到攻击而不仅仅是一个镜像。