Hash
檢查文件的完整性和身份驗證
校驗和是從數字數據塊中導出的小型數據,用於檢測在傳輸或儲存過程中可能引入的錯誤。它通常在從下載伺服器收到後應用於安裝文件。校驗和本身通常用於驗證數據完整性,但不依賴於驗證數據的真實性。
- 那你將如何驗證數據的真實性?會通過 https 協議傳輸文件,然後比較它的雜湊值來確認它是真實的,還是還有更多?
- 您將如何散列一個 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 慢嗎?
進一步閱讀: