Hash

胡椒需要 HMAC 嗎?

  • April 15, 2020

假設你已經得到了一個正確加鹽的密碼雜湊 $ X $ 來自一些緩慢的 PBKDF(例如,像 Argon2id)。

現在,您想應用一些大的(~256 位)秘密“胡椒” $ S $ 在將其儲存在數據庫中之前對其進行處理。

將其儲存為 $$ \text{HMAC}\left(S,X\right) $$ (在哪裡 $ S $ 是 HMAC 的密鑰 $ X $ ) 與*“更簡單/基本”相比* $$ H\left(S\mathbin\parallel X\right) $$

在哪裡 $ H $ 只是一些 SHA-2?(例如,SHA-256/512)

對於這種消息是靜態大小的場景,不需要使用 HMAC。如果必須,您可以使用足夠強的散列,例如 SHA-2 或 SHA-3 。

也就是說,使用 HMAC 甚至 KDF 可能會更簡潔。優點是這些算法確實將輸入密鑰材料作為單獨的參數。如果您想對辣椒保密,這可能會很有趣;例如,您可以將其儲存在硬體設備中並將其用於 HMAC。

目前,您正在使用散列作為窮人的 KDF。因此,如果您可以節省幾個週期,您可能會選擇更豪華的選擇,例如 HKDF(基於 HMAC)。

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