回覆列表
  • 1 # 畫鏡相望1

    恩尼格瑪密碼機(德語:Enigma,又譯啞謎機,或謎)是一種用於加密與解密檔案的密碼機。確切地說,恩尼格瑪是對二戰時期納粹德國使用的一系列相似的轉子機械加解密機器的統稱,它包括了許多不同的型號。

    恩尼格瑪密碼機在1920年代早期開始被用於商業,一些國家的軍隊與政府也曾使用過它,其中的主要使用者是第二次世界大戰時的納粹德國。

    在恩尼格瑪密碼機的所有版本中,最著名的是德國使用的軍用版本。儘管此機器的安全性較高,但盟軍的密碼學家們還是成功地破譯了大量由這種機器加密的資訊。1932年,波蘭密碼學家馬裡安·雷耶夫斯基、傑爾茲·羅佐基和亨裡克·佐加爾斯基根據恩尼格瑪機的原理破譯了它。1939年中期,波蘭政府將此破譯方法告知了英國和法國,但要等到1941年英國海軍捕獲德國U-110潛艇才得到密碼機和密碼本並加以破解成功,使納粹海軍對英美商船補給船的大量攻擊失效。盟軍的情報部門將破譯出來的密碼稱為ULTRA,這極大地幫助了西歐的盟軍部隊。ULTRA到底有多大貢獻還在爭論中,但是人們都普遍認為盟軍在西歐的勝利能夠提前兩年,完全是因為恩尼格瑪密碼機被成功破譯。儘管恩尼格瑪密碼機在加密方面具有不足之處,但是經它加密的檔案還是很難破解,盟軍能夠破譯它的密碼完全是因為德國還犯了其它一些大錯誤(如加密員的失誤、使用步驟錯誤、機器或密碼本被繳獲等等

    與其它轉子機械相同的是,恩尼格瑪密碼機也結合了機械系統與電子系統。機械系統包括了一個包含了字母與數字的鍵盤,相鄰地排列在一個軸上的一系列名為“轉子”的旋轉圓盤,還有一個在每次按鍵後就使一個或幾個轉子旋轉的裝置。各種恩尼格瑪密碼機上的機械系統都各為不同,但是它們之間最大的共同點就是在每次按鍵後最右邊的轉子都會旋轉,並且有些時候與它相鄰的一些轉子也會旋轉。轉子持續的旋轉會造成每次按鍵後得到的加密字母都會不一樣。

    機械系統這樣執行的原因是要產生不同的電流通路,字母的加密由機器自動完成。當一個鍵被按下後,電流就會流過各種線路,最終點亮其中一個燈,這個燈顯示的就是加密後的字母。舉例來說,如果想要傳送一條以ANX開頭的資訊,操作員會先按下A鍵,這時燈Z就可能變亮,Z就是加密後的資訊的第一個字母。操作員之後會按同樣的步驟繼續輸入資訊。轉子的轉動造成的電流路徑的持續變化使恩尼格瑪密碼機(在當時)具有了高度的保密性。

    恩尼格瑪密碼機的轉子組成了恩尼格瑪密碼機的核心部分。每個轉子的直徑大約為10釐米,形狀為圓盤形,由硬質橡膠或電木製成,一系列由彈簧承載的黃銅管腳呈環形排列於其中一面,而另一面相對應的則是圓形的金屬觸點。管腳與觸點代表的是字母表上的全部字母,典型的排列就是A-Z(以下的介紹全部假設轉子為這種排列方式)。當兩個轉子的位置相鄰時,其中一個的管腳就會接觸另外一個的金屬觸點,這就形成了一個通路。在轉子內部,有26條金屬線將一面的管腳與另一面的觸點連線起來,這些金屬線的排列方式在每個轉子內都有所不同。單一的一個轉子的加密方式是很簡單的,它只使用了一種初級的替換式密碼。比如說,E鍵對應的管腳可能會連到同一個轉子另一面的T觸點。使恩尼格瑪密碼機的加密變得複雜的是多個轉子的同時使用,一般在一臺恩尼格瑪密碼機內有3個或4個轉子,在輸入資訊的同時轉子還會轉動,這就產生了一種安全得多的加密方式。

    當被放進恩尼格瑪密碼機後,一個轉子可以有26種排列方法。它可以透過操作員來轉動,如圖2所示。為了使操作員知道轉子的轉動情況,每個轉子在轉盤外部都有一個刻著字母或數字的環;其中一個字母可以透過一個小窗看見,同時將轉子的轉動情況顯示給操作員。在早期的型號中,這個字母環是固定於轉子上的,但在後來的型號當中,操作員可以透過調整字母環的位置而調整轉子內的線路。每個轉子上都有一個V形刻痕(有時有多個),這些刻痕是用來控制轉子的轉動的。在軍用恩尼格瑪密碼機中,這些刻痕位於字母環上。陸軍和空軍的恩尼格瑪密碼機在一開始只擁有3個轉子,1938年12月15日開始使用5個轉子。這些轉子使用羅馬數字來辨識:I、II、III、IV、V,每個轉子都有一個V形刻痕,這些刻痕在每個轉子上的字母環中的位置都有所不同。這本來是作為一種安全措施的,但是它最終成為了波蘭時鐘解碼法和英國Banburismus解碼法的突破口。

    德國海軍使用的恩尼格瑪密碼機比其它軍種的擁有更多轉子 (調節器):一開始為6個,後來變成7個,最終增加到8個。這三個新加的轉子被命名為VI、VII和VIII,內部線路互不相同,並且具有兩個V形刻痕,它們分別位於N觸點與A觸點,這使轉子的轉動更為頻繁。

    四個轉子的海軍版恩尼格瑪密碼機為轉子預留的空間與三個轉子版的一樣。為了放入第4個轉子,原來三個轉子版的反射器需要被換成一個較薄的反射器,並且第4個轉子也是一個特殊的轉子。這第4個轉子有兩種型號,即Beta型和Gamma型。這個轉子是不會旋轉的,但是它可以被手動調到26個位置中的任意一個。

    為了避免產生簡單(並且容易破譯)的加密資訊,有一些轉子在操作員連續按下同一個鍵時也會轉動。這就保證了每次按鍵得到的結果都不一樣,也就會產生很難破譯的複式密碼。

    為了達到這個效果,最常見的佈局就是使用一個防倒轉齒和防倒轉爪系統。每個轉子都有26個防倒轉齒,一組防倒轉爪與這些齒相接。這些爪在每次按鍵後都會向前推,如果防倒轉爪與防倒轉齒相接的話,轉子就會旋轉一點。

    在德國防衛軍的恩尼格瑪密碼機中,每個轉子都有一個可調節的帶缺口的外環。5個最基本的轉子(I-V)各有一個缺口,而附加的轉子VI、VII和VIII各有兩個缺口。在轉子轉動到某一點時,第二個轉子的防倒轉爪正好位於它的缺口之內,這就使第二個轉子在下一次按鍵後也會轉動。當防倒轉爪位於缺口之外時,它就只會沿著另一個轉子外環的光滑邊緣滑動。在所有轉子都只有一個缺口的系統中,第一個轉子每轉26次就會使第二個轉子轉動一次,同樣的,第二個轉子每轉動26次就會使第三個轉子轉動一次。第三個轉子轉動的同時第二個轉子也會轉動。[6]

    這種兩個轉子同時轉動的現象使它與計程器區別開來。這個現象出現於下述情況:第一個轉子轉動完之後帶動了第二個轉子轉動一點,如果這時第三個轉子的防倒轉爪正好落入第二個轉子外環的缺口內,那麼在下一次按鍵時,第三個轉子就會轉動一點,同時它的防倒轉爪也會推動第二個轉子的外環,這樣就使第二個轉子連續兩次轉動。

    當擁有三個轉子,並且第一和第二個轉子的外環各有一個缺口時,一臺恩尼格瑪密碼機就會擁有26 × 25 × 26 = 16,900個組合(不是26 X 26 X 26,因為第二個轉子會與第三個轉子一起轉動,參看參考資料中的一個PDF檔案,它解釋了這個現象)。在歷史上,每條資訊的長度都被限制在幾百個字母以內,所以在同一條資訊中輸入同樣的字母產生同樣的密碼的機率是很小的。

    固定介面,又稱作定子,是將插銷或鍵盤與顯示燈連線起來的裝置。儘管固定介面中的線路分佈對於密碼的安全性影響很小,但是這還是阻礙了波蘭密碼學家馬裡安·雷耶夫斯基對恩尼格瑪密碼機密碼的破譯過程。商業恩尼格瑪密碼機的鍵盤上,Q鍵代表A,W鍵代表B,E鍵代表C,依此類推,而軍用恩尼格瑪密碼機的鍵對應的就是鍵上的字母。

    反射器除了早期的A型和B型之外,恩尼格瑪密碼機的最後一個轉子之後都有一個反射器,反射器是恩尼格瑪密碼機與當時其它轉子機械之間最顯著的區別。它將最後一個轉子的其中兩個觸點連線起來,並將電流沿一個不同的路線導回。這就使加密過程與解密過程變得一致。但是,反射器也使恩尼格瑪密碼機具有了如下性質:加密後得到的字母與輸入的字母永遠不會相同。這在概念上和密碼學上都是一個嚴重的錯誤,這個錯誤最終被盟軍解碼人員利用。

    在商業用恩尼格瑪密碼機(C型)中,反射器可以有兩種不同的安裝方式。在D型中它可以有26種方式。而在軍用恩尼格瑪密碼機中,反射器可以像轉子一樣轉動。

    在德國陸軍和空軍版恩尼格瑪密碼機中,反射器是固定的,並且不會旋轉;他們用的恩尼格瑪密碼機一共有4個版本。最初的版本被標記為A型,1937年11月1日它被B型取代。第三種型號,C型,在1940年被短暫地使用過,它最終被木屋6號破解。D型擁有一個可以重新接線的反射器,首次測試於1944年1月2日,這個版本允許操作員來調整接線方式。接線板允許操作員設定各種不同的線路。它首先在1930年被用於德國陸軍,很快地,德國海軍也開始使用它。接線板極大地增強了恩尼格瑪密碼機的保密性,它的使用相當於多了不止一個轉子。沒有接線板的恩尼格瑪密碼機可以被很容易地用人工方法破解,但是加上接線板後,盟軍的密碼專家就需要使用特殊的機器了。

    接線板上的每條線都會連線一對字母。這些線的作用就是在電流進入轉子前改變它的方向。為了解釋它的原理,我們把E插口和Q插口連線起來。當操作員按下E鍵時,電流就會先流到Q插口(相當於按下Q鍵)再流經轉子。接線板上最多可以同時接13條線。

    電流會從鍵盤流經接線板,之後進入轉子。接線板上的每個插口內都有兩個插孔,當將插頭插入時,上插孔(連到鍵盤)與下插孔(連到轉子)之間的連線就會被斷開。另外一個插口內的上插孔會與此插口內的下插孔連線起來,而下插孔會與此插口內的上插孔連線起來,這樣就完成了兩個插口之間的連線。

    恩尼格瑪對每個字母的加密過程可以以數學的角度看作為一個組合過程。假設我們有一臺德國陸軍/空軍版3轉子恩尼格瑪密碼機,讓P表示接線板的連線,U表示反射器,L、M、R表示左、中、右轉子。那麼加密後的資訊 E 就可以表示成

    E = PRMLUL − 1M − 1R − 1P − 1E0

    軍的各支部隊使用一些不同的通訊線路,每條線路中的恩尼格瑪密碼機都有不同的設定。為了使一條資訊能夠正確地被加密及解密,傳送資訊與接收資訊的恩尼格瑪密碼機的設定必須相同;轉子必須一模一樣,而且它們的排列順序,起始位置和接線板的連線也必須相同。所有這些設定都需要在使用之前確定下來,並且會被記錄在密碼本中。

    恩尼格瑪密碼機的設定包含了以下幾個方面:

    轉子:轉子的結構及順序。

    起始位置:由操作員決定,傳送每條訊息時都不一樣。

    字母環:字母環與轉子線路的相對位置。

    接線板:接線板的連線。

    在末期版本中還包括了反射器的線路。

    恩尼格瑪密碼機被設計成即使在轉子的線路設定被敵人知道時仍然會很安全,儘管在實際使用中德軍盡了全力來防止線路設定被洩露出去。如果線路設定為未知,那麼最多需要嘗試10114種情況才可能推算出恩尼格瑪密碼機的密碼;當線路和其它一些設定已知時,也最多需要嘗試1023次。[恩尼格瑪密碼機的使用者對它的保密性很有信心,因為敵人不可能使用窮舉法來找出密碼。

    恩尼格瑪密碼機的大部分設定都會在一段時間(一般為一天)以後被更換。但是,轉子的起始位置卻是每傳送一條資訊就要更換的,因為如果一定數量的檔案都按照相同的加密設定來加密的話,密碼學家就會從中得到一些資訊,並且有可能利用頻率分析來破解這個密碼。為了防止這種事情發生,轉子的起始位置在每次傳送資訊之前都會被改變。這個方法被稱作“指示器步驟”。

    早期的指示器步驟成為了波蘭密碼學家破譯恩尼格瑪密碼機密碼的突破口。在這個步驟中,操作員會先按照密碼本中的記錄來設定機器,我們假設這時的轉子位置為AOH,之後他會隨意打三個字母,假設為EIN,接著為了保險起見,他會將這三個字母重新打一遍。這六個字母會被轉換成其它六個字母,這裡假設為XHTLOA。最後,操作員會將轉子重新設定為EIN,即他一開始打的三個字母,之後輸入密電原文。

    在接收方將資訊解密時,他會使用相反的步驟。首先,他也會將轉子按照密碼本中的記錄設定好,然後他就會打入密文中的頭六個字母,即XHTLOA,如果傳送方操作正確的話,顯示板上就會顯示EINEIN。這時接收方就會將轉子設定為EIN,之後他就可將密電打入而得到原文了。

    這個步驟的保密性差主要有兩個原因。首先,操作員將轉子的設定打到了密電中,這就使第三方能夠得知轉子設定。第二,這個步驟中出現了重複輸入,而這是一個嚴重的錯誤。這個弱點使波蘭密碼局早在1932年就破解了二戰之前的德軍恩尼格瑪系統。但是從1940年開始,德國改變了這個步驟,它的安全性也就提高了。

    這個步驟只被用於德國陸軍和空軍。德國海軍傳送資訊的步驟要複雜的多。在被恩尼格瑪密碼機發送之前,資訊會先被Kurzsignalheft密碼本進行加密。這個密碼本將一個句子替換為了四個字母。它轉化的句子包括了補給、位置、港灣名稱、國家、武器、天氣、敵人位置、日期和時間等內容。

    德國陸軍的恩尼格瑪密碼機的鍵盤上只有26個字母,標點符號由字母組合來代替,X相當於空格。在各軍種的恩尼格瑪密碼機中,X都相當於句號。有一些標點符號在不同軍種的密碼系統中被不同的字母組合代替。陸軍的系統使用ZZ來表示逗號,FRAGE或FRAQ則表示問號。但是德國海軍用來表示逗號及問號的則分別為Y和UD。Acht(意為“八”)和Richtung(意為“方向”)中的字母組合CH則由Q來代替。CENTA、MILLE和MYRIA分別表示兩個、三個和四個零。

    德國陸軍和空軍將每條資訊都翻譯成5個字母的程式碼。使用四轉子恩尼格瑪密碼機的德國海軍則將資訊翻譯成4字母程式碼。經常用到的詞語程式碼與原詞語的差別越大越好。Minensuchboot(意為“掃雷艇”)這樣的詞語可以被表示為MINENSUCHBOOT、MINBOOT、MMMBOOT 或MMM354。比較長的資訊會被分成幾個部分來發送

  • 中秋節和大豐收的關聯?
  • 徵集戶外活動遊戲?