官术网_书友最值得收藏!

阿拉伯的密碼分析家

穆罕默德40歲左右開始定期前往麥加城外的希拉山(Mount Hira)上一座偏僻的洞窟。他在這里禱告、沉思、冥想。公元610年左右,他正在深思之間,天使長加伯列(archangel Gabriel)來到他面前,宣稱穆罕默德是上帝的使者。之后,又繼續出現一連串的天啟,直到二十來年后穆罕默德過世為止。先知穆罕默德在世時,有幾位書記記錄下這些天啟,但都只是片段。直到第一任伊斯蘭教領袖阿布巴克(Abū Bakr),才開始將這些片段記錄集結在一起。第二任領袖烏瑪(Umar)和他的女兒哈芙撒(Hafsa)接續了這份工作,最后到第三任領袖奧斯曼(Uthman)的手上才完成這項工作。每個啟示一章,結集成總共114章的《古蘭經》。

領袖的責任是接續先知穆罕默德的工作,宣弘他的教義,傳播他的信息。從阿布巴克成為教主到661年第四任領袖阿里(Alī)崩殂這段時間,伊斯蘭教迅速傳播,當時已知的世界,半數被納入伊斯蘭教教徒的手中。到了750年,經過一世紀的生養,阿巴斯(Abbasid)王朝開啟了伊斯蘭文明的黃金時期。藝術與科學同步蓬勃發展。伊斯蘭工匠遺留給我們璀璨的圖畫、華麗的雕刻以及歷史上最精巧的紡織品。而散布在現代科學辭典里的阿拉伯詞匯,如代數(algebra)、堿(alkaline)、天頂(zenith),則見證了伊斯蘭科學家的輝煌成就。

伊斯蘭文化之所以這么多彩多姿,歸功于安和、富裕的社會。阿巴斯王朝的國王不像前幾任君主那么好征戰,轉而致力于建立一個有組織的繁榮社會。低稅賦使得交易頻繁,并促進商業與工業的大幅增長;嚴厲的法令則能抑制貪污、保護百姓。這一切全憑借效率良好的行政系統,而行政官員則是仰賴以加密法完成的安全通訊系統。根據記載,除了機密的國政事務之外,稅務數據也予以加密保護,足證密碼技術的使用非常廣泛與頻繁。許多行政手冊提供了進一步的實證,例如成書于10世紀的《事務官手冊》(Adab al-Kuttab)就有好幾篇章節專門討論密碼法。

這些行政官員所使用的密碼字母通常是如前一節所述,將明文字母重組而得。不過他們也在密碼字母中摻雜了一些別的符號,例如明文字母的a可能會以#來替代,b則用+等。這類用符號或字母、或兩者混用,以一個密碼字母代替一個明文字母的方法,通稱為單套字母替代式密碼法(monoalphabetic substitution cipher)。我們到目前為止所介紹的替代式密碼法都屬于這一類。

倘若這些阿拉伯人只是習于使用單套字母替代式密碼法,他們就不會在密碼學史上占有一席之地。然而除了使用密碼外,這些阿拉伯學者還會破解密碼。事實上,他們發明了密碼分析學(cryptanalysis)——在無從得知鑰匙的情況下解譯信息的科學。編碼專家在研發秘密書寫的新方法時,密碼分析家則在苦思這些方法的弱點,以破解信息的秘密。單套字母替代式密碼法在維持了數世紀無法破解之后,終于被阿拉伯的密碼分析家找到破解的方法。

密碼分析學的催生需要一個高度文明——舉凡數學、統計學和語言學等學科,都必須具備高度水平。伊斯蘭教文明提供了一個孕育密碼分析學的理想搖籃,因為伊斯蘭教要求所有人類活動都以公正為旨,而這需要知識(稱為ilm)的協助才能達成。每位伊斯蘭教教徒都應該追求各種形式的知識,阿巴斯王朝豐碩的經濟成果即給予學者足夠的時間、金錢與材料來履行他們的任務。他們搜集埃及文、巴比倫文、印度文、中文、法希文Farsi:使用于今伊朗境內的語言。、敘利亞文、亞美尼亞文、希伯來文以及羅馬文經典并翻譯成阿拉伯文,以吸收舊有文明的知識。公元815年,曼姆國王(Caliph al-Ma‘mun)在巴格達建立了“智慧殿堂”(Bait al-Hikmah)——一座圖書館及翻譯中心。

在學習知識的同時,伊斯蘭文明也具備傳播這些知識的能力,因為他們從中國學到了造紙術。造紙術衍生出一門新行業——warraqīn,意為“處理紙張的人”,其實就是專門抄寫文稿的人力復印機;他們是新興出版業的基石。在全盛時期,每年的出版量達數萬本,光是一個巴格達郊區就有百余家書店。除了《一千零一夜》這類古典文學之外,這些書店也販賣各種想象得到的領域的教科書,滿足這個當時全世界識字率最高、最好學的社會需求。

除了深廣的世俗知識外,宗教學的發展也促進了密碼分析學的發明。巴士拉(Basra)、庫法(Kufa)和巴格達等城都建立了重要的神學學校,這里的神學家仔細審究《古蘭經》所載穆罕默德的天啟,想為這些天啟編定年代順序。他們所采用的方法是:計算各個單詞在每一篇啟示的出現頻率。這個方法的理論是:有些單詞是稍晚才出現的,如果某篇啟示有很多這類的新單詞,這篇啟示的年代就應該較晚。這些神學家也研究《紀事》(Hadith),此書記載了先知穆罕默德的日常談話。他們嘗試證明每一句話都真的出自穆罕默德之口。因此,他們研究書中單詞的語源以及句型結構,以檢測某些段落文字是否跟穆罕默德的語言習慣一致。

對日后造成深遠影響的是,這些宗教學者的審究并未停留在單詞的階段,他們還分析個別的字母,因而發現有些字母的出現次數比其他字母頻繁。字母a和1在阿拉伯文的出現頻率最高,一部分是因為定冠詞al-(相當于英文的the)的緣故。相對地,j的出現頻率則只有它們的1/10。這項看似無關緊要的觀察結果,日后卻造成了密碼分析學的第一次大突破。

我們無法確知是誰先意識到字母出現頻率的差異可以用來破解密碼,就目前所知,這項技術的說明最早見于公元9世紀的科學家肯迪(al-Kindi,全名Abu Yusuf Ya‘qub ibn Is-haq ibn as-Sabbah ibn ‘omran ibn Ismail al-Kindi)的著作。被稱為“阿拉伯哲人”的肯迪有290部著作,題材廣及醫學、天文學、數學、語言學與音樂。他最偉大的作品是《解譯加密信息手稿》(A Manuscript on Deciphering Cryptographic Messages),收藏在伊斯坦布爾的蘇來瑪尼亞鄂圖曼檔案庫(Sulaimaniyyah Ottoman Archive),直到1987年才被再度發現(第一頁參見圖6)。這部作品對統計學、阿拉伯語音學以及阿拉伯文句法構造的討論非常詳細。不過,肯迪革命性的密碼分析系統則被濃縮在下列兩段短文:

 

倘若我們知道加密信息所使用的語言,有一種破解它的方法是:找出一篇至少一頁長的相同語言的明文文章,數算每個字母的出現次數。把最常出現的字母稱為“一號”,次常出現的字母稱為“二號”,再次常出現的則稱為“三號”,以此類推,直到這篇明文樣本的所有字母都如此整理完畢。接下來,就輪到我們要解譯的密碼文了,我們也將它的符號如此分類。找到最常出現的符號后,將它替換成明文樣本的“一號”字母,次常出現的符號換成“二號”字母,再次常出現的符號依例換成“三號”字母,以此類推,直到密碼文的所有符號都替換完畢為止。

圖6:肯迪《解譯加密信息手稿》的首頁。這篇文稿包含目前所知最早的密碼分析學頻率分析法的說明。

肯迪的說明,以英文字母為例比較容易解釋。首先,為了確立每個英文字母的出現頻率,我們必須分析一長篇或甚至數篇普通的英文文章。英文字母出現頻率最高的是e,接下來是t,然后是a……如表1所示。再來,檢視我們要處理的密碼文,也把每個字母的出現頻率整理出來。假設密碼文內出現頻率最高的字母是j,那么它很可能就是e的替身;如果密碼文內出現頻率次高的字母是P,那它可能就是t的替身了,以此類推。肯迪的方法顯示:只要分析一下密碼文的符號出現頻率,根本不需要逐一檢查數十億把鑰匙,就有可能揭開加密信息的內容了。這個方法稱為頻率分析法(frequency analysis)。

不過,肯迪的秘方并不能無條件地應用于任何狀況,因為如表1所示的頻率標準表是平均值,不會跟所有文件的字母頻率完全符合。譬如,像這樣一則討論大氣對非洲四肢斑紋動物的影響的簡短信息:“From Zanzibar to Zambia and Zaire, ozone zones make zebras run zany zigzags.”(臭氧層使得自桑給巴爾到贊比亞及扎伊爾的斑馬都像傻瓜似的蛇行跑動),直接套用頻率分析法可就無效了。一般而言,短文的分析結果很可能跟標準頻率相去甚遠,如果信息長度少于100個字母時,就會很難解譯。相反地,較長的文句就較可能符合標準頻率,盡管有時仍有例外。1969年,法國作家喬治·佩雷克(Georges Perec)寫了一本200頁的小說《消失》(La Disparition),竟沒用到任何含字母e的詞匯。更令人拍案叫絕的是,英國小說家及評論家吉爾伯特·亞戴爾(Gilbert Adair)成功地依循佩雷克避用字母e的原則把《消失》譯成英文。而且這本名為《虛空》(A Void)的英譯本,還是出人意料地通順易讀(請參閱附錄A)。倘若這整本書以單套字母替代式密碼法加密,解譯者如果沒料到全書根本不使用英文中出現頻率最高的字母,而仍單純地采用頻率分析法,結果恐怕是徒勞無功。

表1:這個相對頻率表的統計依據是取自報紙和小說的章節,共計100,362個字母;由貝克(H.Beker)和派柏(F.Piper)編纂,最早見于《密碼系統:保護通訊》(Cipher Systems: The Protection Of Communication)

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

假設我們攔截到這則加密信息,必須解譯其內容。我們知道原始語言是英文,也知道它是用單套字母替代式密碼法加密的,可是不知道鑰匙為何。搜查所有可用鑰匙是不可行的,因此必須應用頻率分析法。以下是分析這段密碼文的逐步說明。你有把握的話,也可略過這幾段,嘗試自己獨立破解這段文字。

任何密碼分析家看到這類密碼文的頭一個反應都是分析所有字母的出現頻率,由此得出如表2的結果。正如我們所預期的,每個字母的出現頻率各不相同。問題是,我們可以根據它們的頻率來判別它們的真實身份嗎?這段密碼文相當短,我們不能將頻率分析法拿來直接照套。倘若相信密碼文里出現最多次的O即是最常用的英文字母e的替身,或是出現次數排第八的Y即是第八常用的英文字母h,那就未免太天真了。倘若不加思索地直接套用頻率分析法,我們只會譯出一堆嘰哩咕嚕的詞,像第一個詞PCQ就會被解譯成aov。

表2:加密信息的頻率分析

我們先來分析那3個出現超過30次的字母,亦即O、X和P。我們大可假設這3個在此篇密碼文最常用到的字母,可能就代表英文最常用的3個字母,只是順序還有待商榷。換句話說,我們不能一口咬定O=e, X=t, P=a,但可做如下的假設:O=e, t或a、X=e, t或a、P=e, t或a。

我們需要一種更精細的頻率分析法,才能有把握地繼續下去,判別出這3個最常用的字母O、X、P的真實身份。我們可以把觀察焦點轉向它們跟其他字母相鄰的頻率。例如,字母O是否出現在許多字母之前或之后?還是它只出現在某些特定的字母旁邊?這些問題的答案可以進一步告訴我們O所替代的字母是元音還是輔音。如果O所替代的字母是元音,跟它相鄰(在它前面或后面)的字母應該會很多;如果它所替代的是輔音,有很多字母可能沒有機會跟它相鄰。例如,字母e幾乎可以出現在任何其他字母的前面或后面,但字母t就不太可能出現在b、d、g、j、k、m、q或v的前面或后面。

下表列出這三個密碼文里最常用到的字母,與每個字母相鄰出現的頻率。例如,O在A前面出現過一次,但從未在A后面出現,就在第一格記上1。O幾乎是大多數字母的鄰居,只有七個字母從未出現在它前后,所以在O這一排有七個O。字母X也一樣愛交朋友,它也跟大多數的字母為鄰,只有八個沒見過面。字母P就比較孤僻,它只和少數幾個字母打交道,另外十五個則完全不搭理。這些證據暗示O和X所替代的是元音字母,而P所替代的則是輔音字母。

接下來的問題是:O和X所替代的是哪些元音?應該是e和a這兩個英語最常用的元音。但是,是O=e、X=a抑或O=a、X=e?這密碼文有一個特征很有意思,那就是OO這個組合出現過兩次,XX卻從沒出現過。在正常英文里,ee出現的頻率遠超過aa,所以,答案很可能是O=e、X=a。

至此,我們很有把握地判讀出密碼文里的兩個字母了。X=a的結論還有一項佐證:在密碼文里,X有單獨出現的紀錄,而英文只有兩個單詞是只有一個字母的,a即是其一。另一個在密碼文里單獨出現過的字母是Y,所以它非常可能就是另一個只有一個字母的單詞:i。留意那些只有一個字母的單詞,是標準的密碼分析訣竅。附錄B還列有其他密碼分析訣竅。幸好這篇密碼文還保留單詞之間的空格,這個訣竅才派得上用場。在真實案例中,編碼者通常會去掉所有空格,以增添敵人破解信息的困難度。

不論密碼文是否被接成一長串不含空格的文字,接下來的這個訣竅仍可以派上用場。一旦判讀出字母e,我們很容易可以找出字母h。英文的h常出現在e前面(像the、then、they等),跟在e后面的情形卻很罕見。下表列出密碼文里的O(我們相信它的真實身份是e)出現在其他字母前面或后面的頻率。這個表格暗示B即是h的替身,因為它出現在O之前9次,卻不曾出現在O之后。表格里的其他字母跟O的關系都沒有這么不對稱。

英文的每個字母都有自己的獨特個性,包括它的出現頻率以及它跟其他字母的關系。透過這些獨特個性,即使它們已經過單套字母替代法的偽裝,我們仍得以判讀出字母的真實身份。

我們已經很有把握地確立四個字母的身份:O=e, X=a, Y=i, B=h,可以開始把密碼文里的一些密碼字母更換成正確的明文字母了。我將依照慣例,以大寫表示密碼字母,以小寫表示明文字母。這可以幫助我們區別哪些字母還有待判讀,哪些字母則是已經確定的。

經過這個步驟,我們又可以辨認出幾個字母,因為有一些密碼文的單詞可以輕易猜出。例如,三個字母組成的英文單詞中,最常用的是the和and;這兩個字在這里很容易認出來——Lhe出現六次,而aPV出現五次。所以,L大概就是t, P大概是n,而V則是d。現在,我們可以去把密碼文上的這幾個字母也替換回來:

一旦確立幾個字母后,密碼分析的工作就可以非常快速地進展下去了。例如,第二個句子的頭一個詞是Cn。每個詞都有至少一個元音,所以C一定是元音字母。我們只剩兩個元音還不知道:u和o。把u套上去,不合;所以C一定是o了。還有,Khe這個字暗示K可能是t或s。可是我們已經知道L=t,所以答案顯然是K=s。我們且再把這幾個字母套進密碼文里去。瞧,文中出現一個詞組thoMsand and one niDhts。根據常理推測,它應是thousand and one nights(一千零一夜),而且最后一行好像是要告訴我們這段文字是取材自Tales from the Thousand and One Nights。這表示:M=u, I=f, J=r, D=g, R=l, S=m。

我們可以繼續推測文中的字句來辨識出其他字母,不過我們且停下來看看到目前為止所確立的明文字母和密碼字母的關系。這兩套字母集的關聯性即是編碼者運用替代法加密信息時所用的鑰匙。當我們逐一辨認出密碼字母的真實身份時,同時也正逐漸揭開這套密碼字母集的全貌。我們到目前為止的成績,可以列成如下的明文和密碼字母對照表。

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

主站蜘蛛池模板: 大庆市| 绥德县| 通州市| 富蕴县| 樟树市| 兴义市| 元朗区| 教育| 新民市| 靖宇县| 株洲县| 永兴县| 双流县| 荣昌县| 阿图什市| 宁晋县| 内江市| 福清市| 专栏| 兴义市| 来凤县| 大石桥市| 辽宁省| 朝阳县| 合水县| 景洪市| 满洲里市| 金川县| 徐汇区| 清苑县| 来宾市| 三河市| 衡东县| 乌苏市| 襄汾县| 郯城县| 黔西| 定远县| 平安县| 黄浦区| 涡阳县|