Stream-Cipher

語義安全博弈

  • August 21, 2021

我需要幫助理解語義安全,特別是“遊戲”部分。

但首先,根據我的理解,語義安全是否是一種“較弱”且更靈活的方式來確定加密功能是否足夠安全以供使用?我知道完美保密的定義通常過於死板,因此語義安全性為定義足夠安全的東西提供了一些餘地。官方的定義是:一個加密方案在語義上是安全的,如果對手不能以比 1/2 更好的機率猜測給定的密文是消息 m0 還是 m1 的加密。

有一個流行的解釋是使用挑戰者和對手玩的“遊戲”,但是,我對它的工作原理有點困惑。

有人可以幫助我理解“遊戲”以及如何使用它來確定某些東西在語義上是否安全嗎?如何

遊戲:

  1. 挑戰者隨機選擇一個密鑰 k
  2. 攻擊者首先向挑戰者發送 2 條消息,m1 和 m0
  3. 挑戰者要麼輸出 m1 或 m0 的加密。
  4. 對手試圖猜測他是否被賦予了 m0 或 m1 的加密

對於 b = 0,1 Wb:=

$$ event that exp(b) = 1 $$ 建議

$$ A,E $$: = |Pr$$ W0 $$- 公關$$ W1 $$| 的元素$$ 0,1 $$ 我看到一個簡單的定義來總結上面的內容是“對手向挑戰者發送兩條長度相等的明文消息並接收一條加密消息;語義安全意味著對手無法區分哪個明文消息被加密。”

**問題1:**在步驟3中,它說在實驗1中,挑戰者將輸出m1的密文,在實驗0中,將輸出m0的密文。如果我錯了,請糾正我,但挑戰者只會發送一條消息,m1 或 m0 的密文對,而不是兩者都發送?

**問題 2:**我不明白遊戲試圖查看對手是否可以區分哪個明文消息被加密的部分。在挑戰者只透露一個密文的情況下,對手如何做到這一點?因為總是有 1/2 的歧義。什麼情況下它會成功和不成功地區分兩者?

  1. 正確,挑戰者發送 $ E_k(m_0) $ 或者 $ E_k(m_1) $ , 不是都。
  2. 如果密碼在語義上不安全,攻擊者將有超過 1/2 的機率猜測哪個明文是哪個。

例如,採取 $ ROT_K $ cipher,其中alphabet為大寫英文字母,K為旋轉量,為key。每個字母總是加密到相同的輸出,例如 $ K=13 $ , $ E_K(“A")=“N" $ 攻擊者可以送出兩個選擇的明文,比如 $ m_0=“AAAAAAAA" $ 和 $ m_1=“ABCDEFGH" $ . 如果返回的消息連續返回 8 個相同的字母,則它必須是加密的 $ m_0 $ ,如果是 8 個連續的字母,它必須是加密的 $ m_1 $ ,因此攻擊者可以以 1 的機率擊敗遊戲。其他密碼可能不是那麼簡單,但它們的成功機率仍然 > 1/2。

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