Aes

在一種 AES 模式下加密並在另一種模式下解密,兩者都使用 HMAC

  • December 31, 2020

假設有2個密碼, $ enc $ 和 $ dec $ , 在哪裡:

  1. $ enc $ 將加密數據,並且 $ dec $ 將解密它。
  2. 兩個都 $ enc $ 和 $ dec $ 必須是 AES 密碼。
  3. $ enc $ 和 $ dec $ 將使用相同的密鑰 $ k $ 和相同的隨機數 $ n $ .
  4. 的模式 $ enc $ 不應該等於模式 $ dec $ .
  5. 它們不應該是 AEAD 密碼(例如,它們的模式不能是GCMCCM
  6. 他們都應該使用 HMAC(這裡HMAC-SHA-256)。
  7. Encrypt-then-MAC被使用 $ enc $ .

根據條件,假設 $ enc $ 是AES-256-CTR-HMAC和 $ dec $ 是 AES-256-CFB-HMAC,都用一些鍵初始化 $ k $ 和隨機數 $ n $ 在哪裡:

$$ k_{len} = 32 $$

$$ n_{len} = 16 $$

讓 $ data $ 表示一些要提供的數據 $ enc $ , 在哪裡:

$$ data_{len} = 32 $$

和 $ ctext $ 是密文,那麼:

$$ ctext = enc(data) $$

讓 $ result $ 表示的輸出 $ dec $ 什麼時候 $ ctext $ 被餵給它,即:

$$ result = dec(ctext) $$

眾所周知 $ data \ne result $ ,但雜湊 $ h $ 兩者的 HMAC $ enc $ 和 $ dec $ 將是相同的。這是我的問題。

  1. 這是一些設計缺陷,還是一定會發生?
  2. 如果這不是缺陷,那麼我的假設哪裡出錯了?
  3. 如果我的假設存在缺陷,那麼將 HMAC 與非 AEAD 的 AES 模式一起使用的正確方法是什麼,例如。CTR, CFB, 等等?

一般來說,我們總是假設操作模式是提前知道的。實際上,這應該綁定到密鑰 - 如果密鑰僅用於單一操作模式,則不應發生上述情況。但是,如果同一密鑰用於多種操作模式,則模式 ID 應成為密文的一部分,因此應包含在 MAC 中。這將防止您所指的攻擊。

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