書名: 密碼簡史:穿越遠古 展望未來作者名: 楊義先本章字數: 2548字更新時間: 2021-01-07 18:29:48
1.4 古希臘密碼
在古希臘,密碼痕跡更是隨處可見。比如,在美索不達米亞地區(qū)的塞琉西亞遺址,就出土了一小塊大約公元前1500年的石片,其上刻有楔形文字,用一種簡單的編碼方式,記錄了為陶瓷上釉的配方。
公元前4世紀所寫的一本名叫《包圍圈中如何逃生》的書中,也專門用了一章的篇幅來介紹消息加密,所給出的方法更是千奇百怪。比如,在一份文件中,用小圓點在某些字母上標出記號,而這些字母則拼出秘密消息;或者將秘密消息縫在鞋襯內;或者將秘密消息寫在樹葉上,再把樹葉隱藏在傷兵的繃帶中;或者將秘密消息寫在鉛片上,然后把鉛片做成飾品,佩戴在身上;或者在木片上鉆孔,來代表24個希臘字母,并用一根細線依次穿過明文消息的每個字母,然后,在收信端,友方順著這根細線,就可把秘密消息恢復出來等。
如果某位叛徒想要攜帶一封密信,投敵叛變到附近敵營中,那又該咋辦呢?在《包圍圈中如何逃生》一書中,竟然也給這樣的叛徒出了一個好主意:即把密信縫在叛徒的鎧甲邊緣,等待對方某隊士兵巡查而至;當敵兵在近前搜查時,叛徒假裝從馬上跌落,然后便被俘虜;待到成功抵達敵營,見到長官后,那封密信也就送到了。
在公元前2世紀,希臘人波利比奧斯,還發(fā)明了這樣一種數字加密系統(tǒng):把24個希臘字母放入一個事先約定的、如今被稱為“波利比奧斯方塊”的5×5棋盤格中,于是,每個字母便可用一個數對(x, y)來表示,其中,x和y都是1至5之間的某個整數。如果發(fā)信方想將棋盤中第x行y列中的那個字母告訴友方,那么,他只需左手伸出x個指頭,而右手伸出y個指頭就行了;若敵方不知道那個事先約定的棋盤格,他就完全讀不懂這些手勢的含義。
波利比奧斯設計上述密碼的動機,顯然也與戰(zhàn)爭密切相關,這一點從他的坎坷經歷便能夠看出。實際上,波利比奧斯生于公元前203年的古希臘,當時古羅馬和古迦太基正為爭奪地中海西部統(tǒng)治權而展開一場著名的戰(zhàn)爭,史稱第二次布匿克戰(zhàn)爭。古迦太基的主帥漢尼拔,率6萬大軍穿過阿爾卑斯山,入侵羅馬。羅馬則出兵馬賽,切斷了漢尼拔的補給;此時迦太基國內矛盾激化,漢尼拔回軍馳援,羅馬乘機進攻古迦太基,使后者喪失了全部海外領地,被迫交出了艦船,并向羅馬賠款。大約在37歲左右,波利比奧斯作為政治犯,與其他人質一起被送到了羅馬,并在羅馬知道了許多有關第二次布匿克戰(zhàn)爭的情況。大約在54歲左右,波利比奧斯又親歷了第三次布匿克戰(zhàn)爭,并被羅馬主帥小西庇阿帶到了非洲戰(zhàn)場;這次是羅馬以強凌弱,長期圍困迦太基城;迦太基不甘被攻,奮起反擊。可惜,最后迦太基戰(zhàn)敗,慘遭屠城,其領土終于成為羅馬的一個省份——阿非利加行省;后來,波利比奧斯也成了羅馬公民。除設計密碼外,波利比奧斯一生還完成了許多重要的經典著作,比如,長達40章的《通史》,以及業(yè)已失傳的《論戰(zhàn)術》《羅曼提亞戰(zhàn)爭史》《菲羅波門傳》等;直到公元前121年,波利比奧斯才以82歲的高齡去世。
此外,古代亞述人和巴比倫人,也經常使用變形的楔形文字,在黏土石碑上簽名和標注年代,以此炫耀其知識。在伊拉克的烏魯克地區(qū),在公元前1世紀,當時的密碼專家們把自己的名字加密成一串串數字。在伊拉克的蘇薩地區(qū),也發(fā)現了不少疑似密碼本的碎片,其上出現了一些數字與楔形符號的對應表,可用于完成相應的替換加密。
隱寫術也是古希臘人常用的一種加密方法。比如,《歷史》一書中,就記載了公元前5世紀,希臘與波斯的一場戰(zhàn)爭。書中講述了一位名叫德馬拉托斯的希臘流亡者,如何成功躲過敵方警戒,把消息傳回祖國的故事。其辦法便是:流亡者先刮去一塊木片上的石蠟,并將秘密消息寫在木片上,然后再用新的石蠟覆蓋住消息;于是,這些木片就看似一片空白。當這些木片送回祖國后,收信者再把石蠟刮掉,就輕松讀出了木片上的秘密消息。最終,希臘人據此情報,組建了一支船隊,在薩拉米斯戰(zhàn)役中打敗了波斯人。
在另一個傳說中,隱寫術用得更巧。首先,剃掉信使的頭發(fā),然后將秘密消息寫在光頭上,待到信使的頭發(fā)重新長出來后,他就可以空著手,安全抵達目的地;然后,再剃掉頭發(fā),秘密消息就顯現了。
后來,在公元1世紀,又有人發(fā)明了一種奇特的隱形墨水:用某種植物液汁做成的一種乳液,用該乳液在白紙上寫好秘密消息后,將紙張曬干,這時字跡就會變得透明不可見;但是稍微加熱紙張,乳液便被烤焦變成棕色。其實,現在已經知道,任何富含碳的有機液體,都具有這種功效;所以,經常有些間諜,在情急之下,甚至干脆拿尿液當隱形墨水。到了15世紀,意大利科學家波爾塔,更設計了一種隱寫妙法:他把明礬溶解在醋里,制成墨水;然后,把消息寫在煮熟的雞蛋殼上,墨水就會滲透蛋殼,浸入凝固的蛋白上,而在蛋殼上卻只剩一片空白。當該雞蛋被送到合法的收信方后,只需剝去蛋殼,消息就清晰地顯現在蛋白上了。
除了隱寫術,古希臘人還喜歡使用另一類密碼,如今稱為“置換密碼”,它將明文中的字母,按一定規(guī)則進行位移,即對明文字母做一個置換。比如,把前后每對字母進行交換,那么,明文消息“Thebus”,在忽略了其中的空格后,就被加密成了“Htbesu”;解密時,接收方只需反轉這個過程即可。還有一種叫“柵格”的置換密碼,它將明文字母按序排成兩行,并且按列的順序寫入;比如,消息“The bus”就排成:
TEU
HBS
然后,再將它們按行排序出來,就得到加密后的消息TEUHBS;解密過程,則反向進行便可。當然,這里的“兩行”,也可以是三行或更多行;只要收信方和發(fā)信方都使用同樣的行數,那么消息解密便可輕松完成。其實,此處的“柵格”可以是雙方約定的任何維度的網格。
在古希臘的眾多密碼中,對今天影響最大的,可能要數公元前700年左右,古希臘軍隊使用的、由斯巴達人發(fā)明的一種如今叫作“斯巴達棒”的密碼,它用圓木棍來進行保密通信。其使用方法是:把長帶狀羊皮紙均勻纏繞在圓木棍上,然后在上面按正常順序書寫文字;最后再解開羊皮紙,于是,紙上就只有雜亂無章的字符,這就完成了加密操作。在合法的接收端,解密者再次以同樣的方式,將密文紙帶均勻纏繞到同樣粗細的棍子上,于是就能看出當初加密前所寫的文字內容了。而對破譯者來說,由于他不知道棍子的粗細,所以,即使是他將該紙帶纏繞在其他圓棍上,照樣也讀不懂加密信息。
斯巴達棒也許是人類最早使用的文字加解密工具,其加密原理屬于密碼學中的置換法,因為它的加密操作,僅僅基于文本中字母閱讀順序的改變,準確地說,也是某種二維矩陣“柵格”。