從大多數受信任的站點下載文件時,它們爲文件提供散列,然後您可以使用這些散列來驗證您下載的文件與他們發佈的文件是否相同(或者如果我錯了,請糾正我!)文件哈希如何保證文件沒有被修改?
我的問題是:如果您是一個能夠修改站點上的文件的黑客,難道您還不能更改該站點上發佈哈希值以反映新的「修改」值的頁面嗎?如果是這樣,它提供了什麼增加的安全性?如果不是,爲什麼不呢?或者...我是否錯過了一些顯而易見的事情,以至於如何運作?
從大多數受信任的站點下載文件時,它們爲文件提供散列,然後您可以使用這些散列來驗證您下載的文件與他們發佈的文件是否相同(或者如果我錯了,請糾正我!)文件哈希如何保證文件沒有被修改?
我的問題是:如果您是一個能夠修改站點上的文件的黑客,難道您還不能更改該站點上發佈哈希值以反映新的「修改」值的頁面嗎?如果是這樣,它提供了什麼增加的安全性?如果不是,爲什麼不呢?或者...我是否錯過了一些顯而易見的事情,以至於如何運作?
關鍵是你要保護什麼攻擊媒介反對:
有人違反主服務器
如果有人可以在主服務器,那麼他們就可以重寫哈希出現有效(所以沒有去)。
所以哈希不能防止主服務器的違規。
有人違反在鏡像服務器
假設哈希是主要的服務器上,然後就可以對某人加防禦層破壞鏡,可以檢測自己的修改。
有人MITM在連接
如果有人能MITM連接,就可以同時修改文件和哈希值。
因此它根本不會保護你。
在TCP連接
這是散列文件的主要好處的位錯誤。在過去,當錯誤檢查不如今天好,你會下載一個100MB的文件,並且會有隨機誤碼。 md5sum
會讓你快速檢測到這些錯誤並重新下載文件。
這就是所有的哈希值。完整性檢查您下載的內容是服務器上的內容。
如果您想要安全性,您需要來自可信私鑰(GPG)的簽名。在絕大多數情況下,散列對安全性沒有任何影響。
我已經多次向朋友,家人和客戶提出了同樣的觀點。我認爲這比沒有好,但並不多。事實上,它可能更糟糕,因爲它可能導致錯誤的安全感。這是數字簽名的全部原因。不幸的是,許多重要的供應商和開源項目仍然提供未經數字簽名(嘆氣)的下載。創建散列的開銷基本上爲零。顯然,獲取簽名證書和簽名圖像的開銷太大了(另一個嘆息......) – Dan 2014-12-06 04:32:58
只要散列在通過https傳遞的頁面上發佈,您至少可以合理地確信它是由給定證書的主題發佈的。如果攻擊者可以修改站點本身的文件,那麼哈希值是無用的。我同意@Dan,簽名的可執行文件是可取的。 – MvdD 2014-12-06 06:35:50
當文件也託管在下載鏡像上時,哈希值的附加值最高。通過在主站點上提供哈希,但在不同站點上的文件,可以確保來自其他站點的文件未被更改。我同意,當他們全部託管在同一個網站上時,它沒有太多附加價值。 – Rutix 2014-12-06 10:37:54