ENIGMA的興亡人類使用密碼的歷史,從今天已知的,最早可以一直追溯到古巴比倫人的泥板文字。古埃及人,古羅馬人,古阿拉伯人……幾乎世界歷史上所有文明都使用過(guò)密碼。軍事和外交一直是密碼應(yīng)用的最重要的領(lǐng)域,國(guó)王、將軍、外交官以及陰謀分子等,為了在通訊過(guò)程中保護(hù)自己信息不被外人所知,使用過(guò)形形色色的密碼;而為了刺探于己不利的秘密,他們又絞盡腦汁地試圖破譯對(duì)手的密碼。加密與解密一直是密碼學(xué)這枚硬幣互相對(duì)抗又互相促進(jìn)的兩面。在所有用于軍事和外交的密碼里,最著名的恐怕應(yīng)屬第二次世界大戰(zhàn)中德國(guó)方面使用的ENIGMA(讀作“恩尼格瑪”,意為“謎”)。
一、誕生
直到第一次世界大戰(zhàn)結(jié)束為止,所有密碼都是使用手工來(lái)編碼的。直接了當(dāng)?shù)卣f(shuō),就是鉛筆加紙的方式。在我國(guó),郵電局電報(bào)編碼和譯碼直到很晚(大概是上個(gè)世紀(jì)八十年代初)還在使用這種手工方法。手工編碼的方式給使用密碼的一方帶來(lái)很多的不便。首先,這使得發(fā)送信息的效率極其低下。明文(就是沒(méi)有經(jīng)過(guò)加密的原始文本)必須由加密員人工一個(gè)一個(gè)字母地轉(zhuǎn)換為密文。考慮到不能多次重復(fù)同一種明文到密文的轉(zhuǎn)換方式(這很容易使敵人猜出這種轉(zhuǎn)換方式),和民用的電報(bào)編碼解碼不同,加密人員并不能把轉(zhuǎn)換方式牢記于心。轉(zhuǎn)換通常是采用查表的方法,所查表又每日不同,所以解碼速度極慢。而接收密碼一方又要用同樣的方式將密文轉(zhuǎn)為明文。其次,這種效率的低下的手工操作也使得許多復(fù)雜的保密性能更好的加密方法不能被實(shí)際應(yīng)用,而簡(jiǎn)單的加密方法根本不能抵擋解密學(xué)的威力。
解密一方當(dāng)時(shí)正值春風(fēng)得意之時(shí),幾百年來(lái)被認(rèn)為堅(jiān)不可破的維吉耐爾(Vigenere)密碼和它的變種也被破解。而無(wú)線電報(bào)的發(fā)明,使得截獲密文易如反掌。無(wú)論是軍事方面還是民用商業(yè)方面都需要一種可靠而又有效的方法來(lái)保證通訊的安全。
1918年,德國(guó)發(fā)明家亞瑟·謝爾比烏斯(Arthur Scherbius)和他的朋友理查德·里特(Richard Ritter)創(chuàng)辦了謝爾比烏斯和里特公司。這是一家專營(yíng)把新技術(shù)轉(zhuǎn)化為應(yīng)用方面的企業(yè),很象現(xiàn)在的高新技術(shù)公司,利潤(rùn)不小,可是風(fēng)險(xiǎn)也很大。謝爾比烏斯負(fù)責(zé)研究和開(kāi)發(fā)方面,緊追當(dāng)時(shí)的新潮流。他曾在漢諾威和慕尼黑研究過(guò)電氣應(yīng)用,他的一個(gè)想法就是要用二十世紀(jì)的電氣技術(shù)來(lái)取代那種過(guò)時(shí)的鉛筆加紙的加密方法。
亞瑟·謝爾比烏斯
謝爾比烏斯發(fā)明的加密電子機(jī)械名叫ENIGMA,在以后的年代里,它將被證明是有史以來(lái)最為可靠的加密系統(tǒng)之一,而對(duì)這種可靠性的盲目樂(lè)觀,又使它的使用者遭到了滅頂之災(zāi)。這是后話,暫且不提。
ENIGMA
ENIGMA看起來(lái)是一個(gè)裝滿了復(fù)雜而精致的元件的盒子。不過(guò)要是我們把它打開(kāi)來(lái),就可以看到它可以被分解成相當(dāng)簡(jiǎn)單的幾部分。下面的圖是它的最基本部分的示意圖,我們可以看見(jiàn)它的三個(gè)部分:鍵盤(pán)、轉(zhuǎn)子和顯示器。
在上面ENIGMA的照片上,我們看見(jiàn)水平面板的下面部分就是鍵盤(pán),一共有26個(gè)鍵,鍵盤(pán)排列接近我們現(xiàn)在使用的計(jì)算機(jī)鍵盤(pán)。為了使消息盡量地短和更難以破譯,空格和標(biāo)點(diǎn)符號(hào)都被省略。在示意圖中我們只畫(huà)了六個(gè)鍵。實(shí)物照片中,鍵盤(pán)上方就是顯示器,它由標(biāo)示了同樣字母的26個(gè)小燈組成,當(dāng)鍵盤(pán)上的某個(gè)鍵被按下時(shí),和此字母被加密后的密文相對(duì)應(yīng)的小燈就在顯示器上亮起來(lái)。同樣地,在示意圖上我們只畫(huà)了六個(gè)小燈。在顯示器的上方是三個(gè)轉(zhuǎn)子,它們的主要部分隱藏在面板之下,在示意圖中我們暫時(shí)只畫(huà)了一個(gè)轉(zhuǎn)子。
鍵盤(pán)、轉(zhuǎn)子和顯示器由電線相連,轉(zhuǎn)子本身也集成了6條線路(在實(shí)物中是26條),把鍵盤(pán)的信號(hào)對(duì)應(yīng)到顯示器不同的小燈上去。在示意圖中我們可以看到,如果按下a鍵,那么燈B就會(huì)亮,這意味著a被加密成了B。同樣地我們看到,b被加密成了A,c被加密成了D,d被加密成了F,e被加密成了E,f被加密成了C。于是如果我們?cè)阪I盤(pán)上依次鍵入cafe(咖啡),顯示器上就會(huì)依次顯示DBCE。這是最簡(jiǎn)單的加密方法之一,把每一個(gè)字母都按一一對(duì)應(yīng)的方法替換為另一個(gè)字母,這樣的加密方式叫做“簡(jiǎn)單替換密碼”。
簡(jiǎn)單替換密碼在歷史上很早就出現(xiàn)了。著名的“凱撒法”就是一種簡(jiǎn)單替換法,它把每個(gè)字母和它在字母表中后若干個(gè)位置中的那個(gè)字母相對(duì)應(yīng)。比如說(shuō)我們?nèi)『笕齻€(gè)位置,那么字母的一一對(duì)應(yīng)就如下表所示:
明碼字母表:abcdefghijklmnopqrstuvwxyz
密碼字母表:DEFGHIJKLMNOPQRSTUVWXYZABC
于是我們就可以從明文得到密文:(veni, vidi, vici,“我來(lái),我見(jiàn),我征服”是儒勒·凱撒征服本都王法那西斯后向羅馬元老院宣告的名言)
明文:veni, vidi, vici
密文:YHAL, YLGL, YLFL
很明顯,這種簡(jiǎn)單的方法只有26種可能性,不足以實(shí)際應(yīng)用。一般上是規(guī)定一個(gè)比較隨意的一一對(duì)應(yīng),比如
明碼字母表:abcdefghijklmnopqrstuvwxyz
密碼字母表:JQKLZNDOWECPAHRBSMYITUGVXF
甚至可以自己定義一個(gè)密碼字母圖形而不采用拉丁字母。但是用這種方法所得到的密文還是相當(dāng)容易被破解的。至遲在公元九世紀(jì),阿拉伯的密碼破譯專家就已經(jīng)嫻熟地掌握了用統(tǒng)計(jì)字母出現(xiàn)頻率的方法來(lái)?yè)羝坪?jiǎn)單替換密碼。破解的原理很簡(jiǎn)單:在每種拼音文字語(yǔ)言中,每個(gè)字母出現(xiàn)的頻率并不相同,比如說(shuō)在英語(yǔ)中,e出現(xiàn)的次數(shù)就要大大高于其他字母。所以如果取得了足夠多的密文,通過(guò)統(tǒng)計(jì)每個(gè)字母出現(xiàn)的頻率,我們就可以猜出密碼中的一個(gè)字母對(duì)應(yīng)于明碼中哪個(gè)字母(當(dāng)然還要通過(guò)揣摩上下文等基本密碼破譯手段)。柯南·道爾在他著名的福爾摩斯探案集中《跳舞的人》里詳細(xì)敘述了福爾摩斯使用頻率統(tǒng)計(jì)法破譯跳舞人形密碼的過(guò)程。所以如果轉(zhuǎn)子的作用僅僅是把一個(gè)字母換成另一個(gè)字母,那就沒(méi)有太大的意思了。但是大家可能已經(jīng)猜出來(lái)了,所謂的“轉(zhuǎn)子”,它會(huì)轉(zhuǎn)動(dòng)!這就是謝爾比烏斯關(guān)于ENIGMA的最重要的設(shè)計(jì)——當(dāng)鍵盤(pán)上一個(gè)鍵被按下時(shí),相應(yīng)的密文在顯示器上顯示,然后轉(zhuǎn)子的方向就自動(dòng)地轉(zhuǎn)動(dòng)一個(gè)字母的位置(在示意圖中就是轉(zhuǎn)動(dòng)1/6圈,而在實(shí)際中轉(zhuǎn)動(dòng)1/26圈)。下面的示意圖表示了連續(xù)鍵入3個(gè)b的情況:當(dāng)?shù)谝淮捂I入b時(shí),信號(hào)通過(guò)轉(zhuǎn)子中的連線,燈A亮起來(lái),放開(kāi)鍵后,轉(zhuǎn)子轉(zhuǎn)動(dòng)一格,各字母所對(duì)應(yīng)的密碼就改變了;第二次鍵入b時(shí),它所對(duì)應(yīng)的字母就變成了C;同樣地,第三次鍵入b時(shí),燈E閃亮。
照片左方是一個(gè)完整的轉(zhuǎn)子,右方是轉(zhuǎn)子的分解,我們可以看到安裝在轉(zhuǎn)子中的電線。
這里我們看到了ENIGMA加密的關(guān)鍵:這不是一種簡(jiǎn)單替換密碼。同一個(gè)字母b在明文的不同位置時(shí),可以被不同的字母替換,而密文中不同位置的同一個(gè)字母,可以代表明文中的不同字母,頻率分析法在這里就沒(méi)有用武之地了。這種加密方式被稱為“復(fù)式替換密碼”。
但是我們看到,如果連續(xù)鍵入6個(gè)字母(實(shí)物中26個(gè)字母),轉(zhuǎn)子就會(huì)整整轉(zhuǎn)一圈,回到原始的方向上,這時(shí)編碼就和最初重復(fù)了。而在加密過(guò)程中,重復(fù)的現(xiàn)象是很危險(xiǎn)的,這可以使試圖破譯密碼的人看見(jiàn)規(guī)律性的東西。于是謝爾比烏斯在機(jī)器上又加了一個(gè)轉(zhuǎn)子。當(dāng)?shù)谝粋€(gè)轉(zhuǎn)子轉(zhuǎn)動(dòng)整整一圈以后,它上面有一個(gè)齒撥動(dòng)第二個(gè)轉(zhuǎn)子,使得它的方向轉(zhuǎn)動(dòng)一個(gè)字母的位置。看下面的示意圖(為了簡(jiǎn)單起見(jiàn),現(xiàn)在我們將它表示為平面形式):這里(a)圖中我們假設(shè)第一個(gè)轉(zhuǎn)子(左邊的那個(gè))已經(jīng)整整轉(zhuǎn)了一圈,按b鍵時(shí)顯示器上D燈亮;當(dāng)放開(kāi)b鍵時(shí)第一個(gè)轉(zhuǎn)子上的齒也帶動(dòng)第二個(gè)轉(zhuǎn)子同時(shí)轉(zhuǎn)動(dòng)一格,于是(b)圖中第二次鍵入b時(shí),加密的字母為F;而再次放開(kāi)鍵b時(shí),就只有第一個(gè)轉(zhuǎn)子轉(zhuǎn)動(dòng)了,于是(c)圖中第三次鍵入b時(shí),與b相對(duì)應(yīng)的就是字母B。
我們看到用這樣的方法,要6*6=36(實(shí)物中為26*26=676)個(gè)字母后才會(huì)重復(fù)原來(lái)的編碼。而事實(shí)上ENIGMA里有三個(gè)轉(zhuǎn)子(二戰(zhàn)后期德國(guó)海軍用ENIGMA甚至有四個(gè)轉(zhuǎn)子),不重復(fù)的方向個(gè)數(shù)達(dá)到26*26*26=17576個(gè)。
在此基礎(chǔ)上謝爾比烏斯十分巧妙地在三個(gè)轉(zhuǎn)子的一端加上了一個(gè)反射器,而把鍵盤(pán)和顯示器中的相同字母用電線連在一起。反射器和轉(zhuǎn)子一樣,把某一個(gè)字母連在另一個(gè)字母上,但是它并不轉(zhuǎn)動(dòng)。乍一看這么一個(gè)固定的反射器好象沒(méi)什么用處,它并不增加可以使用的編碼數(shù)目,但是把它和解碼聯(lián)系起來(lái)就會(huì)看出這種設(shè)計(jì)的別具匠心了。見(jiàn)下圖:我們看見(jiàn)這里鍵盤(pán)和顯示器中的相同字母由電線連在一起。事實(shí)上那是一個(gè)很巧妙的開(kāi)關(guān),不過(guò)我們并不需要知道它的具體情況。我們只需要知道,當(dāng)一個(gè)鍵被按下時(shí),信號(hào)不是直接從鍵盤(pán)傳到顯示器(要是這樣就沒(méi)有加密了),而是首先通過(guò)三個(gè)轉(zhuǎn)子連成的一條線路,然后經(jīng)過(guò)反射器再回到三個(gè)轉(zhuǎn)子,通過(guò)另一條線路再到達(dá)顯示器上,比如說(shuō)上圖中b鍵被按下時(shí),亮的是D燈。我們看看如果這時(shí)按的不是b鍵而是d鍵,那么信號(hào)恰好按照上面b鍵被按下時(shí)的相反方向通行,最后到達(dá)B燈。換句話說(shuō),在這種設(shè)計(jì)下,反射器雖然沒(méi)有象轉(zhuǎn)子那樣增加可能的不重復(fù)的方向,但是它可以使譯碼的過(guò)程和編碼的過(guò)程完全一樣。
反射器
想象一下要用ENIGMA發(fā)送一條消息。發(fā)信人首先要調(diào)節(jié)三個(gè)轉(zhuǎn)子的方向,使它們處于17576個(gè)方向中的一個(gè)(事實(shí)上轉(zhuǎn)子的初始方向就是密匙,這是收發(fā)雙方必須預(yù)先約定好的),然后依次鍵入明文,并把閃亮的字母依次記下來(lái),然后就可以把加密后的消息用比如電報(bào)的方式發(fā)送出去。當(dāng)收信方收到電文后,使用一臺(tái)相同的ENIGMA,按照原來(lái)的約定,把轉(zhuǎn)子的方向調(diào)整到和發(fā)信方相同的初始方向上,然后依次鍵入收到的密文,并把閃亮的字母依次記下來(lái),就得到了明文。于是加密和解密的過(guò)程就是完全一樣的——這都是反射器起的作用。稍微考慮一下,我們很容易明白,反射器帶來(lái)的一個(gè)副作用就是一個(gè)字母永遠(yuǎn)也不會(huì)被加密成它自己,因?yàn)榉瓷淦髦幸粋€(gè)字母總是被連接到另一個(gè)不同的字母。
安裝在ENIGMA中的反射器和三個(gè)轉(zhuǎn)子
于是轉(zhuǎn)子的初始方向決定了整個(gè)密文的加密方式。如果通訊當(dāng)中有敵人監(jiān)聽(tīng),他會(huì)收到完整的密文,但是由于不知道三個(gè)轉(zhuǎn)子的初始方向,他就不得不一個(gè)個(gè)方向地試驗(yàn)來(lái)找到這個(gè)密匙。問(wèn)題在于17576個(gè)初始方向這個(gè)數(shù)目并不是太大。如果試圖破譯密文的人把轉(zhuǎn)子調(diào)整到某一方向,然后鍵入密文開(kāi)始的一段,看看輸出是否象是有意義的信息。如果不象,那就再試轉(zhuǎn)子的下一個(gè)初始方向……如果試一個(gè)方向大約要一分鐘,而他二十四小時(shí)日夜工作,那么在大約兩星期里就可以找遍轉(zhuǎn)子所有可能的初始方向。如果對(duì)手用許多臺(tái)機(jī)器同時(shí)破譯,那么所需要的時(shí)間就會(huì)大大縮短。這種保密程度是不太足夠的。
當(dāng)然謝爾比烏斯還可以再多加轉(zhuǎn)子,但是我們看見(jiàn)每加一個(gè)轉(zhuǎn)子初始方向的可能性只是乘以了26。尤其是,增加轉(zhuǎn)子會(huì)增加ENIGMA的體積和成本。謝爾比烏斯希望他的加密機(jī)器是便于攜帶的(事實(shí)上它最終的尺寸是34cm*28cm*15cm),而不是一個(gè)具有十幾個(gè)轉(zhuǎn)子的龐然大物。首先他把三個(gè)轉(zhuǎn)子做得可以拆卸下來(lái)互相交換,這樣一來(lái)初始方向的可能性變成了原來(lái)的六倍。假設(shè)三個(gè)轉(zhuǎn)子的編號(hào)為1、2、3,那么它們可以被放成123-132-213-231-312-321六種不同位置,當(dāng)然現(xiàn)在收發(fā)消息的雙方除了要預(yù)先約定轉(zhuǎn)子自身的初始方向,還要約定好這六種排列中的使用一種。
下一步謝爾比烏斯在鍵盤(pán)和第一轉(zhuǎn)子之間增加了一個(gè)連接板。這塊連接板允許使用者用一根連線把某個(gè)字母和另一個(gè)字母連接起來(lái),這樣這個(gè)字母的信號(hào)在進(jìn)入轉(zhuǎn)子之前就會(huì)轉(zhuǎn)變?yōu)榱硪粋€(gè)字母的信號(hào)。這種連線最多可以有六根(后期的ENIGMA具有更多的連線),這樣就可以使6對(duì)字母的信號(hào)互換,其他沒(méi)有插上連線的字母保持不變。在上面ENIGMA的實(shí)物圖里,我們看見(jiàn)這個(gè)連接板處于鍵盤(pán)的下方。當(dāng)然連接板上的連線狀況也是收發(fā)信息的雙方需要預(yù)先約定的。在上面示意圖中,當(dāng)b鍵被按下時(shí),燈C亮。
于是轉(zhuǎn)子自身的初始方向,轉(zhuǎn)子之間的相互位置,以及連接板連線的狀況就組成了所有可能的密匙,讓我們來(lái)算一算一共到底有多少種。
三個(gè)轉(zhuǎn)子不同的方向組成了26*26*26=17576種不同可能性;
三個(gè)轉(zhuǎn)子間不同的相對(duì)位置為6種可能性;
連接板上兩兩交換6對(duì)字母的可能性數(shù)目非常巨大,有100391791500種;
于是一共有17576*6*100391791500,大約為10000000000000000,即一億億種可能性。
只要約定好上面所說(shuō)的密匙,收發(fā)雙方利用ENIGMA就可以十分容易地進(jìn)行加密和解密。但是如果不知道密匙,在這巨大的可能性面前,一一嘗試來(lái)試圖找出密匙是完全沒(méi)有可能的。我們看見(jiàn)連接板對(duì)可能性的增加貢獻(xiàn)最大,那么為什么謝爾比烏斯要那么麻煩地設(shè)計(jì)轉(zhuǎn)子之類的東西呢?原因在于連接板本身其實(shí)就是一個(gè)簡(jiǎn)單替換密碼系統(tǒng),在整個(gè)加密過(guò)程中,連接是固定的,所以單使用它是十分容易用頻率分析法來(lái)破譯的。轉(zhuǎn)子系統(tǒng)雖然提供的可能性不多,但是在加密過(guò)程中它們不停地轉(zhuǎn)動(dòng),使整個(gè)系統(tǒng)變成了復(fù)式替換系統(tǒng),頻率分析法對(duì)它再也無(wú)能為力,與此同時(shí),連接板卻使得可能性數(shù)目大大增加,使得暴力破譯法(即一個(gè)一個(gè)嘗試所有可能性的方法)望而卻步。
1918年謝爾比烏斯申請(qǐng)了ENIGMA的專利。他以為既然自己的發(fā)明能夠提供優(yōu)秀的加密手段,又能擁有極高的加密解密效率,一定能很快就暢銷起來(lái)。他給商業(yè)界提供了一種基本型ENIGMA,又給外交人員提供一種豪華的裝備有打印機(jī)的型號(hào)。但是他似乎搞錯(cuò)了。他的機(jī)器售價(jià)大約相當(dāng)于現(xiàn)在的30000美元(如果訂購(gòu)一千臺(tái)的話每臺(tái)便宜4000美元)。這個(gè)價(jià)錢使得客戶望而卻步。雖然謝爾比烏斯向企業(yè)家們宣稱,如果他們重要的商業(yè)秘密被競(jìng)爭(zhēng)對(duì)手知道了的話,遭到的損失將比ENIGMA的價(jià)格高得多,但是企業(yè)家們還是覺(jué)得他們沒(méi)有能力來(lái)購(gòu)買ENIGMA。謝爾比烏斯的新發(fā)明并沒(méi)有象他預(yù)料的那樣帶來(lái)多少回響。軍隊(duì)方面對(duì)他的發(fā)明也沒(méi)有什么太多的注意。
謝爾比烏斯的失望是可想而知的。但是這方面他不是唯一的人。和他幾乎同時(shí)在另外三個(gè)國(guó)家的三個(gè)發(fā)明家也都獨(dú)立地想到了發(fā)明了使用轉(zhuǎn)子的電氣加密機(jī)的主意。1919年荷蘭發(fā)明家亞歷山大·科赫(Alexander Koch)注冊(cè)了相似的專利,可是卻沒(méi)有能夠使它商業(yè)化,1927年他只好賣掉了他的專利。在瑞典,阿維德·達(dá)姆(Arvid Damm)也獲得了一個(gè)差不多的專利,但是直到1927年他去世時(shí)還是沒(méi)有能找到市場(chǎng)。在美國(guó),愛(ài)德華·赫本(Edward Hebern)發(fā)明了他的“無(wú)線獅身人面”,對(duì)它充滿希望。他用三十八萬(wàn)美元開(kāi)了一個(gè)工廠,卻只賣出價(jià)值一千兩百美元的十來(lái)臺(tái)機(jī)器。1926年在加利福尼亞州赫本被股東起訴,被判有罪。
可是謝爾比烏斯突然時(shí)來(lái)運(yùn)轉(zhuǎn)。英國(guó)政府發(fā)表了兩份關(guān)于一次大戰(zhàn)的文件使得德國(guó)軍隊(duì)開(kāi)始對(duì)他的發(fā)明大感興趣。其中一份是1923年出版的溫斯頓·丘吉爾的著作《世界危機(jī)》,其中有一段提到了英國(guó)和俄國(guó)在軍事方面的合作,指出俄國(guó)人曾經(jīng)成功地破譯了某些德軍密碼,而使用這些成果,英國(guó)的40局(英國(guó)政府負(fù)責(zé)破譯密碼的間諜機(jī)構(gòu))能夠系統(tǒng)性地取得德軍的加密情報(bào)。德國(guó)方面幾乎是在十年之后才知道這一真相。第二份文件同樣是在1923年由皇家海軍發(fā)表的關(guān)于第一次世界大戰(zhàn)的官方報(bào)告,其中講述了在戰(zhàn)時(shí)盟軍方面截獲(并且破譯)德軍通訊所帶來(lái)的決定性的優(yōu)勢(shì)。這些文件構(gòu)成了對(duì)德國(guó)情報(bào)部門的隱性指控,他們最終承認(rèn)“由于無(wú)線電通訊被英方截獲和破譯,德國(guó)海軍指揮部門就好象是把自己的牌明攤在桌子上和英國(guó)海軍較量。”
為了避免再一次陷入這樣的處境,德軍對(duì)謝爾比烏斯的發(fā)明進(jìn)行了可行性研究,最終得出結(jié)論:必須裝備這種加密機(jī)器。從1925年開(kāi)始,謝爾比烏斯的工廠開(kāi)始系列化生產(chǎn)ENIGMA,次年德軍開(kāi)始使用這些機(jī)器。接著政府機(jī)關(guān),比如說(shuō)國(guó)營(yíng)企業(yè),鐵路部門等也開(kāi)始使用ENIGMA。這些新型號(hào)的機(jī)器和原來(lái)已經(jīng)賣出的一些商用型號(hào)不同,所以商用型機(jī)器的使用者就不知道政府和軍用型的機(jī)器具體是如何運(yùn)作的。
在接下來(lái)的十年中,德國(guó)軍隊(duì)大約裝備了三萬(wàn)臺(tái)ENIGMA。謝爾比烏斯的發(fā)明使德國(guó)具有了最可靠的加密系統(tǒng)。在第二次世界大戰(zhàn)開(kāi)始時(shí),德軍通訊的保密性在當(dāng)時(shí)世界上無(wú)與倫比。似乎可以這樣說(shuō),ENIGMA在納粹德國(guó)二戰(zhàn)初期的勝利中起到的作用是決定性的,但是我們也會(huì)看到,它在后來(lái)希特勒的滅亡中扮演了重要的角色。
但是謝爾比烏斯沒(méi)有能夠看見(jiàn)所有這一切。有一次在套馬時(shí),他被摔到了一面墻上,于1929年5月13日死于內(nèi)臟損傷。
二、弱點(diǎn)(上)
在一次大戰(zhàn)其間,英國(guó)的情報(bào)機(jī)關(guān)非常嚴(yán)密地監(jiān)控了德國(guó)方面的通訊,丘吉爾的書(shū)和英國(guó)海軍部的報(bào)告中透露的消息只不過(guò)是一鱗半爪。事實(shí)上,將美國(guó)引入一次大戰(zhàn)的齊末曼(Arthur Zimmermann,1916年起任德國(guó)外交部長(zhǎng))電報(bào)就是由著名的英國(guó)40局破譯的。在此電報(bào)中德國(guó)密謀墨西哥對(duì)美國(guó)發(fā)動(dòng)攻擊,這使得美國(guó)最終決定對(duì)德宣戰(zhàn)。但是英國(guó)人的障眼法用得如此之好,使得德國(guó)人一直以為是墨西哥方面泄漏了秘密。
戰(zhàn)后英國(guó)仍舊保持著對(duì)德國(guó)通訊的監(jiān)聽(tīng),并保持著很高的破譯率。但是從1926年開(kāi)始,他們開(kāi)始收到一些不知所云的信息——ENIGMA開(kāi)始投入使用。德國(guó)方面使用的ENIGMA越多,40局破解不了的電文就越多。美國(guó)人和法國(guó)人碰到的情況也一樣,他們對(duì)ENIGMA一籌莫展。德國(guó)從此擁有了世界上最為可靠的通訊保密系統(tǒng)。
一次大戰(zhàn)的戰(zhàn)勝國(guó)很快就放棄了破譯這種新型密碼的努力。也許是出于自信,在他們看來(lái),在凡爾賽條約約束下的德國(guó)已經(jīng)造成不了什么危害。由于看不到破譯德國(guó)密碼的必要性,盟國(guó)的密碼分析專家懶散下來(lái),干這一行的頭腦似乎也變得越來(lái)越平庸。在科學(xué)的其他領(lǐng)域,我們說(shuō)失敗乃成功之母;而在密碼分析領(lǐng)域,我們則應(yīng)該說(shuō)恐懼乃成功之母。普法戰(zhàn)爭(zhēng)造就了法國(guó)一代優(yōu)秀的密碼分析專家,而一次大戰(zhàn)中英國(guó)能夠破譯德國(guó)的通訊密碼,對(duì)失敗的極大恐懼產(chǎn)生的動(dòng)力無(wú)疑起了巨大的作用。
歷史又一次重演。因?yàn)樵跉W洲有一個(gè)國(guó)家對(duì)德國(guó)抱有這種極大的恐懼——這就是在一戰(zhàn)灰燼中浴火重生的新獨(dú)立的波蘭。在她的西面,是對(duì)失去舊日領(lǐng)土耿耿于懷的德國(guó),而在東面,則是要輸出革命的蘇維埃聯(lián)盟。對(duì)于波蘭來(lái)說(shuō),關(guān)于這兩個(gè)強(qiáng)鄰的情報(bào)是有關(guān)生死存亡的大事,波蘭的密碼分析專家不可能象他們的英美法同事那樣愛(ài)干不干——他們必須知道這兩個(gè)大國(guó)都在想什么。在此情況下波蘭設(shè)立了自己的破譯機(jī)構(gòu),波軍總參二局密碼處(Biuro Szyfrow)。密碼處的高效率在1919-1920年波蘇戰(zhàn)爭(zhēng)中明顯地體現(xiàn)出來(lái),軍事上屢嘗敗績(jī)的波蘭在密碼分析方面卻一枝獨(dú)秀。在蘇軍兵臨華沙城下的情況下,1920年一年他們破譯了大約400條蘇軍信息。在對(duì)西面德國(guó)的通訊的監(jiān)控方面,波蘭人也保持了同樣的高效率——直到1926年ENIGMA登場(chǎng)。
波蘭人想方設(shè)法搞到了一臺(tái)商用的ENIGMA機(jī)器,大致弄清楚了它的工作原理。但是軍用型的轉(zhuǎn)子內(nèi)部布線和商用型的完全不同,沒(méi)有這個(gè)情報(bào),想要破譯德軍的電報(bào)可謂難如登天。波蘭人使出了渾身的解數(shù),甚至病急亂投醫(yī),請(qǐng)了個(gè)據(jù)說(shuō)有天眼通功能的“大師”來(lái)遙感德國(guó)人機(jī)器里轉(zhuǎn)子的線路圖——當(dāng)然和所有的“大師”一樣,一遇上這種硬碰硬的事情,神乎其神的天眼通也不靈了。
這時(shí)事情有了轉(zhuǎn)機(jī)。
漢斯—提羅·施密特(Hans-Thilo Schimdt) 于1888年出生在柏林的一個(gè)中產(chǎn)階級(jí)家庭里,一次大戰(zhàn)時(shí)當(dāng)過(guò)兵打過(guò)仗。根據(jù)凡爾賽條約,戰(zhàn)敗后的德國(guó)進(jìn)行了裁軍,施密特就在被裁之列。退了伍后他開(kāi)了個(gè)小肥皂廠,心想下海從商賺點(diǎn)錢。結(jié)果戰(zhàn)后的經(jīng)濟(jì)蕭條和通貨膨脹讓他破了產(chǎn)。此時(shí)他不名一文,卻還有一個(gè)家要養(yǎng)。
漢斯-提羅·施密特
和他潦倒的處境相反,他的大哥魯?shù)婪?Rudolph)在戰(zhàn)后春風(fēng)得意。和漢斯—提羅一樣都是一次大戰(zhàn)的老兵,可魯?shù)婪驔](méi)有被裁減,相反卻一路高升。到了二十年代,他當(dāng)上了德國(guó)通訊部門的頭頭,就是他正式命令在軍隊(duì)中使用ENIGMA。和大哥的成功比起來(lái),漢斯—提羅自然覺(jué)得臉上無(wú)光。
可是破產(chǎn)后漢斯-提羅不得不放下自尊心來(lái)去見(jiàn)大哥,求他在政府部門替自己謀個(gè)職位。魯?shù)婪蚪o他的二弟在密碼處(Chiffrierstelle)找了個(gè)位置。這是專門負(fù)責(zé)德國(guó)密碼通訊的機(jī)構(gòu)——ENIGMA的指揮中心,擁有大量絕密情報(bào)。漢斯—提羅把一家留在巴伐利亞,因?yàn)樵谀抢锷钯M(fèi)用相對(duì)較低,勉強(qiáng)可以度日。就這樣他一個(gè)人孤零零地搬到了柏林,拿著可憐的薪水,對(duì)大哥又羨又妒,對(duì)拋棄他的社會(huì)深惡痛絕。
接下來(lái)的事情可想而知。如果把自己可以輕松搞到的絕密情報(bào)出賣給外國(guó)情報(bào)機(jī)構(gòu),一方面可以賺取不少自己緊缺的錢,一方面可以以此報(bào)復(fù)這個(gè)拋棄了他的國(guó)家。1931年11月8日,施密特化名為艾斯克(Asche)和法國(guó)情報(bào)人員在比利時(shí)接頭,在旅館里他向法國(guó)情報(bào)人員提供了兩份珍貴的有關(guān)ENIGMA操作和轉(zhuǎn)子內(nèi)部線路的資料,得到一萬(wàn)馬克。靠這兩份資料,盟國(guó)就完全可以復(fù)制出一臺(tái)軍用的ENIGMA機(jī)。
不過(guò)事情并不象想象的那么簡(jiǎn)單。要破譯ENIGMA密碼,靠這些情報(bào)還遠(yuǎn)遠(yuǎn)不夠。德軍的一份對(duì)ENIGMA的評(píng)估寫(xiě)道:“即使敵人獲取了一臺(tái)同樣的機(jī)器,它仍舊能夠保證其加密系統(tǒng)的保密性。”就算有了一臺(tái)ENIGMA,如果不知道密鑰(在本文的第一部分里我們知道所謂的密鑰,就是轉(zhuǎn)子自身的初始方向,轉(zhuǎn)子之間的相互位置,以及連接板連線的狀況)的話,想破譯電文,就要嘗試數(shù)以億億計(jì)的組合,這是不現(xiàn)實(shí)的。
“加密系統(tǒng)的保密性只應(yīng)建立在對(duì)密鑰的保密上,不應(yīng)該取決于加密算法的保密。”這是密碼學(xué)中的金科玉律。加密算法可以直接是某個(gè)抽象的數(shù)學(xué)算法,比如現(xiàn)在通用的DEA和RSA算法,也可以是實(shí)現(xiàn)某個(gè)算法的象ENIGMA這樣的加密機(jī)械或?qū)iT用于加密的電子芯片等加密器件,還可以是經(jīng)過(guò)編譯的在計(jì)算機(jī)上可執(zhí)行的加密程序,比如現(xiàn)在在互聯(lián)網(wǎng)通信中被廣泛使用的PGP(Pretty Good Privacy)。因?yàn)閷?duì)加密算法的保密是困難的。對(duì)手可以用竊取、購(gòu)買的方法來(lái)取得算法、加密器件或者程序。如果得到的是加密器件或者程序,可以對(duì)它們進(jìn)行反向工程而最終獲得加密算法。如果只是密鑰失密,那么失密的只是和此密鑰有關(guān)的情報(bào),日后通訊的保密性可以通過(guò)更換密鑰來(lái)補(bǔ)救;但如果是加密算法失密,而整個(gè)系統(tǒng)的保密性又建立在算法的秘密性上,那么所有由此算法加密的信息就會(huì)全部暴露。更糟糕是,為了使以后的通訊保持秘密,必須完全更換加密算法,這意味著更新加密器械或更換程序。比起簡(jiǎn)單地更換密鑰,這要耗費(fèi)大量財(cái)富和管理資源(大規(guī)模更換加密器械和程序會(huì)使對(duì)手更有機(jī)會(huì)乘虛而入!)。
如此明顯的道理,卻時(shí)常有人不愿遵守,把加密系統(tǒng)的保密性建立在對(duì)加密算法的保密上,為此吃夠了苦頭。最著名的例子莫過(guò)于DVD的加密算法(DVD Movie encryption scheme)。信息和密碼專家通過(guò)對(duì)DVD驅(qū)動(dòng)器解密芯片和解密軟件的分析得到了它的加密和解密算法。以此為基礎(chǔ)有人編寫(xiě)了一個(gè)破解DVD加密算法的程序DeCSS。雖然在2000年1月,美國(guó)法官劉易斯·卡普蘭(Lewis Laplan)裁定在互聯(lián)網(wǎng)上傳播DeCSS為非法,但是這種行政的強(qiáng)制手段似乎毫不奏效。反對(duì)裁決的一方以保護(hù)言論自由的美國(guó)憲法第一修正案的來(lái)反駁,卡普蘭不得不附加了“計(jì)算機(jī)源程序不屬言論”的附加裁定。
但這個(gè)附加裁定似乎也沒(méi)有什么太大的用處——雖然不能直接傳播DeCSS的源程序,如果愿意的話,人們還是可以用“源程序的第一個(gè)字母是A,第二個(gè)字母是=”這類卡普蘭法官絕不能歸到“非言論”一類去的方法來(lái)描述。在 http://www.cs.cmu.edu/~dst/DeCSS/Gallery/ 你可以找到十幾種怪里怪氣地“不違法”地傳播DeCSS的方法,其中包括一首詩(shī),一件印著源程序的T恤衫, 一段朗誦源程序的錄音和三張顯示著源程序的GIF圖片——法官大人下令禁止的是源程序,不是它的圖片,不是嗎?
更有甚者,有人在網(wǎng)上公布了一個(gè)素?cái)?shù),如果把這個(gè)素?cái)?shù)寫(xiě)成十六進(jìn)制并記錄成一個(gè)文件,我們就可以拿解能夠解gzip格式的壓縮軟件(比如說(shuō)WinZip)來(lái)將它解成DeCSS。如果卡普蘭法官下令禁止這個(gè)素?cái)?shù)的話,它很有可能成為有史以來(lái)第一個(gè)“非法”的素?cái)?shù)。你可以在 http://www.utm.edu/research/primes/curios/48565...29443.html 看到這個(gè)素?cái)?shù)。
在上面這個(gè)例子里我們甚至可以看到,在此時(shí)更換加密算法已經(jīng)變得實(shí)際上不可能,因?yàn)镈VD作為標(biāo)準(zhǔn)已經(jīng)被固定下來(lái),于是它的加密算法也就從此形同虛設(shè)。
正如前面所言,ENIGMA的設(shè)計(jì)使得搞到了它的秘密的法國(guó)人也一籌莫展。法國(guó)密碼分析人員斷定這種密碼是不可破譯的。他們甚至根本就懶得根據(jù)搞到的情報(bào)去復(fù)制一臺(tái)ENIGMA。
在十年前法國(guó)和波蘭簽訂過(guò)一個(gè)軍事合作協(xié)議。波蘭方面一直堅(jiān)持要取得所有關(guān)于ENIGMA的情報(bào)。既然看來(lái)自己拿著也沒(méi)什么用,法國(guó)人就把從施密特那里買來(lái)的情報(bào)交給了波蘭人。和法國(guó)人不同,破譯ENIGMA對(duì)波蘭來(lái)說(shuō)至關(guān)重要,就算死馬也要當(dāng)作活馬醫(yī)。現(xiàn)在他們總算能邁出最初的一步了。
在施密特提供的關(guān)于ENIGMA的情報(bào)中,不僅有關(guān)于ENIGMA構(gòu)造和轉(zhuǎn)子內(nèi)部連線的描述,還有德國(guó)人使用ENIGMA進(jìn)行編碼的具體規(guī)定。每個(gè)月每臺(tái)ENIGMA機(jī)的操作員都會(huì)收到一本當(dāng)月的新密鑰,上面有此月每天使用的密鑰。比如說(shuō),第一天的密鑰可以是這個(gè)樣子:1.連接板的連接:A/L-P/R-T/D-B/W-K/F-O/Y2.轉(zhuǎn)子的順序:2,3,13.轉(zhuǎn)子的初始方向:Q-C-W
當(dāng)操作員要發(fā)送某條消息時(shí),他首先從密鑰本中查到以上信息。然后按照上面的規(guī)定,首先用連線把連接板上的A字母和L字母,P字母和R字母……連接起來(lái);然后把2號(hào)轉(zhuǎn)子放在ENIGMA的第一個(gè)轉(zhuǎn)子位置上,把3號(hào)轉(zhuǎn)子放在第二個(gè)位置上,把1號(hào)轉(zhuǎn)子放在第三個(gè)位置上;最后,他調(diào)整轉(zhuǎn)子的方向(從照片上可以看到每個(gè)轉(zhuǎn)子的邊上都刻著一圈字母用來(lái)顯示轉(zhuǎn)子所處的方向),使得三個(gè)轉(zhuǎn)子上的字母Q、C和W分別朝上。在接收信息的另一方,操作員也進(jìn)行同樣的準(zhǔn)備(他也有一本同樣的密鑰本),就可以進(jìn)行收信解碼的工作了。
模擬ENIGMA的Java Applet。你要打開(kāi)WEB瀏覽器的Java功能才能使用。這里各部件的位置和真正的ENIGMA機(jī)差不多,最上方為三個(gè)轉(zhuǎn)子,方向由0到25的數(shù)字表示,其下為顯示器,再往下為鍵盤(pán),最后是連接板(你可以用鼠標(biāo)把兩個(gè)字母連起來(lái))。在最下方你可以在九個(gè)備用轉(zhuǎn)子里選三個(gè)裝在ENIGMA上(這比當(dāng)初德國(guó)人的選擇要多,最開(kāi)始他們僅有三個(gè)備用轉(zhuǎn)子,后來(lái)增加到五個(gè)),也可以在那里選擇轉(zhuǎn)子的初始方向。本程序由Russell Schwager編寫(xiě),源碼可在 http://hops.cs.jhu.edu/~russell/classes/enigma/enigma.html 取得
調(diào)整好ENIGMA,現(xiàn)在操作員可以開(kāi)始對(duì)明文加密了。但是我們看到每天只有一個(gè)密鑰,如果這一天的幾百封電報(bào)都以這個(gè)密鑰加密發(fā)送的話,暗中截聽(tīng)信號(hào)的敵方就會(huì)取得大量的以同一密鑰加密的信息,這對(duì)保密工作來(lái)說(shuō)不是個(gè)好兆頭。我們記得在簡(jiǎn)單替換密碼的情況下,如果密碼分析專家能得到大量的密文,就可以使用統(tǒng)計(jì)方法將其破解。
盡管不知道對(duì)ENIGMA是否可以采用類似的統(tǒng)計(jì)方法,德國(guó)人還是留了個(gè)心眼。他們決定在按當(dāng)日密鑰調(diào)整好ENIGMA機(jī)后并不直接加密要發(fā)送的明文。相反地,首先發(fā)送的是一個(gè)新的密鑰。連接板的連線順序和轉(zhuǎn)子的順序并不改變,和當(dāng)日通用的密鑰相同;想反地,轉(zhuǎn)子的初始方向?qū)⒈桓淖儭2僮鲉T首先按照上面所說(shuō)的方法按當(dāng)日密鑰調(diào)整好ENIGMA,然后隨機(jī)地選擇三個(gè)字母,比如說(shuō)PGH。他把PGH在鍵盤(pán)上連打兩遍,加密為比如說(shuō)KIVBJE(注意到兩次PGH被加密為不同的形式,第一次KIV,第二次BJE,這正是ENIGMA的特點(diǎn),它是一種復(fù)式替換密碼)。然后他把KIVBJE記在電文的最前面。接著他重新調(diào)整三個(gè)轉(zhuǎn)子的初始方向到PGH,然后才正式對(duì)明文加密。
用這種方法每一條電文都有屬于自己的三個(gè)表示轉(zhuǎn)子初始方向的密鑰。把密鑰輸入兩遍是為了防止偶然的發(fā)報(bào)或者接收錯(cuò)誤,起著糾錯(cuò)的作用。收?qǐng)?bào)一方在按當(dāng)日密鑰調(diào)整好ENIGMA機(jī)后,先輸入密文的頭六個(gè)字母KIVBJE,解密得到PGHPGH,于是確認(rèn)沒(méi)有錯(cuò)誤。然后把三個(gè)轉(zhuǎn)子的初始方向調(diào)整到PGH,接著就可以正式解密其余的密文了。
如果不使用對(duì)每條電文都不同的密鑰,那么每天很可能總共會(huì)有幾千條電文也就是幾百萬(wàn)個(gè)字母的消息以同一個(gè)密鑰加密。而采用每條電文都有自己的密鑰這個(gè)方法后,當(dāng)日密鑰所加密的就是很少的幾萬(wàn)個(gè)字母,而且這些字母都是隨機(jī)選取,和有意義的電文性質(zhì)不同,不可能用統(tǒng)計(jì)方法破譯。
乍一看來(lái)這種方法無(wú)懈可擊。可是波蘭人鐵了心,必須在這厚厚的護(hù)甲上撕出一個(gè)口子來(lái)。
在此以前,密碼分析人員通常是語(yǔ)言天才,精通對(duì)語(yǔ)言方面特征的分析。但是既然ENIGMA是一種機(jī)械加密裝置,波蘭總參二局密碼處就考慮到,是否一個(gè)具有科學(xué)頭腦的人更適合于它的破譯工作呢?
1929年1月,波茲南大學(xué)數(shù)學(xué)系主任茲德齊斯羅·克里格羅夫斯基(Zdzislaw Krygowski)教授開(kāi)列了一張系里最優(yōu)秀的數(shù)學(xué)家的名單,在這張名單上,有以后被稱為密碼研究“波蘭三杰”的馬里安·雷杰夫斯基(Marian Rejewski),杰爾茲·羅佐基(Jerzy Rozycki)和亨里克·佐加爾斯基(Henryk Zygalski)。波茲南大學(xué)并非當(dāng)時(shí)波蘭最有名的大學(xué),但是它地處波蘭南部,那里直到1918年還是德國(guó)領(lǐng)土,所以所有這些數(shù)學(xué)家都能講流利的德語(yǔ)。
馬里安·雷杰夫斯基
在三位被密碼局招聘的數(shù)學(xué)家中,雷杰夫斯基的表現(xiàn)最為出色。當(dāng)年他是個(gè)架著一副近視眼鏡,臉上略帶羞色的二十三歲小伙子。他的在大學(xué)里學(xué)的專業(yè)是統(tǒng)計(jì)學(xué),打算以后去干保險(xiǎn)業(yè)行當(dāng),也許在此之前他從未想到會(huì)在密碼分析方面大展身手。在經(jīng)過(guò)短期的密碼分析訓(xùn)練后,他把所有的精力都投入到破解ENIGMA的工作中去。
雷杰夫斯基深知“重復(fù)乃密碼大敵”。在ENIGMA密碼中,最明顯的重復(fù)莫過(guò)于每條電文最開(kāi)始的那六個(gè)字母——它由三個(gè)字母的密鑰重復(fù)兩次加密而成。德國(guó)人沒(méi)有想到這里會(huì)是看似固若金湯的ENIGMA防線的弱點(diǎn)。
二、弱點(diǎn)(下)
德方每封密文最開(kāi)始的六個(gè)字母,是此信密鑰的三個(gè)字母重復(fù)兩遍,由當(dāng)日密鑰加密而成。比如說(shuō)這封信的密鑰是ULJ(這是開(kāi)始加密明文時(shí)由操作員臨時(shí)隨機(jī)選取的),那么操作員首先用當(dāng)日通用的密鑰加密ULJULJ,得到六個(gè)字母的加密后序列,比如說(shuō)PEFNWZ,然后再用ULJ來(lái)作為密鑰加密正文,最后把PEFNWZ放在加密后的正文前,一起用電報(bào)發(fā)給收信方。
雷杰夫斯基每天都會(huì)收到一大堆截獲的德國(guó)電報(bào),所以一天中可以得到許多這樣的六個(gè)字母串,它們都由同一個(gè)當(dāng)日密鑰加密而成。比如說(shuō)他收到四個(gè)電報(bào),其中每封電報(bào)的開(kāi)頭的六個(gè)字母為
1 2 3 4 5 6
第一封電報(bào):L O K R G M
第二封電報(bào):M V T X Z E
第三封電報(bào):J K T M P E
第四封電報(bào):D V Y P Z X對(duì)于每封電報(bào)來(lái)說(shuō),它的第一個(gè)字母和第四個(gè)字母都是由同一個(gè)字母加密而來(lái),同樣地第二和第五個(gè)字母以及第三和第六個(gè)字母也是分別由同一個(gè)字母加密而來(lái)。比如說(shuō)在第一封電報(bào)中,字母L和R是由同一字母加密而來(lái)。這個(gè)字母之所以先被加密成L,然后又被加密成了R,是因?yàn)樵诖似陂g轉(zhuǎn)子向前轉(zhuǎn)動(dòng)了三個(gè)字母的位置。
從L和R是由同一個(gè)字母加密而來(lái)這點(diǎn),雷杰夫斯基就有了判斷轉(zhuǎn)子的初始位置的一條線索。當(dāng)轉(zhuǎn)子處于這個(gè)初始位置時(shí),字母L和R在某種意義下具有緊密的聯(lián)系。每天截獲的大量電文能夠給出許多這樣的緊密聯(lián)系,從而使雷杰夫斯基最終能夠判斷出轉(zhuǎn)子的初始位置。在上面的第二、三、四封電報(bào)中,我們看見(jiàn)M和X,J和M,D和P都有這種聯(lián)系:
第一個(gè)字母:ABCDEFGHIJKLMNOPQRSTUVWXYZ
第四個(gè)字母:___P_____M_RX_____________
如果雷杰夫斯基每天可以得到充分多的電報(bào),他就可以把上面這個(gè)關(guān)系表補(bǔ)充完整:
第一個(gè)字母:ABCDEFGHIJKLMNOPQRSTUVWXYZ
第四個(gè)字母:FQHPLWOGBMVRXUYCZITNJEASDK光憑這個(gè)對(duì)應(yīng)表格,雷杰夫斯基還是沒(méi)辦法知道當(dāng)天的通用密鑰。可是他知道,這個(gè)表格是由當(dāng)天的通用密鑰決定的,而且只由它決定。如果密鑰不同,那么這個(gè)表格也應(yīng)該不同——那么,有沒(méi)有一種辦法可以從這個(gè)對(duì)應(yīng)表來(lái)推斷出當(dāng)日的通用密鑰呢?雷杰夫斯基對(duì)這樣的表格進(jìn)行了仔細(xì)觀察。從字母A開(kāi)始看,它被對(duì)應(yīng)成F;而F在此表中又被對(duì)應(yīng)成W,接下去它被對(duì)應(yīng)成A,我們又回到了最先開(kāi)始的字母,于是就有了一個(gè)循環(huán)的字母圈A→F→W→A。如果考慮所有的字母,雷杰夫斯基就能寫(xiě)出關(guān)于此對(duì)應(yīng)表的所有的循環(huán)圈:A→F→W→A
3個(gè)字母的循環(huán)圈B→Q→Z→K→V→E→L→R→I→B
9個(gè)字母的循環(huán)圈C→H→G→O→Y→D→P→C
7個(gè)字母的循環(huán)圈J→M→X→S→T→N→U→J
7個(gè)字母的循環(huán)圈這里我們只是考慮了第一和第四個(gè)字母形成的對(duì)應(yīng)表。同樣地對(duì)第二和第五、第三和第六個(gè)字母形成的對(duì)應(yīng)表,我們也可以寫(xiě)出類似的字母循環(huán)圈。由于每天的密鑰都不同,雷杰夫斯基得到的循環(huán)圈也各不相同。
雷杰夫斯基觀察到,這些循環(huán)圈長(zhǎng)短不一。這使他有了一個(gè)重要的靈感:雖然這些循環(huán)圈是由當(dāng)日密鑰,也就是轉(zhuǎn)子的位置,它們的初始方向以及連接板上字母置換造成的,但是每組循環(huán)圈的個(gè)數(shù)和每個(gè)循環(huán)圈的長(zhǎng)度,卻僅僅是由轉(zhuǎn)子的位置和它們的初始方向決定的,和連接板上字母交換的情況無(wú)關(guān)!
假定在上面這個(gè)例子中,原來(lái)在接線板上字母S和G由一根連線相連。現(xiàn)在轉(zhuǎn)子的位置和它們的初始方向保持不變,去掉這根連線而將字母T和K連在一起,那么第一和第四個(gè)字母的對(duì)應(yīng)表就會(huì)變成
第一個(gè)字母:ABCDEFGHIJKLMNOPQRSTUVWXYZ
第四個(gè)字母:FQHPLWKSBMNRXUYCZIOVJEAGDT(原來(lái)的G對(duì)應(yīng)O,S對(duì)應(yīng)T,去掉G和S的連線后,G就對(duì)應(yīng)T,但是T被新的連線接到了K,所以G最終對(duì)應(yīng)著K。其他受影響的字母還有H、K、S、T、X、Z)。而循環(huán)圈表就變成了:A→F→W→A
3個(gè)字母的循環(huán)圈B→Q→Z→T→V→E→L→R→I→B
9個(gè)字母的循環(huán)圈C→H→S→O→Y→D→P→C
7個(gè)字母的循環(huán)圈J→M→X→G→K→N→U→J
7個(gè)字母的循環(huán)圈某些循環(huán)圈中的字母變了,但是循環(huán)圈的數(shù)目仍舊是四個(gè),每個(gè)循環(huán)圈的長(zhǎng)度也沒(méi)有改變。應(yīng)用置換變換的理論,雷杰夫斯基可以從數(shù)學(xué)上嚴(yán)格證明這一點(diǎn)對(duì)于任何的連線變化都是成立的。
這是一個(gè)非常重大的進(jìn)展。我們知道,如果要強(qiáng)行試遍所有的密鑰來(lái)破解密文,那得要試一億億個(gè)密鑰之多;但是ENIGMA的數(shù)量巨大的密鑰主要是由連接板來(lái)提供的,如果只考慮轉(zhuǎn)子的位置和它們的初始方向,只有105456種可能性。雖然這還是一個(gè)很大的數(shù)字,但是把所有的可能性都試驗(yàn)一遍,已經(jīng)是一件可以做到的事情了。
波蘭人按照漢斯-提羅·施密特提供的情報(bào)復(fù)制出了ENIGMA樣機(jī)。到了1934年,他們有了十幾臺(tái)波蘭造ENIGMA。雷杰夫斯基和他的同事們每天都在ENIGMA前工作,一個(gè)接一個(gè)地試驗(yàn)轉(zhuǎn)子的不同位置和初始方向,然后產(chǎn)生相應(yīng)的字母對(duì)應(yīng)表并構(gòu)造相應(yīng)的字母循環(huán)圈,并把它們記錄下來(lái)。比如說(shuō)其中的一個(gè)記錄可以是這樣的:
第一和第四字母對(duì)應(yīng)表中有4個(gè)循環(huán)圈,長(zhǎng)度分別為3,9,7,7;
第二和第五字母對(duì)應(yīng)表中有4個(gè)循環(huán)圈,長(zhǎng)度分別為2,3,9,12;
第三和第六字母對(duì)應(yīng)表中有5個(gè)循環(huán)圈,長(zhǎng)度分別為5,5,5,3,8;
當(dāng)對(duì)所有105456種轉(zhuǎn)子位置和初始方向都編好記錄以后,破譯ENIGMA生成的密文就比較容易了。首先要取得足夠的當(dāng)日電文來(lái)構(gòu)造字母對(duì)應(yīng)表并且寫(xiě)出字母循環(huán)圈;然后根據(jù)循環(huán)圈的數(shù)目和它們的長(zhǎng)度從記錄表中檢索出相對(duì)應(yīng)的轉(zhuǎn)子位置和初始方向:這就是當(dāng)日的密鑰(連接板的情況還未知)。循環(huán)圈的個(gè)數(shù)和長(zhǎng)度可以看作是這個(gè)密鑰的“指紋”——通過(guò)建立密鑰“指紋”檔案,雷杰夫斯基就能及時(shí)地把當(dāng)天的密鑰找出來(lái)。通過(guò)分離轉(zhuǎn)子的狀態(tài)和連接板的狀態(tài),雷杰夫斯基大大簡(jiǎn)化了破譯ENIGMA的工作。建立這樣一個(gè)檔案花了整整一年時(shí)間,工作相當(dāng)艱苦,有時(shí)工作人員的手指都被磨出血來(lái)。
必須指出的是,上面對(duì)雷杰夫斯基的工作的介紹是極其簡(jiǎn)單化的,只以舉例的形式介紹了其中最重要的思路。雷杰夫斯基對(duì)于ENIGMA的分析是在密碼分析史上最重要的成就之一,整個(gè)工作都是嚴(yán)格地?cái)?shù)學(xué)化了的(求解關(guān)于置換矩陣的方程),決非上面所舉例子可以包含。比如說(shuō),找到當(dāng)日密鑰中轉(zhuǎn)子狀態(tài)后,還需要找到連接板狀態(tài),才能真正譯出密文。另外,ENIGMA中轉(zhuǎn)子中的線路并非總是固定不變,雷杰夫斯基的理論允許從密文和密鑰倒推出轉(zhuǎn)子內(nèi)部的連線狀態(tài)。即便是施密特提供的情報(bào)也未明確指出轉(zhuǎn)子內(nèi)部的連線狀態(tài),雷杰夫斯基一項(xiàng)重要工作就是成功地判斷出軍用型ENIGMA的轉(zhuǎn)子上字母以字母表順序排列,而不是如商用型那樣,字母以鍵盤(pán)上的順序排列。另外還要指出的是,雷杰夫斯基的同事,尤其是另兩位數(shù)學(xué)家羅佐基和佐加爾斯基在破譯工作中也作出了很重要的貢獻(xiàn)。佐加爾斯基還設(shè)計(jì)了用在紙上鉆孔的方法來(lái)迅速查詢對(duì)應(yīng)于某類字母循環(huán)圈的轉(zhuǎn)子狀態(tài)的方法。
佐加爾斯基設(shè)計(jì)的用來(lái)查詢密鑰的鉆孔表格
在雷杰夫斯基和他的同事的努力下,波蘭情報(bào)部門在后來(lái)的幾年里成功地掌握了大量德國(guó)方面的情報(bào)。據(jù)估計(jì),在1933年1月到1939年9月這六年多的時(shí)間里,波蘭方面一共破譯了近十萬(wàn)條德方的消息,其中最重要的有德國(guó)在包括蘇臺(tái)德地區(qū)兵力重新部署的情報(bào),這對(duì)波蘭的安全是極大的威脅。對(duì)ENIGMA的破解即便在總參二局領(lǐng)導(dǎo)層內(nèi)部也屬最高機(jī)密,軍官們會(huì)收到標(biāo)有“維奇爾”(Wicher,破譯ENIGMA行動(dòng)的代號(hào))的情報(bào),他們被告知這些情報(bào)絕對(duì)可靠,但來(lái)源絕密。1934年,納粹德國(guó)元帥赫爾曼·戈林訪問(wèn)華沙,他怎么也沒(méi)有懷疑波蘭人已經(jīng)掌握了他的機(jī)密。當(dāng)他和德國(guó)高級(jí)官員向位處波蘭密碼處附近的無(wú)名戰(zhàn)士墓獻(xiàn)花圈時(shí),雷杰夫斯基正透過(guò)辦公室的窗子望著他們,心中為自己能知道他們最機(jī)密的通訊而狂喜不已。
當(dāng)?shù)聡?guó)人對(duì)ENIGMA轉(zhuǎn)子連線作出一點(diǎn)改動(dòng)以后,花了一年功夫建立起來(lái)的密鑰“指紋”檔案就變得毫無(wú)用處了。但是雷杰夫斯基和羅佐基有了一個(gè)更好的主意。他們?cè)贓NIGMA的基礎(chǔ)上設(shè)計(jì)了一臺(tái)能自動(dòng)驗(yàn)證所有26*26*26=17576個(gè)轉(zhuǎn)子方向的機(jī)器,為了同時(shí)試驗(yàn)三個(gè)轉(zhuǎn)子的所有可能位置的排列,就需要6臺(tái)同樣的機(jī)器(這樣就可以試遍所有的17576*6=105456種轉(zhuǎn)子位置和初始方向)。所有這6臺(tái)ENIGMA和為使它們協(xié)作的其他器材組成了一整個(gè)大約一米高的機(jī)器,能在兩小時(shí)內(nèi)找出當(dāng)日密鑰。羅佐基把它取名為“炸彈”(La Bomba),可能是因?yàn)樗\(yùn)轉(zhuǎn)起來(lái)震耳欲聾的聲響;不過(guò)也有人傳說(shuō),制造這樣一臺(tái)機(jī)器的主意是雷杰夫斯基一次在飯店里吃叫做“炸彈”的冰淇淋時(shí)想到的。無(wú)論如何,“炸彈”實(shí)現(xiàn)了密碼分析機(jī)械化,它是對(duì)ENIGMA機(jī)械加密的一種很自然的回應(yīng)手段。
30年代的大部分日子里,雷杰夫斯基和他的同事們不斷地從事著尋找密鑰的工作,時(shí)不時(shí)地還要修復(fù)出了故障的“炸彈”。他們不知道的是,在密碼處處長(zhǎng)格維多·蘭杰(Gwido Langer)少校的抽屜里,已經(jīng)有了他們正在絞盡腦汁試圖尋找的東西。
事實(shí)上,在提供了兩份極其重要的關(guān)于ENIGMA的情報(bào)后,漢斯-提羅·施密特還在繼續(xù)向法國(guó)情報(bào)機(jī)關(guān)提供關(guān)于德國(guó)通訊的情報(bào)。在1931年后的七年中,他和法國(guó)情報(bào)人員接頭二十次,每次都提供若干德國(guó)通訊用密碼本,上面記載著一個(gè)月中每天使用的當(dāng)日密鑰。漢斯-提羅·施密特總共提供了三十八個(gè)月的密碼。蘭杰少校通過(guò)法國(guó)密碼處(“第二處”)負(fù)責(zé)人居斯塔夫·貝特朗(Guistav Bertrand)上尉得到了這些密碼本。如果雷杰夫斯基能夠預(yù)先知道這些密碼,無(wú)疑可以節(jié)省大量的時(shí)間,從而進(jìn)行其他的同樣十分重要的破譯工作。
但是蘭杰少校覺(jué)得雷杰夫斯基的小組應(yīng)該習(xí)慣于單獨(dú)工作,以便在將來(lái)得不到密碼本的時(shí)候,也能同樣破譯ENIGMA。我們的確不知道,如果自1931年來(lái)沒(méi)有這樣的壓力,雷杰夫斯基是否能夠有上面所述的重要工作。
波蘭密碼局的破譯能力在1938年的十二月達(dá)到了極限,德國(guó)人加強(qiáng)了ENIGMA的加密能力。每臺(tái)ENIGMA機(jī)增加了兩個(gè)可供選擇的轉(zhuǎn)子。原來(lái)三個(gè)轉(zhuǎn)子不同的排列方式有6種,現(xiàn)在從五個(gè)轉(zhuǎn)子中選取三個(gè)裝入機(jī)器中的方式達(dá)到了5*4*3=60種。這就意味著要達(dá)到原來(lái)的效率,“炸彈”中必須有60臺(tái)機(jī)器同時(shí)運(yùn)轉(zhuǎn),而不是原來(lái)的6臺(tái)。建造這樣一臺(tái)“炸彈”的價(jià)格是密碼處總預(yù)算的十五倍!在1939年一月,連接板上的連線又由六根增加到十根,這樣就只剩6個(gè)字母不會(huì)被交換。密鑰的總數(shù)達(dá)到了一萬(wàn)五千九百億億個(gè),是原來(lái)的一萬(wàn)五千九百倍。
雖然波蘭數(shù)學(xué)家們成功地推斷出了第四和第五個(gè)轉(zhuǎn)子中的連線狀態(tài),雷杰夫斯基也證明了ENIGMA并非象德國(guó)人或盟國(guó)密碼分析專家想象的那樣堅(jiān)不可破,但是他的方法終于也不適用了。這時(shí)蘭杰少校應(yīng)該從他的抽屜里拿出施密特提供的密碼本來(lái)——但是正是德國(guó)人增加轉(zhuǎn)子個(gè)數(shù)的時(shí)候,施密特停止了和法國(guó)情報(bào)部門的接頭。七年中施密特不斷地提供給波蘭人能靠自己的力量破譯的密鑰,現(xiàn)在波蘭人急需這些密鑰,他們卻再也搞不到了。
這對(duì)波蘭是一個(gè)致命的打擊。因?yàn)镋NIGMA不僅僅是德國(guó)秘密通訊的手段,更是希特勒“閃電戰(zhàn)”(blitzkrieg)的關(guān)鍵。所謂的“閃電戰(zhàn)”是一種大規(guī)模快速協(xié)同作戰(zhàn),各裝甲部隊(duì)之間,它們和步兵、炮兵之間必須能夠快速而保密地進(jìn)行聯(lián)系。不僅如此,地面部隊(duì)的進(jìn)攻還必須由斯圖卡轟炸機(jī)群掩護(hù)支援,它們之間也必須有可靠的聯(lián)絡(luò)手段。閃電戰(zhàn)的力量在于:在快速的通訊保證下的快速進(jìn)攻。
“閃電戰(zhàn)”的提出者,德國(guó)裝甲部隊(duì)之父,納粹德國(guó)的海因茨·古德里安(Heinz Guderian)將軍在指揮車上。在照片的左下方我們可以看見(jiàn)一臺(tái)ENIGMA。
如果波蘭不能知道德軍的通訊,那么想要抵擋德國(guó)的入侵是毫無(wú)希望的,現(xiàn)在看來(lái)這在幾個(gè)月里就會(huì)發(fā)生。1939年4月27日德國(guó)撕毀同波蘭簽訂的互不侵犯條約,侵占了蘇臺(tái)德地區(qū);在德國(guó)國(guó)內(nèi),反波蘭的聲浪不斷高漲。在此情況下,蘭杰少校決定把直到現(xiàn)在還對(duì)盟國(guó)保密的關(guān)于ENIGMA的破譯方法告訴盟國(guó)同行,以便在波蘭遭到入侵后,擁有更大人力物力財(cái)力的盟國(guó)還可以繼續(xù)對(duì)雷杰夫斯基的方法進(jìn)行研究。
6月30日,蘭杰少校致電他的英國(guó)和法國(guó)同行,邀請(qǐng)他們來(lái)華沙緊急討論有關(guān)ENIGMA的事項(xiàng)。7月24日英法密碼分析專家到達(dá)波蘭密碼處總部,全然不知波蘭人葫蘆里賣的什么藥。具有諷刺意味的是,這次會(huì)面中用來(lái)交流使用的語(yǔ)言是……德語(yǔ)——這是唯一的在場(chǎng)三方所有人都懂的語(yǔ)言。蘭杰少校將他們領(lǐng)到一間房間,在那里有一個(gè)被黑布蒙住的東西,當(dāng)黑布被揭開(kāi)時(shí),英法的密碼分析專家目瞪口呆。出現(xiàn)在他們眼前的是一臺(tái)雷杰夫斯基的“炸彈”。當(dāng)聽(tīng)到雷杰夫斯基破譯ENIGMA的方法時(shí),他們意識(shí)到波蘭在密碼分析方面比世界上任何國(guó)家先進(jìn)至少十年。法國(guó)人尤其吃驚,他們以為他們得到的情報(bào)用處不大,所以很慷慨地把它們轉(zhuǎn)給了波蘭人,他們卻讓波蘭人一直瞞到現(xiàn)在。英法密碼分析專家對(duì)波蘭同行的感激是無(wú)以言表的,直到那時(shí),他們?cè)谄谱g德國(guó)密碼的方面毫無(wú)進(jìn)展。
蘭杰少校給英法密碼分析專家的最后驚喜是宣布贈(zèng)送給他們兩臺(tái)ENIGMA的復(fù)制品,以及“炸彈”的圖紙,它們由法國(guó)密碼處的貝特朗(他現(xiàn)在是個(gè)少校了)通過(guò)外交郵包寄往巴黎。8月19日,在橫渡英吉利海峽的渡船上有兩位看似平常的旅客:英國(guó)作家沙夏·居特里(Sacha Guitry)和他的太太女演員依弗娜·普林坦普斯(Yvonne Printemps)。但是在他們的旅行箱里卻藏著當(dāng)時(shí)英國(guó)最高的機(jī)密:一臺(tái)波蘭制造的ENIGMA。為了避開(kāi)無(wú)所不在的德國(guó)間諜的耳目,ENIGMA就這樣來(lái)到了英國(guó),在那里等待它的將是它的徹底滅亡。
兩星期后的1939年9月1日,希特勒發(fā)動(dòng)“閃電戰(zhàn)”入侵波蘭。9月17日,蘇聯(lián)入侵波蘭。9月28日,德軍占領(lǐng)華沙,波蘭不復(fù)存在。
三、滅亡
整整十三年里,英國(guó)人和法國(guó)人都以為ENIGMA是不可破譯的,波蘭人的成功重新鼓起了他們的勇氣。雖然德國(guó)人已經(jīng)加強(qiáng)了密碼機(jī)的安全性能,但是波蘭人的實(shí)踐表明,ENIGMA決非堅(jiān)不可破。波蘭密碼局的經(jīng)驗(yàn)也表明,數(shù)學(xué)家在密碼分析中能夠起到多么重要的作用。在英國(guó)密碼局(40局),以往都是由精于文字的語(yǔ)言學(xué)家或作家來(lái)?yè)?dān)負(fù)起密碼分析的重任,此后40局開(kāi)始通過(guò)局內(nèi)人際關(guān)系向牛津大學(xué)和劍橋大學(xué)招聘數(shù)學(xué)家和數(shù)學(xué)系學(xué)生。
英國(guó)的政府代碼及加密學(xué)校(GC&CS, Government Code and CipherSchool)是40局新設(shè)的機(jī)構(gòu),它的的總部坐落在白金漢郡的布萊切利公園(Bletchley Park)里,40局新招聘的密碼分析專家就在那里學(xué)習(xí)和工作。布萊切利公園的中心是一座歌特都鐸式的城堡,19世紀(jì)時(shí)由金融家赫伯特·萊昂(Herbert Leon)爵士建造,GC&CS的領(lǐng)導(dǎo)機(jī)構(gòu)就設(shè)立在它的圖書(shū)館、寬大的餐廳以及裝飾得富麗堂皇的舞廳里。從城堡的
布萊切利公園底層望出去,外面是寬闊的花園。不過(guò)在1939年的秋天,那里的風(fēng)景可不怎么樣,花園里戳滿了新建的小木屋,那是密碼分析人員的工作場(chǎng)所,各種信息在擔(dān)負(fù)不同任務(wù)的小木屋進(jìn)進(jìn)出出。比方說(shuō),6號(hào)木屋是負(fù)責(zé)破譯德軍ENIGMA電報(bào)的,從那里出來(lái)的明文由3號(hào)木屋翻譯并進(jìn)行綜合情報(bào)分析;8號(hào)木屋專門負(fù)責(zé)對(duì)付德國(guó)海軍的ENIGMA,這是一種特別復(fù)雜的ENIGMA機(jī),和普通型不同,它有四個(gè)轉(zhuǎn)子,在這里破譯的情報(bào)由4號(hào)木屋中的情報(bào)人員翻譯和分析。一開(kāi)始在布萊切利公園工作的只有大約二百人,可是到了五年后戰(zhàn)爭(zhēng)結(jié)束時(shí),城堡和小木屋中已經(jīng)多達(dá)七千人!
英國(guó)數(shù)學(xué)家和其他密碼分析人員很快就掌握了波蘭人進(jìn)攻ENIGMA的技巧和方法。布萊切利公園擁有比波蘭密碼處多得多的人員和資金,所以足以對(duì)付由于德國(guó)人對(duì)ENIGMA的改動(dòng)而增加到原來(lái)十倍的破譯工作量。和在波蘭密碼處的情景一樣,布萊切利公園的男女們?nèi)找咕o張工作,為的就是找到德國(guó)人當(dāng)天的密鑰。一到午夜,轉(zhuǎn)子和連線板的設(shè)置就會(huì)變動(dòng),一切又要重新開(kāi)始。
由此而破譯的情報(bào)極其珍貴。如果布萊切利公園能夠及時(shí)得到德軍的情報(bào),德國(guó)人的計(jì)劃和行動(dòng)就會(huì)暴露無(wú)遺。如果德軍計(jì)劃一次進(jìn)攻,英軍就可以采取相應(yīng)的增援或撤退措施;更妙的是,如果德國(guó)將軍在他們的電報(bào)中爭(zhēng)論己方的弱點(diǎn),英國(guó)軍隊(duì)就可以采取德國(guó)人最擔(dān)心的計(jì)劃。1940年4月德國(guó)入侵丹麥和挪威,布萊切利公園取得了一份詳細(xì)的軍事計(jì)劃。同樣在英倫戰(zhàn)役之初,密碼分析人員準(zhǔn)確預(yù)告了德軍轟炸的準(zhǔn)確時(shí)間和地點(diǎn),并且取得了德國(guó)空軍(Luftwaff)極為寶貴的情報(bào),比如飛機(jī)的損失情況,新飛機(jī)的補(bǔ)充數(shù)量和速度等。這些情報(bào)被送往M16的總部,再由那里轉(zhuǎn)送戰(zhàn)爭(zhēng)部、空軍部和海軍部。
布萊切利公園的密碼分析專家們有時(shí)也有點(diǎn)空余時(shí)間,最受歡迎的消遣活動(dòng)是圓場(chǎng)棒球,球賽就在那座城堡前的草坪上舉行。和自自在在的大學(xué)生一樣,這些肩負(fù)著重任的男女也經(jīng)常為一個(gè)有爭(zhēng)議的球嚴(yán)肅地爭(zhēng)論得面紅耳赤。
在掌握了波蘭人對(duì)付ENIGMA的手段后,英國(guó)密碼分析專家也開(kāi)始摸索出自己獨(dú)特的方法。在正式用“炸彈”開(kāi)始系統(tǒng)搜索當(dāng)日密鑰以前,他們總要試一遍“投機(jī)取巧”的門道。根據(jù)德軍通訊的規(guī)定,每一條電文都要隨機(jī)選擇三個(gè)不同的字母組合,但是在激戰(zhàn)之時(shí),德軍指揮官經(jīng)常顧不上“隨機(jī)”,往往在鍵盤(pán)上敲上三個(gè)相鄰的字母了事,比方說(shuō)DFG或者VBN,有時(shí)甚至重復(fù)使用某三個(gè)字母的組合來(lái)當(dāng)密鑰。英國(guó)密碼分析專家把這樣的密鑰叫“西爾絲”(cillies),即三字母組合CIL的讀音,大概來(lái)源于哪位倒霉德國(guó)軍官的女友的名字。
“西爾絲”并非ENIGMA本身的弱點(diǎn),而是ENIGMA使用者的弱點(diǎn)。另一種更為嚴(yán)重的人為使用錯(cuò)誤是密鑰本編制者對(duì)密鑰使用過(guò)分嚴(yán)格的規(guī)定。為了強(qiáng)調(diào)密鑰的不可預(yù)見(jiàn)性,他們規(guī)定每天在三個(gè)放置轉(zhuǎn)子的位置上,不得有和昨天放在此位置上相同的轉(zhuǎn)子。比如說(shuō)每臺(tái)ENIGMA機(jī)一共配備編號(hào)為1、2、3、4、5的五個(gè)轉(zhuǎn)子,而前一天所使用的轉(zhuǎn)子順序?yàn)?34,那么第二天可以使用例如215這樣的轉(zhuǎn)子順序,但是214這樣的順序是不允許的,因?yàn)楹颓耙惶煜啾容^,在第三個(gè)位置上都是4號(hào)轉(zhuǎn)子。看起來(lái)這樣交叉使用轉(zhuǎn)子是個(gè)好主意,避免了象上面所說(shuō)的重復(fù)使用某個(gè)密鑰的過(guò)失,但是如果過(guò)分強(qiáng)調(diào)這一點(diǎn),卻會(huì)使英國(guó)密碼分析專家的工作量減小一半,因?yàn)樵陂_(kāi)始分析當(dāng)日密鑰前,他們就可以把所有至少有一個(gè)轉(zhuǎn)子處在前一日位置上的那些轉(zhuǎn)子的排列排除在外了。德軍密鑰編制的另一條規(guī)定是,在連接板上不允許把兩個(gè)相鄰的字母連接起來(lái)。直覺(jué)似乎告訴人們不該使用這樣簡(jiǎn)單的字母交換,但是這樣的規(guī)則搞得太嚴(yán)格過(guò)了頭,也就反而會(huì)幫對(duì)手的忙,對(duì)手根本就不用考慮這樣的可能性了。這兒風(fēng)挺大。在整個(gè)戰(zhàn)爭(zhēng)過(guò)程中,ENIGMA機(jī)被不斷改善,所以這樣的“投機(jī)取巧”也變得十分重要,密碼分析專家可以通過(guò)對(duì)密鑰的猜測(cè)來(lái)推斷出密碼機(jī)新的變動(dòng),從而相應(yīng)地改善“炸彈”的設(shè)計(jì),使用新的策略。英國(guó)人能夠在戰(zhàn)爭(zhēng)其間成功地持續(xù)破解ENIGMA密碼,和小木屋里各種各樣不同尋常的怪才的努力分不開(kāi)。他們之中有數(shù)學(xué)家,各類科學(xué)家,語(yǔ)言學(xué)家,象棋冠軍,填字游戲高手……一個(gè)難題經(jīng)常從一只手傳到另一只手,直到它最終得到解決;也有可能一個(gè)人解決一點(diǎn),再由另一個(gè)人解決另一部分……按照6號(hào)木屋的負(fù)責(zé)人戈?duì)柕恰の糊R曼(Gordon Welchman)的話來(lái)說(shuō),這是“一群想方設(shè)法嗅出一條線索的獵犬”。
在布萊切利公園有一大群為破譯ENIGMA作出了卓越貢獻(xiàn)的人們。但是如果只能選擇性地講述一個(gè)人的功績(jī),那么這個(gè)人無(wú)論如何應(yīng)該是阿蘭·圖靈(Alan Turing)。
阿蘭·圖靈
圖靈1912年6月23日在倫敦出生,他的父親是當(dāng)時(shí)英國(guó)殖民地印度南部的行政官員。他的父母為了使兒子在英國(guó)出生,暫時(shí)從印度回到了英國(guó)。圖靈出生后不久他父親重新回到印度,十五個(gè)月后他的母親也離開(kāi)英國(guó)返回印度,把圖靈一個(gè)人留在倫敦,由保姆和朋友撫養(yǎng)長(zhǎng)大,一直到了圖靈上寄宿學(xué)校的年紀(jì)。
1926年,14歲的圖靈進(jìn)入了雪伯恩(Sherborne)學(xué)校就讀。上學(xué)的第一天恰好碰上罷工,為了不錯(cuò)過(guò)就學(xué)典禮,圖靈從南安普敦到雪伯恩一氣騎了一百公里的自行車,為此他上了當(dāng)?shù)氐膱?bào)紙。在學(xué)校里一年下來(lái),他給人的印象是個(gè)愛(ài)害羞,做事笨手笨腳的男孩,但是在自然科學(xué)方面充滿才華。雪伯恩學(xué)校是培養(yǎng)為大英帝國(guó)效力的男子漢的地方,圖靈的性格卻似乎于此不合拍,所以那幾年他的學(xué)校生涯不免有些難捱。
在學(xué)校里他唯一的朋友是一個(gè)名叫克里斯多夫·莫爾貢(ChristopherMorcon)的男孩。他倆都熱愛(ài)科學(xué),經(jīng)常在一起談?wù)撟钚碌目茖W(xué)發(fā)現(xiàn),做各種科學(xué)小實(shí)驗(yàn)。這段友誼激發(fā)了圖靈對(duì)科學(xué)的興趣,他對(duì)莫爾貢的感情似乎也超出了朋友的范圍,成為一種依戀。但是莫爾貢永遠(yuǎn)不會(huì)知道這點(diǎn)了,在他們認(rèn)識(shí)的第四年,1930年的2月13日,他死于突發(fā)性結(jié)核病。這對(duì)圖靈是一個(gè)巨大的打擊,他失去了唯一的朋友。似乎是為了讓自己代替朋友活著,他學(xué)習(xí)更加努力。在去世前莫爾貢已經(jīng)取得了一份劍橋大學(xué)的獎(jiǎng)學(xué)金,圖靈決定自己也將進(jìn)入劍橋大學(xué)學(xué)習(xí),去完成亡友的未竟事業(yè)。
布萊切利公園里圖靈工作過(guò)的木屋
1931年圖靈如愿以償?shù)剡M(jìn)入劍橋大學(xué)國(guó)王學(xué)院。當(dāng)時(shí)的數(shù)理邏輯學(xué)界正熱烈地討論著二十世紀(jì)最偉大的數(shù)學(xué)發(fā)現(xiàn)之一——昆特·哥德?tīng)柕牟煌耆远ɡ怼T谀且郧埃瑪?shù)學(xué)家們總以為,一個(gè)數(shù)學(xué)問(wèn)題,雖然要找到回答也許很困難,但是理論上總有一個(gè)確定的答案。一個(gè)數(shù)學(xué)命題,要么是真的,要么是假的。但是哥德?tīng)柕牟煌耆远ɡ碇赋觯谝粋€(gè)稍微復(fù)雜一點(diǎn)的數(shù)學(xué)公理系統(tǒng)中,總存在那樣的命題,我們既不能證明它是真的,也不能證明它是假的。數(shù)學(xué)家們大吃一驚,發(fā)現(xiàn)以往大家認(rèn)為絕對(duì)嚴(yán)明的數(shù)學(xué)中原來(lái)有如此令人不安的不確定性。
每個(gè)邏輯學(xué)家都在苦苦思索,試圖替陷入了危機(jī)的數(shù)學(xué)找到一條出路,他們包括當(dāng)時(shí)在劍橋的貝特朗·羅素(Bertrand Russell)、阿爾弗雷德·懷特海(Alfred Whitehead)、路德維格·維特根斯坦(LudwigWittgenstein)這樣著名的邏輯學(xué)家。在這種環(huán)境下,圖靈作出了他一生中最重要的科學(xué)貢獻(xiàn),在他著名的論文《論可計(jì)算數(shù)》(On ComputableNumbers)中,他提出了日后以他名字命名的虛擬計(jì)算機(jī)器——圖靈機(jī)。 |