关于Http大文件下载的MD5校验和

Geo*_*ge2 7 checksum md5 tcp http integrity

MD5校验和广泛用于Http下载大文件的完整性检查.我的问题是,因为TCP本身提供了可靠的机制(即每个TCP包的校验和以确保其完整性).因此,简而言之,TCP是可靠的.Http基于TCP(因此Http也应该是可靠的),那么为什么我们需要另一种完整性检查机制(即MD5校验和)?

乔治,提前谢谢

mtr*_*aut 11

大多数情况下,您使用哈希值进行带外(例如在网站上打印)检查下载完整性,而不是编程.

这可以防止下载工件的操作.

  • 我的意思是简单的攻击,下载被替换 - 通过打入服务器,进行创意重定向......你只需下载另一个操作文件.但是如果你与其他方法提供的校验和相比较,你可能会意识到作弊.这种其他手段通常被称为"带外" - 攻击者必须打破两种机制. (2认同)
  • 看看像http://hc.apache.org/downloads.cgi这样的典型下载页面.校验和始终使用apache托管.下载是在一些镜像上.如果您有安全基础,则可以使用安全性较低的代理.但你是对的 - 如果有人在apache服务器中断,这对你没有多大帮助.如果你有更高的安全需求,你必须使用其他OOB(有人在下载后给你发邮件,打电话给你,......)或其他技术(签名提供更高的安全性,你也可以在apache页面上找到它们) ). (2认同)
  • 我不会向基于TCP的纯协议添加散列功能,例如HTTP请求/响应方案.也许(没有实际经验)如果您在此基础上安装更复杂的协议(例如可以恢复的下载程序),这是有用的,其中微妙的错误(双方在下载时与文件指针不同步,文件内容已更改下载时,...)可能会发生 (2认同)

Jad*_*ias 5

在我的生命中,我下载了3次以上的ISO或EXE,当我再次下载它时,它工作了.这向我证明TCP机制不足以确保完整性.