Chosen-Ciphertext-Attack

CCA 安全與否?

  • May 16, 2015

讓 $ F : {0,1}^n \times {0,1}^n \rightarrow {0,1}^n $ 成為PRF。並設加密函式為 $ Enc{_k}(m) = r || (F{_k}(m) \bigoplus r \bigoplus 0^n) $ ,其中 r 的值是隨機的。這個系統CCA安全嗎?

我很難決定這一點。由於 r 的長度是 m(否則我將無法與 $ F{_k}(m) $ 我可以將加密的消息分成 2 個相等的部分,比如 L1 和 R1。那麼 L1 將等於 r 並且 R1 將是 $ F{_k}(m) \bigoplus r \bigoplus 0^n $ . 現在我知道 r , $ 0^n $ 不會影響我的異或,所以我只剩下 $ F{_k}(m) $ . 您如何確定隨機函式是否是 CCA 安全的。

我也知道我可能已經開始了錯誤的思考過程。有人可以向我解釋一下決定這是否是 CCA 安全的思考過程嗎?答案似乎顯然不是,但為什麼呢?

正如 fgrieu 已經說過的,這個問題有點奇怪。加密方案在很強的意義上是不完整的,因為不存在可以恢復的有效算法 $ m $ 從密文。

但是無論如何,CCA安全的定義並不要求完整性,所以讓我回答這個問題:不,所描述的方案不是CCA安全(或CPA安全,因為解密是不可能的,這兩個概念基本上是相等的)。

首先,我們注意到確實 $ \oplus 0^n $ 對密文沒有任何改變,可以忽略不計,因為 $ r $ 是密文的一部分,可以恢復 $ F_k(m) $ ,這是確定性的,因為 $ F $ 是 PRF,因此是確定性的。因此,我們得到一個簡單的攻擊如下:

選擇兩條隨機消息 $ m_0, m_1 \in {0,1}^n $ 和 $ m_0 \neq m_1 $ 並將它們作為挑戰消息輸出並接收回挑戰密文 $ c^=r^\Vert x^* $ . 現在查詢加密預言機 $ m_0 $ 並取回密文 $ c_0=r_0\Vert x_0 $ . 如果它認為 $ x^\oplus r^ = x_0 \oplus r_0 $ ,然後輸出 $ 0 $ , 否則輸出 $ 1 $ . 很容易看出這次攻擊是有機率成功的 $ 1 $ .

說了這麼多,假設問題陳述中有錯字並且加密方案應該是合理的 $ Enc{_k}(m) = r || (F{_k}(r) \oplus m) $ .

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