什麼是明文感知?
你能用一個例子來解釋一下明文感知是什麼意思嗎?我已經閱讀了維基定義。它說“如果密碼系統在不知道相應的明文的情況下無法生成有效的密文,那麼它就是明文感知的”。
例如,考慮沒有填充的 RSA 密碼系統。在 RSA 密碼系統中,明文和密文都是模 N(模數)的值。因此,RSA 無法辨識明文
沒有明文怎麼可能生成密文呢?
我認為你的定義應該是:
如果一個密碼系統在不知道相應的明文的情況下不能生成有效的密文,那麼它就是明文感知的
使用非明文感知系統,可以很容易地生成密文;如果沒有密文的特殊屬性,人們可以寫下任何東西。例如,使用沒有填充的 RSA,我們寫下任何整數模 $ N $ 它會解密為某些東西。相應的明文可能對人和野獸都沒有任何意義,但它將是合法的明文。
將明文感知視為一種屬性可能更具指導意義,即如果有人聲稱一個看似合理的密文(不是由加密過程直接創建的),它幾乎肯定會被解密器作為無效的明文拒絕。例如,使用帶有填充的 RSA,仍然可以寫下任意整數模 $ N $ 並聲稱它是密文。但是,執行解密過程的合法解密器會遇到帶有無效填充的消息,因此知道密文無效。
在考慮延展性時,明文意識很重要,對手可以修改密文以產生其他合理的密文,而無需再次經過加密過程。然後,他們可以根據解密器對假定明文的反應方式獲取資訊。這可能會導致粗心的實現者填充預言機攻擊。
明文感知 (PA) 的激勵上下文主要是用於證明 CCA2-secure 方案。這個想法是,如果對手無法在某種意義上不知道其解密的情況下生成有效的密文,即使給出了一些有效的密文,CCA2 解密預言也是毫無意義的,並且密碼系統的 CCA2 安全性降低到其 CPA 安全性。
對於教科書 RSA,我知道 3 是有效的密文。對於任何公鑰。這打破了 PA,但它本身並不有趣。(事實上,可以設計出可證明沒有 PA 的 CCA2 安全密碼系統。)
為了得到一個更有趣的情況,考慮對教科書 RSA 的 CCA2 攻擊,我們得到一個公鑰 $ (n,e) $ 和一個密文 $ c $ ,我們想找到它的解密 $ m $ . 我們有一個解密預言機,但它拒絕解密 $ c $ . 所以我們要做的是創建密文 $ c’ = 2^e c $ . 解密預言機自願解密 $ c’ $ 至 $ 2m $ ,從中我們發現 $ m $ 除以 $ 2 $ . 所以我們贏了。
關於 PA 的有趣之處在於我們創建了有效的密文 $ c’ $ 那個我們不知道解密的。因此,解密預言機對我們很有用。
如今,PA 作為一種設計範式似乎不太受歡迎。