花卷
德語(yǔ)教授的大禮包
我們?cè)凇兜聡?guó)外長(zhǎng)的一封密電》中見(jiàn)識(shí)了英國(guó)海軍密碼局“40號(hào)房間”的本事,但實(shí)際上,40號(hào)房間只是個(gè)年輕的諜報(bào)機(jī)構(gòu),要問(wèn)歐洲搞密碼哪家強(qiáng),那還得說(shuō)是法國(guó)。法國(guó)的這個(gè)密碼局(Bureau du Chiffre)隸屬于外交部,它不光歷史悠久,而且規(guī)模龐大,里面就跟工廠流水線一樣,有一大幫子人天天坐在那兒破譯密碼。當(dāng)然了,你得把一種密碼完全吃透,才能搞這種勞動(dòng)密集型的大規(guī)模破譯,那么面對(duì)那些新的密碼怎么辦呢?別急,法國(guó)密碼局還有另外一個(gè)部門,里面聚集了一批頂尖大牛,他們專門負(fù)責(zé)搞定那些疑難雜癥,總結(jié)出破譯方法之后,再交給隔壁的流水線去處理。
提到法國(guó)密碼局,不得不提一個(gè)對(duì)密碼局的建設(shè)做出過(guò)巨大貢獻(xiàn)的人——然而這個(gè)人竟然不是法國(guó)人!那么這個(gè)人是誰(shuí)呢?他的名字叫奧古斯特·柯克霍夫(Auguste Kerckhoffs),覺(jué)得這個(gè)名字有點(diǎn)眼熟么?沒(méi)錯(cuò),我們?cè)凇抖啾砻艽a攻防戰(zhàn)》中提到過(guò)以他名字命名的“柯克霍夫原則”,這個(gè)原則說(shuō)的是“一個(gè)系統(tǒng)的設(shè)計(jì)不需要保密,而披露系統(tǒng)的設(shè)計(jì)不應(yīng)影響其安全性”,也就是說(shuō)即便敵人知道了你的密碼是怎么設(shè)計(jì)的,只要不知道密鑰,就應(yīng)該無(wú)法破譯你的密碼,這才是一個(gè)安全的密碼系統(tǒng)。
柯克霍夫這個(gè)人特別奇葩:他是個(gè)荷蘭人,在法國(guó)當(dāng)教授,但教的是德語(yǔ)……(大神啊,請(qǐng)收下我的膝蓋?。?881年,柯克霍夫在法國(guó)巴黎商學(xué)院當(dāng)上了德語(yǔ)教授,不知道是不是法國(guó)教授也有發(fā)論文的指標(biāo),反正兩年之后的1883年,他就在《軍事科學(xué)期刊》上面發(fā)表了一系列文章,題目叫《軍事密碼學(xué)》(La Cryptographie Militaire)。
這幾篇文章可不得了,堪稱當(dāng)時(shí)密碼學(xué)領(lǐng)域的“萬(wàn)寶全書”。然而光是“全”并不能說(shuō)明有多少價(jià)值,柯克霍夫?qū)懙倪@幾篇文章的亮點(diǎn)在于,他通過(guò)分析前人的各種密碼系統(tǒng),總結(jié)出了六條“指導(dǎo)原則”,在設(shè)計(jì)密碼系統(tǒng),尤其是以電報(bào)為載體的軍事密碼系統(tǒng)的時(shí)候,只要遵循這些原則,就能夠讓密碼系統(tǒng)的設(shè)計(jì)水平更上一層樓。其實(shí)我們上面提到的“柯克霍夫原則”,就是這六條指導(dǎo)原則中的第二條,當(dāng)然了,這條也是最有名的,因?yàn)樗粌H適用于軍事密碼,而且適用于任何密碼。
柯克霍夫所總結(jié)的六條指導(dǎo)原則分別是:
1.即使非數(shù)學(xué)上不可破解,系統(tǒng)也應(yīng)在實(shí)質(zhì)(實(shí)用)程度上無(wú)法破解。
2.系統(tǒng)內(nèi)不應(yīng)含任何機(jī)密物,即使落入敵人手中也不會(huì)造成困擾。
3.密匙必須易于溝通和記憶,而不須寫下;且雙方可以容易地改變密匙。
4.系統(tǒng)應(yīng)可以用于電訊。
5.系統(tǒng)應(yīng)可以攜帶,不應(yīng)需要兩個(gè)人或以上才能使用(應(yīng)只要一個(gè)人就能使用)。
6.系統(tǒng)應(yīng)容易使用,不致讓用戶的腦力過(guò)分操勞,也無(wú)須記得長(zhǎng)串的規(guī)則。
這么好的文章,而且還是一位荷蘭人用法語(yǔ)寫的,這是多么偉大的國(guó)際主義精神!法國(guó)密碼局一看,這簡(jiǎn)直是上天賜給我們法蘭西的大禮包,趕緊花錢買了300本,局里人手一本,學(xué)習(xí)領(lǐng)會(huì)精神。參考柯克霍夫的理論,法國(guó)密碼局把現(xiàn)有的密碼系統(tǒng)仔細(xì)地梳理了一遍,而且還采用新技術(shù)設(shè)計(jì)了一些新的系統(tǒng)??驴嘶舴螂m然一天也沒(méi)在密碼局上過(guò)班,但他的貢獻(xiàn)可以說(shuō)比密碼局里任何一個(gè)人都要大。
普法戰(zhàn)爭(zhēng)
要說(shuō)法國(guó)和德國(guó)這兩家,其實(shí)早在第一次世界大戰(zhàn)之前就結(jié)下梁子了。1870年,當(dāng)時(shí)的德國(guó)還是幾個(gè)王國(guó)組成的聯(lián)邦,后來(lái)以鐵血宰相著稱的俾斯麥,當(dāng)時(shí)是普魯士王國(guó)的首相。俾斯麥的野心很大,他想帶領(lǐng)普魯士統(tǒng)一德國(guó),可是怎么統(tǒng)一好呢?于是他通過(guò)一系列外交戲碼,把本來(lái)就喜歡罷工的法國(guó)人給煽動(dòng)了一下,結(jié)果法國(guó)國(guó)王拿破侖三世立馬就上了套,跟普魯士宣戰(zhàn)了,這就是傳說(shuō)中的“普法戰(zhàn)爭(zhēng)”。
普法戰(zhàn)爭(zhēng)的走向完全在俾斯麥的掌控之中,法國(guó)都要打過(guò)來(lái)了,德意志聯(lián)邦的兄弟們還不趕緊團(tuán)結(jié)起來(lái)?于是普魯士王國(guó)順理成章地就把德國(guó)給統(tǒng)一了,擰成一股繩的德國(guó)人長(zhǎng)驅(qū)直入,把法國(guó)軍隊(duì)打了個(gè)落花流水,拿破侖三世只好投降認(rèn)輸,割地賠款。經(jīng)過(guò)這次慘敗,法國(guó)的皇帝也被趕下臺(tái)了,法國(guó)變成了共和國(guó)。
普法戰(zhàn)爭(zhēng)就像一記大悶棍,把法國(guó)人打得人心惶惶。想想看,割地賠款,國(guó)內(nèi)政變,鄰居德國(guó)現(xiàn)在還統(tǒng)一了,那是兵強(qiáng)馬壯呀,這以后萬(wàn)一打起來(lái)可咋辦!于是新成立的法蘭西共和國(guó)不得不開(kāi)始積極備戰(zhàn),作為制勝關(guān)鍵之一的密碼局當(dāng)然也不能閑著,自從普法戰(zhàn)爭(zhēng)之后就忙著招兵買馬,對(duì)德國(guó)的各種密碼系統(tǒng)進(jìn)行研究和破譯。
üBCHI密碼
破譯密碼這個(gè)東西,能不能搞到大量的密電文是非常關(guān)鍵的,沒(méi)有研究材料,巧婦也難為無(wú)米之炊呀。不打仗的時(shí)候,能用來(lái)分析的電報(bào)寥寥無(wú)幾,但到了1914年,“一戰(zhàn)”開(kāi)打,德軍在西線行動(dòng)頻繁,通信自然也就跟著變得特別頻繁,法國(guó)密碼局每天都能截獲好多好多電報(bào)。
從這些電報(bào)里面,密碼局發(fā)現(xiàn)德軍經(jīng)常使用的一種密碼,他們稱之üBCHI密碼。這種密碼和之前的置換密碼不一樣,因?yàn)樗坪鯖](méi)有對(duì)字母進(jìn)行置換,而是調(diào)換了電文中字母的位置。密碼局的大牛們折騰了幾個(gè)月,終于找出了其中的玄機(jī),原來(lái)這種密碼是按照一個(gè)“口令”,把電文里的字母進(jìn)行行列換位,而且這個(gè)換位不是做了一次,而是做了兩次。
如果你還記得我們上次講的“五字真言”的加密方法,這里肯定會(huì)覺(jué)得似曾相識(shí)。沒(méi)錯(cuò),“五字真言”的加密過(guò)程分為兩步,第一步是方格置換,第二步就是行列換位,所以這個(gè)üBCHI密碼實(shí)際上就是“五字真言”的第二步,只不過(guò)是把這一步做了兩次而已。當(dāng)然了,我們這么說(shuō)是馬后炮,因?yàn)?914年的時(shí)候還沒(méi)有“五字真言”呢,但是我們從這里看到一個(gè)重要的線索,那就是“五字真言”的設(shè)計(jì)不是憑空蹦出來(lái)的,其中的兩個(gè)部分,無(wú)論是方格置換還是行列換位,都能從以前的密碼系統(tǒng)中找到原型。
那么破譯üBCHI密碼的關(guān)鍵是什么呢?再想想“五字真言”里面行列換位是怎么換的,基本上是把電文排成一個(gè)n行m列的方陣,然后按口令中的字母順序一列一列把字母寫出來(lái)。這里面有個(gè)什么問(wèn)題呢?如果電文的長(zhǎng)度不是m的整數(shù)倍,那么排成方陣之后,最后一行是填不滿的,這樣的話每一列字母就會(huì)有長(zhǎng)有短,這會(huì)給破譯帶來(lái)一些困難,但接收電文的人因?yàn)橹揽诹畹拈L(zhǎng)度和內(nèi)容,也就可以計(jì)算出每一列的長(zhǎng)度從而完成解密。
但是德軍每天發(fā)那么多電報(bào),總會(huì)有電文長(zhǎng)度正好是m的整數(shù)倍的吧!如果電文長(zhǎng)度是m的整數(shù)倍,那么換位之后每一組電文的長(zhǎng)度就是相等的,找規(guī)律不就容易多了嗎?更何況,我們不但能找到長(zhǎng)度是m的整數(shù)倍的電報(bào),還能從這里面找到若干長(zhǎng)度相等的電報(bào),這些電報(bào)在換位的時(shí)候都使用了同一個(gè)口令,于是就會(huì)暴露出更多的線索。密碼局的專家們使用一種叫作“多重異位構(gòu)詞”(multi-anagramming)的技巧,像玩填字游戲一樣,就可以破譯德軍的這種密碼,而且不但能破譯電文的內(nèi)容,還能找到用來(lái)?yè)Q位的口令,這樣一來(lái),所有使用相同口令加密的電文就一下子都被破譯啦!最關(guān)鍵的是,德軍當(dāng)時(shí)在這方面特別懶,這個(gè)口令十幾天才換一次,法國(guó)人真是快要爽翻了。
但是得意忘形的法國(guó)人犯了一個(gè)天大的錯(cuò)誤,那就是他們拿這件事兒到處得瑟。根據(jù)破譯德軍密電提供的線索,法軍在絕佳時(shí)機(jī)發(fā)動(dòng)了對(duì)德軍占領(lǐng)下的比利時(shí)蒂爾特的轟炸行動(dòng),這次行動(dòng)猶如神兵天降,德國(guó)人一臉懵圈。問(wèn)題是,你偷偷摸摸打贏了也就算了,這事兒居然轉(zhuǎn)天就上了法國(guó)《晨報(bào)》,而且報(bào)道里面還明明白白寫著,是破譯了德軍電報(bào)獲得的線索。德國(guó)人一看,行啊,挺能耐啊,那我就換個(gè)密碼讓你接著玩唄。
ABC密碼與天才炮兵中尉
1914年11月,德軍雷厲風(fēng)行地廢除了üBCHI密碼,啟用了一套新的密碼系統(tǒng),這可把法國(guó)密碼局的人給郁悶壞了。這套新的密碼似乎是結(jié)合了維熱納爾方表和行列換位兩種方法,但不知道是不是因?yàn)榕R時(shí)抱佛腳趕工出來(lái)的,這個(gè)密碼搞得特別粗糙,其中維熱納爾方表的部分只用了一個(gè)很短的固定口令“ABC”,所以法國(guó)人管它叫做ABC密碼。
既然這個(gè)密碼不是很厲害,那么密碼局的大牛們當(dāng)然有能力搞定它,據(jù)說(shuō)也就花了一個(gè)多月的時(shí)間。但是特別出乎意料的是,法國(guó)第六軍的一個(gè)炮兵中尉居然也給密碼局提交了一份破譯ABC密碼的方法,而且這種方法比密碼局的方法還要簡(jiǎn)單!當(dāng)時(shí)的密碼局老大弗朗索瓦·卡地亞(Fran?ois Cartier)看到這封信之后眼前一亮,馬上叫人去問(wèn)問(wèn)這人到底是什么來(lái)頭,當(dāng)然,更重要的是,能不能把他抓來(lái)密碼局干活啊!
這位天才炮兵中尉名叫喬治·龐旺(Georges Painvin),他參軍之前學(xué)過(guò)什么,干過(guò)什么,現(xiàn)在似乎沒(méi)地方可以查了,我們只能說(shuō)他在密碼學(xué)方面確實(shí)是個(gè)天才??ǖ貋啚榱税妖嬐矫艽a局來(lái),三番五次跑到第六軍司令部找莫努里上將(General MichelJoseph Maunoury)請(qǐng)?jiān)?,因?yàn)辇嬐娿曤m然不高,但卻一直是上將的得力助手。要知道,卡地亞只是個(gè)上尉軍銜,就敢這么跑去跟將軍要人,可見(jiàn)他真的是太需要龐旺的才華了。
雖然莫努里也對(duì)密碼局跟陸軍搶人感到十分不爽,但畢竟龐旺的確在密碼方面很有兩把刷子,說(shuō)不定他到了密碼局能夠?yàn)榉▏?guó)立下更多的功勞呢?思來(lái)想去,他還是答應(yīng)了卡地亞的請(qǐng)求,但將軍畢竟是將軍,說(shuō)話得給自己留點(diǎn)后路,于是1915年3月,莫努里派龐旺去密碼局“見(jiàn)習(xí)”兩周,意思是如果那邊沒(méi)意思的話,我還可以把龐旺調(diào)回來(lái)。
不知道是該說(shuō)巧還是不巧,就在龐旺被派去密碼局后不久,1915年3月11日,莫努里在視察前線時(shí)被德軍狙擊手射傷,這一槍打穿了他的一只眼睛,作為一個(gè)已經(jīng)將近70歲的老將軍,能撿回一條命真的已經(jīng)不容易了,指揮打仗肯定是沒(méi)戲了。既然老將軍不在了,再回到第六軍也沒(méi)什么意思,于是龐旺從此就安心扎根在了密碼局,成了卡地亞手下一名不可多得的得力干將。
(那么,龐旺后來(lái)為破譯“五字真言”做出了怎樣的貢獻(xiàn)呢?協(xié)約國(guó)又能不能挫敗德軍瘋狂反撲的陰謀呢?我們下期繼續(xù)講。)