Hmac

在密鑰散列 (HMAC) 中使用密鑰作為消息是否安全?

  • July 5, 2016

設想:

  1. 使用者提供密碼。
  2. “密碼密鑰”是從密碼中派生出來的(例如通過 PBKDF2)。應用隨機鹽。
  3. 密碼密鑰使用 HMAC 算法(例如 HMAC-SHA256)進行雜湊處理,並以自身作為密鑰。
  4. salt 和 HMAC 結果儲存在數據庫中,用於驗證密碼(用於進一步的使用者登錄)。
  5. 密碼密鑰用於加密其他數據。

問題:在以下方面應用第 3 步是否安全:是否可以(容易)確定密碼密鑰,因為已知它是要進行 HMAC 化的消息?

問題:在以下方面應用第 3 步是否安全:是否可以(輕鬆)確定密碼密鑰,因為已知它是要散列的消息?

是的,這應該沒問題,儘管您在計算 HMAC 時也可以使用常量作為消息輸入。從理論上講,關於消息的側通道攻擊,一些實現可能比密鑰更寬鬆,儘管我懷疑這在實踐中是一個問題。

知道密鑰的自 HMAC 將允許攻擊者輕鬆驗證他們猜到的密碼,但 PBKDF2 會減慢它們的速度,無論如何,與嘗試使用派生密鑰解密數據相比,加速並不顯著。

(PBKDF2 有更好的替代品,例如 scrypt、argon2、bcrypt。)

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