Hash

綁定兩個雜湊的最佳方法

  • April 1, 2018

目前我有:

H1 = SHA256

H2 = SHA1

H1 和 H2 都有固定的長度。將 H1 和 H2 綁定到 H3 的最有效方法是什麼?目標是在其中一個洩漏時最大限度地保護。

例如:

  1. H3 = H1+H2
  2. H3 = SHA512(H1+H2)
  3. H3 = ???

不需要保留長度。這應該立即計算,所以沒有 KDF。

謝謝你的幫助。

**編輯:**我打算用它作為密碼創建方案。H1 和 H2 不應更改。

如果 H1 變得已知,那麼如果您只是連接,那麼 H3 的第一部分就會變得已知,所以這不是一個好的選擇。

只要 H2 對攻擊者保密,一個簡單的 XOR 就可以工作。但是,如果攻擊者可以檢索到有關 H3 的資訊並且可以更改 H1,則攻擊者可以強制 H3 為某個值。但是 XOR 並沒有按照您的要求擴展雜湊值。

如果 H1 和 H2 一起散列,例如使用更大的輸出散列,那麼攻擊者所能做的就是嘗試更改 H1,直到 H3 中出現某種結構。如果您只依賴散列函式,這是最好的做法。


您聲明您不需要 KDF,因為您不處理密碼。然而,這不是一個好的論據;還有一些 KBKDF 從輸入密鑰材料派生輸出密鑰材料(並且不處理密碼)。

HKDF 是一個這樣做的 KDF:它接受輸入的密鑰材料,從 H1 和 H2 中提取熵到某個中間密鑰材料中,最後將密鑰材料擴展為請求的大小。所以創建H3最防火的方式是:H3 = HKDF(enc(H1, H2), "H3", outsize). 或者,您還可以提供鹽或更改標籤 ( "H3") 以創建不同的輸出值。是值 H1 和 H2 的編碼,如果H1 和 H2 的大小永遠不會改變enc,則它可以只是串聯。

HKDF 只依賴於 HMAC,而 HMAC 只依賴於一個安全的散列函式。所以即使不直接可用,一般也可以實現。


但只有 SHA-512 也可以。

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