在著名的圖靈傳記電影《模仿遊戲》中,描述了在第二次世界大戰期間,德國納粹使用一種名爲“恩尼格瑪”(Enigma)的加密機器進行通信。
電影裏圖靈和組員討論恩尼格瑪的關鍵結構:插線板
總所周知,古典密碼是以置換字母表爲主的加密方式,現在看來略顯幼稚,但是在香農開創信息論學科之前,凱撒密碼/柵欄密碼存在了幾千年,最終在二戰期間達到頂峯,德軍使用的恩尼格瑪機,堪稱古典密碼設計的巔峯之作,下面分析一下恩尼格瑪的加密方式,以及圖靈怎麼破解它的。
Enigma密碼機的構造共由四個主要部件組成。分別是:
1.包含26個英文字母的鍵盤: 輸入端,每次輸入一個英文字母。
2.線路接線板: 將字母對連接,進行加密工作。
3.擾頻組合: 由快速擾頻器、中速擾頻器、慢速擾頻器組成,進行加密工作。
4.反射器: 保證加密後得到的字母與輸入的字母一定不相同。
下面是具體加密方法:
接線板,就是一個插線板,如果什麼也不插,就是a到a,b到b,如果把ab連起來,那麼代表a與b進行置換,每次加密只需要隨意連數個組合,就可以得到一個多置換表
通過插線連接需要置換的字母對
擾頻器,也稱作轉子。單個轉子的加密是一種單表置換。轉子的左右兩側各有26個點,分別代表A-Z這26個英文字母。一端輸入一端輸出。爲了達到加密的目的,將左右兩側的字母交叉連接,爲了提高加密的安全性,每輸入一個字母后,第一個轉子就會自動轉動一格。當第一個轉子轉動一圈後,第二個轉子就轉動一格。這樣原來的單表置換經過旋轉變爲多表置換,使得安全性更高。
反射器的加密是一種固定的單表置換,加密方式是將最後一個轉子的其中兩個觸點連接起來,並將電流沿一個不同的路倒回到線路接線板。這樣的反射器導致加密後的字母與輸入字母一定不相同,並且使得Enigma密碼機的加密過程是自反的,這也是加解密一致的關鍵部件。同時還讓Enigma機有了另一個性質,即:一個字母不會加密成自身。這也是破解的關鍵。
因爲Enigma反射器和轉子的設計,所以在Enigma機加密過程中,一個字母是不會被加密成自身的,根據Enigma的這個性質,在獲知密文的位置之後,我們便可以將明文與密文聯繫起來,這種明密文組合被稱作克利巴(Crib)。
“crib"的原意是指考試作弊時的夾帶,在這裏則表示一段未加密的文字或字符串,圖靈稱其爲“對照文”。
在加密時,特殊的Crib內部能形成一個環路 ,如下圖例子:
如圖,T和W之間形成了循環
以上圖爲例,分析其加密過程如下:
我們注意到,出現了不隨機的現象(不隨機現象:L0進L0出),此時可以消除擾頻器的影響,將Li直接相連,時只需窮舉擾頻器的起點,判斷L0和L0'是否相等,如果相等(即環路亮燈),說明此時找到了一個可能起點K2,把所有的可能祕鑰都記錄下來,即可形成一個較小的可能祕鑰空間。遍歷所有存在的Cibe環,就可以進一步縮小密鑰K2空間。
經過計算,圖靈還發現,一份加密電文中只要含有30個字母的crib,就可以被破解。
那麼該如何尋找crib呢?圖靈也從一些軍事規律導致的漏洞入手。
德軍消息裏經常出現:
無特殊情況(Keine besonderen Ereignisse)
希特勒萬歲(Heil Hitler)……
天氣(wetter)
比如wetter,這個詞每天早上6點到6:05必然出現,而且大都出現在信息的開頭,此外這個詞裏出現了兩個t同時出現的情況。根據圖靈發現的規則,圖靈就可以拿着wetter這個字段當作原文,對照着密文一位一位的挪動,排除掉那些不符合剛剛兩個規律的方案。
又因爲wetter很高概率出現在信息最開頭,所以只要試幾次,就能發現wetter對應的密文到底是哪幾個字母,進而就可以找到接線板的插法。後來圖靈又專門設計製造了一臺 “炸彈機”(Bombe),通過電子技術,運用上述的排除法來破譯 “恩尼格瑪”:
最後,推薦一個很小衆的密碼學小遊戲,基本都是古典密碼學的經典加密方式,遊戲有六章,涵蓋隱寫,換位,置換等方式,很值得密碼學愛好者當作入門遊戲
更多遊戲資訊請關註:電玩幫遊戲資訊專區
電玩幫圖文攻略 www.vgover.com