2008 (856)
2009 (2525)
2010 (1684)
2011 (517)
2012 (336)
2014 (4)
凱撒大帝的加密術:剃光士兵的頭 烙上不同印跡 |
2011年01月 來源: 光明日報 |
送上開場詩一首:我用相思作玉杯,真情當酒意相隨。愛心已醉何時醒,你似蝴蝶夢裏飛。
你可以把這首詩發給女友,聰明的她一定能看出這是藏頭詩。其實,藏頭詩就是一種加密術,它反映出了加密術的本質——變換坐標係。
加密術最早應用於古代戰爭,傳說凱撒大帝有一個能加密的辦法,就是在寫命令前做一個對應表,明碼:A B…Y Z,密碼:D E…B C,如果他想寫BABY,就用EDEB來表示。
但是這種簡單的加密方法很容易被敵方猜到。敵人從1到25推25次,得到25組新編碼,必有一種是真的。把這組編碼區別出來非常容易,因為其他24組都是毫無意義的字母組合,找個識字的人就可以看得出來。
有個聰明人給凱撒出了個主意,搞個亂序的。例如A對Q,B對F,隻要保證一一對應沒重複就行了——這種方法被後人稱為“單表係統”。
這招很不錯,但它還是有一個漏洞。以英文為例,一篇文檔裏每個字母出現的次數是不同的(見左圖)。例如E出現的最多,如果一份密文中R出現的最多,那會不會就是E?即使不是E,也應是明文中出現次數較多的字母。按照這種思路,天啊,密碼解開了。
現在又輪到加密方糾結了。他們想:如果把頻次區別消除掉,敵人不就沒辦法了嗎?
有一天加密方終於找到了解決問題的關鍵——“多表”。就是每個明文都對應多個密文,例如A分別對應著XGV,這三個密文的選擇取決於明文的位置,A在第一位時選X,第二位時選G,第三位時選V。將整個一段明話按三位一段進行分組後就可以加密。這個例子是三維的,維數越多就越難破譯。這種多表係統雖然也有統計規律可循,但隻短短一段密文是不足以找到規律的。
其實凱撒還可以稱得上隱寫術的鼻祖。他知道自己的加密術並不很安全,有人又給他出了一招:把一批士兵的頭發剃光,用火烙鐵在腦頂上烙上不同印跡,並做好記錄,但士兵們卻一頭霧水。大戰之前,凱撒要求大將們牢記一組對應關係,梅花疤代表“馬上率部向我馳援”,三角疤代表“固守陣地”等等。
戰鬥中凱撒被圍困了,情況很危機。他拿來記錄本,把烙梅花疤的幾個人都點了出來,命令他們沿不同的路線到大將處報到。這些人出發了,有的人成功地找到了大將,二話不說被剃了頭發。也有人被俘,嚴刑拷打也問不出情報,因為他的確不知道情報。距離剃頭烙疤的時間已經很久了,士兵新長出的頭發已經遮蓋了烙疤。
隨著計算機的誕生,這些被稱為古典密碼術的方法全部失效,因為它們根本抵擋不住計算機的窮舉分析。現代密碼學的思路跟古典密碼術非常不同,它是先找出一個數學難題,然後把加密方法歸結到這個難題,若解不出這個數學難題就破解不了密碼。隱寫術也逐漸脫離了物理和化學反應,而是與加密術結合了起來,把秘密隱藏在數據中。現代密碼學更加引人入勝。(奧卡姆剃刀)