Hash

檢查文件的完整性和身份驗證

  • September 2, 2017

校驗和是從數字數據塊中導出的小型數據,用於檢測在傳輸或儲存過程中可能引入的錯誤。它通常在從下載伺服器收到後應用於安裝文件。校驗和本身通常用於驗證數據完整性,但不依賴於驗證數據的真實性。

$$ wikipedia $$

  1. 那你將如何驗證數據的真實性?會通過 https 協議傳輸文件,然後比較它的雜湊值來確認它是真實的,還是還有更多?
  2. 您將如何散列一個 40+gb 的大 zip 文件,您是否必須對文件的全部內容以及 zip 文件中的每個文件進行散列?

我找不到任何關於如何散列驗證大文件的好資源。

這涉及到真實性完整性的區別。

  • 真實性

您確定所涉及的身份:

數據來自哪裡?

  • 完整性

您確定內容沒有被修改:

傳輸過程中是否有錯誤?

第二個通常通過校驗和(例如任何雜湊函式)提供,例如$$ SHA-3(\ M\ ) $$

真實性需要MAC(消息驗證碼),通常採用 HMAC 或 KMAC 的形式,例如 $$ SHA-3(\ K\ ||\ M\ ) $$ 或簽名,例如$$ Sign_{K_{priv}}(\ SHA-3(\ M\ )\ ) $$

評論:$$ \textbf{Authenticity} \implies \textbf{Integrity} $$


至於你的第二個問題:

您必須散列整個文件,散列子內容會增加工作量,但會為您提供小部分的完整性,並允許您檢測哪個部分已損壞。

注意:

要散列大文件,您可能想看看這篇文章:SHA-3 慢嗎?

進一步閱讀:

引用自:https://crypto.stackexchange.com/questions/51265