硝煙中的藝術品——恩尼格碼

在計算機系列文章第一期的時候為大家大概介紹了現代計算機的分支及發展(詳見《從開始到現在:一起走進計算機文化》)。這一期我們從計算機的前身講起,開始我們的計算機的探索之旅。

故事要回到二十世紀初。

當時就已經有一些國家開始將一種「轉子加密機」(如圖1所示)用於商業及政府之間的信息加密及傳輸。這種加密機後來被統稱為恩尼格瑪機

△ 圖1:恩尼格瑪機。(圖片來源:Crypto Meseum)

恩尼格瑪機由三部分組成,從下往上分別是鍵盤(下方按鍵),顯示板(中間字母顯示,通過字母下方的燈泡亮起來顯示字母)以及轉子(機器上方像齒輪的四個轉子)。

若是加密方使用,鍵盤則輸入明碼字母,顯示板顯示的是加密后的字母,而上面的轉子則負責經過一系列的機械及電路設計對輸入字母進行加密。若是解密方使用,鍵盤則輸入加密后的字母,顯示板顯示解密后的字母,而轉子則負責通過一系列的機械機電路對輸入字謎進行解密。也就是說,如果兩個加密機的設置相同,加密前後的字母是可以互相轉換的。即如果在鍵盤上輸入 A 得到的加密是 F 的話,那麼「在同一設置下」,鍵盤上輸入 F 即可得到加密前的 A。

Advertisements

那麼怎樣才是機器的同一設置呢?我們首先得先了解一下轉子的結構。

△ 圖2:轉子。(圖片來源:Wikipedia)

轉子是恩尼格碼機的核心部分。最開始的恩尼格瑪機只有三個轉子。後來為了增加破譯的難度,在1938年之後恩尼格瑪機開始使用五個轉子,直至最後增加到八個。這些轉子使用羅馬數字 I 到 VIII 來識別。如圖2所示,一個轉子分為兩半,轉子右側均勻排布著26個金屬管腳,以代表26個英文字母(空格和特殊符號用字母組合表示)。轉子的左側同樣等距排布著26個金屬觸點,也代表著26個英文字母。

△ 圖3:轉子。(圖片來源:Wikipedia)

當兩部分合在一起並在鍵盤上輸入一個字母的時候,轉子右側的其中一個管腳就會通電並接觸左側轉子的一個觸點形成通路。若此時代表 A 的管腳連在了代表 M 的觸點,此時的字母 A 就被加密成了字母 M。同一輸入字母會經過 3 到 8 個轉子的不同加密來增加破譯難度。而連接觸點和管腳的金屬線在每個轉子內的排列方式也不盡相同。操作人員可手動擰動轉子進行設置。每次輸入之後,放在最右邊的轉子便會轉動一格從而改變加密方式。每當靠右的轉子轉動一周之後,其相鄰的左邊那個轉子便會轉動一格。和鐘錶秒針分針和時針的感覺很像。由於這樣的設置,同一個字母輸入便會得到不同的加密輸出。同樣,同一個加密后的字母也可能被解碼成不同的字母。這一特性改變了當時同一輸入得到同一輸出的加密方式,大大的增加了破譯的難度。

Advertisements

那麼回到開始的話題,什麼叫做同一設置呢?那就是在加密和解碼之前將加密方和解碼方的恩尼格瑪機轉子位置、轉子內部字母排列順序及接線板的連線(見後文)設置在同一起始位置上。而這些起始位置需要被記錄在密碼本中並定期更新。

△ 圖4:接線板位於恩尼格瑪密碼機前部鍵盤的下方。(圖片來源:Wikipedia)

後來第二次世界大戰爆發,恩尼格瑪機被德國改進後用在了對軍事信息的加密。其改進除了增加轉子個數之外,還在機器的正前方添加了一個接線板,如圖4所示。

接線板允許操作人員通過連接兩個字母來設置更多不同的線路。接線板上每條線都會連接一對字母,使電流在進入轉子之前改變方向。比如圖中連接的 A 和 J 點,當操作人員連接這兩點並按下 A 鍵時,電流就會先到達 J 插口(相當於按下J 鍵)再流經轉子。接線板上有 26 個字母,所以最多可以同時接 13 條線。(而在實際使用中,有些恩尼格瑪機只用 10 條連接線)細心的讀者可能會注意到為何每個字母都會有兩個插孔。那是因為上插孔連接鍵盤,下插孔連接轉子。當插頭插入時,該按鍵(A)和轉子將會斷開。並通過插頭的另一端與J按鍵連接後接入轉子。總的來說其運行原理可由圖5表示。

△ 恩尼格瑪密碼機的原理圖。(圖片來源:Wikipedia)

圖中 1 為供電系統,在 2 處按下 A 鍵后電流流過 3 通過 4 , 5(轉子)進入 6(反射器)。反射器將電流導迴轉子併流向 7(S鍵)。此時S鍵因接線板插頭的插入兩級被斷開。電流因此流向接線板插頭的另一端(D 鍵)。此時 D 鍵的兩級同樣因插頭而斷開,所以電流流向顯示器 字母 D 下面的燈泡。整個系統在轉子和接線板的共同合作下將字母 A 加密成為字母 D。當然,如上文所描述的,按下按鍵的同時轉子位置發生改變,所以再次按下 A 鍵的時候將會的到不同的結果。

讀者可能會懷疑一個插線板能有多大的功效居然使得平時作為商用的恩尼格瑪機被軍方使用?其實這個小小的接線板可以說是破譯恩尼格碼密碼最無解的難題之一。原因很簡單,因為解碼時破譯方需要有同樣的連接板設置。如果只是三個齒輪運行,其密碼最多可以有 26 x 26 x 26 = 17576 種可能。(拋開有些恩尼格瑪機中第二個和第三個轉子會共同轉動的情況。)每增加一個轉子也只會增加 26 倍的密碼可能性。然而一個小小的接線板,在用十條線做連接的機器中便將會增加

倍!

在這個基礎上再加上轉子起始位置及線路連接設置的定期更新,恩尼格碼被當時德國稱之為不可破之加密,德國軍方對其有著非常高的自信。原因很簡單,因為敵人不可能用窮舉法來破譯密碼。

但眾所周知,恩尼格碼還是被破解了。看似如此周密的加密系統存在著哪些缺陷呢?科學家們是如何利用這些缺陷的?他們在破解恩尼格碼的時候有經歷了哪些心路歷程呢?且看下回分解。

Advertisements

你可能會喜歡