人性弱點:圖靈破解恩尼格瑪機的關鍵Human frailty: Turing's key to unlocking the e
恩尼格瑪機的破譯一共有兩次:
第一次是上節講的波蘭數學家做出來的,
第二次是圖靈做出來的,這也是本章的重點。
為什么要破解兩次呢?因為這兩次使用的恩尼格瑪機,結構上不一樣。
如果第一次破解難度是65的話,第二次破解難度就要到95了。這還只是難度對比,如果從必要性上對比,第一次破解甚至都是不必要的。
因為波蘭情報局在那7年時間里,一直能通過德國間諜搞到每天的鑰匙。
情報局只是擔心萬一今后恩尼格瑪機改版,自己沒有B方案,所以希望密碼學家提前動手。那幾年,當那幫密碼學家每天埋頭破解的時候,情報局高層其實早就提前知道每天的結果了。
可就在二戰開打前一年,兩個破解渠道一起斷掉了:
首先,德國把恩尼格瑪機的編碼器齒輪增加到了5個,接線板的數量同時也增加了;
其次,那個長期提供當日鑰匙的間諜,也突然消失了。
恩尼格瑪機接線板(其中接好了2根)
1939年4月,德國撕毀和波蘭的互不侵犯條約。所有人都能預見到,德軍馬上要打來了。波蘭坐不住了,趕緊把至今為止其他國家都還不清楚的第一版軍用恩尼格瑪機的結構、破解方法,公布給了盟友。
英國對波蘭提供的方案很重視,甚至為了信息安全擴充了密碼隊伍。
從從前的密碼局40號房換到了布萊切利園(Bletchley Park),面積擴大了幾十倍;工作人員從最初的20多人,擴增到五年后的9000多人。
與此同時,員工的結構也有變化。從前主要是語言學家,現在的主力是數學家。大量招募數學家,這是波蘭人特地囑咐英國人的。
英國的資源比波蘭豐富得多,所以雖然恩尼格瑪機升級過,但靠著堆人力、堆機器的方法,在戰爭初期,英國竟然可以勉強應付新版恩尼格瑪機。
但這時候的破解,可以說是在摸透了人性規律的情況下做出來的,比如:
設定那3個初始值時,按操作規范應該是隨機設置,但實際上德軍操作員根本做不到這一點。類似QWE、ADS、JKL這樣鍵盤上3個相鄰字母的情況,經常出現。操作員就是懶,隨手摁出來。
就算3個字母不連著,但手指的活動總是有規律的。3個字母在鍵盤上的位置總會趨向于集中,所以這些組合總是解碼者優先嘗試的。
甚至還有用女朋友名字的前三個字母的,以至于后來英國的密碼專家每次都先試女人名字。
除此之外,德軍的恩尼格瑪機操作指南也有漏洞。
比如,5組齒輪中選3組作為當天的編碼器,但卻有一個規定——不能讓同一個齒輪在同一位置連續出現2次。聽上去好像是避免了重復,但其實減少了齒輪組合一半的可能性。
還有,接線板對調字母時不能對調相鄰的兩個字母,比如B不能和A對調,也不能和C對調,理由是這樣對調太容易被識別出來。結果這樣一規定,可能性的總數又銳減。
所以,英國最初就是利用一切可利用的人性的漏洞、規則的漏洞,外加靈活運用波蘭的老方法,勉強支撐著對恩尼格瑪機的破譯工作。
但這種水平的破譯,是遠遠不夠的。一旦德國發現,每條信息的前6位是破譯者可以抓住的漏洞的話,就會改變鑰匙的傳遞方式。那樣的話英國就沒辦法了。
所以,圖靈的任務就是找到一種全新的破解法,完完全全的猜透恩尼格瑪機。
圖靈是怎么做的呢?簡單說,他也是從一些軍事規律導致的漏洞入手的。
比如,德軍消息里類似——
無特殊情況(Keine besonderen Ereignisse)
(Heil Hitler)……
這樣的詞語,會經常出現。
圖靈還分析出了一個更好用的詞——“天氣”(wetter)。這個詞每天早上6點到6:05必然出現,而且大都出現在信息的開頭,此外這個詞里出現了兩個t挨著的情況。
根據我們之前講過的:
恩尼格瑪機對同一個字母連續加密的話,是不會加密成相同字母的,而且這個字母也不會被加密成它本身。
根據這兩個規則,圖靈就可以拿著wetter這個字段當作原文,對照著密文一位一位的挪動,排除掉那些不符合剛剛兩個規律的方案。
又因為wetter很高概率出現在信息最開頭,所以只要試幾次,就能發現wetter對應的密文到底是哪幾個字母。
到了這兒,只是成功的第一步。
因為現在圖靈得到的題目就相當于說:已經知道了6個原文和它對應的6個密文,讓你求出恩尼格瑪機的初始設定。
說這個問題怎么解決呢?
最直接的方法,就是用恩尼格瑪機所有的初始設定,一個一個去試。把原文wetter輸入,看看密文和我們截獲的一樣不一樣。如果一樣,那就說明初始值找對了。
但是,軍用版恩尼格瑪機的初始值有1.6×10^20那么多種,是不可能用暴力去試的。
所以,可用的方法只有一個——
在手頭已有的少量原文和密文之間,想辦法建立它們對應的數學關系,來反映出恩尼格瑪機的內部結構。
其實這個想法,和波蘭破解第一版軍用恩尼格瑪機有點像。
圖靈把原文寫一行,密文寫在下一行,排成兩排,他管這個叫“對照文”(Crib)。然后也建立了環,環上也有連接數的概念。具體細節在這里沒法說了,因為非常繁瑣,而且和密碼學知識的邏輯沒太大關系。
我們知道結果就行——圖靈通過數學過程的轉換,軍用版恩尼格瑪機1.6×10^20這么多可能性,一下被縮減到了105萬種。
可能有人說“這也不少啊”,但這已經是所有可能性的一百萬億分之一了。
這個105萬的計算過程,肯定也不能由人來做了,而是用一種機器來破解。這個破解機,就被起名叫“炸彈”。炸彈體積挺大,有2米見方,炸彈機越多破解就越快。
炸彈機(一臺)
1940年5月10日,德軍也不知是察覺到了什么,突然改變了交換鑰匙的方式。每條信息開頭的6位,不再是從前的格式了。英國情報部門從此,完全失去了破解德軍恩尼格瑪機的能力。
好在這個空窗期并不久,3個月后,依照圖靈方法制造的第一臺炸彈機投入使用。在之后2年里,有50臺炸彈機投入使用,英國又能破解德軍的密碼了。
到1942年的時候,破解德國陸軍恩尼格瑪機當天的鑰匙,大約只需要1小時的時間。
即便有了炸彈機,破譯也不輕松。德國加密水平最高的是海軍,他們甚至在通訊中都不使用格式化的語言,所以就沒有固定的原文可以參考。
但英軍也有辦法,就是在特定地點布水雷,這些水雷其實是信息誘餌。德軍發現水雷后,肯定會發這樣的電報:在東經xxx,北緯xxxx水域,發現大量水雷。這樣一來,原文中很多的詞就可以確定了。
不過為了防止德軍起疑,這招不能用得太頻繁。
英國很重視來之不易的破解,所以盡量裝成什么都不知道。比如說已經知道德國軍艦的位置,準備去偷襲,卻要先派出偵察機像模像樣的巡航一番。好像德軍艦艇的位置是通過偵察機捕捉到的,而不是破解密碼得到的。
圖靈破解海軍版恩尼格瑪機的實際效果怎樣呢?我給你兩組數據你就知道了:
1. 破解之后,盟軍全年被擊沉船只的噸位下降了60%。
2. 德軍潛艇的損失率,從破譯前的不到7%,猛增到50%。
利用這套破解裝置,也成功搞定了日本和意大利的密碼系統。
雖然有些人評論得比較夸張,說“破譯了恩尼格瑪機,盟軍才最終勝利”。但公平的說,如果恩尼格瑪機沒被破解,二戰至少要延續到1948年以后。所以你看,全世界至少有上千萬的家庭受惠于密碼學家。
可密碼學家大都沒有受到什么嘉獎,因為保密法涉及國家安全。
二戰結束后,布萊切利園就徹底解散,炸彈機也拆解了。少部分密碼學家進入改制后的政府通訊總部做公務員,大部分人又回到了從前的生活中。而且他們必須嚴守秘密,否則就會被判刑坐牢。
其他軍人都能談論自己的英雄事跡,而密碼學家只能默不作聲。
根據《保密法》的限制,二戰中的密碼學資料在1970年才公布,第一本專門寫布萊切利園的書在1974年才出版。而這時,很多當年參戰的密碼學家已經去世了。
圖靈就是這樣,他一輩子也不知道自己的破解對戰爭具體產生了什么效果,戰后繼續從事數學研究。
1952年時,因為被發現有同性戀行為,被強迫執行了化學閹割。后來在雌激素的作用下,身材發胖,胸部變大,精神更是遭到折磨。最終在1954年的夏天,吃下氰化物浸泡過的蘋果自殺了。
圖靈在破解恩尼格瑪機上所有的成就,都是在他去世以后20年才為人所知的。
回頭看密碼學的發展,你會發現有一個東西的神秘感在逐漸褪去,那就是關于“如何加密”的操作過程。
在隱藏法的年代,如何加密的細節絕對屬于核心機密;
而在替代法和移位法中,大部分操作原理人們都知道,只是不知道具體移動了幾位;
但到了機械電子加密的時代,加密設備的工作原理,不論是理論還是技術細節,敵我雙方都了如指掌,密碼的安全性全部落在鑰匙上,而不再依賴于加密的操作細節。
這個趨勢在之后還會更明顯,在后面還會講到。
圖靈破解了恩尼格瑪機后,在加密解密的對抗中,解密一方又暫時占據了上風。
下一節,講講加密一方的反擊——誕生在計算機時代的第五代加密法