「迷碼機」之謎

正所謂smart is the new sexy,怪咖型男Benedict Cumberbatch在電影《解碼遊戲》裡飾演天才數學家圖靈,拆解迷之打字機「迷碼機」時專注的樣子散發無限帥氣。電影裡的人工作往往好像變魔術一樣,但密碼攻防戰背後的數學原理也沒有那麼不好理解,今天就來介紹一下「迷碼機」到底如何運作。

Four-rotor-enigma

話說,「迷碼機」是德國軍方發明的一種加密通信工具。「迷碼機」的外型就像一笨重的打字機。它能夠把輸入的英文字母轉換成另一組英文字母,例如”apple”轉換成”ltzea”,同時也可以輸入”ltzea”轉換回原來的”apple”。所以,只要通信雙方都有相同的機器就可以用密碼互相溝通。由於使用了「迷碼機」,就算同盟國截取到他們的無線電通信,也無法了解內容是甚麼,大大增加了在二戰中的戰略優勢。

那麼,「迷碼機」比起一般的加密法(例如把所有字母向後移N位,或隨機的字母換算表)強在哪裡呢?關鍵就在於它可以把同一字母翻譯成不同的字母。例子”apple”裡的兩個’p’,卻分別加密成’t’和’z’。這大大增加了破譯密碼的難度。如何實現這樣的設計呢?

我們可以想像,我們手裡有一千份不同的字母調換表,輸入第一個字母時參照第一份字母換算表,輸入第二個字母時用第二份換算表,如此類推。即使我只是重覆地輸入aaaaaaaaa,得出的結果便是從第一份到第一千份換算表’a’的對應字母,也就是一串看起來毫無規律的字串。這樣的話,直至我輸入第一千零一個’a’,這個序列才會重覆。

可是我們總不能拿著一萬份字母調換表人手換算,如果有一部機器自動化就好…那不就是「迷碼機」嗎?打開迷碼盒子,是一個精密的電路裝置(circuits),內部由三個部分組成。

第一部分是鍵盆和燈板,分別有26個鍵和26個燈泡,用來輸入字母和輸出加密字母。而且,鍵盆和燈板連著接線板,用來隨意交換任何兩個字母,然後才進行翻譯,以增加反譯難度。

第二部分是三個編碼器,就是這個部分實現了那「一萬份」換算表。每輸入一個字母,轉輪狀的編碼器就轉動一格。所以,實際上總共有26x26x26=17576份換算表。

第三部分是反射器。打字員在鍵盆上每按一個字母,謎碼機就會通電,電流從鍵盆進入接線板,然後流進編碼器,經過反射器傳回編碼器,再經接線板回到燈板,燈板上代表被加密那個字母的燈泡就會亮著。

電流從配線進入轉動進入反射器再出來,就像一個巨大的畫鬼腳,而每譯一個字鬼腳會橫向移動一次。而接收方反譯信息也很簡單,只要把輸入密碼字母,原來的字母燈泡就會亮著。這樣複雜的機器,在二戰當時被認為幾乎沒法破解!

enigma-simulator

儘管如此,我們還是可以說,只要知道這一萬多個機器狀態(換算表),還是可以把密碼反譯成明碼的。要知道這個實在太容易了,弄一部迷碼機回來就行了。這就大大的錯了!試想想,為甚麼非得要從一號換算表開始翻譯?我可以從9384號換算表開始譯我的第一個字母。我可以從任何一個換算表開始翻譯。這稱為原初狀態。原初狀態就像一把鑰匙,就算手上有一部敵方使用的迷碼機,也只有知道這個鑰匙才知道編譯的方法。迷碼機的特點就是,它的接線板接線、三個編碼器的插槽、和編碼器的起始位置都是可以變換的!

三個轉輪可以交換的位置有6個組合
每個轉輪的起始位置有26個 26x26x26=17576
再加上接線板上6條配線可以交換6對字母:100391791500
6x17576x100391791500~=10000000000000000

總共有一萬兆個以上的起始狀態!在當時未有電腦的年代要全部試完的話根本地球末日都未試完。事實上,德軍每天都會轉新鑰匙/配置,也就等如限時一天之內要有辦法破解密碼。而且,為了萬萬萬分安全,每一個信息還有自己的鑰匙。每次通信的時候,打字員會隨意挑三個字母作為這次信息的鑰匙,用那一天的總鑰匙加密傳給對方。然後打字員就會把編碼器的轉輪起始位置調至那三個字母,才發放信息內容。這樣的話,幾乎就可以把用同一個鑰匙編譯出來的密碼控制在幾百字以內。以這樣少的密碼文推敲出本來的文字,根本是天方夜譚!然而,圖靈這位天才做到了。全憑他的非凡貢獻,令英國在二戰後期能掌握德軍動向,間接讓戰爭提早結束。

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *