Hash

將 bcrypt 用於 MAC - 是否正確且安全?

  • May 23, 2016

假設有一個雜湊函式:

$$ ph = bcrypt(sha256(m + k), salt) $$ 這裡 $ ph $ 是通過應用獲得的密碼雜湊 $ bcrypt $ 上 $ sha256 $ 連接消息的結果 $ m $ 用密鑰 $ k $ . 假如說

  1. 鑰匙 $ k $ 攻擊者看不到;
  2. key 是一個“真正”隨機的足夠大的字元串;
  3. 的工作因數 $ bcrypt $ 也足夠大;

問題是這個模式在多大程度上是安全的?攻擊者能否獲得密鑰 $ k $ 通過發布消息 $ m $ 並檢索雜湊 $ ph $ 需要付出多少努力?這個模式的強度在多大程度上取決於密鑰的大小?

有什麼方法可以改進這個架構嗎?

我認為這樣的模式可以用於 MAC。我應該HMAC+SHA512改用嗎?

問題是這個模式在多大程度上是安全的?

沒有比sha256(m + k) 現在更安全,而且可能更不安全。無論鹽值如何,可以為此安排衝突的攻擊者也會很容易地獲得 bcrypt 雜湊的衝突。

雖然 SHA-256 具有抗衝突性,但也有一些 MAC 具有更好的邊界,例如 HMAC,它不需要依賴雜湊的抗衝突性。當您已經擁有強密鑰時,像這樣使用 bcrypt 只是一種浪費。

這個模式的強度在多大程度上取決於密鑰的大小?

只要密鑰至少為 128 位,它就應該是安全的。由於提到的碰撞攻擊,即使使用長密鑰也不會更安全,如果 SHA-256 的抗碰撞性被破壞,那麼它可能是不安全的。

我應該改用 HMAC+SHA512 嗎?

這是一個很好的選擇。

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