這種交換加密協議安全嗎?
我的假設是:
- 加密必須是可交換的
- 中間人不是問題
我想在兩方之間實施以下方案( $ A $ 和 $ B $ ) 交換密鑰:
讓我們 $ C = P \oplus F(K, IV) $ 是一種交換加密,resp。一些具有隨機密鑰的對稱分組密碼的 CTR 模式 $ K $ , 隨機初始化向量 $ IV $ , 和 $ P $ 是明文, $ C $ 密文。
$ A $ 有個 $ P $ 想與誰分享 $ B $
因此將完成以下協議:
- $ A $ 會隨機選擇 $ K_1 $ 和 $ IV_1 $ 並生產 $ C_1 = P \oplus F(K_1, IV_1) $
- $ A $ 將發送 $ C_1 $ 至 $ B $
- $ B $ 會隨機選擇 $ K_2 $ 和 $ IV_2 $ 並生產 $ C_2 = C_1 \oplus F(K_2, IV_2) = P \oplus F(K_1, IV_1) \oplus F(K_2, IV_2) $
- $ B $ 將發送 $ C_2 $ 至 $ A $
- $ A $ 將解密 $ C_2 $ 使用 $ K_1 $ 和 $ IV_1 $ 所以產生 $ C_3 = C_2 \oplus F(K_1, IV_1) = P \oplus F(K_1, IV_1) \oplus F(K_2, IV_2) \oplus F(K_1, IV_1) = P \oplus F(K_2, IV_2) $
- $ A $ 將發送 $ C_3 $ 至 $ B $
- $ B $ 將解密 $ C_3 $ 使用 $ K_2 $ 和 $ IV_2 $ 所以產生 $ P = C_3 \oplus F(K_2, IV_2) = P \oplus F(K_2, IV_2) \oplus F(K_2, IV_2) $
- $ A $ 和 $ B $ 共享相同的價值 $ P $ 現在
組合任何一個是否存在安全風險 $ C_1 $ , $ C_2 $ , $ C_3 $ 得到實際值 $ P $ ?
$ C_1 \oplus C_2 = F(K_2, IV_2) $
$ C_1 \oplus C_3 = F(K_1, IV_1) \oplus F(K_2, IV_2) $
$ C_2 \oplus C_3 = F(K_1, IV_1) $
是否有任何可能的攻擊如何獲得價值 $ P $ ?
為了使符號更簡單,我注意到 $ R_i = F(k_i, IV_i) $ . 然後:
$$ C_1 = P \oplus R_1 $$ $$ C_2 = P \oplus R_1 \oplus R_2 $$ $$ C_3 = P \oplus R_2 $$ 所以:
$$ C_1 \oplus C_2 \oplus C_3 = P \oplus R_1 \oplus P \oplus R_1 \oplus R_2 \oplus P \oplus R_2 = P $$ 您的協議看起來像Shamir 的三遍協議,但它需要的不僅僅是交換性,這就是為什麼 Shamir 的解決方案涉及模冪運算的原因。
是的,被動竊聽者有可能恢復秘密 $ P $ .
就是這樣:
攻擊者觀察 $ C_1,C_2,C_3 $ 並形成所有這些值的異或。
就是這樣,結果 $ C_1\oplus C_2 \oplus C_3=P\oplus F(K_1,IV_1)\oplus P \oplus F(K_1,IV_1) \oplus F(K_2,IV_2) \oplus P \oplus F(K_2,IV_2)=P $ 產生所需的明文。