OTP 無密鑰協議會起作用嗎?
考慮 Shamir 的無密鑰協議。如果你用 XOR 代替非對稱操作,每一方都使用臨時 OTP。
- 它是對稱的,因此您可以應用協議方案,就好像它是同態的
- 它比使用公鑰加密的 Shamir 解決方案快得多
與 Shamir 的無密鑰協議相比,這仍然是一個有效且安全性相當的協議嗎?
與 Shamir 的無密鑰協議相比,這仍然是一個有效且安全性相當的協議嗎?
不,它根本不安全。
在這個修改後的協議中,Alice 發送一條消息 $ M $ 對鮑勃,為了做到這一點,她選擇了一個隨機字元串 $ A $ ,並發送:
$$ A \oplus M $$ 鮑勃收到這個,選擇一個隨機字元串 $ B $ ,並發送:
$$ B \oplus (A \oplus M) = A \oplus B \oplus M $$ Alice 然後在她的原始字元串中異或 $ A $ , 並發送
$$ A \oplus (A \oplus B \oplus M) = B \oplus M $$ 現在,中間有人聽到這三個交流,如果他們排他或全部三個,他們會得到:
$$ (A \oplus M) \oplus (A \oplus B \oplus M) \oplus (B \oplus M) = M $$
Shamir 的三通或無密鑰協議基於帶有密鑰的公鑰加密方案 $ (k, K) $ , 加密 $ E_K(m) $ , 和解密 $ D_k(c) $ , 具有對於任何 $ K’ $ , $ D_k(E_{K’}(E_K(m))) = E_{K’}(m) $ . 換句話說, $ D_k \circ E_{K’} \circ E_K = E_{K’} $ . (因此加密和解密運算符組是阿貝爾的。)發送消息的協議 $ m $ 是:
- 發件人選擇密鑰對 $ (s, S) $ 並傳輸 $ c_0 = E_S(m) $ .
- 接收者選擇密鑰對 $ (r, R) $ , 收到 $ c_0’ $ , 並傳輸 $ c_1 = E_R(c_0’) $ .
- 發件人收到 $ c_1’ $ 並傳輸 $ c_2 = D_s(c_1’) $ .
- 接收方接收 $ c_2’ $ 併計算 $ m’ = D_r(c_2’) $ .
正確性。如果 $ c_0’ = c_0 $ , 然後
$$ c_1 = E_R(c_0) = E_R(E_S(m)). $$ 如果 $ c_1’ = c_1 $ , 然後$$ c_2 = D_s(c_1) = D_s(E_R(E_S(m))) = E_R(m). $$ 如果 $ c_2’ = c_2 $ , 然後$$ m’ = D_r(c_2) = D_r(E_R(m)) = m. $$ 問題是:如果我們讓 $ s = S $ 和 $ r = R $ 是消息長度的填充, $ E_k(m) = k \oplus m $ , 和 $ D_k(c) = k \oplus c $ ?
然後我們有
$$ \begin{align*} c_0 &= E_s(m) = s \oplus m, \ c_1 &= E_r(E_s(m)) = r \oplus s \oplus m, \ c_2 &= D_s(E_r(E_s(m))) = s \oplus r \oplus s \oplus m \ &= r \oplus m. \end{align*} $$ 竊聽者可以據此計算 $$ \begin{align*} c_0 \oplus c_1 \oplus c_2 &= s \oplus m \oplus r \oplus s \oplus m \oplus r \oplus m \ &= (s \oplus s) \oplus (r \oplus r) \oplus (m \oplus m) \oplus m \ &= m. \end{align*} $$ 哎呀。