One-Time-Pad

這種協議叫什麼名字

  • November 11, 2013

我相信有一種通信協議可以創建相當於一次性密碼的通信協議,其缺點是必須多次傳輸秘密消息。該協議非常簡單,我想它有一個名稱,但我找不到與其描述相匹配的協議。

假設:

  1. 客戶端 C 想向伺服器 S 發送 L 字節的密碼 P。
  2. 存在一個函式 Z(P,M),其中 P 和 M 都是 L 字節,並且

Z(P,M)= P

$$ i $$異或 M$$ i $$; 對於所有 i < L

因此,該協議將按如下方式工作:

  1. C 生成一個 L 字節的隨機字元串,稱為 CM。C 發送給 S Q0Q0=Z(P,CM)
  2. S 生成一個由 L 個字節組成的隨機字元串,稱為 SM。S 發送給 C: Q1whereQ1=Z(Q0,SM)
  3. C 將 CM 遮罩重新應用到 Q1。C 發送到 S Q2where Q2=Z(Q1,CM)
  4. 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 相比沒有明顯的優勢。

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