Encryption
將明文的雜湊附加到加密消息的末尾是否足以確保完整性?
將明文的雜湊附加到加密消息的末尾是否足以確保完整性?
我的理由是攻擊者並不知道所有的明文,因此通過雜湊,攻擊者將能夠更改消息,但無法重新計算雜湊。
除了攻擊知道整個明文的情況之外,我的推理是否有任何缺陷?
要清楚,這是 $ \text{E}(\text{data})|\text{H}(data) $ , 它不是 $ \text{E}(\text{data}|\text{H}(data)) $
將明文的雜湊附加到加密消息的末尾是否足以確保完整性?
不是在身份驗證的意義上。對於許多合理的加密算法,這種結構是可塑的。它還將明文洩露給任何可以猜到的人,因為他們可以計算 $ h(P_i) $ 用於猜測(蠻力或字典攻擊)並與雜湊值進行比較。
至於延展性,如果密碼是流密碼並且攻擊者可以猜測消息是 $ A $ , 然後他們可以把它變成一條同樣長的消息 $ A’ $ 通過計算一個新的密文 $ C’ = C \oplus A \oplus A’ $ 並將舊雜湊替換為 $ h(A’) $ .
CTR、OFB 等模式本質上是流密碼,因此上述適用。類似的攻擊,也許更有限,也可能針對其他一些分組密碼模式。例如,使用 CBC,攻擊者可以用一些較早的塊替換最後一個消息塊,以對消息進行確定性更改(通過某些密文塊的異或異或)。然後他們可以計算新的雜湊並替換。
即使您加密了雜湊,為了避免猜測,它可能仍然不是安全的 MAC。此外,如果是,您將使用加密和 MAC,因為散列在明文之上。Encrypt-then-MAC比它有一些優勢。
如果這是真實世界的場景,請考慮附加密文的HMAC或使用經過身份驗證的加密模式。