- 碼書:編碼與解碼的戰(zhàn)爭
- (英)西蒙·辛格
- 5991字
- 2019-01-22 18:41:49
阿拉伯的密碼分析家
穆罕默德40歲左右開始定期前往麥加城外的希拉山(Mount Hira)上一座偏僻的洞窟。他在這里禱告、沉思、冥想。公元610年左右,他正在深思之間,天使長加伯列(archangel Gabriel)來到他面前,宣稱穆罕默德是上帝的使者。之后,又繼續(xù)出現(xiàn)一連串的天啟,直到二十來年后穆罕默德過世為止。先知穆罕默德在世時(shí),有幾位書記記錄下這些天啟,但都只是片段。直到第一任伊斯蘭教領(lǐng)袖阿布巴克(Abū Bakr),才開始將這些片段記錄集結(jié)在一起。第二任領(lǐng)袖烏瑪(Umar)和他的女兒哈芙撒(Hafsa)接續(xù)了這份工作,最后到第三任領(lǐng)袖奧斯曼(Uthman)的手上才完成這項(xiàng)工作。每個(gè)啟示一章,結(jié)集成總共114章的《古蘭經(jīng)》。
領(lǐng)袖的責(zé)任是接續(xù)先知穆罕默德的工作,宣弘他的教義,傳播他的信息。從阿布巴克成為教主到661年第四任領(lǐng)袖阿里(Alī)崩殂這段時(shí)間,伊斯蘭教迅速傳播,當(dāng)時(shí)已知的世界,半數(shù)被納入伊斯蘭教教徒的手中。到了750年,經(jīng)過一世紀(jì)的生養(yǎng),阿巴斯(Abbasid)王朝開啟了伊斯蘭文明的黃金時(shí)期。藝術(shù)與科學(xué)同步蓬勃發(fā)展。伊斯蘭工匠遺留給我們璀璨的圖畫、華麗的雕刻以及歷史上最精巧的紡織品。而散布在現(xiàn)代科學(xué)辭典里的阿拉伯詞匯,如代數(shù)(algebra)、堿(alkaline)、天頂(zenith),則見證了伊斯蘭科學(xué)家的輝煌成就。
伊斯蘭文化之所以這么多彩多姿,歸功于安和、富裕的社會。阿巴斯王朝的國王不像前幾任君主那么好征戰(zhàn),轉(zhuǎn)而致力于建立一個(gè)有組織的繁榮社會。低稅賦使得交易頻繁,并促進(jìn)商業(yè)與工業(yè)的大幅增長;嚴(yán)厲的法令則能抑制貪污、保護(hù)百姓。這一切全憑借效率良好的行政系統(tǒng),而行政官員則是仰賴以加密法完成的安全通訊系統(tǒng)。根據(jù)記載,除了機(jī)密的國政事務(wù)之外,稅務(wù)數(shù)據(jù)也予以加密保護(hù),足證密碼技術(shù)的使用非常廣泛與頻繁。許多行政手冊提供了進(jìn)一步的實(shí)證,例如成書于10世紀(jì)的《事務(wù)官手冊》(Adab al-Kuttab)就有好幾篇章節(jié)專門討論密碼法。
這些行政官員所使用的密碼字母通常是如前一節(jié)所述,將明文字母重組而得。不過他們也在密碼字母中摻雜了一些別的符號,例如明文字母的a可能會以#來替代,b則用+等。這類用符號或字母、或兩者混用,以一個(gè)密碼字母代替一個(gè)明文字母的方法,通稱為單套字母替代式密碼法(monoalphabetic substitution cipher)。我們到目前為止所介紹的替代式密碼法都屬于這一類。
倘若這些阿拉伯人只是習(xí)于使用單套字母替代式密碼法,他們就不會在密碼學(xué)史上占有一席之地。然而除了使用密碼外,這些阿拉伯學(xué)者還會破解密碼。事實(shí)上,他們發(fā)明了密碼分析學(xué)(cryptanalysis)——在無從得知鑰匙的情況下解譯信息的科學(xué)。編碼專家在研發(fā)秘密書寫的新方法時(shí),密碼分析家則在苦思這些方法的弱點(diǎn),以破解信息的秘密。單套字母替代式密碼法在維持了數(shù)世紀(jì)無法破解之后,終于被阿拉伯的密碼分析家找到破解的方法。
密碼分析學(xué)的催生需要一個(gè)高度文明——舉凡數(shù)學(xué)、統(tǒng)計(jì)學(xué)和語言學(xué)等學(xué)科,都必須具備高度水平。伊斯蘭教文明提供了一個(gè)孕育密碼分析學(xué)的理想搖籃,因?yàn)橐了固m教要求所有人類活動(dòng)都以公正為旨,而這需要知識(稱為ilm)的協(xié)助才能達(dá)成。每位伊斯蘭教教徒都應(yīng)該追求各種形式的知識,阿巴斯王朝豐碩的經(jīng)濟(jì)成果即給予學(xué)者足夠的時(shí)間、金錢與材料來履行他們的任務(wù)。他們搜集埃及文、巴比倫文、印度文、中文、法希文、敘利亞文、亞美尼亞文、希伯來文以及羅馬文經(jīng)典并翻譯成阿拉伯文,以吸收舊有文明的知識。公元815年,曼姆國王(Caliph al-Ma‘mun)在巴格達(dá)建立了“智慧殿堂”(Bait al-Hikmah)——一座圖書館及翻譯中心。
在學(xué)習(xí)知識的同時(shí),伊斯蘭文明也具備傳播這些知識的能力,因?yàn)樗麄儚闹袊鴮W(xué)到了造紙術(shù)。造紙術(shù)衍生出一門新行業(yè)——warraqīn,意為“處理紙張的人”,其實(shí)就是專門抄寫文稿的人力復(fù)印機(jī);他們是新興出版業(yè)的基石。在全盛時(shí)期,每年的出版量達(dá)數(shù)萬本,光是一個(gè)巴格達(dá)郊區(qū)就有百余家書店。除了《一千零一夜》這類古典文學(xué)之外,這些書店也販賣各種想象得到的領(lǐng)域的教科書,滿足這個(gè)當(dāng)時(shí)全世界識字率最高、最好學(xué)的社會需求。
除了深廣的世俗知識外,宗教學(xué)的發(fā)展也促進(jìn)了密碼分析學(xué)的發(fā)明。巴士拉(Basra)、庫法(Kufa)和巴格達(dá)等城都建立了重要的神學(xué)學(xué)校,這里的神學(xué)家仔細(xì)審究《古蘭經(jīng)》所載穆罕默德的天啟,想為這些天啟編定年代順序。他們所采用的方法是:計(jì)算各個(gè)單詞在每一篇啟示的出現(xiàn)頻率。這個(gè)方法的理論是:有些單詞是稍晚才出現(xiàn)的,如果某篇啟示有很多這類的新單詞,這篇啟示的年代就應(yīng)該較晚。這些神學(xué)家也研究《紀(jì)事》(Hadith),此書記載了先知穆罕默德的日常談話。他們嘗試證明每一句話都真的出自穆罕默德之口。因此,他們研究書中單詞的語源以及句型結(jié)構(gòu),以檢測某些段落文字是否跟穆罕默德的語言習(xí)慣一致。
對日后造成深遠(yuǎn)影響的是,這些宗教學(xué)者的審究并未停留在單詞的階段,他們還分析個(gè)別的字母,因而發(fā)現(xiàn)有些字母的出現(xiàn)次數(shù)比其他字母頻繁。字母a和1在阿拉伯文的出現(xiàn)頻率最高,一部分是因?yàn)槎ü谠~al-(相當(dāng)于英文的the)的緣故。相對地,j的出現(xiàn)頻率則只有它們的1/10。這項(xiàng)看似無關(guān)緊要的觀察結(jié)果,日后卻造成了密碼分析學(xué)的第一次大突破。
我們無法確知是誰先意識到字母出現(xiàn)頻率的差異可以用來破解密碼,就目前所知,這項(xiàng)技術(shù)的說明最早見于公元9世紀(jì)的科學(xué)家肯迪(al-Kindi,全名Abu Yusuf Ya‘qub ibn Is-haq ibn as-Sabbah ibn ‘omran ibn Ismail al-Kindi)的著作。被稱為“阿拉伯哲人”的肯迪有290部著作,題材廣及醫(yī)學(xué)、天文學(xué)、數(shù)學(xué)、語言學(xué)與音樂。他最偉大的作品是《解譯加密信息手稿》(A Manuscript on Deciphering Cryptographic Messages),收藏在伊斯坦布爾的蘇來瑪尼亞鄂圖曼檔案庫(Sulaimaniyyah Ottoman Archive),直到1987年才被再度發(fā)現(xiàn)(第一頁參見圖6)。這部作品對統(tǒng)計(jì)學(xué)、阿拉伯語音學(xué)以及阿拉伯文句法構(gòu)造的討論非常詳細(xì)。不過,肯迪革命性的密碼分析系統(tǒng)則被濃縮在下列兩段短文:
倘若我們知道加密信息所使用的語言,有一種破解它的方法是:找出一篇至少一頁長的相同語言的明文文章,數(shù)算每個(gè)字母的出現(xiàn)次數(shù)。把最常出現(xiàn)的字母稱為“一號”,次常出現(xiàn)的字母稱為“二號”,再次常出現(xiàn)的則稱為“三號”,以此類推,直到這篇明文樣本的所有字母都如此整理完畢。接下來,就輪到我們要解譯的密碼文了,我們也將它的符號如此分類。找到最常出現(xiàn)的符號后,將它替換成明文樣本的“一號”字母,次常出現(xiàn)的符號換成“二號”字母,再次常出現(xiàn)的符號依例換成“三號”字母,以此類推,直到密碼文的所有符號都替換完畢為止。

圖6:肯迪《解譯加密信息手稿》的首頁。這篇文稿包含目前所知最早的密碼分析學(xué)頻率分析法的說明。
肯迪的說明,以英文字母為例比較容易解釋。首先,為了確立每個(gè)英文字母的出現(xiàn)頻率,我們必須分析一長篇或甚至數(shù)篇普通的英文文章。英文字母出現(xiàn)頻率最高的是e,接下來是t,然后是a……如表1所示。再來,檢視我們要處理的密碼文,也把每個(gè)字母的出現(xiàn)頻率整理出來。假設(shè)密碼文內(nèi)出現(xiàn)頻率最高的字母是j,那么它很可能就是e的替身;如果密碼文內(nèi)出現(xiàn)頻率次高的字母是P,那它可能就是t的替身了,以此類推。肯迪的方法顯示:只要分析一下密碼文的符號出現(xiàn)頻率,根本不需要逐一檢查數(shù)十億把鑰匙,就有可能揭開加密信息的內(nèi)容了。這個(gè)方法稱為頻率分析法(frequency analysis)。
不過,肯迪的秘方并不能無條件地應(yīng)用于任何狀況,因?yàn)槿绫?所示的頻率標(biāo)準(zhǔn)表是平均值,不會跟所有文件的字母頻率完全符合。譬如,像這樣一則討論大氣對非洲四肢斑紋動(dòng)物的影響的簡短信息:“From Zanzibar to Zambia and Zaire, ozone zones make zebras run zany zigzags.”(臭氧層使得自桑給巴爾到贊比亞及扎伊爾的斑馬都像傻瓜似的蛇行跑動(dòng)),直接套用頻率分析法可就無效了。一般而言,短文的分析結(jié)果很可能跟標(biāo)準(zhǔn)頻率相去甚遠(yuǎn),如果信息長度少于100個(gè)字母時(shí),就會很難解譯。相反地,較長的文句就較可能符合標(biāo)準(zhǔn)頻率,盡管有時(shí)仍有例外。1969年,法國作家喬治·佩雷克(Georges Perec)寫了一本200頁的小說《消失》(La Disparition),竟沒用到任何含字母e的詞匯。更令人拍案叫絕的是,英國小說家及評論家吉爾伯特·亞戴爾(Gilbert Adair)成功地依循佩雷克避用字母e的原則把《消失》譯成英文。而且這本名為《虛空》(A Void)的英譯本,還是出人意料地通順易讀(請參閱附錄A)。倘若這整本書以單套字母替代式密碼法加密,解譯者如果沒料到全書根本不使用英文中出現(xiàn)頻率最高的字母,而仍單純地采用頻率分析法,結(jié)果恐怕是徒勞無功。
表1:這個(gè)相對頻率表的統(tǒng)計(jì)依據(jù)是取自報(bào)紙和小說的章節(jié),共計(jì)100,362個(gè)字母;由貝克(H.Beker)和派柏(F.Piper)編纂,最早見于《密碼系統(tǒng):保護(hù)通訊》(Cipher Systems: The Protection Of Communication)。

介紹過密碼分析的第一件工具后,接著舉例說明如何使用頻率分析法來解譯密碼文。我無意讓整本書遍布密碼分析的范例,可是對頻率分析法我想破例。一方面是因?yàn)轭l率分析法并沒有想象中那么難,另一方面它也是密碼分析的首要工具。而且以下的例子可以讓讀者一窺密碼分析家的工作方法。你會發(fā)現(xiàn)除了邏輯思考外,頻率分析法也需要一些策略、直覺、彈性與猜測。

假設(shè)我們攔截到這則加密信息,必須解譯其內(nèi)容。我們知道原始語言是英文,也知道它是用單套字母替代式密碼法加密的,可是不知道鑰匙為何。搜查所有可用鑰匙是不可行的,因此必須應(yīng)用頻率分析法。以下是分析這段密碼文的逐步說明。你有把握的話,也可略過這幾段,嘗試自己獨(dú)立破解這段文字。
任何密碼分析家看到這類密碼文的頭一個(gè)反應(yīng)都是分析所有字母的出現(xiàn)頻率,由此得出如表2的結(jié)果。正如我們所預(yù)期的,每個(gè)字母的出現(xiàn)頻率各不相同。問題是,我們可以根據(jù)它們的頻率來判別它們的真實(shí)身份嗎?這段密碼文相當(dāng)短,我們不能將頻率分析法拿來直接照套。倘若相信密碼文里出現(xiàn)最多次的O即是最常用的英文字母e的替身,或是出現(xiàn)次數(shù)排第八的Y即是第八常用的英文字母h,那就未免太天真了。倘若不加思索地直接套用頻率分析法,我們只會譯出一堆嘰哩咕嚕的詞,像第一個(gè)詞PCQ就會被解譯成aov。
表2:加密信息的頻率分析

我們先來分析那3個(gè)出現(xiàn)超過30次的字母,亦即O、X和P。我們大可假設(shè)這3個(gè)在此篇密碼文最常用到的字母,可能就代表英文最常用的3個(gè)字母,只是順序還有待商榷。換句話說,我們不能一口咬定O=e, X=t, P=a,但可做如下的假設(shè):O=e, t或a、X=e, t或a、P=e, t或a。
我們需要一種更精細(xì)的頻率分析法,才能有把握地繼續(xù)下去,判別出這3個(gè)最常用的字母O、X、P的真實(shí)身份。我們可以把觀察焦點(diǎn)轉(zhuǎn)向它們跟其他字母相鄰的頻率。例如,字母O是否出現(xiàn)在許多字母之前或之后?還是它只出現(xiàn)在某些特定的字母旁邊?這些問題的答案可以進(jìn)一步告訴我們O所替代的字母是元音還是輔音。如果O所替代的字母是元音,跟它相鄰(在它前面或后面)的字母應(yīng)該會很多;如果它所替代的是輔音,有很多字母可能沒有機(jī)會跟它相鄰。例如,字母e幾乎可以出現(xiàn)在任何其他字母的前面或后面,但字母t就不太可能出現(xiàn)在b、d、g、j、k、m、q或v的前面或后面。
下表列出這三個(gè)密碼文里最常用到的字母,與每個(gè)字母相鄰出現(xiàn)的頻率。例如,O在A前面出現(xiàn)過一次,但從未在A后面出現(xiàn),就在第一格記上1。O幾乎是大多數(shù)字母的鄰居,只有七個(gè)字母從未出現(xiàn)在它前后,所以在O這一排有七個(gè)O。字母X也一樣愛交朋友,它也跟大多數(shù)的字母為鄰,只有八個(gè)沒見過面。字母P就比較孤僻,它只和少數(shù)幾個(gè)字母打交道,另外十五個(gè)則完全不搭理。這些證據(jù)暗示O和X所替代的是元音字母,而P所替代的則是輔音字母。

接下來的問題是:O和X所替代的是哪些元音?應(yīng)該是e和a這兩個(gè)英語最常用的元音。但是,是O=e、X=a抑或O=a、X=e?這密碼文有一個(gè)特征很有意思,那就是OO這個(gè)組合出現(xiàn)過兩次,XX卻從沒出現(xiàn)過。在正常英文里,ee出現(xiàn)的頻率遠(yuǎn)超過aa,所以,答案很可能是O=e、X=a。
至此,我們很有把握地判讀出密碼文里的兩個(gè)字母了。X=a的結(jié)論還有一項(xiàng)佐證:在密碼文里,X有單獨(dú)出現(xiàn)的紀(jì)錄,而英文只有兩個(gè)單詞是只有一個(gè)字母的,a即是其一。另一個(gè)在密碼文里單獨(dú)出現(xiàn)過的字母是Y,所以它非常可能就是另一個(gè)只有一個(gè)字母的單詞:i。留意那些只有一個(gè)字母的單詞,是標(biāo)準(zhǔn)的密碼分析訣竅。附錄B還列有其他密碼分析訣竅。幸好這篇密碼文還保留單詞之間的空格,這個(gè)訣竅才派得上用場。在真實(shí)案例中,編碼者通常會去掉所有空格,以增添敵人破解信息的困難度。
不論密碼文是否被接成一長串不含空格的文字,接下來的這個(gè)訣竅仍可以派上用場。一旦判讀出字母e,我們很容易可以找出字母h。英文的h常出現(xiàn)在e前面(像the、then、they等),跟在e后面的情形卻很罕見。下表列出密碼文里的O(我們相信它的真實(shí)身份是e)出現(xiàn)在其他字母前面或后面的頻率。這個(gè)表格暗示B即是h的替身,因?yàn)樗霈F(xiàn)在O之前9次,卻不曾出現(xiàn)在O之后。表格里的其他字母跟O的關(guān)系都沒有這么不對稱。

英文的每個(gè)字母都有自己的獨(dú)特個(gè)性,包括它的出現(xiàn)頻率以及它跟其他字母的關(guān)系。透過這些獨(dú)特個(gè)性,即使它們已經(jīng)過單套字母替代法的偽裝,我們?nèi)缘靡耘凶x出字母的真實(shí)身份。
我們已經(jīng)很有把握地確立四個(gè)字母的身份:O=e, X=a, Y=i, B=h,可以開始把密碼文里的一些密碼字母更換成正確的明文字母了。我將依照慣例,以大寫表示密碼字母,以小寫表示明文字母。這可以幫助我們區(qū)別哪些字母還有待判讀,哪些字母則是已經(jīng)確定的。

經(jīng)過這個(gè)步驟,我們又可以辨認(rèn)出幾個(gè)字母,因?yàn)橛幸恍┟艽a文的單詞可以輕易猜出。例如,三個(gè)字母組成的英文單詞中,最常用的是the和and;這兩個(gè)字在這里很容易認(rèn)出來——Lhe出現(xiàn)六次,而aPV出現(xiàn)五次。所以,L大概就是t, P大概是n,而V則是d。現(xiàn)在,我們可以去把密碼文上的這幾個(gè)字母也替換回來:

一旦確立幾個(gè)字母后,密碼分析的工作就可以非常快速地進(jìn)展下去了。例如,第二個(gè)句子的頭一個(gè)詞是Cn。每個(gè)詞都有至少一個(gè)元音,所以C一定是元音字母。我們只剩兩個(gè)元音還不知道:u和o。把u套上去,不合;所以C一定是o了。還有,Khe這個(gè)字暗示K可能是t或s。可是我們已經(jīng)知道L=t,所以答案顯然是K=s。我們且再把這幾個(gè)字母套進(jìn)密碼文里去。瞧,文中出現(xiàn)一個(gè)詞組thoMsand and one niDhts。根據(jù)常理推測,它應(yīng)是thousand and one nights(一千零一夜),而且最后一行好像是要告訴我們這段文字是取材自Tales from the Thousand and One Nights。這表示:M=u, I=f, J=r, D=g, R=l, S=m。
我們可以繼續(xù)推測文中的字句來辨識出其他字母,不過我們且停下來看看到目前為止所確立的明文字母和密碼字母的關(guān)系。這兩套字母集的關(guān)聯(lián)性即是編碼者運(yùn)用替代法加密信息時(shí)所用的鑰匙。當(dāng)我們逐一辨認(rèn)出密碼字母的真實(shí)身份時(shí),同時(shí)也正逐漸揭開這套密碼字母集的全貌。我們到目前為止的成績,可以列成如下的明文和密碼字母對照表。

繼續(xù)檢視密碼字母集的已知內(nèi)容,就可以完成我們的密碼分析工作了。在密碼字母集里,VOIDBY這一排字母暗示,制作這則信息的編碼者選了一個(gè)鑰匙詞組當(dāng)作這只鑰匙的基礎(chǔ)。再稍加揣想,我們可以推論這個(gè)鑰匙詞組應(yīng)該是“A VOID BY GEORGES PEREC”,去掉空格和重復(fù)的字母后就成了“AVOIDBYGERSPC”。剩下的字母依順序,跳過已在鑰匙詞組里出現(xiàn)過的字母,排接上去,這套密碼字母集就完成了。在這個(gè)例子中,這位編碼者做了一個(gè)不太尋常的動(dòng)作:鑰匙詞組不是從密碼字母集的起點(diǎn)開始,而是從第三個(gè)字母開始。這很可能是因?yàn)殍€匙詞組是以A開頭,而編碼者又不想把a(bǔ)改寫為A。現(xiàn)在,這套密碼字母集建立好了,我們可以把密碼文字完整地還原出來,這份密碼分析的任務(wù)也就大功告成了。
