如何計算 Enigma 重新設計的密鑰大小
我有一個“好玩”的項目,它是基於純軟體的 Enigma I 重新設計。我想計算我的設計的密鑰長度,但我需要一些幫助。
我在這裡寫了一篇文章(見第 1 節),但總而言之:
- 從概念上講,它是一個基於轉子的系統,可以採用任意數量的轉子(即由操作員設置)。
- 轉子組件:定子(輸入/輸出),N個轉子,定子(輸入/輸出)。與 Enigma I 不同的是,它沒有反射器,並且可以在任一方向上對數據進行加密。
- 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)和使用者指南。
要計算與您的密鑰等效的位長,您需要計算 $ \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 $$,這並不意味著這個密碼系統有這麼多的“安全性”。這個概念不那麼嚴格,並考慮了密碼分析,例如,密碼分析者可以發現攻擊,在收集足夠的材料後,該攻擊將減少幾位甚至一個很大的有效密鑰空間,將其減半或更差。 請注意,如果您對此分析有任何異議,我將很樂意進一步討論該主題。這很有趣。