加密消息的雜湊是否會產生安全的 MAC?
是 $ mac = enc(hash(x)) $ 在 CBC 模式或 ECB 模式下,雜湊 = SHA256 和 enc AES 的安全 MAC。通常 AES-CBC 具有延展性。但在這種情況下,我對單向屬性使用雜湊函式。
例如,攻擊者可以更改 iv 向量:
在
CBC c[0] = enc(m[0] ^ iv)
攻擊者通過選擇m'[0]
和計算。因此,在這種情況下,我發現 2 個具有相同 MAC 的摘要:和. 但我找到了 2 個摘要,我找不到比.iv'``m[0] ^ iv = m'[0] ^ iv'``hash(x) = m[0]||m[1]``hash(x') = m'[0]||m[1]``x'``hash(x') = m'[0]||m[1]
我的 MAC 是安全的 MAC 嗎?
是的,您的 MAC 是安全的。它可能不像您期望的那樣安全,而且我不會向任何人推薦它,但它應該是安全的。
讓我們從一個更簡單的變體開始: $ F_K(M) = E_K(H(M)) $ 在哪裡 $ H(\cdot) $ 是一個 128 位的抗衝突雜湊(例如,SHA1 的前 128 位),其中 $ E_K(\cdot) $ 是 ECB 模式下的 128 位分組密碼。
這是安全的,假設 $ H $ 是抗碰撞和 $ E $ 是一種安全分組密碼,如可以使用標準方法顯示的那樣。自從 $ E $ 是一個安全分組密碼,它是一個安全 PRP,這意味著它是一個安全 PRF(通過 PRP/PRF 交換引理)。現在眾所周知,將 PRF 應用於消息的散列會產生安全的 MAC。
然而,這在實踐中仍然不是一個很好的結構。它提供的安全性比 SHA1-HMAC 弱。事實上,SHA1-HMAC 的作者明確考慮過這樣的事情並拒絕了它;相反,他們決定設計一些更好的新東西。閱讀 SHA1-HMAC 研究論文以了解詳細資訊(它非常易讀且經典),但簡而言之,您的方案的一個問題是它容易受到離線攻擊。有人可以嘗試使用離線攻擊在雜湊函式中找到衝突,如果他們成功了,他們就會立即破壞 MAC。SHA1-HMAC 沒有這個限制。
現在我知道這並不完全是您提出的建議,但它仍然具有指導意義。您提出的是該方案的更複雜版本,但複雜性並沒有真正使它變得更好;他們只是讓分析其安全性變得更加困難。
例如,讓我們看看在 ECB 模式下使用 AES 加密 SHA256 雜湊的方案。這安全嗎?是的,它是安全的,但沒有您想像的那麼安全。如果攻擊者觀察到 MAC $ m $ 已知消息,則攻擊者知道一組 $ 2m $ AES 的已知明文/密文對;讓 $ \mathcal{P} $ 表示攻擊者知道相應密文的一組已知明文。現在假設攻擊者選擇了一條新消息 $ M $ (不同於任何 $ m $ 已知消息)並檢查他是否知道足以預測其 MAC。讓 $ X,Y $ 表示 SHA256 的左半邊和右半邊( $ M $ ), 分別。如果 $ X \in \mathcal{P} $ 和 $ Y \in \mathcal{P} $ ,那麼攻擊者可以預測消息上的 MAC $ M $ 可以肯定的是,這是計劃的突破。這種情況發生的機率是多少?機率是
$$ \Pr[X \in \mathcal{P} \wedge Y \in \mathcal{P}] = \Pr[X \in \mathcal{P}] \times \Pr[Y \in \mathcal{P}] = |\mathcal{P}|^2/2^{256} = 4m^2/2^{256}. $$ 所以,如果攻擊者選擇了一條消息 $ M $ 隨機,他有一個 $ m^2/2^{254} $ 能夠猜測其 MAC 的機會。如果攻擊者選擇 $ 2^{90} $ 消息 $ M $ 隨機,大約有一個 $ m^2/2^{154} $ 可以預測他們的 MAC 之一的機會,這破壞了該計劃。攻擊者可以離線進行所有這些計算。所以,如果我們考慮一個觀察到 MAC 的攻擊者 $ m $ 已知消息和誰做 $ 2^{90} $ 離線計算,攻擊者可能會破壞你的計劃 $ m^2/2^{154} $ . 如果 $ m=2^{77} $ ,這是一個機率接近 1 的中斷。
這種攻擊在實踐中並不是一個嚴重的問題。但是,它表明安全級別低於 256 位 MAC 的預期。僅出於這個原因,我不推薦您的方案。相反,像 AES-CMAC 或 SHA256-HMAC 這樣的東西是更好的選擇。
好消息是,我希望有人可以證明這是攻擊者所能做的最好的事情(將 SHA256 建模為隨機預言機,並假設分組密碼是安全的)。我沒有嘗試寫出並驗證所有細節,所以對此持保留態度,但我完全希望證明會奏效。
我沒有想過如果在 CBC 模式下使用 AES 加密 SHA256 雜湊會發生什麼。這似乎有點粗略。我不確定為什麼我們會無緣無故地引入額外的 IV 並延長 MAC。鑑於存在更好的方案,並且更好的方案經過嚴格審查並且在實踐中足夠好,我認為該構造沒有任何實際意義。
在CBC-MAC方案中,您的攻擊也包括在內。但是,它還指出,與 CBC 模式下的加密不同,CBC-MAC 不使用 IV(由於該攻擊),而是使用 0 初始化(儘管任何預定義的常量都可以使用)。
為了您的方案的安全性:在具有隨機預言的模型中散列函式將是安全的:可以創建具有相同 MAC 的假消息的攻擊者可以通過提供散列函式找到原像 $ \mathrm{Enc}_{k}(\text{challenge hash}) $ 隨機 $ k $ 並獲得雜湊的不同原像。
但是,如果 c
$$ 0 $$和 c$$ 1 $$是相等的,因為它們在 ECB 中加密為相同的密文。這種情況發生的機率大約是 $ 1/2^{128} $ ,因此它不太可能並且不會對抗原像散列函式有所幫助,但需要更多地考慮可能的攻擊。