轉子機器:接線保密
在轉子機器的全盛時期,內部轉子接線始終是一個嚴密保密的秘密。即使是完全清除的維修人員也不允許做任何可能暴露它的事情。
由於佈線似乎被認為是算法1的一部分,而不是某種形式的長時間密鑰,是否有可能設計一個完全遵循 Kerckhoffs 原理的安全轉子機器?
我發現這方面的報導相互矛盾。另一方面,仍然有完整的 Enigma 加密消息,儘管 Enigma 的細節如今已為人所知。
在我的腦海中,我看不出任何明顯的理論原因,為什麼即使按照現代標準,帶有眾所周知的轉子接線的假設的類似 Enigma 的轉子機器密碼也不安全。它可能需要比 WWII Enigma 擁有的更多的轉子和更複雜的步進方案,但這只是工程細節。
一個基本的轉子機器密碼在數學上可以描述為由兩種交替類型的層組成:轉子接線本身,它是應用於被加密符號的任意(但固定)可逆映射,以及轉子之間的偏移,它是符號空間的簡單線性移位,取決於鍵(即初始轉子位置)和消息中符號的位置。也就是說,在數學上,我們可以將加密過程寫成:
$$ \begin{aligned} x_0 &= p, \ x_i &= f_i(x_{i-1} +A s{i-1}) \quad\forall i \in {1,\dots,n}, \ c &= x_n +_A s_n, \end{aligned} $$ 在哪裡 $ p $ 是明文輸入符號, $ c $ 是對應的密文輸出, $ n $ 是轉子的數量, $ +_A $ 表示以密碼字母大小為模的加法 $ A $ , 可逆函式 $ f_i: {0,\dots,A-1} \to {0,\dots,A-1} $ 表示密碼字母表的固定非線性排列 $ i $ -第轉子接線,和 $ s_i = s_i(K,t) $ 是之間的相對偏移量 $ i $ -th 轉子和下一個在消息位置 $ t $ 用初始鍵 $ K $ (和 $ s_0 $ 和 $ s_n $ 分別表示第一個和最後一個轉子的絕對偏移量)。
(請注意,上面描述的抽象轉子機器甚至沒有嘗試包含各種 Enigma 特定的功能,例如反射器或外掛板,因為這些實際上只是從 Enigma 擁有的有限數量的轉子中擠出額外加密複雜性的技巧。有了足夠的轉子,你就不需要它們了。)
這是一個示意圖,以更好地說明上述描述:
查看上面的示意圖,您可能會注意到它看起來與各種現代分組密碼設計模糊相似,例如像 AES這樣的替換 - 置換網路。事實上,我們可以把上面描述的抽象轉子機器看作是一種可調整的分組密碼,在一個符號的塊上執行,輪子接線 $ f_i $ 充當可逆S 盒(一次應用於整個塊,因此不需要顯式 P 盒)和密鑰相關步進方案用於 $ s_i $ 混合初始鍵 $ K $ 和每個符號的調整 $ t $ 每個 S-box 應用程序之間的密碼狀態。
據我所知,即使排列組合也不存在對上述結構的普遍攻擊 $ f_i $ 是眾所周知的。事實上,如果我沒記錯的話,如果有足夠多的轉子和足夠複雜的步進方案,上面描述的抽象轉子機原則上可以計算密碼字母表的任何排列,即使所有轉子排列 $ f_i $ 相同且完全微不足道(例如交換一對符號並保持其他所有內容不變)。因此,似乎任何攻擊都必須利用步進方案(或轉子數量)中的某些弱點和/或密碼字母表的有限大小。
當然,對於典型的現代分組密碼,典型的類似 Enigma 的轉子機器的字母大小(對應於大約 5 位的塊大小)是完全不夠的,因為攻擊者可以簡單地列舉密碼計算基於的排列只有少數已知的密文/明文符號對。另一方面,具有字母大小的機械轉子機器,例如, $ 2^{64} $ 或者 $ 2^{128} $ 符號(如在 DES 或 AES 中)將完全不可能製造。
然而,為了彌補其較小的塊大小,轉子機器與典型的塊密碼相比具有一個主要優勢:轉子旋轉。因此,任何給定消息中的每個符號都使用密碼字母表的不同排列進行有效加密。使用足夠複雜的步進方案,這應該有效地打亂每個加密符號之間的排列,因此即使是訪問加密預言機的攻擊也只會收到一個明文/密文符號對。 $ (K,t) $ 對,並且希望沒有有效的方法來關聯這些對以獲取有關密鑰(或有關使用它加密的過去或未來消息)的任何有用資訊。
當然,棘手的部分是提出這樣一個足夠好的步進方案,特別是如果你需要它也足夠簡單,以至於它可以在沒有現代電子設備的情況下實際實現。這就是我將留給讀者作為練習的部分。:)
根據現代定義,任何必須保密的東西都是密鑰的一部分,因為其他一切都是公開的。
Kerckhoff 的原則主要具有歷史意義,今天不應過多關注。現代安全定義更清楚地表達了相同的想法。