Key-Derivation

即使不需要時間,為什麼還要使用 HKDF 進行密鑰派生?

  • November 7, 2018

scrypt 等 KDF 對記憶體 (cpu) 要求很高,因此攻擊者無法快速解密密鑰。

為什麼要使用 HKDF?它的應用是什麼?如果攻擊者知道 HKDF 的輸入空間,並且由於 HKDF 的過程是公開的,那麼使用它有什麼額外的好處呢?

  • 為什麼要使用 HKDF?

來自預設來源Wikipedia;對於 KDF;

結合非秘密參數從一個公共秘密值中派生一個或多個密鑰(有時也稱為“密鑰多樣化”)。這種使用可以防止獲得派生密鑰的攻擊者學習關於輸入秘密值或任何其他派生密鑰的有用資訊。

HKDF的另一個用途是;

例如,它可用於將通過 Diffie-Hellman 交換的共享秘密轉換為適用於加密、完整性檢查或身份驗證的密鑰材料。

從單一密碼產生更多的秘密密鑰。

  • 它的應用是什麼?

再次維基百科;挺清楚的;

  1. 從更大的隨機源中“提取”(壓縮/混合)熵,以提供更均勻無偏和更高的熵但更小的輸出(例如加密密鑰)。
  2. 將已經合理隨機輸入(例如現有共享密鑰)的生成輸出“擴展”為更大的加密獨立輸出,從而從該初始共享密鑰確定性地生成多個密鑰,以便同一程序可以安全地生成相同的密鑰多個設備,只要使用相同的輸入。
  • 如果攻擊者知道 HKDF 的輸入空間,並且由於 HKDF 的過程是公開的,那麼使用它有什麼額外的好處呢?

該過程是公開的,但不是密鑰,HKDF 使用 HMAC 作為 HMAC-SHA256。

這就是為什麼建議您使用好密碼的原因;再次來自維基百科

注意:HKDF 不會放大熵,但確實允許更均勻有效地利用大量較弱熵的來源。

例如; 如果攻擊者訪問了 HKDF 的密鑰,他仍然需要知道你的密碼。如果您的密碼很弱,請害怕hashcat

如果它只成功地破壞了數據庫,那麼除了密鑰之外,還有鹽和紙來保護攻擊。

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