01 密碼破譯——數學家對決的戰場
2024-09-26 10:37:55
作者: 羅振宇
那密碼學到底是幹嗎用的?當然就是破譯情報了。兩國對戰,在現代化的戰爭條件下,我幹什麼你完全不知道,而你幹什麼我就像看著澡盆里的魚一樣清楚,那這個仗還怎麼打?希特勒輸得一點也不冤。當然不是說第二次世界大戰只有圖靈這一個原因,但他確實是非常重要的一個因素。
我先簡單地給大家講講密碼發展的幾個階段。
第一個階段,在西方的文明當中,密碼是一個非常簡單的東西,就是把字母順序打亂。比如說最早發明密碼的愷撒,他發明的就叫愷撒密碼,如果我跟前線的將領要傳達信息,那我們約定另外一套字母系統。比如說A在我寫的裡面,它就變成了K, J就變成了Z,我們倆互相約定好,那我就用約定的那一套密碼,用正常的字母來書寫,那敵人拿到肯定就看不懂了。
可是這種密碼有一個問題,就是它架不住大數據,因為大家知道,任何語言一個字母,在一個單詞當中,它出現的頻率是可以統計出來的。只要資料足夠多,馬上就可以知道你是用哪個字母代替了哪個字母,稍微做一點功課,這種密碼就能被破譯。
但是到第二次世界大戰之前,德國人發明了一套密碼系統,這真叫成也蕭何,敗也蕭何。這套密碼系統是落實在一架機器上的,就是所謂的恩格碼機,「恩格碼」這個詞是音譯,原文就是「謎」的意思,又稱之為謎機。因為德國人當年造的這種密碼機特別多,現在市場上還有人專門收藏。
這個機器有什麼好處?大家知道,直到今天我們人類都面對一種兩難,就是如果你要更多的安全,對不起,你就必須承擔和面對更多的麻煩。就像我們現在電腦系統里、網絡上,越是追求安全,設置的密碼就要越長,那你用起來肯定就不方便。但是恩格碼機或者說謎機,恰恰解決了這個問題,它是又安全,同時又方便,德國人多聰明。
那恩格碼機的具體原理是什麼?因為太複雜,我只能簡單給大家介紹。它同樣是用愷撒密碼的原理,但是一個字母輸進去,它通過一些轉盤的轉化,每一個字母最後輸出來的結果,會有150萬億種可能,德國人就通過一個機器把它做到這麼牛。
150萬億是什麼概念?就是15後面寫18個0。你可以慢慢地試,你可以試著去破譯,但是可能一個很大的團隊要干幾千年,你才能將它破譯,它非常安全。
與此同時,它還特別方便,因為那個謎機的形象,有點像打字機,只要你把這封密碼文件按照打字機上的鍵盤輸進去,按一個字母,它的屏幕上就有另外一個字母燈亮。只要一個密碼抄寫員把那個亮的字母給抄下來,就能夠還原成平時我們要傳達的那個正常的信息。這個操作真的是用一分鐘就可以教得會的操作。
德國人在發明這套系統之後覺得特別自信,謎機或者說恩格碼機在第二次世界大戰中,是德國人普遍運用的一種密碼機器。那個時代的密碼破譯,就是數學家對決的戰場,像圖靈這樣的人就有了用武之地。當然我們順便說一下,第二次世界大戰之後,人類的密碼系統其實有一個小小的轉向。
比如說這本書的序言是馬慧元老師寫的,她就講到,她上大學的時候老師就跟她講,說現在的密碼不能再靠小軌跡了,就是數學軌跡,也就是我的算法你不知道。那萬一對方知道了,你這套密碼系統不就變得極其脆弱嗎?二戰之後,人類傾向於用一種什麼密碼系統?就是膀大腰圓、傻大黑粗。
說白了,我即使把密碼告訴你,把破解程序也告訴你,你找來世界上最快的計算機算。你算完了,結果可能是一年後,因為運算量實在太大,而一年後我這套密碼已經過期了,這才是最安全的密碼。當然現在我看到有人說,隨著量子計算機的計算速度進一步提升,這種密碼可能也不保險了。那是以後的話了。
總而言之,我們回到二戰的時候。德國人覺得自信心爆棚,這套恩格碼機是沒有人能破解的。當然也有人距離成功只差一步之遙,這就是波蘭人。
波蘭人為什麼要破譯密碼?因為這個民族在歷史上三次被瓜分,到第二次世界大戰之前,他們心知肚明,這邊一個德國,那邊一個蘇聯,肯定是要對我下手。什麼時候下手,怎麼下手,打又打不過,天天就琢磨這雙方都在嘀咕點什麼,天天就用電台去截獲對方的電報,然後試圖破譯。
波蘭還真就搞出了一批密碼學家,然後距離破譯謎機已經很近了,但是沒有最終成功,因為德國人也不斷地在換。1939年9月1號,德國人衝過了波蘭和德國的邊境,發動了第二次世界大戰。在8月的時候,波蘭人已經把這套系統交給了英國人,英國人對波蘭人豎大拇哥,說他們就好像一個騎士在倒下之前,把手裡的劍交給了戰友。
於是這個球就到了英國人的腳下,你大英帝國不是人才濟濟嗎?你行你上,你能不能破譯這套密碼?英國人剛開始也是一頭霧水,完全找不著北。但是英國人有一個長項,就是在二戰期間,體現出一種非常難得的堅持和隱忍,願意吃苦,投入精力。
他們在倫敦以北100公里的布萊切利公園,設立了一個破譯大本營,最多的時候在那兒投入了上萬人,堅決要破掉希特勒的密碼。每天大量截獲德國人的電報,這些電報都是用密碼寫成的天書,什麼時候能將這些電報破譯出來?哪怕只是一張紙。沒有人知道,大家都在外面等。
這裡面當然就包括圖靈,圖靈腦袋裡想什麼,當時很多人其實是不知道的,連圖靈在那兒幹什麼,很多守衛也不知道,因為他整天破衣襤褸,一副邋遢的樣子,很多人覺得這傢伙是間諜吧?在布萊切利公園裡經常有人攔住他盤問。其實很少有人知道他們到底在幹什麼,只知道他們是在做一件很重要的事情。因為數學家腦子裡想的東西,直到今天我們都不能用很方便的語言把它說出來,更何況當時的人?
那現在回頭看,其實我們已經搞不清楚,哪些是波蘭人奠定的基礎,哪些是圖靈自己搞的創新。但是我們可以清晰地看到兩點,就是圖靈堅信兩種力量。
第一種,就是堅信機器對機器,因為恩格碼謎機是一種機器,如果我用人力來對抗你,那就天然落了下風。圖靈堅持要製造一個機器,這個機器現在就稱為炸彈機,這是《圖靈傳》這本書的翻譯;我還看到另外一種翻譯法,叫小甜點。
我們在電影《模仿遊戲》里看到過那個機器,就是一面牆那麼大,上面全是小圓塊,那就是炸彈機。後來英國人就是靠這種機器對機器的方法,生生破譯了德國人的密碼。
當然,圖靈還堅信第二種力量,就是人性的欠缺。因為密碼是個數學現象,它是個死的;機器是個物理現象,它也是個死的。如果你要想把它破譯,你就得堅信使用機器和數學的這個人是有缺陷的,因為對方德國人也是人,德國人的人格缺陷就是有點死板。
圖靈就用到一系列的方法,他發現德國人經常會用密鑰,它往往是相鄰的兩個字母,比如說AB,或者CD,這是德國人的一個習慣。這就緩解了一大部分計算量。
再比如說,他發現德國人發出來的電報,前面經常會有一些固定的語句,譬如說今天是星期幾,今天天氣如何。更重要的還有一句詞,叫「希特勒萬歲(Hail Hitler)」,這句詞往往就成為他捕捉對方密碼的一個很重要的線索。
此外,圖靈還會誘使對方發一些固定的信息,然後通過一套數學算法,來判斷對方這個密碼到底是什麼,這當中的原理當然極其雜亂,這裡就不贅述。
總而言之,在1941年和1942年期間,圖靈居然就把這個謎機給破譯了。破譯密碼的結果就是英國人全都知道希特勒的一舉一動,但是英國人的麻煩在於,我雖然全知道還得假裝不知道,因為我不能讓德國人知道了我破譯了密碼。
因為德國人並不傻,萬一發現最近英國人怎麼揍我揍得那麼准?是不是密碼被破譯了?如果德國人意識到這一點,只要在恩格碼機上改幾個設置,那圖靈此前所做的工作可就付諸東流了。如果重算一遍,得花多少時間?這期間又得多死多少人?英國人這時候不得不開始裝傻充愣表演。
舉個例子說,德國艦隊來了,你明明知道它就在這兒,你還真就不能直接派轟炸機去炸,得先派偵察機去,假裝偶遇,「發現」你在這裡,然後再回去叫轟炸機,這個表演也很辛苦。
其中最危險的一次,是德國的九條油輪的行蹤被英國人發現了。德國到後來能源已經很緊張,如果炸掉九條油輪,這對德國的戰鬥力打擊是很大的。英國人心癢,這口大肥肉真想給它吃下來,但是又不敢,這樣吧,九條炸它七條,留兩條逃生去吧,以便讓德國人不猜疑到密碼被破譯。
但是德國人是挺倒霉,英國人也太陰險,最後這兩條油輪逃出生天后,居然又遇到了英國的艦隊,被炸沉了。這其實是德國人非常有機會發現密碼被破譯的一次,但德國人生生就沒發現,為什麼?因為他們對恩格碼機器太自信了,覺得這套東西根本不可能被破譯。
後來在二戰期間,雖然德國人也升級了這套系統,但是沒有徹底地毀掉或者說將恩格碼機器棄之不用,給英國人留下了大量的空間。英國人在第二次世界大戰期間,從敦刻爾克大撤退一直到諾曼第登陸期間,在歐洲大陸是沒有什麼作為的。它跟德國人打仗主要是在兩個戰場,一個是海上,還有一個就是北非。
1941年英國海軍打了一個大勝仗,圍殲了德國海軍引以為豪的那個大戰列艦俾斯麥號。1942年,蒙哥馬利元帥帶領英國的坦克部隊,在北非消滅了德國號稱沙漠之狐的隆美爾元帥的坦克部隊。這兩場勝仗的背後,都是因為英國人掌握了德國人的情報。
當然還有一點,就是英國的地理位置是一個海島,它的很多糧食都得從盟國運輸回來,尤其是從美國。可是德國人當時搞出了一個U型潛艇戰術,就是群狼戰術,動不動就擊沉它的商船。英國的物資供應一度緊張到整個英倫三島的糧食供應只剩下一周,境況非常危險,眼看就要全民餓肚子。但是圖靈因為破譯了這套密碼系統,英國商船的損失就迅速下降了。
我曾經見過本書的譯者孫天齊先生,他給我看了一張圖,自打圖靈破譯之後,可以明顯看到英國商船的損失下降,下降多少?75%。後來德國人又把恩格碼機器升級了,而且立竿見影,這邊一升級,英國商船的損失馬上就飆升。但緊接著,圖靈和他的團隊又破解了德國人的新機器,損失又下來了,在這根曲線里看得非常清楚。
戰爭哪裡是我們平常想像的那樣,僅僅是戰場上士兵和將軍的事?這背後有多少數學家和密碼學家的努力,他們是實質性地在影響戰爭的進程。後來邱吉爾講過一句話,說我們打這場戰爭,其實是捏著敵人的脈搏在打,他們幹什麼我們全知道。那這份功勞是屬於誰的?當然就是屬於倫敦以北100公里的布萊切利公園裡面的那些學者們,其中就包括圖靈。
但是這幫人可沒有享受到戰爭勝利帶來的紅利,為什麼?不能說。英國人先是打二戰,二戰一結束就開始跟蘇聯人死磕,這冷戰就開始了。布萊切利公園裡面發生了什麼事情,一直是國家的機密。