Perfect-Secrecy

兩個不同消息的完美保密

  • February 27, 2017

我們說和加密方案 $ \pi $ 對於兩個不同的消息是完全保密的,如果對於所有分佈 $ \mathcal{M}\times\mathcal{M} $ ( $ \mathcal{M} $ 是消息空間),對於所有 $ m_1,m_2\in\mathcal{M} $ 這樣 $ m_1\ne m_2 $ 和所有 $ c_1,c_2\in\mathcal{C} $ (在哪裡 $ \mathcal{C} $ 是密碼文本空間)使得 $ \text{Pr}[C_1=c_1\wedge C_2=c_2]>0 $ 然後

$$ \text{Pr}[M_1=m_1\wedge M_2=m_2|C_1=c_1\wedge C_2=c_2]=\text{Pr}[M_1=m_1\wedge M_2=m_2] $$ 我正在嘗試提出滿足此定義的加密方案。到目前為止,這就是我想出的

說 $ \mathcal{M}={0,1}^l, \mathcal{K}={(0,1),(1,0),(0,0),(1,1)}^l, \mathcal{C}={0,1}^l $

$ k\leftarrow\text{Gen}(\mathcal{K}) $

現在讓 $ m_i $ 表示 $ i^{th} $ 一點 $ m $ .

讓 $ c_i $ 表示 $ i^{th} $ 一點 $ c $ .

然後讓 $ k_{il} $ 表示 $ l $ 一點 $ i^{th} $ 配對 $ k $ 和(第一個 l=0,第二個 l=1)

$ \text{Enc}_k(m): $ 對所有人 $ m_i $ 在 $ m $ (通過位迭代)

如果 $ m_i=0 $ : $ c_i=m_i \oplus k_{i0} $

別的: $ c_i=m_i \oplus k_{i1} $

返回 $ c $

$ \text{Dec}_k(c) $ : 對所有人 $ c_i $ 在 $ c $ (遍歷位 $ c $ )

如果 $ c_i=1 $ : $ m_i=m_i \oplus k_{i0} $

別的: $ m_i=c_i \oplus k_{i1} $

返回 $ m $

這行得通嗎?我覺得它應該是因為基本上我們所做的基本上是創建一個可以安全地執行一次性鍵盤兩次的密鑰

讓 $ m_i := 0 $ 和 $ k_i := \langle 0, 1 \rangle $ . 然後 $ c_i = Enc_{k_i}(m_i) = m_i \oplus k_{i0} = 0\ \oplus\ 0 = 0 $ . 但是之後 $ m’i = Dec{k_i}(c_i) = c_i \oplus k_{i1} = 0\ \oplus\ 1 = 1 $ ,我們有 $ m_i \neq m’_i $ . 這同樣適用於 $ m_i := 1 $ 和 $ k_i := \langle 1, 0 \rangle $ . 因此,您的加密方案可能會提供完美的保密性,但它不允許您解密消息。

這是因為您的加密方案在使用密鑰加密時有效地失去了消息中的資訊 $ k_i = \langle 0, 1 \rangle $ 或者 $ k_i = \langle 1, 0 \rangle $ ,對於這些密鑰,密文 $ c_i $ 完全由鍵決定:

$ Enc_{\langle 0, 1 \rangle}(0) = 0\ \oplus\ 0 = 0\ Enc_{\langle 0, 1 \rangle}(1) = 1\ \oplus\ 1 = 0\ Enc_{\langle 1, 0 \rangle}(0) = 0\ \oplus\ 1 = 1\ Enc_{\langle 1, 0 \rangle}(1) = 1\ \oplus\ 0 = 1 $

如果將鍵空間減少到 $ \mathcal{K} = {\langle 0, 0 \rangle, \langle 1, 1 \rangle}^l $ 你實際上有一個定期的一次性墊。

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