Mac
使用 encrypt-then-MAC 時重複使用 CBC 和 CBC-MAC 的密鑰是否安全?
我知道重用密鑰是一個壞主意,尤其是對於 CBC 和 CBC-MAC,但 Wikipedia 上的範例似乎使用了 encrypt-and-MAC。很明顯,以這種方式使用時,最後一個加密塊將等於 MAC。
如果它改為用於 encrypt-then-MAC,那不是可以接受的嗎?MAC 的每一位都將依賴於密文的每一位,從而防止選擇密文攻擊。
我在這裡錯過了什麼嗎?
不,它不一定安全。這是一個簡化的範例,說明為什麼不這樣做。
假設一個塊零消息被加密而沒有填充。密文是 $ I||E(I \oplus 0) $ . 因此 MAC 值為 $ E(E(I) \oplus E(I)) = E(0) $ . 因此,無論 IV 是什麼,所有此類消息的 MAC 都是相同的。因此,如果您加密多個零消息,您可以通過 MAC 洩露該事實。
當您考慮填充時,這個確切的問題不再可能,但您應該看到 MAC 和加密函式如何最終使用相同的值。