Authenticated-Encryption

分組密碼操作模式的安全性

  • April 13, 2016

考慮以下分組密碼操作模式:

$$ \begin{align} tag_0 &= mac:key\ plaintext_0’ &= plaintext_0 \oplus iv\ E(tag_0 | plaintext_0’) = C_0 &= tag_1 | ciphertext_0\ E(tag_1 | plaintext_1) = C_1 &= tag_2 | ciphertext_1\ …\ E(tag_N | plaintext_N) = C_N &= tag_{N+1} | ciphertext_N\ cryptogram &= tag_{N+1} | ciphertext_0, ciphertext_1, … ciphertext_N, iv\ D(tag_N + 1 | ciphertext_N) &= P_N = tag_N | plaintext_N\ D(tag_N | ciphertext_{N-1}) &= P_{N-1} = tag_{N-1} | plaintext_{N-1}\ …\ D(tag_1 | ciphertext_0) &= P_N = tag_0 | (plaintext_0 \oplus iv)\ \end{align} $$ $ tag_0 $ 然後根據 mac 密鑰進行驗證。 一個明確的描述,它展示了使用 128 位分組密碼(即 AES)和 64 位標記:

  • 被加密的消息的第一個塊由一個 mac 密鑰組成,表示為 $ tag_0 $ , 與明文的前 64 位連接
  • $ plaintext_0 $ 與 IV 異或
  • 塊 $ (tag_0 | plaintext_0) $ 已加密
  • 的前 64 位 $ ciphertext_0 $ 用作 $ tag_1 $ 用於加密 $ plaintext_1 $ ,
  • 對整個消息重複此操作
  • 密碼由密文前的最終標籤和 iv
  • 解密是相同的過程,消息以相反的順序進行,標籤最後根據 mac 密鑰進行驗證。

所描述的操作模式是否提供明文的完整性和身份驗證?

假設是這樣:

  • 它是否已經有了名字/是否有任何既定的研究?

  • 標籤尺寸的最小可接受值是多少?我的猜測是64位。太大似乎會排除塊大小為 <= 128 位的密碼的用處。

  • 使用 128 位分組密碼,性能是 2 每 128 位明文塊進行兩次分組密碼操作,這可能會更好

  • 隨著更大的塊大小+更長的消息,塊密碼操作的數量似乎會變得更有效?

    • 每個明文塊所需的分組密碼操作的比率似乎由下式給出:$$ \begin{align}blocksize / (blocksize - tag:size)\ \end{align} $$

編輯

精明的評論員指出,這種結構類似於海綿提供身份驗證的方式。這當然不是巧合!我研究海綿結構已經有一段時間了。此處描述的操作模式中的標籤在概念上與海綿功能的容量相似。

不,列出的這種模式不提供解密明文的完整性。

主動攻擊者可以自由地翻轉解密後明文的前 64 位中的任意位,而不會導致解密失敗。他可以通過修改 $ iv $ ; 解密的 $ tag_0 $ 將進行身份驗證(因為 $ iv $ 不用於計算),然後解密過程將應用修改後的 $ iv $ 對解密的 $ plaintext_0 $

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