劍白
《模仿游戲》是由莫騰·泰杜姆執導,本尼迪克特·康伯巴奇、凱拉·奈特莉等主演的傳記電影。影片改編自安德魯·霍奇斯編著的傳記《艾倫·圖靈傳》,講述了“計算機科學之父”艾倫·圖靈的傳奇人生,故事主要聚焦于圖靈協助盟軍破譯德國密碼系統,從而扭轉二戰戰局的經歷。該片獲得第87屆奧斯卡金像獎最佳改編劇本獎,以及包括最佳影片、最佳導演、最佳男主角、最佳女配角在內的7項提名。
實際上,密碼學由來已久,遠在古希臘時期就已經萌芽,近代以后更是衍生出很多分支學科,促進了計算機科學和網絡安全方面的進步。這次我們談到的《模仿游戲》的主人公,鼎鼎大名的艾倫·圖靈,就是這一行的佼佼者。影片描寫了他領導小組破譯了二戰時期德軍最復雜的密碼機——恩尼格瑪密碼機的過程,這一貢獻令二戰提前結束。為什么密碼機能夠起到這么重要的作用?這次破解對圖靈有何啟發?讓我們來一同進入這神秘莫測的密碼世界吧!
密碼學淵源小考
人們為什么會想到要加密?被稱為“信息論之父”的克勞德·香農在他的一篇論文中道出了兩點宗旨:“秘密性”和“真實性”。這并不難理解,假設有A和B兩個人,他們打算溝通,但又不想讓第三個人知道,而信息在傳遞過程中又必須和第三個人接觸,這個矛盾直到最基本的密碼學原理產生之后才得以解決。
在公元前600年左右,就已經有人意識到這個問題,并且嘗試解決。具體何人已經不可考,但我們可以設想這樣一個情景:一個希伯來商人從一個不識字的匠人那里獲取了一份給陶器上釉的配方,經過測試發現,這種配方比市面上的更先進,成本更加低廉。他很想立刻開工,但他人在外地,如果簡單地托人帶回去,誰能保證配方不被泄露呢?
他左思右想,想到了第一個主意:寫一首隱晦的詩歌,工藝的精髓就隱藏在其中,而且不是他最親近的人根本沒機會猜出來。無疑,這確實能保證這配方不被泄露,但問題也隨之而來,陶器上釉工藝是個精細活兒,他能保證對方完整領會其中的意思嗎?如果不能,就算安全傳回去了,又有什么意義呢?
苦惱中,他發現了一張羊皮紙。羊皮紙有何特殊呢?上面記載了某個執政官說的一段發言,正巧,他家里也有一張羊皮紙,同樣記載了這次他十分認同的發言。他有了一個主意:將配方上用到的詞同發言中用到的詞一一對應、替換,然后托那個捎信的人帶去一張上面寫了雜亂無章的話的羊皮紙,順便讓他告訴他的妻子:“找出那張我日夜朗誦的羊皮紙,和這些胡言亂語對應,秘密就藏在那里面?!?/p>
這位希伯來商人利用的就是替換式密碼,準確地說,是簡易替換式密碼。這種替換式密碼一直到二戰還是最基本的加密方法,被廣泛地應用于民間和軍隊。而現代密碼學的發展則要仰賴在本小節之處提到的那個人——克勞德·香農,他就職于貝爾實驗室期間發表了一篇名為《通訊學的數學理論》的成果論文,這篇論文開啟了現代密碼學的大門。
艾倫·圖靈與他的“上帝的羔羊”
第二次世界大戰前,德國的數學家們就一直處于歐洲的領先地位,他們發明了一種加密方式,讓海軍只依靠收音機就能夠接受指令。波蘭的數學家們多年來一直在努力解碼,截獲這些信息并不難,難的是你該如何從數千條加密訊息中讀出意思。
比如,有這樣一條消息:“六點天氣播報,白天天氣晴朗。晚上有降雨。希特勒萬歲!”沒人會天真地相信這就是一條天氣預報。但是你拿它又有什么辦法?上文說的那個希伯來商人所用的簡易的替換式密碼早就被數學家們想到了破譯的方法。他們發現,雖然拿不到對應密碼本,但字母本身的出現是有頻率的,通過統計每個字母左右兩邊出現的元音輔音字母的頻率,就可以推測還原出原本的語句??傻聡瞬煌?,他們利用一種被稱為恩尼格瑪密碼機的機器加密。
其實這種密碼機并不新鮮,很早就用于商業,市面上隨處可見。不過德國人卻另辟蹊徑,僅僅是多加了一個插線板,就增加了無數的可能性??诹畋蝗溯啺嗾莆?,一日數易,幾乎沒有破解的可能。尤其令人沮喪的是,每當波蘭人破解出上一次加密的規律時,德國人早已經動過插線板,換了一種加密規律。和德國人頻繁更換口令的方式相比,波蘭人永遠處于后知后覺的狀態。
圖靈和許多數學家、語言學家被派往布萊切利莊園。在真實的歷史上,圖靈不像電影中說的那樣人緣不好,還被上級部門質疑成果,真實的圖靈因為他的天才和平易近人頗受那些數學家的擁戴,而且得到了英國政府的大力支持。
最后,圖靈和他的同事們經過長久的努力,設計出一種破譯機,昵稱是“上帝的羔羊”。這種機器以波蘭人的破譯機為藍本,進行了大幅度的改良,先排除若干自相矛盾的解讀方式,余下的再窮舉,一下就快了很多。不僅如此,幾臺機器相連還抵消了插線板所增加的可能性。漸漸地,就像影片中一樣,他們足以在幾分鐘內就破譯一份信息,最終,讓這場波及全世界的大戰提前結束了。
這中間還有個小插曲:由于檢索全部的信息量太過巨大,就像影片中所描述的那樣,他們需要找到一個能縮小范圍的方法。結果,德軍的公文形式給了他們靈感,德軍的公文太過于正式,總有那么幾個詞會反復出現,比如“天氣”和“希特勒萬歲”。提取了這幾個詞之后,檢索速度一下快了起來。
密碼學前瞻——窮盡一生你也拿我沒轍
隨著現代計算機技術的進步,密碼編碼學不得不高速發展。圖靈造的那個大家伙只能算是現代電子計算機的雛形,根據約翰·馮·諾依曼提出原理設計的第一臺電子計算機“埃尼阿克”,每秒可以進行5 000次加法或400次乘法,而如今英特爾公司研發的民用級別處理芯片都能達到每秒495億次運算,更不必說我們所熟知的天河二號,或是正在研發中的下一代計算機——量子計算機了。原有的加密方式在現代科技面前似乎不堪一擊。
可是,密碼編碼學也有它的新發展。對稱加密算法的佼佼者AES算法是下一代的加密算法標準。按照這種算法,假設計算機每秒嘗試255個密碼的話,要嘗試1 490 000億年才能得出結論!也許你要問,現在計算機算得那么快,怎么可能每秒才嘗試255次?那是因為破譯AES并不是簡簡單單地嘗試一個數字,而是解一系列的方程,而這要花費大量的計算資源。
現代算法可謂是充分貫穿了一個精神——不必真的讓你解不開,只要拖住你足夠長的時間就好了。畢竟任何信息都有時效性,過了時效就毫無價值??v觀密碼學的歷史,由人工到機器,再到如今運算速度越來越快的電子計算機,人們的需求同時推動了技術的進步,而技術又反哺人類以更新更強的力量。潛伏在曲折歷史中的“魅影”絕不止密碼學一家,有機會再與諸位分說。