花卷
我們之前講過(guò),波蘭人已經(jīng)把他們研究出來(lái)的所有資料都交給了英國(guó)人,不僅如此,波蘭人還提供了他們制造的復(fù)刻版Enigma密碼機(jī),以及穿孔紙片、炸彈機(jī)等神器。這些東西當(dāng)初漂洋過(guò)海的旅程可都挺不容易的,英國(guó)人自然把它們當(dāng)寶貝。
話說(shuō)回來(lái),即便是圖靈這樣的大牛,面對(duì)一個(gè)新問(wèn)題,那也不可能一下子就搞出什么大殺器,必須也得從頭開(kāi)始研究。既然波蘭人有這么多好東西,那我們就先拿這些玩意兒試試看唄,順便也檢驗(yàn)一下波蘭人的成果到底靠不靠譜。
波蘭人的成果當(dāng)然是靠譜的——只不過(guò),只能說(shuō)對(duì)于1939年之前的通信來(lái)說(shuō),是靠譜的。我們回憶一下,1938年底,德軍把Eniqma的用法進(jìn)行了升級(jí),原來(lái)是3個(gè)轉(zhuǎn)輪調(diào)換順序使用,現(xiàn)在多加出來(lái)兩個(gè)轉(zhuǎn)輪,從5個(gè)轉(zhuǎn)輪里面選3個(gè)再調(diào)換順序使用。我們高中排列組合學(xué)過(guò):P(3,3)=3!=6,而P(5,3)=5×4×3=60,規(guī)模整整擴(kuò)大了10倍,這困難不是一般的大。這還不算完,1939年1月,德軍又提高了連接板的復(fù)雜度,我們知道連接板的作用是將任意一對(duì)字母進(jìn)行交換,之前大概也就換個(gè)6對(duì),現(xiàn)在開(kāi)始升級(jí)成換10對(duì)了。這里插個(gè)題外話,按理說(shuō),字母一共有26個(gè),所以連接板最多可以交換13對(duì)字母,但是我們可以計(jì)算出來(lái)(題外話就不細(xì)講算法了),交換10對(duì)才能帶來(lái)最大的變化數(shù)量,超過(guò)10對(duì)的話,反而會(huì)讓變化的數(shù)量縮小——看來(lái)德國(guó)人的數(shù)學(xué)也并不差。
眼看著德國(guó)人設(shè)置重重障礙,英國(guó)人當(dāng)然也不能就這么破罐破摔了,畢竟他們看到了波蘭人這么努力,而且現(xiàn)在還有圖靈這些數(shù)學(xué)大神的加持,總不能丟了“日不落帝國(guó)”的面子。面對(duì)現(xiàn)在這個(gè)情況,首先炸彈機(jī)基本上是廢掉了,因?yàn)榈聡?guó)人修改了指標(biāo)組的用法,就沒(méi)辦法建立雷耶夫斯基所說(shuō)的那種“循環(huán)模式”了。不過(guò)好消息是,齊加爾斯基搞的穿孔紙片還是可以用的,只不過(guò)原來(lái)只要用6張,現(xiàn)在要用60張,比對(duì)起來(lái)也需要更多的人力才能完成。
丹尼斯頓心想,我們現(xiàn)在有那么大的一座莊園,還造了一些臨時(shí)板房,政府也答應(yīng)出錢(qián)招人,那還等什么,難道我們英國(guó)缺人嗎?于是,布萊切利開(kāi)始大規(guī)模招募密碼分析員,但你可能沒(méi)想到的是,這些密碼分析員里大部分都是女性。據(jù)統(tǒng)計(jì),整個(gè)“二戰(zhàn)”期間大約有10000多人在布萊切利莊園工作過(guò),其中四分之三都是女性,至于原因嘛,我想應(yīng)該不難猜——因?yàn)槟腥硕忌锨熬€打仗去了唄。
當(dāng)然了,有很多女性在布萊切利從事密碼分析工作,并不代表當(dāng)時(shí)女性的地位有多高,很無(wú)奈的是,大部分女性都只被安排一些基礎(chǔ)的、重復(fù)性的工作——比如監(jiān)聽(tīng)、轉(zhuǎn)譯、歸檔等等,而且拿的工資也比男性要少多了。制作和比對(duì)穿孔紙片也算是一種枯燥的重復(fù)性工作,只要按照預(yù)先規(guī)定好的手冊(cè)就可以完成,就跟看著說(shuō)明書(shū)拼裝家具一樣——只不過(guò)制作一套60張穿孔紙片工作量非常大,布萊切利只能靠拼人力“996”加班加點(diǎn)。在這樣的情況下,即便速度跟不上,還算是能夠勉強(qiáng)破譯一部分德軍的密電。
遷入布萊切利初期,由于計(jì)劃的屋群還未建好,迪爾文·諾克斯、約翰杰弗里斯和艾倫圖靈等大牛都曾在存放牲畜糧草和馬具的馬棚里工作過(guò)。
我們之前講過(guò),波蘭人的方法——無(wú)論是炸彈機(jī)還是穿孔紙片,都是嚴(yán)重依賴指標(biāo)組來(lái)工作的。炸彈機(jī)依賴的是弱指標(biāo)組(比如AAA、BBB)所形成的特殊循環(huán)模式,而穿孔紙片依賴的是指標(biāo)組加密之后出現(xiàn)的等位重復(fù)字符(samiczki)。指標(biāo)組作為一種操作規(guī)程,是很容易被改進(jìn)的,圖靈自然也看出了這個(gè)弱點(diǎn),于是他就琢磨著能不能找到一種更“萬(wàn)能”的方法,哪怕將來(lái)有一天德國(guó)人把指標(biāo)組改得連親媽都不認(rèn)識(shí)了,我也照樣能應(yīng)付自如。
你還別說(shuō),這樣的方法還真有,而且是英國(guó)人自己用過(guò)的,有過(guò)成功經(jīng)驗(yàn)的方法。我們知道,“二戰(zhàn)”中歐洲的軸心國(guó)勢(shì)力除了德國(guó)之外還有意大利,而德國(guó)和意大利在“二戰(zhàn)”之前曾經(jīng)支持過(guò)西班牙的弗朗哥政權(quán)打內(nèi)戰(zhàn)。既然都是朋友,那么德國(guó)自然也向他們提供了Enigma密碼機(jī)——只不過(guò),提供給意大利和西班牙的機(jī)器都是不帶連接板的“閹割版”。連接板提供的額外變化對(duì)于破譯來(lái)說(shuō)可以形成非常強(qiáng)大的干擾,如果沒(méi)有連接板的話,轉(zhuǎn)輪的變化總共就只有幾萬(wàn)種,而且還是有規(guī)律的連續(xù)步進(jìn)變化,只要有足夠的材料,破譯起來(lái)并沒(méi)有那么難。
1937年4月,迪爾文諾克斯就成功破譯了西班牙弗朗哥政權(quán)用的“閹割版”Enigma密碼機(jī)通信,只不過(guò)這個(gè)事兒英國(guó)一直沒(méi)告訴別人。之前我們介紹過(guò),諾克斯是個(gè)文科生,研究古籍學(xué)的,在他的眼里,密碼就是一種猜詞游戲,即使再加密得天花亂墜,你要傳遞的原始信息也是普通的文字,這種隱藏在原始文字之中的語(yǔ)言特性,是很難通過(guò)加密完全抹去的,因?yàn)檎Z(yǔ)言代表的是人類(lèi)思維的固有模式。
其實(shí)諾克斯在之前破譯德國(guó)外長(zhǎng)密電的時(shí)候就用過(guò)這種猜詞技巧,比如說(shuō)德國(guó)人發(fā)電報(bào)在開(kāi)頭都有一些固定的稱呼和格式,如果我可以從密文中猜出某一個(gè)單詞,那么就可以限定轉(zhuǎn)輪的一串連續(xù)位置,繼而為推測(cè)轉(zhuǎn)輪的初始位置提供重要的線索。比如說(shuō),如果我知道(靠猜的)電報(bào)中某一組密文(比如“PGIUSSN”)解密之后的明文是單詞“angriff”(進(jìn)攻),那么就可以知道當(dāng)最右側(cè)轉(zhuǎn)輪從某個(gè)位置開(kāi)始連續(xù)步進(jìn)時(shí),就會(huì)有P-a、G-n、I-g、U-r、S-i、S-f、N-f這樣一組限定的對(duì)應(yīng)關(guān)系,通過(guò)一些技巧進(jìn)行嘗試,就可以找到相對(duì)應(yīng)的轉(zhuǎn)輪狀態(tài)。這種猜詞的方法,英國(guó)人管它叫作“crib”,就是考試作弊用的小抄,挺生動(dòng)的吧。
不過(guò),諾克斯的這種方法,面對(duì)帶連接板的Enigma密碼機(jī)時(shí),就有點(diǎn)力不從心了,因?yàn)檫B接板的存在會(huì)嚴(yán)重?cái)噥y這些對(duì)應(yīng)關(guān)系,也正是因?yàn)檫@個(gè)難題,諾克斯才在破譯Enigma這件事上輸給了波蘭人。不過(guò)現(xiàn)在好了,咱們英國(guó)也請(qǐng)來(lái)了數(shù)學(xué)家,說(shuō)不定他們能讓這個(gè)方法起死回生呢?
圖靈聽(tīng)說(shuō)諾克斯的這個(gè)方法之后,感覺(jué)這主意不錯(cuò)呀,也正好符合圖靈所提出的“不能依賴指標(biāo)組”的大方向。而且,圖靈的想法還更進(jìn)—步,他覺(jué)得猜詞之后找到對(duì)應(yīng)的轉(zhuǎn)輪狀態(tài)這件事,靠人力來(lái)做實(shí)在太累了,也太慢了,這個(gè)其實(shí)可以用機(jī)器來(lái)做嘛,你看波蘭人的那個(gè)炸彈機(jī),我們把它改一改可能就行了。其實(shí),圖靈之前上學(xué)的時(shí)候就特別喜歡擺弄機(jī)器,他在普林斯頓讀博士的時(shí)候,就曾經(jīng)親手制作了一臺(tái)二進(jìn)制乘法器(不過(guò)好像沒(méi)做完),所以無(wú)論是邏輯設(shè)計(jì)還是機(jī)械、電路設(shè)計(jì),圖靈可都是一把好手。
那么,圖靈所說(shuō)的這種“機(jī)器”,到底是個(gè)啥玩意兒呢?其實(shí)它看起來(lái)就是一個(gè)放大版的波蘭炸彈機(jī)。
炸彈機(jī)復(fù)制品
這張圖是現(xiàn)在展出于布萊切利莊園國(guó)家計(jì)算博物館的炸彈機(jī)復(fù)制品,這臺(tái)機(jī)器共有3排轉(zhuǎn)輪的槽位,每一排從上到下都有3個(gè)轉(zhuǎn)輪,這是因?yàn)镋nigma密碼機(jī)在工作的時(shí)候就是使用3個(gè)轉(zhuǎn)輪。這些轉(zhuǎn)輪共有5種顏色,因?yàn)?939年起德國(guó)一共啟用了5個(gè)不同的轉(zhuǎn)輪,實(shí)際使用的時(shí)候是5選3然后再按不同順序排列。這些轉(zhuǎn)輪的內(nèi)部連線,早就由雷耶夫斯基他們算出來(lái)了,所以圖靈他們可以直接批量生產(chǎn)——所以你看,波蘭人的貢獻(xiàn)的確是大大的。
我們可以發(fā)現(xiàn),這臺(tái)機(jī)器當(dāng)中,每組從上到下的3個(gè)轉(zhuǎn)輪,就相當(dāng)于一臺(tái)Enigma中從左到右的3個(gè)轉(zhuǎn)輪,也就是代表一臺(tái)Enigma的一種狀態(tài)(當(dāng)然,這里排除了連接板,不過(guò)沒(méi)關(guān)系,我們后面再說(shuō)),所以這一臺(tái)機(jī)器相當(dāng)于可以同時(shí)處理Enigma的36種狀態(tài)。
我們拿上面一個(gè)例子來(lái)說(shuō),比如我們猜到電文中“PGIUSSN”對(duì)應(yīng)的明文是“angriff”,那么我就可以有下面這張表:
我們假設(shè)中轉(zhuǎn)輪和左轉(zhuǎn)輪是不動(dòng)的(大部分情況下都成立),而右轉(zhuǎn)輪每過(guò)一個(gè)字母步進(jìn)一格位置,那么當(dāng)我把7組轉(zhuǎn)輪放在一起,并且把右轉(zhuǎn)輪的位置依次錯(cuò)開(kāi)一格之后,當(dāng)輸入密文“PGIUSSN”時(shí),必然會(huì)出現(xiàn)某一種狀態(tài)同時(shí)滿足這7個(gè)位置上匹配到明文“angriff”。也就是說(shuō),我只要讓這7組轉(zhuǎn)輪同步轉(zhuǎn)動(dòng)(每次每組都步進(jìn)一格位置),必然可以找到一個(gè)滿足條件的狀態(tài)(當(dāng)然,前提是猜詞猜對(duì)了)。而當(dāng)找到這樣一個(gè)狀態(tài)時(shí),機(jī)器就會(huì)停止,這時(shí)就可以人工確認(rèn)機(jī)器找到的這個(gè)狀態(tài)是否正確。
可是還有一個(gè)問(wèn)題,連接板要怎么辦呢?之前諾克斯用這種方法,也是卡在了連接板上呀,圖靈能不能破局呢?我們知道,連接板的作用是交換若干對(duì)字母,但這些字母必須是成對(duì)交換的,比如說(shuō)(AE)交換,那么所有的A就都變成了E,而所有的E就都變成了A,除此之外沒(méi)有其他可能。還是上面的例子,假設(shè)我們?cè)谀骋粋€(gè)狀態(tài)下得到了下面的對(duì)應(yīng)關(guān)系:
我們來(lái)試想一下,“ARFEITF”有沒(méi)有可能通過(guò)連接板的交換就能得到“angriff”呢?
第1個(gè)字母A是正確的,我們跳過(guò)。第2個(gè)字母是R,而正確的字母是N,那我們可以認(rèn)為連接板上有一個(gè)(NR)交換。然而,第4個(gè)字母是E,而正確的字母是R,這意味著需要一個(gè)(ER)交換。我們知道,根據(jù)連接板的原理,不可能同時(shí)存在(NR)和(ER)兩種交換;同理,上面的例子還必須同時(shí)存在(FG)(FT)(FF)三種交換,這也是不可能的。因此這個(gè)位置狀態(tài)不可能是正確的,不但這個(gè)位置狀態(tài)不可能是正確的,與它相關(guān)聯(lián)的成千上萬(wàn)個(gè)位置狀態(tài)也可以被一起排除掉了。
我們發(fā)現(xiàn),圖靈的思路非常巧妙,因?yàn)檫B接板的存在雖然會(huì)干擾結(jié)果,但是我們依然可以通過(guò)邏輯推理來(lái)排除那些必定不可能正確的結(jié)果,這樣一來(lái),連接板的干擾效應(yīng)就會(huì)被大幅度削弱。那么接下來(lái),圖靈要解決的問(wèn)題就是,如何在他的機(jī)器上實(shí)現(xiàn)這種邏輯推理和排除。
圖靈設(shè)想了一種方法,通過(guò)電路的連接來(lái)排除錯(cuò)誤的狀態(tài),在按照特定的crib進(jìn)行配置的情況下,只有轉(zhuǎn)輪之間形成一個(gè)特定的回路時(shí),機(jī)器才會(huì)停下來(lái)。
不過(guò),圖靈這個(gè)方法的效率并不是很高,因?yàn)椴⒉皇钦f(shuō)當(dāng)機(jī)器停下來(lái)的時(shí)候,找到的那個(gè)解就一定是正確的。這是因?yàn)檎_的解必定可以形成特定的回路,但錯(cuò)誤的解也有一定概率可以形成特定的回路。因此當(dāng)機(jī)器停下來(lái)的時(shí)候,就會(huì)有破譯人員過(guò)來(lái)把機(jī)器當(dāng)前的位置抄下來(lái),然后用一臺(tái)復(fù)刻版的Enigma密碼機(jī)去驗(yàn)證一下,看看這個(gè)解是不是正確的。
圖靈是個(gè)數(shù)學(xué)家,對(duì)于他設(shè)計(jì)的這個(gè)方法的效率,他自己必然是做過(guò)計(jì)算的,這里面使用了概率論和組合數(shù)學(xué)。具體的計(jì)算結(jié)果我們就不列舉了,總之,根據(jù)圖靈的計(jì)算,猜詞人員給出的crib必須包含足夠多的字母數(shù)量(最好10個(gè)以上),而且密文和明文之間必須包含足夠多的閉合回路(最好2個(gè)以上),這樣才能保證機(jī)器有足夠高的概率檢測(cè)到正確的解——換句話說(shuō),就是讓機(jī)器停了但是沒(méi)找到正確的解這種事發(fā)生的概率變得足夠小。
(然而,符合這種要求的crib可不容易找,別忘了那可是要用猜的,還不能保證猜得準(zhǔn),因此圖靈設(shè)計(jì)的機(jī)器效率并不高。那么圖靈和他的伙伴們會(huì)如何解決這個(gè)問(wèn)題呢?我們下期繼續(xù)講。)