Stream-Cipher

如何計算 Enigma 重新設計的密鑰大小

  • August 14, 2021

我有一個“好玩”的項目,它是基於純軟體的 Enigma I 重新設計。我想計算我的設計的密鑰長度,但我需要一些幫助。

我在這裡寫了一篇文章(見第 1 節),但總而言之:

  1. 從概念上講,它是一個基於轉子的系統,可以採用任意數量的轉子(即由操作員設置)。
  2. 轉子組件:定子(輸入/輸出),N個轉子,定子(輸入/輸出)。與 Enigma I 不同的是,它沒有反射器,並且可以在任一方向上對數據進行加密。
  3. Rotor 支持 94 個唯一字元(AZ、az、0-9 和一些特殊字元)。

我試圖繪製出我認為對密鑰大小有貢獻的所有變數:

影響密鑰大小的因素

對於那些無法清楚地看到圖像的人來說:

  • 94 個字元的轉子
  • T - 可能的轉子總數(94 個排列):1.08736615665674E+146
  • A - 可供操作員選擇的轉子。理論上是 T,但實際上我有一個使用 1147 個獨特轉子的初始實現。
  • N——操作者選擇的轉子數量。與 Enigma I 不同,它沒有嚴格的限制,而且更複雜的是,您可以使用同一轉子的多個實例(我不確定這是否增強了它的加密強度)。
  • O - 所選轉子的排列順序(包括重複轉子的實例)。我相信 Enigma I 的計算結果是 26!× (26! - 1) × (26! - 2) - 考慮了轉子的不重複使用,在這種情況下不適用。
  • R - 轉子旋轉的起始位置。
  • D - 旋轉方向(正向或反向)。
  • F - 通過轉子的流動方向(從左到右或從右到左)。

您是否同意這些變數都對密鑰大小有影響(在我看來,它們都是操作員可以設置的變數,因此是密鑰的一部分)?

你能幫我計算一下密鑰大小,或者指出我正確的方向嗎?恐怕數學並不是我的強項。

更新(重新評論休伯特的答案)

Enigma I 具有特定數量的轉子,這反映了密鑰大小和攻擊者面臨的密碼問題的大小。微積分沒有限制使用的轉子數量,我認為這意味著從攻擊者的角度來看,您需要考慮可能使用多少轉子(即範圍)。其中,密鑰大小是對特定密鑰大小的特定度量。

更新(2018 年 4 月)

項目完成。以下連結中提供的資訊,包括訪問下載(僅限 win10)和使用者指南。

https://morphological.wordpress.com/projects/enigma-x/

要計算與您的密鑰等效的位長,您需要計算 $ \log_2(\Omega) $ 在哪裡 $ \Omega $ 是可能鍵的空間。現在,我自己一直在計算許多非現代密碼系統的等效密鑰大小,所以它證明是一個非常有趣的練習。

我剩下的公式是

$$ \log_2(1147^N \cdot 94^N \cdot 2^N \cdot 2) $$ 在哪裡 $ N $ 是轉子的數量。 首先,我們選擇轉子。為了 $ N $ 轉子,有 $ 1147^N $ 可能的選擇。然後,我們選擇它們的初始狀態(歷史上由密碼本分發,每天都不同)。對於每個轉子,我們有 $ 94 $ 可能性,因此對於整個設置有 $ 94^N $ 可能性。那麼,每個轉子可以有兩個方向,因此 $ 2^N $ . 我假設流向是全域的,因此我們最終將所有這些乘以 $ 2 $ .

所以,對於計算,我們有

$$ \log_2(1147^N \cdot 94^N \cdot 2^N \cdot 2)\ = \log_2(1147^N \cdot 94^N \cdot 2^N) + \log_2(2)\ = N \cdot \log_2(1147 \cdot 94 \cdot 2) + \log_2(2)\ \approx N \cdot 17.718 + 1 $$ 因此,您將擁有超過 128 位的密鑰空間和 8 個轉子,並且您將需要其中的 15 個用於 256 位的密鑰空間。

如前所述阿德里安·K路易斯·卡西利亞斯

$$ edit $$,這並不意味著這個密碼系統有這麼多的“安全性”。這個概念不那麼嚴格,並考慮了密碼分析,例如,密碼分析者可以發現攻擊,在收集足夠的材料後,該攻擊將減少幾位甚至一個很大的有效密鑰空間,將其減半或更差。 請注意,如果您對此分析有任何異議,我將很樂意進一步討論該主題。這很有趣。

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