Aes

如何在 CBC 中創建生成所需明文的密文(以前的密文和明文都是已知的)

  • March 15, 2021

我正在努力理解這部分文獻:

可以假設整個密文和明文都是已知的。

部分文獻

考慮到加密方法是 $ C_i = enc_k ( P_i \oplus C_{i-1}) $ 用密鑰k,解密方法為 $ P_i = dec_k(C_i) \oplus C_{i-1} $ .

為什麼等式(2)中說我們可以通過這種方式生成前一個塊的所需密文?

等式(3)的公式也不應該是: $ P’{i-1} = … $ 代替 $ P{i-1} = … $

我並沒有真正得到等式(4),為什麼它與等式(2)不同?

任何幫助表示讚賞。

CBC-R

為了更好地理解論文上的攻擊,最好看一下原始的 CBC-R 攻擊來理解上述攻擊。

這項工作展示瞭如何將填充預言機轉變為加密預言機。使用 padding oracle,我們可以解密任何密文。

選擇一個隨機密文 $ C_i $ ,實際上,任何密文都可以。使用填充預言機請求解密$$ P_i = Dec(C_i) \oplus C_{i-1}. $$通過控制 $ C_{i-1} $ 我們可以轉 $ P_i $ 到我們想要的任何值。目標是 $ P_x $ 比我們能設定的$$ C_{i-1} = P_x \oplus Dec(C_i). $$

正如我們所知,這將使解密 $ C_{i-1} $ 作為垃圾塊(隨機塊)。但我們也從一個隨機塊開始。同樣,作為第一步,請求解密然後調整前一個塊;

$$ C_{i-2} = P_{i-1} \oplus D(C_{i-1}) $$這裡註意我們請求解密 $ C_{i-1} $ 任意選擇 $ C_{i-2} $ 然後我們調整 $ C_{i-2} $ 所以解密是 $ P_{x-1} $ . 這很容易,因為它只是一個 x 或差異。

這樣,我們重複到開頭,最後調整的值是 CBC 模式的nonce

這個加密預言機非常慢,因為它需要一個填充預言機來解密一個塊。對 FPGA 的攻擊(下一個標題)由解密預言機直接使用,因此速度非常快。

不可修補的晶片:Xilinx 7 系列 FPGA 比特流加密的全面突破

當惡意操作發生時,系統會停止,並且WBSTAR寄存器保持不變,然後在重新啟動後,他們會讀取WBSTAR儲存解密內容的寄存器並洩漏 32 位。重複以顯示所有內容。這會將這個 bug 變成 FPGA 上的解密預言機。

HMAC 密鑰也可以通過使用 FPGA 作為解密預言機的上述技術進行解密。

目的是將解密預言機變成加密預言機!

  1. 為什麼等式(2)中說我們可以通過這種方式生成前一個塊的所需密文?

實際上,這是目標,他們會在接下來的步驟中展示它。因此,您需要了解接下來的步驟。

  1. 等式(3)公式也不應該是:P’i-1=…而不是Pi-1=…

是的,應該是 $ P’_{i-1} $


請注意,對於任意選擇 $ C_i $ 和 $ C_{i-1} $ 使用解密oracle可以找出 $ P_i $ .

現在你想要一個值 $ P’_i $ 在FPGA中,為此,您需要對其進行加密 $ C’_i $ .

$$ P_i = dec_{KAES}(C_i) \oplus C_{i-1} \label{1}\tag{1} $$

如果你設置

$$ C’{i-1} = P_i \oplus C{i-1} \oplus P’_i \label{2}\tag{2} $$

然後將值代入方程 $ \ref{1} $

$$ P_i = dec_{KAES}(C_i) \oplus P_i \oplus C’_{i-1} \oplus P’_i $$樹葉;

$$ P’i = dec{KAES}(C_i) \oplus C’_{i-1} $$

CBC 有連結,所以他們需要修改到開頭。

$$ P’{i-1} = dec{KAES}(C’{i-1}) \oplus C{i-2} \label{3}\tag{3} $$

  1. 我真的沒有得到等式(4),為什麼它與等式(2)不同?

這也是一個錯字,因為

$$ C’{i-2} = P{i-1} \oplus C’{i-2} \oplus P’{i-1} \label{4}\tag{4} $$線索

$$ P_{i-1} = P’_{i-1} $$

它應該是

$$ C’{i-2} = P{i-1} \oplus \color{red}{C_{i-2}} \oplus P’_{i-1} $$


文章結果

  • 這將解密預言機變成了加密預言機。並使用它可以創建一個有效的 HMAC。
  • 因此,一個簡單的錯誤會導致機密性、完整性和身份驗證的喪失。

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