是否存在完美的 CPA 安全性?
考慮以下實驗。
如果我們要求
$$ \operatorname{P}\left( \mathcal A \text{ succeeds} \right) = \frac{1}{2} $$對於任何對手 $ \mathcal A $ 為了呼叫該方案 $ \Pi $ 完美的 CPA 安全,這樣的方案可以存在嗎? 似乎無法滿足此定義,因為對手可以使用 oracle 訪問來計算 $ \text{Enc}_k(m_i) $ 為了 $ i=1,2 $ 必要的次數,直到其中之一與 $ c\leftarrow \text{Enc}_k(m_b) $ ,此時 $ \mathcal A $ 知道什麼 $ b $ 是。我的想法正確嗎?
您給出的 CPA 不可區分性實驗定義取自 Katz & Lindell 的教科書。在我的副本(第 2 版)中,它在第 74 頁。
似乎無法滿足此定義,因為對手可以使用 oracle 訪問來計算 $ \text{Enc}_k(m_i) $ 為了 $ i=1,2 $ 必要的次數,直到其中之一與 $ c\leftarrow \text{Enc}_k(m_b) $ ,此時 $ \mathcal A $ 知道什麼 $ b $ 是。我的想法正確嗎?
您缺少的一件事是,本章前面規定只考慮機率多項式時間(PPT) 對手。在本章前面(第 49-50 頁):
然而,當談到對手的計算能力時,我們將從現在開始將對手建模為有效的,因此只考慮可以在機率多項式時間內實施的對抗策略。
所以你的對手的第一個問題是你沒有證明它是一個 PPT 算法。重要的是,如果對加密預言機的呼叫次數是安全參數之一的指數函式(因為暴力猜測算法往往如此),那麼它就是不合格的。
第二個問題是加密算法也是 PPT(參見定義 3.7,第 52 頁),這意味著它是機率性的——允許隨機選擇。這意味著你不能假設預言機是數學函式——呼叫 $ \text{Enc}_k(m) $ 多次同 $ m $ 可以(並且應該!)產生不同的結果。