INT-CTXT 和 INT-PTXT 的區別
我最近(在這裡)閱讀了有關 INT-CTXT 和 INT-PTXT 的資訊,並且 INT-CTXT嚴格地強於 INT-PTXT。我想知道是否有任何明確的例子說明實現了 INT-PTXT 但沒有 INT-CTXT 的情況?
原始文章中也有相關情況的範例(例如第 25-31 頁上的 Encrypt-and-MAC 和 MAC-then-Encrypt 方案),但我沒有設法理解它們。攻擊者如何能夠生成不是由發件人生成的密文,但無法生成密文解密到發件人從未加密的消息?
我的答案取自以下論文http://cseweb.ucsd.edu/~mihir/papers/oem.pdf(這是一篇寫得很好的論文,所以如果您對這個主題感興趣,我強烈建議您閱讀它)。
認為 $ \mathcal{SE = (K, E, D)} $ 是 INT-PTXT 安全的。從 $ \mathcal{SE} $ 我們創建另一個方案 $ \mathcal{SE}_2 = (\mathcal{K}, \mathcal{E}_2, \mathcal{D}_2) $ 這也是 INT-PTXT 安全的,但不是 INT-CTXT 安全的。這個想法是添加到由 $ \mathcal{E} $ 一個冗餘位,在解密時將被忽略。這使我們能夠輕鬆地從舊密文創建新的密文,這些密文仍然解密為相同的明文。直覺地說,攻擊者無法利用這一點來攻擊 INT-PTXT(這需要它送出解密為新明文的密文),但它會幫助我們破壞 INT-CTXT 的安全性。
詳細的定義 $ \mathcal{E}_2 $ 和 $ \mathcal{D}_2 $ 如下面所述。
$ \underline{\mathcal{E}_2(K, M)}:\\quad C \gets \mathcal{E}(K, M)\\quad \text{Return } 0 || C $
$ \underline{\mathcal{D}_2(K, C)}:\\quad\text{Parse $C$ as $b || C’$ where $b$ is a bit (return $\perp$ if the parsing fails)}\ \quad M \gets \mathcal{D}(K,C’) \ \quad \text{Return } M $
我留給你證明 $ \mathcal{SE}_2 $ 也是 INT-PTXT (減少可以在http://cseweb.ucsd.edu/~mihir/papers/oem.pdf的第 4 節之前的最後一段中找到)。
這是一個簡單的攻擊,表明 $ \mathcal{SE}_2 $ 不是INT-CTXT 。
$ \text{Adversary $\mathcal{A}$}\ \quad \text{Let $M$ be any arbitrary plaintext} \ \quad C \gets \mathbf{EncryptOracle}(M)\ \quad \text{Parse $C$ as $0 || C’$}\ \quad \mathbf{VerificationOracle}(1 || C’) $
注意 $ \mathcal{A} $ 是一個有效的 INT-CTXT 對手,因為它要求驗證它以前沒有從加密查詢中獲得的密文。但它不是一個有效的 INT-PTXT 對手,因為兩者 $ 0 || C’ $ 和 $ 1 || C’ $ 解密為相同的明文 $ M $ (和 $ \mathcal{A} $ 之前要求加密 $ M $ ).