大話密碼學(xué)史(上):從姜太公折斷魚竿說(shuō)起

姓名:王靖堯? 學(xué)號(hào):16020188025

轉(zhuǎn)載自https://blog.csdn.net/qq452474654/article/details/83593345


在人類漫長(zhǎng)的歷史進(jìn)程中,生產(chǎn)力的變革不僅加速了人類思想解放的進(jìn)程,同時(shí)也促進(jìn)了不同地域民族或人種之間的交流。而這種交流最直接的形式,就是以殺戮為核心的戰(zhàn)爭(zhēng)與爭(zhēng)奪。

人類文明史的發(fā)展,始于文字的誕生。根據(jù)目前公開(kāi)的歷史資料來(lái)看,人類文明大約出現(xiàn)在公元前3500年,即誕生于美索不達(dá)米亞的蘇美爾人之間。更有一說(shuō)是源自更早的姆大陸文明,但個(gè)中故事波瀾曲折,姆大陸文明迄今未被主流歷史所認(rèn)可,在此不再贅述。

隨著人類文明的發(fā)展以及戰(zhàn)爭(zhēng)規(guī)模的日益壯大,戰(zhàn)時(shí)信息安全及保密性日漸得到軍事將領(lǐng)的重視。在古埃及C位出鏡之前,世界上最早的密碼工具普遍被認(rèn)為是在公元前1000年由姜子牙發(fā)明的軍用“陰符”。

相傳商紂王末年,姜太公輔佐周室。有一次,姜太公帶領(lǐng)的周軍指揮大營(yíng)被叛兵包圍,情況危急,姜太公令信使突圍,回朝搬兵,但又怕信使遺忘機(jī)密,或者周文王不認(rèn)識(shí)信使,耽誤了軍務(wù)大事。于是其將自己珍愛(ài)的魚竿折成數(shù)節(jié),每節(jié)長(zhǎng)短不一,各代表一件軍機(jī),令信使牢記,不得外傳。信使幾經(jīng)周折回到朝中,周文王令左右將幾節(jié)魚竿合在一起,親自檢驗(yàn)。周文王辨認(rèn)出是姜太公的心愛(ài)之物,于是親率大軍,解救姜太公。此后,姜太公將魚竿傳信的辦法加以改進(jìn),“陰符”由此誕生。

當(dāng)時(shí)“陰符”的規(guī)格共有8種(即8個(gè)不同的尺寸),每種規(guī)格分別代表一種狀態(tài)。比如,長(zhǎng)為1尺的“陰符”表示大獲全勝、全殲敵軍;長(zhǎng)為4寸的“陰符”表示軍隊(duì)失敗,將領(lǐng)陣亡等。?

不同尺寸“陰符”含義? ?

但是,受尺寸所限,“陰符”并不足以傳遞戰(zhàn)時(shí)信息。為此,姜子牙又進(jìn)一步發(fā)明了“陰書”,即將豎寫的秘密文書橫截成3段,并派出3位信使各執(zhí)一段,于不同時(shí)間、不同路線分別出發(fā),先后送達(dá)收件者。任何人只有在收齊3段文件以后才能獲悉秘密文書的全部?jī)?nèi)容。

然而,在后來(lái)的考古發(fā)現(xiàn)中,考古學(xué)家們認(rèn)為,世界上最早出現(xiàn)密碼影子的地方應(yīng)該是公元前2000年的古埃及:時(shí)位古埃及貴族的克努姆霍特普二世的墓碑上有一段不同于已知的埃及象形文字的“字符”,這些“字符”實(shí)際上是將普通的象形文字經(jīng)過(guò)變形處理之后銘刻于墓碑上的。不過(guò),墓碑加密“字符”與軍事遠(yuǎn)遠(yuǎn)不沾邊,不過(guò)是為了讓銘文顯得更莊嚴(yán)罷了。

公元前400年,古希臘的斯巴達(dá)人發(fā)明了“塞塔(scytale)”密碼。他們把長(zhǎng)條紙螺旋地斜繞在一根多棱棒上,讓紙條被多棱棒分割成一個(gè)個(gè)的類似格子一樣的區(qū)域,并沿著這個(gè)區(qū)域,將文字沿棒的水平方向從左到右書寫,寫一個(gè)字旋轉(zhuǎn)一下,換一個(gè)區(qū)域,寫完一行再另起一行從左到右寫。這樣一來(lái),本來(lái)完整通順的一句話,就被機(jī)械地分割開(kāi)了。將信息寫完后,解下來(lái)的紙條上的文字消息雜亂無(wú)章、無(wú)法理解,這就將原來(lái)的信息明文轉(zhuǎn)換成了密文。在把展開(kāi)的紙條傳遞出去以后,解密人只有將紙條斜繞在另一根同等尺寸的多棱棒上才能看到原始消息。

在這一時(shí)期,《左傳·宣公十二年》記載了一種用于替換信息的“隱語(yǔ)”法。所謂“隱語(yǔ)”,就是電影里常見(jiàn)的暗語(yǔ)、黑話,用一個(gè)完全不相關(guān)的詞來(lái)代表特定含義。

至此,我們可以粗略地劃一條分界線。在公元前400年以前,所謂“密碼”本質(zhì)上是古人根據(jù)物理工具特性所作出的改造和偽裝,當(dāng)中并沒(méi)有涉及到啟發(fā)式的數(shù)學(xué)思維或方法,我們稱之為遠(yuǎn)古密碼。

當(dāng)然,隨著人們?cè)诮ㄖ?、器械以及?jīng)濟(jì)實(shí)踐中的經(jīng)驗(yàn)積累,其對(duì)數(shù)學(xué)的認(rèn)知也逐漸發(fā)展成為一種完備的思維。伴隨著古希臘文明的興起,數(shù)學(xué)的發(fā)展——從伊奧尼亞學(xué)派到畢達(dá)哥拉斯學(xué)派,再到柏拉圖學(xué)派和后來(lái)的丟番圖、歐幾里德——也走向了新的高點(diǎn)。今天我們所熟知的Cryptography(密碼學(xué)),正是由希臘詞kryptós(意為“隱藏的”)派生而來(lái)。在公元前400年以后,人們又相繼發(fā)明了更復(fù)雜且具有啟蒙意義的密碼,我們稱之為古典密碼。

古典密碼

古典密碼普遍分為代換密碼和置換密碼。所謂代換密碼,是指通過(guò)使用加密字符來(lái)替換原文字符;而置換密碼則不改變明文字符,僅做純粹的位置置換。

公元前100年,羅馬共和國(guó)的凱撒大帝在高盧戰(zhàn)爭(zhēng)中使用以自己名字命名的密碼(即Caesar密碼)來(lái)對(duì)軍事信息進(jìn)行加密。所謂Caesar密碼,其實(shí)就是對(duì)明文的字母同時(shí)進(jìn)行相同間隔的位移。有意思的是,這種在今天看來(lái)簡(jiǎn)單得不行的加密方式在當(dāng)時(shí)卻收效極佳。至于個(gè)中緣由,曾經(jīng)有人推斷說(shuō)是因?yàn)楦弑R人比較落后。

然而后來(lái)的考古學(xué)證實(shí),早在羅馬人征服高盧之前,高盧文明已經(jīng)十分發(fā)達(dá),其中就包括有詞匯、經(jīng)濟(jì)、技術(shù)等方面,因此這個(gè)解釋并不令人信服。從歷史上看,高盧人的事務(wù)普遍以口傳形式記載,盡管由于受到希臘文化影響,在商業(yè)和貿(mào)易領(lǐng)域一度出現(xiàn)以希臘字書寫的高盧文字,但因宗教因素所限,這些文字并沒(méi)有得到廣泛傳播。由此,我們可以推斷:在凱撒時(shí)代,文字在大多數(shù)高盧人之間屬于稀缺品,而且表達(dá)范圍十分有限,那么高盧人破解不了Caesar密碼也就屬于情理之中了。

隨著人們的不斷嘗試,Caesar密碼已經(jīng)無(wú)法滿足戰(zhàn)爭(zhēng)加密的需求。于是,在同等間隔位移的基礎(chǔ)上,又出現(xiàn)了借助關(guān)鍵詞或者特殊設(shè)備識(shí)別的差異位移加密。比如著名的圣經(jīng)密碼。1994年,希伯來(lái)大學(xué)數(shù)學(xué)教授Eliyahu Rips及其同僚Doron Witztum和Yoav Rosenberg在《統(tǒng)計(jì)科學(xué)》雜志發(fā)表《創(chuàng)世記中的等距字母序列(ELS)》一文,文中指出,由智者們挑選出來(lái)的32位重要人物的名字和生卒曰期都包含在《創(chuàng)世紀(jì)》中,并且是連在一起的。文章不僅在學(xué)術(shù)界引起了轟動(dòng),更由此引爆了破解圣經(jīng)密碼的熱潮。此后,“圣經(jīng)密碼”一直被廣泛用于指代通過(guò)ELS加密的信息。

為了進(jìn)一步提升加密的難度,15世紀(jì)末,佛羅洛薩人Alberti又發(fā)明了圓盤密碼。所謂圓盤密碼,就是兩個(gè)同心圓盤上,內(nèi)盤隨機(jī)填寫字符,而外盤的字符則按照一定順序來(lái)填寫。使用者只需轉(zhuǎn)動(dòng)圓盤就可以找到內(nèi)外盤字符間的映射方式。

南北戰(zhàn)爭(zhēng)時(shí)期使用的密碼盤

上述密碼都可以統(tǒng)稱為單表代換密碼,即明文和密文之間均具有一一對(duì)應(yīng)的關(guān)系。為了打破這種對(duì)應(yīng)關(guān)系,1553年,Giovan Battista Bellaso在其著作中發(fā)明了通過(guò)字母密鑰來(lái)循環(huán)加密明文的“維吉尼亞”密碼。這個(gè)悲傷的命名緣于吃瓜群眾誤以為Bellaso密碼是由法國(guó)外交官維吉尼亞發(fā)明的(后者確實(shí)在1586年提出了相同的方法),從此沿用至今。以下是維吉尼亞算法的簡(jiǎn)陋圖解:

假設(shè)要加密的明文是:TO BE OR NOT TO BE THAT IS THE QUESTION,密鑰為RELATIONS,即RE LA ?TI ?ONS ?RE LA TION ? SR ELA TIONSREL,那么我們就可以在一個(gè)特定的26*26表格中搜尋第R行、第T列所對(duì)應(yīng)的字母作為T的密文。以此類推,得到密文為:KSMEH ZBBLK SMEMP OGAJX SEJCS FLZSY。

維吉尼亞密碼表

隨著科技及破譯技術(shù)的發(fā)展,類似維吉尼亞密碼這種周期多表代換方法已經(jīng)無(wú)法應(yīng)對(duì)頻率分析方法的破解,于是人們又發(fā)明出了非周期多表代換的方法。當(dāng)然,除了Caesar密碼及其改進(jìn)算法外,在這一段演進(jìn)時(shí)期,中西方還出現(xiàn)了其它有趣的方法。

公元前兩世紀(jì),古希臘人發(fā)明了利用Polybius方陣加密的方法,即棋盤密碼。所謂棋盤密碼,就是把字母按序或亂序填入表格里,并對(duì)應(yīng)行和列進(jìn)行加密,比如最簡(jiǎn)單的棋盤密碼:?

假設(shè)明文是GOD,那么加密后則為23 43 14。

棋盤密碼雖然簡(jiǎn)單,但實(shí)用性非常好。在第一次世界大戰(zhàn)中,德軍上校Fritz Nebel用ADFGX替換代表行列數(shù)的12345,并把表內(nèi)字母亂序,由此誕生了ADFGX密碼。

另一種有名的代換密碼是1700年共濟(jì)會(huì)使用得熱火朝天的豬圈密碼。所謂豬圈密碼,就是以格子或符號(hào)為基礎(chǔ)來(lái)替換明文字符。豬圈密碼的起源已無(wú)從考證,其形式及變種很多,大多數(shù)教材使用的經(jīng)典圖案長(zhǎng)這樣:

豬圈密碼

還有赫赫有名的柵欄密碼,其原理是將字母明文分成N個(gè)一組,然后再把對(duì)應(yīng)位置的字母連接起來(lái):比如把CAE SAR分成兩組,加密后便得到CS AA ER。

而在我國(guó)古代,首先就是大家耳熟能詳?shù)牟伦种i以及藏頭詩(shī),比如在周星馳版《唐伯虎點(diǎn)秋香》中,唐伯虎給華府寫的賣身契,第一行藏頭即是“我為秋香”。?

唐伯虎賣身契(原為4列文書)

盡管漢字不如單詞的字母組合那么容易拆解,但古人還是根據(jù)漢字的邊旁結(jié)構(gòu)發(fā)明了“析字法”?!拔鲎址ā睂h字的結(jié)構(gòu)歸納為“六書”,即象形、指事、會(huì)意、形聲、轉(zhuǎn)注、假借,并據(jù)此將漢字劃分為音、形、義三個(gè)類別。

關(guān)于析字法最經(jīng)典的歷史莫過(guò)于一代女皇武則天手撕宰相裴炎。公元684年9月,一位名叫徐敬業(yè)的國(guó)公在揚(yáng)州起兵造反,有大臣問(wèn)裴炎應(yīng)該怎么辦,裴炎在回信中只寫了兩個(gè)字:青鵝。然而,這封書信不幸落到武則天的線人手中,武則天一看,馬上下令將裴炎入獄,以造反罪將其砍頭抄家。所謂“青鵝”,拆解即“十二月,我自與(我將給予幫助)”,也就是說(shuō),裴炎將與叛軍里應(yīng)外合。

到了宋代,軍事首領(lǐng)們總結(jié)行軍經(jīng)驗(yàn),制定了軍需四十余條,其中包括支援糧草、增援兵力、將士叛變等,并從舊詩(shī)中選取四十個(gè)不重復(fù)的字,每字依次對(duì)應(yīng)一種情況作為暗號(hào)。在通信時(shí),就以暗號(hào)代替具體的事件。

及至明朝,抗倭名將戚繼光發(fā)明“反切碼”來(lái)為軍事情報(bào)進(jìn)行加密。說(shuō)到“反切碼”,我們不得不提到“反切法”。在漢語(yǔ)拼音出現(xiàn)以前,古人為漢字注音的方法普遍有幾種:直音法、反切法、讀若法、讀為法以及葉音法。其中,直音法就是直接用讀音相同的漢字來(lái)為另一個(gè)漢字注音;而反切法,就是通過(guò)使用兩個(gè)漢字,并依次取第一個(gè)漢字的聲母和第二個(gè)漢字的韻母和聲調(diào)來(lái)為某一個(gè)漢字注音。反切碼正是應(yīng)用了反切法的精髓。

根據(jù)戚繼光編寫的密碼本,“反切碼”的精髓在于這兩首詩(shī)歌:其一為“柳邊求氣低,波他爭(zhēng)日時(shí)。鶯蒙語(yǔ)出喜,打掌與君知”;其二為“春花香,秋山開(kāi),嘉賓歡歌須金杯,孤燈光輝燒銀缸。之東郊,過(guò)西橋,雞聲催初天,奇梅歪遮溝?!比绻覀?nèi)∏耙皇自?shī)歌中前20個(gè)漢字的聲母,依次分別編號(hào)1到20;同時(shí)取后一首詩(shī)歌的36個(gè)漢字的韻母,并依次編號(hào)1到36。然后再根據(jù)當(dāng)時(shí)福州方言字音的八種聲調(diào),依序編號(hào)1到8,就形成了完整的“反切碼”體系。比如情報(bào)上的密碼為5-25-2,那么對(duì)照聲母編號(hào)5是“低(di)”字,韻母編號(hào)25是“西(xi)”字,兩字的聲母和韻母合在一起是di,對(duì)照聲調(diào)2,就可以得到“敵”字。后來(lái),戚繼光還專門編寫了《八音字義便覽》,以作為情報(bào)人員的訓(xùn)練教材。

隨著東西方文明日益頻繁的交流和融合,科技的發(fā)展日新月異。1766年,第一架具有實(shí)用價(jià)值的蒸汽機(jī)正式誕生,標(biāo)志著人類機(jī)械時(shí)代的來(lái)臨。此后一百年,電力的大規(guī)模應(yīng)用更是將包含經(jīng)濟(jì)、科技、文化等各領(lǐng)域產(chǎn)業(yè)推上快車道,也宣告著密碼學(xué)正式進(jìn)入機(jī)器時(shí)代。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容