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