馬春光
在第二次世界大戰(zhàn)中,密碼學(xué)發(fā)生了一系列傳奇式的故事,特別是圍繞恩尼格瑪密碼設(shè)計和破譯的戰(zhàn)爭,跌宕起伏,盡顯人類智慧之美。德國人亞瑟·謝爾比烏斯發(fā)明了恩尼格瑪,波蘭人雷耶夫斯基初步破譯了恩尼格瑪,而英國人阿蘭·圖靈則終結(jié)了恩尼格瑪。今天,我們就一起來了解下恩尼格瑪?shù)臉?gòu)造和原理。
恩尼格瑪是世界上第一臺電氣機械裝置的密碼機,其形狀如同一臺打印機,它在20世紀(jì)30年代后期被用于第二次世界大戰(zhàn),現(xiàn)藏于意大利米蘭國家科學(xué)技術(shù)博物館。
恩尼格瑪由鍵盤(Key-board)、燈盤(Lampboard)、轉(zhuǎn)輪組(Rotors)、插線板(Plugboard)4個主要部分構(gòu)成。鍵盤與普通打字機的鍵盤類似,但只有26個字母,沒有標(biāo)點符號;燈盤位于鍵盤之后,其上有26個字母,每個字母下面有一個小燈泡,用于顯示加密或解密后的字母;轉(zhuǎn)輪組位于燈盤后,在蓋板之下,從外面只能看到3個轉(zhuǎn)輪的部分齒狀邊緣和一個數(shù)字,其中齒狀物用于手動轉(zhuǎn)動輪子,而數(shù)字表示輪子的當(dāng)前位置;插線板位于鍵盤下方,恩尼格瑪?shù)恼妗?img alt="" src="https://cimg.fx361.com/images/2018/10/18/qkimageszsllzsll201810zsll20181014-1-l.jpg"/>
轉(zhuǎn)輪組包括3個轉(zhuǎn)輪和1個反射輪,它們都套在同一根軸上,反射輪在最左邊。轉(zhuǎn)輪是恩尼格瑪?shù)暮诵牟考?,轉(zhuǎn)輪的圓周上刻有1到26的數(shù)字,轉(zhuǎn)輪的正面有26個觸點、背面有26個觸針。一個輪子的觸點可以和另一個輪子的觸針套接在一起,形成轉(zhuǎn)輪組。在轉(zhuǎn)輪內(nèi)部,觸點和觸針之間通過電線相互連接,從而形成了一種代換關(guān)系。轉(zhuǎn)輪轉(zhuǎn)動后,接線位置隨之改變,代換關(guān)系也會跟著變化。每當(dāng)鍵盤上鍵入一個字母,位于最右邊的轉(zhuǎn)輪就會轉(zhuǎn)一格;右轉(zhuǎn)輪每轉(zhuǎn)完一圈26格,中間的轉(zhuǎn)輪就會轉(zhuǎn)一格;中間轉(zhuǎn)輪每轉(zhuǎn)完一圈26格,左邊的轉(zhuǎn)輪就轉(zhuǎn)一格。反射輪則始終不動,它對加密強度沒有影響,但是起到了可以使解密過程和加密過程完全一樣的作用。
插線板上面有26個插口,代表26個字母。使用時可用一根電線把任意兩個插口連接起來,比如說可以把A插口和J插口連接起來,這時就會把鍵盤上的A和J兩個按鍵互換,即如果按A鍵就會得到J,按J就會得到A。
當(dāng)使用恩尼格瑪進(jìn)行加密時,其過程如下:
(1)設(shè)好3個轉(zhuǎn)輪的初始值,并用6根電線連好插線板上的6對插口。
(2)在鍵盤上輸入明文,每輸入一個字母,該字母信號就會通過相應(yīng)的電線傳到插線板。
(3)在插線板上,如果該字母正好屬于6對連接插口中的一對,就互換字母,否則就不互換。然后,該字母信號會傳到右轉(zhuǎn)輪上。
(4)右轉(zhuǎn)輪通過內(nèi)部電線的連接方式,對輸入的字母作代換,然后傳到中間轉(zhuǎn)輪,同時轉(zhuǎn)動一格。
(5)中間轉(zhuǎn)輪再對字母作代換,然后傳到左邊轉(zhuǎn)輪。這時如果右邊轉(zhuǎn)輪從26格轉(zhuǎn)到1格,則轉(zhuǎn)動一格,否則不轉(zhuǎn)。
(6)左邊的轉(zhuǎn)輪再對字母作代換,然后傳給反射輪。這時如果中間的轉(zhuǎn)輪正好從26格轉(zhuǎn)到1格,則其自己也轉(zhuǎn)動一格,否則不轉(zhuǎn)。
(7)反射輪通過反射電路將結(jié)果傳給燈盤,燈盤上對應(yīng)密文字母的小燈泡被點亮。
由于反射電路的巧妙設(shè)計,恩尼格瑪?shù)慕饷芘c加密是相同的。在設(shè)定好了與加密時一樣的轉(zhuǎn)輪初始值和插線板接線后,在鍵盤上打入密文,執(zhí)行以上步驟后,在燈盤上就顯示出了明文。
一個插線板沒有任何連線的恩尼格瑪,是如何對明文消息“ABC”進(jìn)行加密的呢?如圖所示,當(dāng)從鍵盤輸入字母A時,通過右輪子,A被代換成了Y;再經(jīng)過中輪子,Y被代換成了R;最后經(jīng)過左輪子,R被代換成了E。也就是說,A經(jīng)過三次代換后,最終被加密成了E。當(dāng)A字母被加密后,右輪子會向上移動一格。當(dāng)接下來再輸入字母B時,B會被最終代換成T。同樣,右輪子也會向上移動一格。當(dāng)接下來再輸入字母C時,C會被最終代換成G。這樣,明文“ABC”就被加密成了密文“ETG”。