Chosen-Plaintext-Attack

IND-CPA 和 IND-CCA 遊戲中的無效挑戰密文

  • July 6, 2017

考慮挑戰者之間的 IND-CPA 博弈 $ C $ 和一個對手 $ A $ 對於給定的公鑰加密方案 $ PKE $ :

  1. $ C $ 生成密鑰對 $ (pk,sk) $ 基於一些安全參數 $ n $ , 並發布 $ pk $ 至 $ A $ . $ C $ 保留 $ sk $ .
  2. $ A $ 可以執行多項式有界數量的加密或其他操作。
  3. 最終, $ A $ 送出兩個不同的選擇明文 $ m_0,m_1 $ 對挑戰者 $ C $ .
  4. $ C $ 選擇一點 $ b \in {0, 1} $ 均勻隨機,並發送挑戰密文 $ c=E(pk,m_b) $ (加密 $ m_b $ 使用公鑰 $ pk $ ) 回到 $ A $ .
  5. $ A $ 可以自由執行任意數量的附加計算或加密。最後,它輸出一個猜測 $ b’ $ 對於價值 $ b $ .

的優勢 $ A $ 是 $ Pr(b=b’)-1/2 $ .

IND-CCA2 遊戲是相同的,只是在第 2 階段和第 5 階段, $ A $ 可以訪問解密預言機,條件是 $ A $ 不能要求對挑戰密文進行解密。

我的問題是:假設有一個對手 $ A $ 在其中一款遊戲中具有不可忽視的優勢。假設在第 4 階段,挑戰者 $ C $ 發送一個無效的密文到 $ A $ (IE, $ C $ 發送一個不是加密的密文 $ m_0,m_1 $ 或任何其他消息 $ m $ )。在這種情況下,做什麼 $ A $ 回答?做 $ A $ 知道挑戰密文無效嗎?

提前致謝!

$ A $ 輸出有點取決於它是否認為你給了它一個加密 $ m_0 $ 或者 $ m_1 $ .

如果你作弊並給它一些完全不同的東西,它沒有可用的資訊,但仍然需要輸出一點。

如果您的 PKE 方案包含無效的密文 $ A $ 根據具體情況,可能能夠檢測到或不能檢測到。

所以如果你想交換你的加密 $ m_0 $ 或者 $ m_1 $ 對於證明中的其他內容,您必須證明 $ A $ 無法區分這兩種情況。

直覺上你可以這樣想:如果 $ A $ 有一些方法可以區分真正的安全遊戲和您的模擬,這意味著您的模擬看起來不同。所以你怎麼知道不管 $ A $ 如果它看起來不一樣,那麼攻擊原始遊戲將適用於您的模擬 $ A $ ?

作為類比,請考慮以下內容:

讓 $ x $ 是一個複數,使得 $ x^4 = 1 $ , 節目

$$ something about $x$ $$.

在我的證明中,我不能假設 $ x $ 是真實的,因為這在問題的文本中沒有給出。當然,任何特定的 $ x $ 是真實的或不真實的,並且給定任何 $ x $ 找出是哪種情況是微不足道的。但我的證明必須適用於所有人 $ x $ 這樣 $ x^4 = 1 $ ,而不僅僅是那些真實的。(可能所有這些 $ x $ 碰巧是真實的;但是我必須先證明這個事實,然後才能使用它。)

算法的定義必須包括它在每個可能的輸入(即字元串)上的行為,從中可以很容易地推導出它的輸出。否則定義不完整。所以如果你有一個完整的定義 $ A $ ,答案是看看。

但在許多情況下,您並沒有使用定義明確的算法;你所知道的是算法擁有一些屬性,通常是“算法”的形式 $ A $ 打破系統 $ S $ “。你不知道完整的定義 $ A $ ,這是有原因的:當我們假設一個系統是“可破壞的”時,我們不想對對手使用的特定攻擊策略做出任何假設。確實,如果我們確實假設 $ A $ 以某種特定方式表現並使用該假設來證明系統的安全性,該系統只會被證明對使用相同策略的對手是安全的。

因此,除了給定的內容之外,您不能對對手進行任何假設,並且由於沒有提及對手在給出無效密文時會做什麼,因此您無法對其進行任何假設。當然,任何特定的 $ A $ 會輸出一些東西,就像任何特定的 $ x $ 將是真實的或不真實的,但你不能假設它是什麼,除非你能證明它是由你所知道的所暗示的。

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