誕生
直到第一次世界大戰結束為止,所有密碼都是使用手工來編碼的。直接了當地說,就是鉛筆加紙的方式。在我國,郵電局電報編碼和解碼直到很晚(大概是上個世紀八十年代初)還在使用這種手工方法。手工編碼的方式給使用密碼的一方帶來很多的不便。首先,這使得傳送信息的效率極其低下。明文(就是沒有經過加密的原始文本)必須由加密員人工一個一個字母地轉換為密文。考慮到不能多次重複同一種明文到密文的轉換方式(這很容易使敵人猜出這種轉換方式),和民用的電報編碼解碼不同,加密人員並不能把轉換方式牢記於心。轉換通常是採用查表的方法,所查表又每日不同,所以解碼速度極慢。而接收密碼一方又要用同樣的方式將密文轉為明文。其次,這種效率的低下的手工操作也使得許多複雜的保密性能更好的加密方法不能被實際套用,而簡單的加密方法根本不能抵擋解密學的威力。
解密一方當時正值春風得意之時,幾百年來被認為堅不可破的維吉耐爾(Vigenere)密碼和它的變種也被破解。而無線電報的發明,使得截獲密文易如反掌。無論是軍事方面還是民用商業方面都需要一種可靠而又有效的方法來保證通訊的安全。
1918年,德國發明家亞瑟·謝爾比烏斯(ArthurScherbius)和他的朋友理察·里特(RichardRitter)創辦了謝爾比烏斯和里特公司。這是一家專營把新技術轉化為套用方面的企業,很象現在的高新技術公司,利潤不小,可是風險也很大。謝爾比烏斯負責研究和開發方面,緊追當時的新潮流。他曾在
漢諾瓦和慕尼黑研究過電氣套用,他的一個想法就是要用二十世紀的電氣技術來取代那種過時的鉛筆加紙的加密方法。
謝爾比烏斯發明的加密電子機械名叫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,按照原來的約定,把轉子的方向調整到和發信方相同的初始方向上,然後依次鍵入收到的密文,並把閃亮的字母依次記下來,就得到了明文。於是加密和解密的過程就是完全一樣的——這都是反射器起的作用。稍微考慮一下,我們很容易明白,反射器帶來的一個副作用就是一個字母永遠也不會被加密成它自己,因為反射器中一個字母總是被連線到另一個不同的字母。
於是轉子的初始方向決定了整個密文的加密方式。如果通訊當中有敵人監聽,他會收到完整的密文,但是由於不知道三個轉子的初始方向,他就不得不一個個方向地試驗來找到這個密匙。問題在於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種可能性;
只要約定好上面所說的密匙,收發雙方利用ENIGMA就可以十分容易地進行加密和解密。但是如果不知道密匙,在這巨大的可能性面前,一一嘗試來試圖找出密匙是完全沒有可能的。我們看見連線板對可能性的增加貢獻最大,那么為什麼謝爾比烏斯要那么麻煩地設計轉子之類的東西呢?原因在於連線板本身其實就是一個簡單替換
密碼系統,在整個加密過程中,連線是固定的,所以單使用它是十分容易用頻率分析法來破譯的。轉子系統雖然提供的可能性不多,但是在加密過程中它們不停地轉動,使整個系統變成了複式替換系統,頻率分析法對它再也無能為力,與此同時,連線板卻使得可能性數目大大增加,使得暴力破譯法(即一個一個嘗試所有可能性的方法)望而卻步。
廣泛套用
1918年謝爾比烏斯申請了ENIGMA的專利。他以為既然自己的發明能夠提供優秀的加密手段,又能擁有極高的加密解密效率,一定能很快就暢銷起來。他給商業界提供了一種基本型ENIGMA,又給外交人員提供一種豪華的裝備有印表機的型號。但是他似乎搞錯了。他的機器售價大約相當於現在的30000美元(如果訂購一千台的話每台便宜4000美元)。這個價錢使得客戶望而卻步。雖然謝爾比烏斯向企業家們宣稱,如果他們重要的商業秘密被競爭對手知道了的話,遭到的損失將比ENIGMA的價格高得多,但是企業家們還是覺得他們沒有能力來購買ENIGMA。謝爾比烏斯的新發明並沒有像他預料的那樣帶來多少回報。軍隊方面對他的發明也沒有什麼太多的注意。
謝爾比烏斯的失望是可想而知的。但是這方面他不是唯一的人。和他幾乎同時在另外三個國家的三個發明家也都想到了發明了使用轉子的電氣加密機的主意。1919年荷蘭發明家亞歷山大·科赫(AlexanderKoch)註冊了相似的專利,可是卻沒有能夠使它商業化,1927年他只好賣掉了他的專利。在瑞典,阿維德·達姆(ArvidDamm)也獲得了一個差不多的專利,但是直到1927年他去世時還是沒有能找到市場。在美國,愛德華·赫本(EdwardHebern)發明了他的“無線獅身人面”,對它充滿希望。他用三十八萬美元開了一個工廠,卻只賣出價值一千兩百美元的十來台 enigma機器。
可是謝爾比烏斯突然時來運轉。英國政府發表了兩份關於一次大戰的檔案使得德國軍隊開始對他的發明大感興趣。其中一份是1923年出版的溫斯頓·邱吉爾的著作《世界危機》 ,其中有一段提到了英國和俄國在軍事方面的合作,指出俄國人曾經成功地破譯了某些德軍密碼,而使用這些成果,英國的40局(英國政府負責破譯密碼的間諜機構)能夠系統性地取得德軍的加密情報。德國方面幾乎是在十年之後才知道這一真相。第二份檔案同樣是在1923年由皇家海軍發表的關於第一次世界大戰的官方報告,其中講述了在戰時盟軍方面截獲(並且破譯)德軍通訊所帶來的決定性的優勢。這些檔案構成了對德國情報部門的隱性指控,他們最終承認“由於無線電通訊被英方截獲和破譯,德國海軍指揮部門就好象是把自己的牌明攤在桌子上和英國海軍較量。”
為了避免再一次陷入這樣的處境,德軍對謝爾比烏斯的發明進行了可行性研究,最終得出結論:必須裝備這種加密機器。從1925年開始,謝爾比烏斯的工廠開始系列化生產ENIGMA,次年德軍開始使用這些機器。接著政府機關,比如說國營企業,鐵路部門等也開始使用ENIGMA。這些新型號的機器和原來已經賣出的一些商用型號不同,
所以商用型機器的使用者就不知道政府和軍用型的機器具體是如何運作的。
在接下來的十年中,德國軍隊大約裝備了三萬台ENIGMA。謝爾比烏斯的發明使德國具有了最可靠的加密系統。在第二次世界大戰開始時,德軍通訊的保密性在當時世界上無與倫比。似乎可以這樣說,ENIGMA在
納粹德國二戰初期的勝利中起到的作用是決定性的,但是我們也會看到,它在後來
希特勒的滅亡中扮演了重要的角色。
但是謝爾比烏斯沒有能夠看見所有這一切。有一次在套馬時,他被摔到了一面牆上,於1929年5月13日死於內臟損傷。