花卷
前情提要
上期我們講到,蘇格蘭瑪麗女王自帶霉運(yùn)光環(huán),在三次不幸的婚姻之后,她被廢除了王位,流亡到英格蘭投奔女王伊麗莎白一世,然而卻因此被卷入了一場(chǎng)巨大的陰謀……
諜影重重
自從瑪麗女王被軟禁在英格蘭之后,外面的天主教勢(shì)力就沒(méi)消停過(guò),因?yàn)樗麄冋J(rèn)為只有瑪麗才配當(dāng)正統(tǒng)的英格蘭女王,而伊麗莎白的出生本身就是個(gè)錯(cuò)誤。伊麗莎白察覺(jué)到這些風(fēng)聲之后,派了她的首席秘書(shū)兼特務(wù)頭子弗朗西斯·沃辛漢爵士去好好盯著瑪麗,千萬(wàn)別讓她整出什么幺蛾子。盡管所謂的軟禁還是好吃好喝的,生活也算悠閑自在,至少比監(jiān)獄里的犯人好太多了,不過(guò)瑪麗并沒(méi)有人身自由,不能離開(kāi)查特利城堡半步,更別說(shuō)跟什么人見(jiàn)面了。你說(shuō)瑪麗就甘心這樣被軟禁一輩子嗎?當(dāng)然不會(huì),而且她也知道天主教勢(shì)力,特別是法國(guó)教會(huì)的人很愿意把她救出去,但是瑪麗自己不表個(gè)態(tài),這些人也沒(méi)辦法行動(dòng)呀。那么現(xiàn)在問(wèn)題來(lái)了,怎樣才能跟這些人取得聯(lián)系呢?
瑪麗嘗試給蘇格蘭寫(xiě)信,給法國(guó)寫(xiě)信,可是這些信就像石頭扔進(jìn)大海一樣,寄出去就回不來(lái)了——恐怕瑪麗自己也明白,伊麗莎白現(xiàn)在對(duì)她看得這么緊,怎么能讓她的書(shū)信自由進(jìn)出呢?就在瑪麗覺(jué)得一籌莫展的時(shí)候,天上忽然掉了一塊餡餅下來(lái)。1586年,有個(gè)叫吉爾伯特·吉福爾德(Gilbert Gifford)的人主動(dòng)跟瑪麗秘密接觸,他自稱是天主教徒,法國(guó)“海龜”,而且還是瑪麗的“粉絲”,更重要的是,他說(shuō)他有辦法幫瑪麗把信送出去,還能幫瑪麗把外面的信帶進(jìn)來(lái)。
這個(gè)人什么來(lái)頭,居然如此神通廣大?難道瑪麗倒霉了半輩子,如今終于遇到貴人,要轉(zhuǎn)運(yùn)啦?吉福爾德到底什么身份我們先賣個(gè)關(guān)子,反正他確實(shí)給瑪麗想了個(gè)辦法,打通了給查特利城堡送啤酒的商人的關(guān)系,把寫(xiě)給瑪麗的信全都塞到啤酒桶里混進(jìn)去,回收空桶的時(shí)候再順便把瑪麗寫(xiě)給外面的信送出來(lái)。吉福爾德先跑了趟法國(guó)駐英國(guó)大使館,從里面把從法國(guó)寄給瑪麗的信全拿出來(lái)了。為啥法國(guó)大使館里面會(huì)有那么多信呢?因?yàn)榇笫桂^覺(jué)得這些信即便送出去也會(huì)被伊麗莎白的人攔下來(lái),鐵定到不了瑪麗手里啊,萬(wàn)一里面有啥不該看的呢?干脆先放在大使館里保管著吧。吉福爾德拿到這些信之后,就用啤酒桶的這招把信送進(jìn)去了,瑪麗一看,嘩,真不枉我在法國(guó)待了這么多年,還真的有人惦記著我,而且吉福爾德這個(gè)年輕人確實(shí)有兩把刷子,有他幫忙,我何愁脫不了身呢?
從此,吉福爾德就成了瑪麗的御用信使,幫助瑪麗跟各方勢(shì)力取得聯(lián)絡(luò),大家聽(tīng)說(shuō)現(xiàn)在有辦法跟瑪麗女王通信了,也都開(kāi)始摩拳擦掌準(zhǔn)備干一票大的。這里面就有那么一伙人,以安東尼·巴賓頓(Anthony Babington)為首,他們的腦洞尤其大,想出來(lái)了一個(gè)驚天大計(jì)劃,當(dāng)然,救瑪麗出來(lái)也是其中一環(huán)。至于這個(gè)計(jì)劃到底是什么內(nèi)容,我們還是先賣個(gè)關(guān)子,總之,有了吉福爾德的幫助,瑪麗跟這伙人順利接上頭了。不過(guò),就算有啤酒桶傳書(shū)的妙法,這畢竟跟古希臘蠟板什么的其實(shí)是一路貨,都是把信息藏起來(lái)嘛,可是萬(wàn)一被發(fā)現(xiàn)了怎么辦呢?時(shí)間過(guò)了1000多年,總得有點(diǎn)進(jìn)步吧,實(shí)際上,瑪麗和這伙人之間的書(shū)信,那可都是經(jīng)過(guò)加密的。
并不神秘的古典密碼
瑪麗用的到底是怎樣一種密碼呢?她用的是一種比較典型的單表置換密碼——等等,啥叫單表置換密碼???為了搞清楚這個(gè)問(wèn)題,我們還是先來(lái)惡補(bǔ)一下古典密碼的進(jìn)化史吧。
首先來(lái)思考一個(gè)問(wèn)題:一段信息,怎樣處理一下才能讓外人看不懂,還得能讓收件人看懂呢?我們的老祖宗思考這個(gè)問(wèn)題很久啦,最直接的一種方法就是把信息中的每個(gè)字替換成另外的字,這個(gè)替換是有規(guī)律的,掌握這個(gè)規(guī)律的人就能夠把信息還原出來(lái),而不知道這個(gè)規(guī)律的人就還原不出來(lái),這就是所謂的“置換密碼”。
傳說(shuō)古羅馬帝國(guó)的愷撒大帝就用過(guò)一種最原始的置換密碼,這種密碼是把每一個(gè)字母都按照字母表做相同的平移。舉個(gè)“栗子”,如果平移3個(gè)字母,那么A就變成D,B就變成E,以此類推,到字母表尾部再轉(zhuǎn)回來(lái),X變成A,Y變成B,Z變成E。如果我有一段信息,就假設(shè)是I LOVE YOU吧,那么平移之后就變成了L ORYH BRX,怎么樣,看不懂了吧?當(dāng)然,如果我知道這個(gè)平移的秘密,只要反向平移3個(gè)字母,信息就可以還原啦。
不過(guò),愷撒的這種密碼有點(diǎn)太弱雞了,你想想看,假設(shè)字母表有26個(gè)字母,那么平移字母表就只有26種移法(其中移0個(gè)字母相當(dāng)于不變,不過(guò)我們暫且算作一種移法),如果我是敵人,我只要從頭到尾試一遍,花不了幾分鐘就能全試過(guò)來(lái)了吧!這不是跟紙糊的一樣嘛……
既然愷撒密碼這么不靠譜,那么我們就改進(jìn)一下吧。平移字母表的移法太有限了,那如果我把字母置換的順序打亂呢?比如A→R,B→F,C→B……不過(guò)既然這種置換完全沒(méi)規(guī)律,那么就必須得寫(xiě)一張完整的置換表,對(duì)照著這張表才能加密和解密信息,像這種根據(jù)“一張表”來(lái)進(jìn)行“置換”的密碼,就叫“單表置換密碼”啦。
那么我們思考一下,單表置換密碼有多少種換法呢?第一個(gè)字母A有26種換法(換成自己也算),第二個(gè)字母B要去掉A的換法(比如A換成R,那么B就不能換成R了),所以B有25種換法,以此類推,C有24種換法,D有23種……那么,26個(gè)字母的單表置換密碼總共有26×25×24×……×1=26?。?6的階乘)種。這個(gè)數(shù)字有多大呢?差不多是4后面26個(gè)零那么大,總之非常非常非常大就是了。這么多種換法,總歸不可能一個(gè)一個(gè)試了吧?哼哼。
阿拉伯黑科技
既然單表置換這么厲害,是不是就沒(méi)辦法破譯了呢?你太天真了。1987年,考古學(xué)家挖出了一本公元9世紀(jì)的阿拉伯手稿,翻開(kāi)一看,嘩,里面講的全是破譯密碼的黑科技,原來(lái)單表置換密碼什么的1000年前就能破譯給你看啦。
那么阿拉伯人的黑科技到底是什么鬼呢?其實(shí)沒(méi)什么高深的東西,無(wú)非是一種古老的魔法——統(tǒng)計(jì)學(xué)。我們假設(shè)原始的信息是用英語(yǔ)寫(xiě)的,如果我們對(duì)好多好多好多的英語(yǔ)文章進(jìn)行一下統(tǒng)計(jì),看看每個(gè)字母各自出現(xiàn)了多少次,我們就可以得到這么一張表(看下圖)。
這張表我們粗略一看就能發(fā)現(xiàn),E是出現(xiàn)頻率最高的,而E、T、A、O、I則占據(jù)了Top 5。單表置換密碼只是把每個(gè)字母找另外一個(gè)字母替代了一下,但它并沒(méi)有改變字母的出現(xiàn)頻率,比如說(shuō),假設(shè)E被置換成了P,那么所有的E現(xiàn)在都是P了,如果我把密文里的字母也都數(shù)一下,發(fā)現(xiàn)里面P是最多的,那我就有理由相信,P很可能就代表原來(lái)的E。
當(dāng)然,信息的內(nèi)容不同,某些字母出現(xiàn)的頻率還是會(huì)有波動(dòng)的,但頻率最高的這幾個(gè)字母基本上是雷打不動(dòng)的吧。通過(guò)這個(gè)規(guī)律,破譯者就能掌握一些線索,然后再通過(guò)類似填字游戲的方式順藤摸瓜,把所有字母的置換方式都找出來(lái),而且越到后面找起來(lái)越容易(因?yàn)槭O碌目赡苄栽缴伲?。這種破譯技術(shù)叫做“頻率分析”,之前提到的那本阿拉伯手稿,里面寫(xiě)的黑科技其實(shí)就是這個(gè)啦。
頻率分析也算是一套“專業(yè)技術(shù)”,就跟開(kāi)鎖技術(shù)一樣,說(shuō)白了,老鳥(niǎo)和菜鳥(niǎo)的差距是很大的。所以頻率分析的出現(xiàn),也意味著出現(xiàn)了很多從事“破譯”工作的“專家”,密碼學(xué)也從此變成了一門專業(yè)的學(xué)問(wèn)。聽(tīng)起來(lái)是不是很酷?
單表密碼的進(jìn)化
加密和破譯,這兩股勢(shì)力在人類歷史上一直持續(xù)著明爭(zhēng)暗斗。阿拉伯人早在9世紀(jì)就掌握了頻率分析技術(shù),這一技術(shù)不久就傳到了歐洲,于是歐洲也出現(xiàn)了一批破譯專家,這讓普通的單表置換密碼變得不堪一擊,那么有沒(méi)有辦法對(duì)單表置換密碼進(jìn)行一些改進(jìn),讓它變得更強(qiáng),更難破譯呢?
辦法當(dāng)然有,而且還不止一種。要破譯單表密碼,主要依賴的技術(shù)就是頻率分析,而頻率分析得以成立的前提是,單表密碼在加密過(guò)程中沒(méi)有改變字母的出現(xiàn)頻率——有了,如果我在加密的過(guò)程中改變一下字母的頻率,頻率分析不就不管用了嗎?
怎樣才能改變字母的頻率呢?我們可以用多個(gè)數(shù)字或符號(hào)(統(tǒng)稱“編碼”)來(lái)替代同一個(gè)字母。比如說(shuō),字母E的出現(xiàn)頻率最高,那么我就規(guī)定3、5、7這三個(gè)編碼都代表字母E,寫(xiě)信的人在加密過(guò)程中,當(dāng)遇到字母E時(shí)輪換使用這三個(gè)不同的編碼來(lái)替代。這樣一來(lái),原本一個(gè)字母的頻率被平均拆成了三份,破譯的人就不可能通過(guò)密文中頻率最高的編碼來(lái)鎖定字母E了。此外,我們還可以根據(jù)已經(jīng)統(tǒng)計(jì)出來(lái)的字母頻率表,給高頻字母分配較多的編碼,給低頻字母分配較少的編碼(常見(jiàn)的做法是給元音字母分配三個(gè)編碼,輔音字母分配兩個(gè)編碼)。這樣一來(lái),密文中所有編碼的頻率就會(huì)被“平均化”,就像平靜的湖面一樣波瀾不驚,破譯者要找出其中的規(guī)律可就難了。
還有一些辦法能夠改變字母的頻率。英文單詞中有很多雙拼字母,也就是一個(gè)字母重復(fù)出現(xiàn)兩次,比如tree、bottle這些。我們可以規(guī)定一個(gè)特殊的編碼,比如99,這個(gè)編碼意味著把前一個(gè)字母重復(fù)一遍,我們稱為dowbleth。這樣一來(lái),所有的雙拼字母就從原來(lái)的出現(xiàn)兩次變成了只出現(xiàn)一次,從結(jié)果上看是把每個(gè)字母的頻率“摘出來(lái)”一些挪到了99上面去,做頻率分析的時(shí)候就會(huì)產(chǎn)生一定的偏差。
除了改變字母本身的頻率之外,我們還可以為破譯制造“噪音”。比如說(shuō),我們可以規(guī)定,15、25、35這三個(gè)編碼不代表任何字母,這樣的編碼稱為“空碼”。寫(xiě)信的人在加密的時(shí)候可以隨機(jī)往密文里插入這些空碼,收信的人在解密時(shí)遇到空碼直接跳過(guò)去就好了,沒(méi)有任何影響,但破譯者可不知道哪些是空碼,做頻率分析的時(shí)候只能把這些噪音一并算進(jìn)去,真是寶寶心里苦啊。
有了上面這些還不算完,我們寫(xiě)信的時(shí)候有一些詞是經(jīng)常用到的,比如人名、國(guó)名、你我他她它、上下左右前后,還有像the、of、with之類的詞,我們可以給這些常用詞都搞個(gè)編碼,比如55代表英國(guó),66代表法國(guó);也可以對(duì)單詞中的一些常用字母組合單獨(dú)編碼,比如ea、tion這樣的。這樣一來(lái)除了可以縮短密文的長(zhǎng)度之外,也可以給頻率分析帶來(lái)困難,因?yàn)橥瑯拥木幋a既可能代表一個(gè)字母,也可以代表一個(gè)單詞,或者是某幾個(gè)字母的組合。
像這種結(jié)合了字母編碼和常用單詞編碼的“密碼表”,在英語(yǔ)中叫做nomenclator。這個(gè)詞好像沒(méi)有什么合適的中文翻譯,字典里給的翻譯叫“詞匯表”,總之在這里指的就是這種用來(lái)加密和解密的編碼置換表啦,瑪麗女王和巴賓頓通信所使用的也正是一種nomenclator。
(單表密碼進(jìn)化到如此復(fù)雜的程度,是不是就真的無(wú)懈可擊了呢?瑪麗女王用的密碼到底長(zhǎng)什么樣?她和巴賓頓到底說(shuō)了些什么?最后又會(huì)迎來(lái)怎樣的結(jié)局呢?我們下期繼續(xù)講。)