代码之家  ›  专栏  ›  技术社区  ›  Matt

提供MD5或SHA1哈希以及可下载的可执行文件有什么意义?

  •  3
  • Matt  · 技术社区  · 15 年前

    我以为他们是为了安全,检查文件是否被篡改。但是,如果有人能够修改文件,那么他们也可以用散列值修改页面!

    这实际上提供了什么样的安全保障?

    7 回复  |  直到 14 年前
        1
  •  4
  •   nitzmahone    15 年前

    它们通常只是为了确保下载的完整性和正确性。

    它有助于解决一个与安全相关的问题:恶意修改是由于目标计算机上运行的特洛伊木马程序插入自身而导致的。这本身并不是一个“目标”攻击-特洛伊木马只是“感染”了任何exe,它可以-将不够聪明修复哈希。

        2
  •  4
  •   Vilmantas Baranauskas    15 年前

    它提高了从镜像位置下载文件时的安全性。

    例如,apache.org提供了许多镜像下载位置,以减少服务器上的负载。但是,它们无法控制这些位置上文件的有效性。因此,提供了MD5校验和:校验和文件总是从apache.org下载,而不是镜像。

        3
  •  2
  •   Alan Haggai Alavi    15 年前

    这不仅仅是为了安全。提供了哈希值,以便检查下载的文件是否损坏。

        4
  •  2
  •   gameover    15 年前

    是的,它是为了确保文件的完整性。
    假设您从另一个源(例如从另一个站点,CD/DVD)获取可执行文件,那么您可以确保所使用的是正确的可执行文件。

        5
  •  0
  •   zpon    15 年前

    MD5是为了检查您下载的文件是否已正确下载,通常使用大型文件作为Linux发行版的iso。

        6
  •  0
  •   Tower    15 年前

    实际上,仅MD5或SHA1不足以验证文件完整性。您需要使用Mac或HMAC。否则,可能发生长度扩展攻击。

        7
  •  0
  •   Michael Howard-MSFT    14 年前

    正确的方法是在Web服务器上提供哈希,该服务器列出所有文件及其哈希。必须通过SSL/TLS连接到服务器,以确保服务器是正确的服务器,而不是冒名顶替者。

    简而言之,不要让哈希值在文件中出现。