模仿游戲

今天是過年返家的第二天,打開電視接著看了一部上次看了一半沒看完的電影,叫做模仿游戲,圖靈大家都知道,但是不知道他竟然是為此味道,只是知道做出來如此大的共享,卻沒想到頂著多么大的壓力。

對德國造出enigma機器的人也很好奇,就看了這篇文章

Enigma密碼機初級解析

在又一次讀完1001n兄的《密碼傳奇》之后,我決定寫些東西,對Enigma密碼機做一番簡要講述。我打算從Enigma的加密原理和相關歷史兩方面下筆。Enigma密碼機的原理會涉及到密碼學及其機械構造,我會試圖進行簡化,盡量少用專業知識;而歷史我會從人物事件進行講述,避開時間對歷史的模糊化。

寫這篇文章可能是完全出于對Enigma密碼機的熱愛,為了對其進行了解并準備這篇文章,我經歷了痛苦的思維過程,度過了許多難眠之夜……但這是值得的,前人的偉績,后人應該知道。

這篇文章能夠產生,要感謝我身邊的三個人(考慮到公開發表,在此不透露個人信息),他們分別是引領我接觸Enigma的人;和我一同討論Enigma的人;以及將自己相關的親身經歷講述給我的人。

至于題目所謂“初級解析”,不全是出于自謙,因為我的講述缺乏相關專業知識,并且對于一些問題做不到深入的解釋和分析。但我想,或許更簡明,更強調原理層面的敘述更能讓人得到純粹思想上的快樂,《經濟學原理》加深了我的這種認識。

Enigma是二戰時德軍使用的密碼機,若是查閱不列顛百科全書,你會發現其中文版將“Enigma”翻譯成了“謎語機”,這可不是因為這臺機器有什么猜謎功能,所謂“語”,我想就是“密碼”之意,指的就是其加密功能,而至于“謎”……希臘語中“Enigma”就是“謎”的意思。而在密碼機的專業領域,“Enigma”有一個更霸氣的名字―“隱匿之王”!是的,Enigma是密碼機的王者,Enigma誕生于1918年,從那之后不斷升級進化,產生了諸多后續機型和旁支機型,這一直持續到到計算機加密技術的成熟。在那半個多世紀的時間里,以Enigma為代表的密碼機一直統領著加密領域,這也意味著在那風云多變的半個多世紀的時期里,全世界的許多(不是全部,級別較高的機密是要通過更高級的加密方式進行處理)政治經濟外交信息都由其保護。就拿二戰時的Enigma本身來說,德軍的閃電戰以及無限制潛艇戰都要由Enigma的加密來保證,而二戰初期德軍的勝利很大程度上亦是由于盟軍方面對Enigma的束手無策。隨著Enigma的破解,盟軍突破德軍潛艇封鎖,成功完成諾曼底登陸……引用維基百科上的一句話:“人們都普遍認為盟軍在西歐的勝利能夠提前兩年,完全是因為恩尼格瑪密碼機被成功破譯”。對了,“謎語機”有歧義,“隱匿之王”霸氣太外露,所以人們還是通常直接使用音譯名:“恩尼格瑪”( [?'n?gm?])。

下面我就開始先進行Enigma加密原理的介紹,因為相關歷史的敘述離不開對原理的理解,而對Enigma的加密原理的介紹,又需要一些密碼學的知識……

簡單的密碼學基礎

密碼學是“研究如何隱密地傳遞信息的學科”。實際上隱秘地傳遞信息方法很多,但由于信息需要大量傳遞,長時間傳遞,以及在多個體之間傳遞,以至于密碼學所研究的內容更偏向對信息字符的加密處理而不是如何對信息隱秘運送。

斯塔夫里阿諾斯在自己的《全球通史》里提到過人類歷史與時間的不均衡性,人類在400萬年前(或更早)就誕生于這個世界,而我們能夠提及追溯的只有幾千年,相當于大部分的事件集中于極少數的時間里,這一情況也反映在密碼學的發展中。

可能在計算機科學涉足信息加密之前,加密處理也就限于以下兩種方法:(有必要說一下,密碼的加密基本上還是對字母的處理,例如漢語也要讓每個單字對應四個拉丁字母。我們不得不承認,拉丁字母在這一方面更有優勢,因為其基本元素是一維方向排列,而漢字的構成是將基本元素在二維平面組合。)

單表加密

單表加密實則就是字母間的一種映射,例如讓A對應B,B對應Z,從而構成一張換字表。加密時,對原文按照換字表進行處理,從而實現加密。單表加密的一個經典例子就是凱撒密碼:

明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ

密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC

規律實則是將每個字母向后推了三位。例如code→frgh

單表加密的破解很早就被完成了,因為一張換字表僅僅將字母進行了一次替代,而字母本身的出現次數,單詞句法的一些規律依然未被改變。例如,英文(還有德文法文……)中字母“E”出現的頻率最高,若是在截獲的大量密電中統計得到某個字母出現頻率最高,那它就應該對應著字母“E”,其余的也是通過這種方法(頻率分析法)。同時,還可以通過對密文進行觀察,猜出一些字母對應,因為單表加密中每個字母只有一次替換,所以一旦破譯,就會完全暴露,從而進一步簡化后面的工作。所以在早期的密碼破譯中,語言學家會發揮很大作用,因為對文字的直覺可以大大簡少破譯的工作量。

多表加密

多表加密產生于15世紀(注意單表到多表的時間跨度),所謂多表,實則就是“多張單表”,是使用多張換字表進行加密。例如,第一張表中“A”對應“B”,那我加密時第一次遇到“A”就要將其加密為“B”;第二張換字表中“A”對應“C”,那么第二次遇見“A”,就要加密為“C”……這樣,若是我想加密“AA……”,那么密文就會是“BC……”。當換字表用盡時再進行下一輪循環。

根據我的理解,多表加密實則是有周期的單表加密,其優勢就是這個周期性。因為多表加密可以將同一字母進行多種替代,從而使字母和句子本身的特性消失,相當于沖掉了字母出現的高頻率。頻率分析法也就失效了。

以維吉尼亞密碼為代表的多表替代因其“不可破譯”而被稱為“密碼之王”,這一直持續了大概300年,直到的查爾斯?巴貝奇出現。

查爾斯?巴貝奇,計算機科學的先驅,設計過差分機,分析機,這些都是早期計算機的模板。關于他本人的一些故事,在此就不贅述了,我總覺得有些悲情……

說說多表替代是怎么被破掉的(系統地闡述多表破解的是德國人卡西斯基,那陣子德國還叫普魯士),我在前面講過,多表加密就是有周期的多組單表替代,所以破譯就是從這個“周期”切入。密文中一般會反復出現一些字母組,統計字母組間的字母數,就可以知道這兩對組間使用了多少張表進行加密,這個表的張數,很可能就是真正的換字表張數(或因數),之后通過一定的數學分析,就可以最終確定換字表的張數,也就是所謂“周期”。將密文內容按周期數橫向排列,之后再觀察縱列。這時的縱列,實際上已經是消除過周期干擾的單表替代了!因為縱列的字母實則是由一張換字表加密出來的。這時頻率分析法就又有效了,多表加密也隨著簡化為多組單表加密而被攻破。

說了這么多加密的東西,實則就是為了引出Enigma,因為Enigma使用的是單表加多表!

Enigma結構及加密原理

我會試著將Enigma的加密原理和機械構造穿插講解,以讓大家較好地理解,原理上主要是應用一些排列組合知識。

先通過主要結構講一下信息在機器內的流動。

鍵盤:加密人員通過鍵盤進行輸入

轉輪:這是Enigma的核心部件,Enigma上一般裝有至少3個轉輪。每個轉輪有代表26個字母的觸頭和觸點,觸點和觸頭在轉輪內部有導線相連(例如輸入A和輸出B相連,一個轉輪實際上就是一張換字表),同時外部有棘輪控制轉動的幅度。當按動鍵盤上的單鍵時,最右邊的轉輪就會轉動一次,每轉動26次就會發生進位,帶動下一個輪轉動,這猶如鐘表上的指針。每當轉輪轉動暫停下來,轉輪的觸頭就會和下一個轉輪的觸點重新接觸,構成通路,按動單鍵產生的電信號就會經過三個轉輪(轉輪的觸頭和下一個轉輪的觸點有26種接觸可能,就是26種通路可能,也就是26張換字表)。

反射板:從最后一個轉輪出來的電信號會經過反射板,反射板會對信號再次進行置換,接著反射回去,讓其再次通過三個轉輪,隨后輸出。

顯示板:輸出的字母會在顯示板上展現,隨后會另有機器打印記錄。

連接板:設置在機器底部,可以將一對字母短接,相當于是單表加密。

輸入的信號就這樣經過加密并輸出:

以上都是基于靜態下的分析,至于動態嘛……才是Enigma“不可破譯”的核心。

前面已經提到,兩個轉輪間觸頭觸點的變化相當于26張換字表,那把右輪和中輪,中輪和左輪,左輪和反射板都考慮進來……應該有26×25×26種可能,即相當于產生了16900張換字表(注意由于有所謂“雙重步進”(Enigma的特殊機械特點),即左輪進位時還會帶動中輪再次進位,相當于中輪一次走了兩位,所以中輪只有25種排布可能);再加上一般轉輪都是5選3,這三個輪還可以隨機排列,就是 =60;再加上連接板可以使6對字母替換: ×11×9×…×3×1=100391791500。綜合以上,Enigma理論上可以產生16900×60×100391791500=101797276581000000張換字表!換句話說,除非你一篇文章中有某個字母重復出現十京一千七百九十七兆兩千七百六十五億八千一百萬次,否則連周期有都沒有!

是的,理論上Enigma是不可破譯的。

Enigma還有一點值得稱道,就是反射板,反射板的存在使得Enigma兼具加密和解密功能,即加密得到的密文再次輸入又能得到明文。我是這樣理解的,電信號通過三個轉輪實際上是在被進行“加減法”,即是在調整字母的序號,因此電信號正向通過和隨后的反向通過是屬于同級運算,同級運算是可以調換運算順序的,就好比5+2-3=4,4+3-2=5。這也使得Enigma不需要配備解密機。

關于反射板在此有必要再多說幾句,上面的“26×25×26”強調的是三個轉輪的瞬時狀態,即存在26×25×26種轉輪狀態,而不是因為電信號要經過三個轉輪才這樣算(要知道,實際上經過了六個轉輪,但前三個定了,后三個就不會變化,因此后三個不用再算)。

關于Enigma密碼機加密原理我就想說這么多。電信號式密碼機還是很先進的,要知道我國到了80年代才淘汰掉純機械式改用電信號式,那時已經離使用電子式密碼機(就是計算機技術)不遠了……

Enigma操作流程

Enigma的操作我個人認為比較繁瑣,當然這也是出于安全的考慮。前文已經提到過,能使Enigma發揮強大加密作用的正是各個元件的相互組合,而真正能使各個元件真正發揮作用的,我認為正是操作過程中的正確設置和使用(多說一句,Enigma被攻破一定程度上也是因為不合規范的操作)。

在這里建議大家使用Enigma模擬器(可以找我要,也可以直接下載:http://ishare.iask.sina.com.cn/f/14573783.html?from=like),隨著下面的講解逐步操作:

按照密碼本的規定設置:

密碼本規定了機器的初始設置(中文的密碼本還記錄著單字對應的字符),其作用是統一各部機器以便于解密,并通過經常的更換防止被破譯。

選擇轉輪:5個(或者6,7,8個)轉輪中選3個(或者4個)。

設置凹口圈(凹口圈裝在轉輪上用以控制進位):將每個轉輪的凹口圈正確調整。

設置連接板:根據密碼本上規定的連線關系連接字母。

確定轉輪位置:按照轉輪的編號拼裝,并最后裝機。

發報員自行設置:

當上述設置完成后,實際上已經可以加密發報了,但密碼破譯存在一個“臨界量”,即若是由同一密鑰(可以理解為設置)加密的密文傳輸太多,會很容易被破譯(概率統計的大數原理?宏觀經濟規律?我覺得好像是一個機理)。指標組就是發報員在規定設置完成后,自行選擇任意的三個字母,連續輸入兩遍,將得到的6個字母置于密文起始位置,之后再將密碼機轉輪按那三個字母進行設置,重新開始正式發報。收報員按照密碼本設置密碼機完成后,輸入指標組密文,會得到兩組同樣的指標組明文,隨后重新設置密碼機,正式解密密文。指標組可以在密鑰相同的情況下,造成信息的不規整(不同的指標組代表著不同的機器設置),從而避免密文被大量截獲后破譯。

現在各位試一下吧:

今天的轉輪組是ⅡⅢⅣ(Wehrmacht/Luftwaffe-UKW型Enigma,B反射板,型號是在反射板上體現的),凹口是A,B,C,轉輪設置ENI,連接板連接AB和CD。

密文:RUUFRONBGGG XFYXR JMMCU HWYLI OIPYA MZSLG FLJVR YZORP NLSRB VMNPR K

解密成功的就把明文發出來!

Enigma的興盛和衰亡

關于Enigma的歷史,人們已經很好地給出了分段:三個人,三個國家,以及所對應的有關Enigma的三個時期。

德國 謝爾比烏斯 興盛

1918年,德國人謝爾比烏斯為自己的轉輪密碼機Enigma申請了專利。同時期的類似產品層出不窮,但可以說只有Enigma能夠有巨大的效應和影響,因為Enigma裝備了德軍。

Enigma在誕生后的五年里可以說是無人問津的,因為當時的人們還不能理解密碼機的安全性能,而且Enigma當時的售價高得驚人,折到今天似乎能買輛車了。想一想,一般的企業或團體是裝配不起大量Enigma的,更何況它們沒有高安全性加密的需求。

有加密需求又有錢,那估計也就是軍方了。

Enigma能被德軍使用,還要感謝一位英國人,他就是我們非常熟悉的溫斯頓?丘吉爾爵士……丘吉爾一戰時任英國海軍大臣,在戰爭結束內閣倒臺后,老丘寂寞無聊寫了部《第一次世界大戰回憶錄》(直譯為《世界危機》,要知道他的《第二次世界大戰回憶錄》是拿了諾獎的),書中就透露了一戰時德軍密碼早在開戰時就已經被協約國破譯了。

德軍從書中得到了這條重要信息,隨即開始重視加密工作,Enigma也就趕上了好時機被大量采購裝配軍方。1926年Enigma被大量裝配軍方,而在之后的接近8年時間里盟軍(姑且這樣叫吧)對其手足無措,而在二戰中Enigma更是發揮了巨大的作用,直到后期才被最終破譯。

再無聊地說一句,那個時期發明密碼機的工程師多是窮困潦倒,謝爾比烏斯算是例外,只可惜他老人家在1929年死于一場交通事故(騎馬撞墻上了……)。

波蘭 雷耶夫斯基 初步破譯

前面說到,自從Enigma裝配德軍,盟軍方面就再沒有破譯出有用的信息。英國和法國對此倒不怎么著急,因為它們覺得德軍受一戰條款的約束,不會在短期內做出什么大的動作,即便德國鬧起來,再把它打贏就是了……英法的密碼機構可以說度過了碌碌無為的八年,而在1926到1933這將近八年時間里,波蘭人挑起了重擔。

波蘭人率先破譯Enigma也實屬無奈,這要從地理位置說起,波蘭夾在德國和蘇聯之間,從戰略上正是兩國沖突的聚集點,當時明眼人都看得出來,波蘭被瓜分是遲早的事,波蘭人也都感到了這種窒息的壓力。可以這么說,正是當頭的國難促使波蘭人以極高的效率破譯蘇軍和德軍的密碼。

在波蘭密碼破譯機構的幫助下,波蘭軍隊曾經戰勝了蘇聯軍隊,拯救了國家。而在西線,對德軍的密碼破譯也有很高的水準,但就像前面講到的,從1926年開始,德軍密碼逐漸地無法破譯了。

1928年,轉機出現了,德國駐波蘭使館的一個丟失的郵包落入波蘭情報部門,而郵包里就是一臺Enigma。之后的1931年,供職于德國國防部密碼局的施密特先生,將Enigma的操作流程,核心原理,和設計細節等相關文件泄露給法國情報人員,法國情報人員又在之后將這些資料和英國以及波蘭方面進行了交流(英法直接將其束之高閣……)。當然,有了Enigma樣機,有了操作流程,還是沒辦法對其進行破譯,因為Enigma本身代表著當時加密的最新理念:即便算法(加密機器,加密流程)泄露,在沒有密鑰(加密設置)的情況下,也可以不被破譯。相當于把一臺Enigma放在你面前,告訴你怎么用,你還是破譯不了。

波蘭人清楚,終究要靠自己的力量破譯Enigma。它們的人才培養機制發揮了很大的作用,大批有才華的年輕人投入到密碼破譯工作中,“數學三杰”最有代表性,而“數學三杰”的首要人物正是雷耶夫斯基。

雷耶夫斯基首先發現了指標組的漏洞(指標組是經過密鑰加密的,而且前后是一樣的字符,因此會暴露密鑰的信息),在分析大量的密文后,可以計算出轉輪的配置連線情況。隨后他發現了所謂的“字母循環圈”,即將一個字母輸入,再將得到的字母反復輸入,最終會回到這個字母本身。雷耶夫斯基從數學上嚴格證明,在同一密鑰加密的情況下,字母循環圈的個數及其分別包含的字母個數是固定的,不隨字母的兩兩交換而變化。字母的兩兩交換……是的,這相當于屏蔽掉了連接板的功能,相當于將Enigma總換字表數縮短了100391791500倍,相當于Enigma有效加密只有105456張換字表!

之后的工作就行相對簡單了,工作人員通過轉輪設置,和密文進行對應,從而找出密鑰,實現破譯。

后來隨著密文難度和數量的擴增,以及密鑰更換頻率的增大,波蘭方面不得不研發出循環測定機用以破譯德軍密電,之后又升級為著名的“Bomba”(炸彈)。

波蘭密碼破譯在當時達到了很高的水平,但可惜波蘭過早地被德軍占領,以致于密碼機構難再運轉,這時波蘭軍方找到了密碼破譯的盟友—英國和法國。波蘭方面將自己的成果完全移交英法方面,英法相關人員見到波蘭人的成果目瞪口呆,遂著手Enigma的破譯,怎奈法國不久亡國,最終破譯Enigma的重任也就壓到了英國人肩上。

說說波蘭的密碼破譯人員。波蘭亡國后,他們就被遣往集中營,之后輾轉反側,歷經艱辛,最終有一部分逃到了英國,不過他們沒再從事Enigma的破譯工作,最多破譯一些簡單的密碼。而戰后他們也大多留在大學教書。雷耶夫斯基干脆當了個會計,他也終于在自己的晚年決定講述自己的故事,波蘭人的貢獻也才被人得知。

英國 圖靈 最終破譯

英國人享受著戰前平靜的生活,密碼破譯人員在這期間也是碌碌無為。但當波蘭人將重任傳遞給英國人時,英國人以極高的效率開始了工作。

布萊奇利莊園,一個密碼破譯的傳奇之地,位于離倫敦只有幾十公里的小鎮上。無數的天才就是在莊園里的棚屋中最終攻破了Enigma,而這些天才中,我只想提一位—艾倫?圖靈。

或許在輕松的環境中才能誕生真正的天才,圖靈就誕生在初期避開戰火的英國。講圖靈我很早就有了構思,英國官方給圖靈的紀念銅牌上寫著三句話,我就從這三句話開始:

“艾倫?圖靈,計算機科學之父,戰時密碼的破譯者,偏見的犧牲品。”

計算機科學之父:想必業內人士都清楚這一點,圖靈通過“虛擬機器”的構想,證明了數學的不完備性,而虛擬機器本身就是計算機科學的基礎,圖靈完成這些理論的時候還不到24歲……

戰時密碼的破譯者:圖靈借助自己的“圖靈機”理論,巧妙地避開了連接板,從密文全文入手進行破譯,并帶領制造了“Bombe”破譯機,英國對德軍密電的破譯最終也達到了接近實時破譯。

偏見的犧牲品:這里就多說一些圖靈的瑣事:

圖靈小時候分不清左右。

圖靈14歲時,一天趕上公共交通罷工,就自己騎了90公里自行車去上學。這事情還上了當地報紙。

圖靈曾參加過馬拉松比賽,成績是第四名,只比次年的奧運冠軍慢了12分鐘。

圖靈去莊園上班的時候自行車總在特定的圈數掉鏈子,于是圖靈就發明了一個計數器裝在車上,到時候了就剎車。(呃……他為什么不去修車子)

說這么多,只是想說圖靈這個智商極高,運動極好的天才,有著一些異于常人的特點,而他最異于常人的特點,就是他的性取向……

圖靈在中學時就是個同性戀者,他喜歡上了一個男孩子,可惜那個男孩子死于疾病。再加上后來戰爭爆發,人們也就一直沒能發現圖靈的這一問題。1952年,一名盜賊在一次盜竊圖靈家的過程中,發現了圖靈是同性戀者。隨后圖靈被指控“嚴重猥褻”,被注射大量雌激素,身體和意志遭到嚴重摧殘。在1954年的一早,人們發現圖靈死亡,身旁有一個咬了一口的蘋果,后經化驗,蘋果中有氰化物。蘸毒的蘋果,不就是源于《白雪公主》嗎?圖靈對這部1937年上映的動畫電影很是著迷,就連自殺也選擇了這種方式,或許天才就有這分孩子氣,他們往往承受不了社會的冷酷。

再說說蘋果公司的Logo,人們說“咬一口的蘋果”和代表同性戀文化的彩帶條都是為了紀念圖靈,雖說這些傳言都被否定了,但我們不妨就當作是美好的聯想吧,圖靈值得后人紀念!

Enigma終于被英國人完全破譯,這也加快了盟軍勝利的進程。要說“不可破譯”的Enigma失敗的原因,我覺得很大程度上緣于德軍錯誤和過多的使用,讓地方破譯人員找到了破綻。

現在的Enigma已經僅僅是一段歷史了,人們對其的欣賞或許已經大于研究了,但其歷史地位是不會被撼動的。Enigma在二戰結束后就停止了發展,但美英等國仍以Enigma“不可破譯”的名義鼓動諸多國家使用Enigma,從而方便地得到機密,從這個角度看,Enigma也算是沒有立即退出歷史舞臺。當然,還是不得不說,科學技術服務于軍事和政治或許是一種無奈。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容