Hmac

PBKDF2 中 HMAC-SHAx 使用的密鑰

  • January 18, 2017

PBKDF2 可用於從密碼片語派生密鑰,輸入密碼片語、選擇的迭代次數以減慢暴力攻擊、隨機鹽和選擇的密鑰長度。在其實現中,它需要一個 PRNG,例如,HMAC-SHA-something;但是 HMAC 本身需要一個密鑰和一個“消息”(我認為這是第一次迭代中的密碼,然後是後續迭代中的結果雜湊):那麼這個密鑰是什麼?

密碼,編碼為八位字節字元串(通常使用 ASCII 或 UTF-8 作為編碼),用作密鑰。鹽用作 HMAC 的數據。

該方案指定以下內部計算:

U_1 = PRF (P, S || INT (i)) ,
U_2 = PRF (P, U_1) ,
...
U_c = PRF (P, U_{c-1}) .

在哪裡 $ P $ 是編碼密碼, $ c $ 是迭代次數, $ S $ 鹽和 $ \operatorname{INT}(i) $ 輸出塊的指示符(如果 PRF 需要多個輸出塊)。在方案的任何其他部分都找不到 PRF(PBKDF2 不是一個複雜的協議,您可能會認為太簡單了)。

PRF 可以是任何偽隨機函式,但通常設置為預設使用的 HMAC-SHA-1:

預設的偽隨機函式是 HMAC-SHA-1:

換句話說,PRF(P, X)可以讀作HMAC-SHA-1(P, X)

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