Hash
將 bcrypt 用於 MAC - 是否正確且安全?
假設有一個雜湊函式:
$$ ph = bcrypt(sha256(m + k), salt) $$ 這裡 $ ph $ 是通過應用獲得的密碼雜湊 $ bcrypt $ 上 $ sha256 $ 連接消息的結果 $ m $ 用密鑰 $ k $ . 假如說
- 鑰匙 $ k $ 攻擊者看不到;
- key 是一個“真正”隨機的足夠大的字元串;
- 的工作因數 $ bcrypt $ 也足夠大;
問題是這個模式在多大程度上是安全的?攻擊者能否獲得密鑰 $ k $ 通過發布消息 $ m $ 並檢索雜湊 $ ph $ 需要付出多少努力?這個模式的強度在多大程度上取決於密鑰的大小?
有什麼方法可以改進這個架構嗎?
我認為這樣的模式可以用於 MAC。我應該
HMAC+SHA512
改用嗎?
問題是這個模式在多大程度上是安全的?
沒有比
sha256(m + k)
現在更安全,而且可能更不安全。無論鹽值如何,可以為此安排衝突的攻擊者也會很容易地獲得 bcrypt 雜湊的衝突。雖然 SHA-256 具有抗衝突性,但也有一些 MAC 具有更好的邊界,例如 HMAC,它不需要依賴雜湊的抗衝突性。當您已經擁有強密鑰時,像這樣使用 bcrypt 只是一種浪費。
這個模式的強度在多大程度上取決於密鑰的大小?
只要密鑰至少為 128 位,它就應該是安全的。由於提到的碰撞攻擊,即使使用長密鑰也不會更安全,如果 SHA-256 的抗碰撞性被破壞,那麼它可能是不安全的。
我應該改用 HMAC+SHA512 嗎?
這是一個很好的選擇。