花卷
上期我們講到,羅西諾爾依靠他天才般的破譯本領(lǐng)一路從路易十三身邊的私人顧問干到了路易十四的首席密碼學(xué)家,他對法國當時使用的密碼表進行了大量的改進,通過擴充字典的單詞數(shù)量以及使用“兩部式”設(shè)計大幅提高了密碼的強度。不過他的功績到這里還不算完,我們這個故事的主題——“偉大密碼”到現(xiàn)在還只字未提呢!
上陣父子兵
俗話說人比人氣死人,羅西諾爾不但在事業(yè)上風風光光,還收獲了圓滿的愛情,妥妥的人生贏家。1645年,羅西諾爾45歲,這一年,黎塞留的下一任紅衣主教馬扎然給羅西諾爾封了個不小的官位,也就在這一年,羅西諾爾娶到了一位大家閨秀——凱瑟琳·昆?。–atherine Quentin),家庭事業(yè)雙豐收啦。凱瑟琳出身貴族,嫁給羅西諾爾的時候只有23歲,可以說是年輕漂亮又有身份,不僅如此,羅西諾爾和凱瑟琳還生了一兒一女,人生簡直是圓滿了。
為什么要說這段事情呢?那是因為羅西諾爾的兒子——博納旺蒂爾·羅西諾爾(Bonaventure Rossignol),名字太長,還是簡稱小羅西諾爾好了——也是一位相當重要的人物。要知道,負責加密和破譯意味著接觸各種國家機密這等事兒絕對少不了,我要是國王,我肯定要挑最信得過的人來干這事,羅西諾爾當然就是這么一個人。不過,圣賢也熬不過生老病死,羅西諾爾百年之后咋辦?又不能隨便把這個工作甩給別人,想來想去,也只能讓兒子繼承自己的衣缽了。
好在小羅西諾爾還是很爭氣的,從小在老爸的培養(yǎng)下就展現(xiàn)出了跟他老爸當年一樣的才華,或者說,有了老爸的教導(dǎo),應(yīng)該是青出于藍而勝于藍才對吧。反正,小羅西諾爾長大之后,就被他老爸安排在身邊一起做事,到老羅西諾爾去世之前,他們應(yīng)該也共同工作了至少30年,正可謂是上陣父子兵。在他們的努力下,法國對于各種情報的控制達到了一個新的高度,后來甚至專門搞出一個部門來,就負責攔截和破譯那些可疑的信件,這個部門起了個名字叫“Cabinet Noir”,就是小黑屋的意思,多么形象!之后很多國家跟風抄襲這個名字,比如英國和美國叫“Black Chamber”,其實都是一個意思。我們標題當中說的那個“偉大密碼”,就是在這段時間中,由他們父子二人共同設(shè)計出來的。
偉大密碼
路易十四上臺之后,對于羅西諾爾父子的功績也是贊賞有加,他覺得破譯密碼這個事情太重要了,當時別的國家用的密碼都是大路貨,破譯起來不能說毫不費力吧,至少對于那些重要的內(nèi)容,絕對是能看懂個八九不離十的。路易十四感覺很爽,不過他也擔心,萬一別的國家也有像羅西諾爾這樣的大牛,那可怎么辦?盡管羅西諾爾已經(jīng)采用兩部式設(shè)計提高了密碼的強度,但是這招別人也已經(jīng)學(xué)會了呀,我得讓羅西諾爾整出點他們都不會的高級貨來。
于是,路易十四讓羅西諾爾父子幫他設(shè)計了一套最高等級的專用密碼,這套密碼僅供處理與王室相關(guān)的最重要機密信息。它必須特別強大,至少在路易十四在位這段時間得保證讓別人破譯不出來。這個要求確實挺高的,羅西諾爾之前的兩個方法,也就是增加字典的單詞量和采用兩部式設(shè)計,其實并沒有改變nomenclator的基本思路,也就是以字母表為基礎(chǔ)進行置換的思路,于是怎么才能另辟蹊徑就成了能否讓老板滿意的關(guān)鍵。
功夫不負有心人,羅西諾爾父子最終還是出色地完成了這個任務(wù),要不然這一家子怎么能名垂千古呢?他們搞出來的這套密碼,就叫作“偉大密碼”(Grand Chiffre)。這個名字聽上去好厲害,所以偉大密碼到底是個啥樣的密碼呢?這套密碼寫出來就是一組一組的數(shù)字,每一組數(shù)字的范圍都是從1到500多,顯然這玩意兒跟當時常見的nomenclator弄出來的東西相比,至少看起來完全不一樣。而且偉大密碼還有不同的版本,用的雖然都是這些數(shù)字,但不同版本之間的編碼不通用,這樣一來,還可以對不同的收件方設(shè)計不同的密碼表,提高了破譯的難度。
那么這個所謂的“偉大密碼”有沒有達到路易十四的要求呢?真的達到了,而且還超額完成了任務(wù)!就像我們前面提到的,偉大密碼是國王“特供”的,那么用這套密碼加密的信息必然都是國家的頂級機密,這種機密當然必須得由羅西諾爾家族的人親自處理,因為偉大密碼的設(shè)計和原理本身也是絕密,不可能讓外人知道的,就連路易十四本人應(yīng)該都不清楚這套密碼具體是怎么設(shè)計的。于是,偉大密碼就成了羅西諾爾家族世代相傳的“傳家寶”。當然了,有了這個,也就能確保子子孫孫都能混這口飯吃,這鐵飯碗也是相當鐵吶。
不過,有句話說得好,富不過三代,這句話在羅西諾爾家族居然也應(yīng)驗了,因為小羅西諾爾的兒子小小羅西諾爾(Antoine-Bonaventure Rossignol,這個名字把他爺爺和他爹的名字給合體了)成了掌握偉大密碼的最后一代,后面不知道為啥就沒傳下去。于是,偉大密碼的秘密被小小羅西諾爾一起帶到了墳?zāi)估?,以前用這套密碼加密過的那些文件也成了一大堆莫名其妙的數(shù)字,沒人能看懂里面寫的是啥了。
破解玄機
為什么說偉大密碼是“超額完成了任務(wù)”呢?因為在小小羅西諾爾死后,有很多很多密碼破譯專家試圖破譯偉大密碼,想看看路易十四的檔案館里有什么可以挖的八卦。最關(guān)鍵的是,法國人自己也想知道這段時間發(fā)生了什么事啊。然而令人震驚的是,之后將近200年時間里,居然沒有一個人能破譯這套密碼!估計羅西諾爾祖孫三代正在九泉之下偷著樂呢。
但是你也別小看了人們的好奇心和毅力,挖八卦爆猛料的誘惑可是吸引著很多人去打這個傳說級別的Boss的,到了200多年之后的19世紀末,總算是有個人出來把這個大Boss給干掉了,這個人就是艾提恩·貝塞里(étienne Bazeries)。貝塞里是一位法軍的密碼學(xué)家,在“一戰(zhàn)”的時候也幫助法軍破譯過各種密電,他對密碼學(xué)做出過不小的貢獻,其中之一就是破譯了“偉大密碼”。
貝塞里破譯偉大密碼花了整整3年的時間,當然了,跟過去200年沒人破譯得出來相比,其實還是相當快的吧,而且當時也沒有電子計算機,所以貝塞里也沒什么手段可以作弊,應(yīng)該算是公平競爭了。后來他把自己破譯偉大密碼的過程寫成了一本書,名叫《破譯神秘數(shù)字》(Les Chiffres secrets dévoilés),下面我們就來看看貝塞里到底是怎么破譯這些“神秘數(shù)字”的吧。
首先,貝塞里先琢磨了一下這些數(shù)字到底有什么規(guī)律,他發(fā)現(xiàn)總共有587個不同的數(shù)字,這個數(shù)量比較尷尬,因為如果是一般的字母表置換密碼,不可能出現(xiàn)這么多種編碼,一個字母一個碼,再加上空碼和平衡字母頻率的“一字多碼”,最多幾十個碼就夠了。如果是字典的話,587個編碼又太少了,我們之前說,那個時候的字典密碼的詞匯量都在1 000個以上,500多個詞也不夠使啊。估計之前200年時間里面,很多人都直接在這里卡住了,因為實在不知道這587個編碼到底編的是什么碼,簡直太奇葩了。
貝塞里接著猜,如果不是一個字母一個碼,會不會是兩個字母組合起來一個碼呢?法語有26個字母,如果兩個字母一個碼,那差不多有26×26=676個碼,跟587個差不多,也許是去掉了一些不可能出現(xiàn)的組合,所以數(shù)量變少了?反正貝塞里就先朝著這個方向繼續(xù)猜,他找出了幾個出現(xiàn)頻率最高的數(shù)字,然后用頻率分析法,希望能夠?qū)ι戏ㄕZ中出現(xiàn)頻率最高的幾個字母組合。不過這個結(jié)果特別詭異,似乎只有很少幾個字母組合能對得上,其他大部分都對不上,用這種方法破譯出來的結(jié)果根本還是看不懂。
到這里,貝塞里自己似乎也開始懷疑人生了,我們法國老祖宗這葫蘆里賣的到底是什么藥!他又想了很久,忽然靈機一動,難道說,這個編碼不是代表字母,不是代表字母組合,也不是代表單詞,而是代表音節(jié)?和英語不一樣,法語、德語這些語言都是有嚴格的拼讀規(guī)則的,換句話說,就跟漢語拼音一樣,看著就能念出來,所以每種發(fā)音都是固定的字母組合。但是每個音節(jié)的字母數(shù)量是不固定的,可以是一個字母,也可以是好幾個字母,怪不得之前這么多人都沒摸著門道,因為這種密碼不是給文字編碼,而是給“讀音”編碼!
那么貝塞里這回到底猜對了沒有呢?他開始嘗試驗證這個猜想,不過還是遇到了不小的困難。他先列出了幾個法語中出現(xiàn)頻率最高的音節(jié),然后他發(fā)現(xiàn),“124 22 125 46 x”這個序列在一篇密文中會多次出現(xiàn),其中第5個數(shù)字有幾種不同的變化。由于偉大密碼大多用來加密國王的軍事命令,再對照法語中常見的音節(jié),貝塞里猜測前4個數(shù)字分別代表les、en、ne、mi,而第5個數(shù)字代表復(fù)數(shù)變化,連起來就是“l(fā)es ennemis”,意思是“敵人”,這個詞在軍事命令中當然會經(jīng)常出現(xiàn),沒毛?。?/p>
在密碼破譯中,只要猜對了一個單詞,后面就可以像玩拼字游戲一樣順藤摸瓜了。貝塞里覺得自己總算是上道了,他開始興奮起來,偉大密碼的秘密也開始被他一點一點地揭開。最終,貝塞里成功還原了整個偉大密碼的結(jié)構(gòu)。首先,這套密碼主要采用音節(jié)來編碼,這個方式實在過于古怪,也真的成功騙過了很多人,除了音節(jié)之外,也有一些編碼是代表單個字母、后綴變化(單復(fù)數(shù)、陰陽性等)甚至是某些完整單詞。其次,這套密碼也繼承了羅西諾爾所提倡的兩部式設(shè)計,也就是說,它的編碼排列順序是打亂的,和字母排列順序無關(guān)。還有,這套密碼也采用了一字多碼的方式來抵御頻率分析,比如上面提到的復(fù)數(shù)變化,就對應(yīng)了五六個不同的編碼。此外,這套密碼中還包含各種干擾碼,比如空碼,貝塞里還發(fā)現(xiàn)了一種特殊的編碼,這個編碼的意思是忽略上一個編碼,可謂是煞費苦心吶!
鐵面人之謎
隨著偉大密碼被破解,路易十四時代的很多資料也就跟著被挖了出來,那么人們到底發(fā)現(xiàn)了什么八卦呢?其中流傳最廣的一件事還得說是關(guān)于鐵面人的身份之謎。
鐵面人(LHomme au Masque de Fer)是路易十四時代的一個非常神秘的人物,這個人一直被關(guān)在監(jiān)獄里,而且整天戴著一個面具,不過這個面具倒不是鐵的,而是黑色絨布的,至于為啥要叫鐵面人現(xiàn)在誰也搞不清了。當時只有極少數(shù)人能見到鐵面人,而且據(jù)說幾乎沒人見過他的真面目,就連死后下葬都用了一個假名,所以好多人都在猜這人到底是誰。其中最有名的一個說法出自大仲馬的《三個火槍手》,說鐵面人是路易十四的孿生兄弟。當然了,這畢竟是小說里寫的,誰也不知道是真是假。
貝塞里在破譯了偉大密碼之后,發(fā)現(xiàn)了一封路易十四寫給一個將軍的信,信里說的是讓他去把另一個叫維維恩·德·布隆德(Vivien de Bulonde)的將軍給抓起來,因為布隆德在1691年的庫內(nèi)奧戰(zhàn)役中面對敵軍臨陣脫逃,貽誤戰(zhàn)機,必須馬上抓起來問罪。這封信破譯出來是這樣的:
國王陛下要求你立即攔下布隆德將軍,并將他拘禁在皮內(nèi)羅要塞,夜晚派人嚴加看守,白天允許他在城墻上散步,但他的臉必須覆蓋著一個330 309
這里有兩個沒有被破譯出來的編碼:330和309。貝塞里根據(jù)上下文猜了一下,覺得330應(yīng)該代表面具,而309應(yīng)該是個句號,所以這個布隆德將軍很有可能就是鐵面人。不過貝塞里的這個說法也不是很站得住腳,因為330這個編碼在其他文章里根本沒出現(xiàn)過,所以找不到其他的佐證來證明這個編碼指的就是面具。更何況,其他史料也不太支持這一說法,比如說布隆德將軍被抓起來問罪是公開消息,甚至都登上了報紙,根本不像鐵面人這么神秘兮兮的,而且他幾個月之后就被放出來了,這點罪名也不至于在監(jiān)獄里關(guān)一輩子。至于鐵面人的真實身份到底是什么,恐怕將會是一個永遠的謎團吧。
(完)