One-Time-Pad

實現沒有二進制的一次性墊?

  • October 28, 2017

我找到了一個程序,它接收純字母消息,將字母轉換為它們的 ASCII 值,並將它們與字母鍵的 ASCII 值組合(當它到達 Z 時環繞)。

(所使用的密鑰是完全隨機的,並且要求至少與消息一樣長。)

但是從我通常讀到的關於一次性便箋的內容來看,消息和密鑰是二進制的,並且消息中的位與密鑰進行異或以產生密文。組合 ASCII 值聽起來像是一個相似但顯然非常不同的過程。

**這是實現一次性墊的有效方法嗎?**還是該過程僅類似於二進制 XOR 並且不具有與一次性填充相同的加密屬性?

在 1882 年的“確保電報傳輸中的隱私和保密的電報程式碼”中,弗蘭克米勒為大約 14,000 個程式碼字分配了一個數字。銀行家會選擇一系列“不規則”的此類詞,並與遠端合作夥伴交換它們。任何消息都將排列在鍵盤上下一個未使用的單詞下方以進行編碼。當您將密鑰與單詞對齊時,您添加了與每個單詞相對應的數字(基本上是 14,000,儘管他沒有使用該術語)。對於解碼,您使用了減法。

Vernam 在 1919 年獨立申請了一個版本的專利,該版本使用Baudot 程式碼和 XOR(儘管他沒有將其稱為 XOR)逐字元操作。在 Vernam 的範例中,明文 A(Baudot 中的“++—”)和密鑰 B(“+–++”)。得到的密文是“-+-++”(G)。同樣,對於解碼,G XOR B 返回 A。

這兩種方法都足夠了,因為它們提供了可逆操作。XOR 對 Vernam 很有吸引力(不管他怎麼稱呼它),因為它很容易在繼電器中實現,因為它是它自己的逆。

您的一次性便箋可能涉及您選擇的任何可逆操作,並且可以對您選擇的任何資訊原子進行操作。二戰期間,類似的技術甚至被用於保護電話解決方案,例如SIGSALY,它在電話交談中添加隨機雜訊,然後在另一端減去相同的雜訊。(降噪耳機還利用了聲波容易受到基本上相當於簡單算術的影響這一事實。)

當然,正如 user7576 所說,如果您只是使用快捷鍵,那麼您不再處於“一次性鍵盤”領域。一次性墊應該是一長串隨機資訊。如果您重複使用該密鑰的任何部分,則它不再是“一次性使用”系統。

最接近帶有短密鑰的一次性填充的東西可能是使用帶有短種子(密鑰)的偽隨機數生成器的流密碼。這種密碼使用來自 PRNG 的(偽)隨機輸出來模擬一次性填充(但它不是真正的一次性填充,因為 PRNG 可能容易受到攻擊)。

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