這種協議叫什麼名字
我相信有一種通信協議可以創建相當於一次性密碼的通信協議,其缺點是必須多次傳輸秘密消息。該協議非常簡單,我想它有一個名稱,但我找不到與其描述相匹配的協議。
假設:
- 客戶端 C 想向伺服器 S 發送 L 字節的密碼 P。
- 存在一個函式 Z(P,M),其中 P 和 M 都是 L 字節,並且
Z(P,M)= P
$$ i $$異或 M$$ i $$; 對於所有 i < L
因此,該協議將按如下方式工作:
- C 生成一個 L 字節的隨機字元串,稱為 CM。C 發送給 S
Q0
:Q0=Z(P,CM)
- S 生成一個由 L 個字節組成的隨機字元串,稱為 SM。S 發送給 C:
Q1
whereQ1=Z(Q0,SM)
- C 將 CM 遮罩重新應用到 Q1。C 發送到 S
Q2
whereQ2=Z(Q1,CM)
。- S 將 SM 遮罩重新應用於 Q2。Q 得到 P 從
P=Z(Q2,SM)
該協議利用了
xor
操作既是關聯的又是可交換的這一事實。
我將用於此協議的名稱是“損壞的”。
這是不安全的。竊聽者可以觀察 $ Q_0 = P \oplus CM $ , $ Q_1 = Q_0 \oplus SM = P \oplus CM \oplus SM $ , 和 $ Q_2 = Q_1 \oplus CM = P \oplus SM $ . 注意我們有關係
$$ Q_0 \oplus Q_1 \oplus Q_2 = (P \oplus CM) \oplus (P \oplus CM \oplus SM) \oplus (P \oplus SM) = P. $$ 因此,一個竊聽者對他觀察到的三個消息進行異或,就可以恢復該消息 $ P $ . 換句話說,這個協議是完全不安全的。 如果我沒記錯的話,我相信早期版本的藍牙規範使用這種算法進行密鑰交換。幸運的是,錯誤被擷取並修復。
您可能正在考慮密鑰交換的三通協議。它與您所擁有的概念基本相同,但使用了 xor 以外的東西。使用 xor,這是不安全的,但是如果您將 xor 替換為適當的其他操作,您可以獲得一些安全的東西。最著名的實例化是用基於 Pohlig-Hellman exponentiation-based 的加密替換 xor 。在該方案中,我們設置 $ Q_0 = P^c \pmod{p} $ , $ Q_1 = Q_0^s \pmod{p} $ , $ Q_2 = Q_1^{c^{-1}} \pmod{p} $ , 然後 S 可以計算 $ P = Q_2^{s^{-1}} \pmod{p} $ , 一切都以一個大素數為模完成 $ p $ . 然而,三通協議與標準的公鑰密鑰交換系統相比沒有優勢,因此很少(如果有的話)使用。例如,它的安全性大致相當於 Diffie-Hellman 密鑰交換的安全性,因此它與 Diffie-Hellman 或 RSA 相比沒有明顯的優勢。