
【朱家安不要偷懶了】決鬥吧!密碼學家!從宮鬥戲到反極權:《碼書》書評
你看得出這段符號是什麼意思嗎:
a83gj : 1u0 a832k75045/
如果覺得有點難,換一個比較常見的:
e04
如果你看得出這是「幹」,應該能馬上看出(或測試出)上面那串字就是這篇文章要介紹的書的名字:「碼書:編碼與解碼的戰爭」。「e04」很容易認,因為它甚至是現代網路常用的字串:人們想要低調地表示「幹」的時候,可能就會用「e04」替代。相較之下,「a83gj : 1u0 a832k75045/ 」就沒那麼容易認了。

然而,這兩串一長一短、乍看之下沒有意義的字串,都是用一樣的方法產生的:把電腦的輸入設定調成英文,依照注音輸入法的方式打字,並省略選字程序。然而,如果你讀過《碼書》,就可以用更酷的方式描述這段過程:藉由鍵盤排列形成的「單套密碼」,把注音符號替換成英文字母或其他符號:
ㄅ → !
ㄆ → q
ㄇ → a
ㄈ → z
讓我們把注音符號稱為「明文」,替換出來的英文字母和符號稱為「密碼」。在這個例子裡,每個「明文字母」都會對應到唯一一個「密碼字母」,反之亦然。這種編碼方式,被稱為「單套字母替代式密碼法」(monoalphabetic substitution cipher)。
現在,你已經知道上面這種「鍵盤注音英文加密法」是依照鍵盤上對應的字母來加密,所以對你來說,即使面對的是新產生的另一串密碼,要解碼也並不困難:只要拿出鍵盤換個輸入法照著打就好了。然而,如果你並不知道有這種加密方式,還有什麼方法可以從密碼文逆推出明文呢?這就是最早期的密碼學家遇到的問題:
我們已經知道眼前的密碼必須被翻譯成特定的語言(例如阿拉伯文),也知道眼前每個密碼字母都對應到一個(且只有一個)該語言的字母,反之亦然。假若我們知道它們之間的對應方式,我們就可以寫一張表格,照著表格一個字母一個字母對出來。但我們目前還不知道它們之間的對應方式。所以,我們該怎麼辦?
這個問題看起來很難,不過根據古阿拉伯科學家津帝(al Kindi)的記載,當時的密碼學家已經知道一種滿有效的方式,可以對付這些用單套字母替代式密碼法產生的密碼。雖然我們不知道密碼和明文對應的方式,但我們知道明文使用的是哪種語言,因此,我們也知道一般來說那種語言寫出來的東西會有什麼特性,例如各種字母出現的頻率。
以英文來說,在一段文字中通常「e」會出現最多次,「z」則很少。如果眼前的密碼是把每個字母都替換成另一個符號,那這種頻率上的差異也會保留下來:用來替代「e」的符號會出現最多次;用來替代「z」的符號則很少出現。而其他符號出現的頻率,也可以強硬地概算出來:找一篇英文文章,然後算算看。這種以字母出現頻率來逆推明文的技巧,叫做「頻率分析法」(frequency analysis)。
雖然我沒有試過,不過如果你面對的明文是注音符號文,頻率分析法應該也一樣可以幫上忙,因為每個注音符號出現的頻率不太一樣。根據陳立圃在2011年對李家同的散文〈陌生人〉做的小範圍計算,出現最多次的注音符號是「ㄧ」、「ㄢ」和「ㄉ」,最少的則是「ㄘ」。[1](這裡以注音符號舉例,不過考慮到中文輸入法也會打聲調符號,我們也必須把聲調符號出現的頻率列入計算)
除此之外,也有其他技巧可以搭配頻率分析法,更有效率得到結果,例如說,把明文語言的其他性質列入考量。以英文為例,「i」和「a」是唯一會獨自出現的字母;「the」則是最常出現的詞之一,這些排列特性都會反映在密碼上。若以注音文為例,或許我們可以考慮母音和子音的排列特性。
以上,就是《碼書》介紹的「編碼與解碼」第一回合的決鬥。
1587年,隨著蘇格蘭女王瑪麗(Mary Stuart)被處決,這回合決鬥也告一段落:瑪麗和心腹使用「單套字母替代式密碼法」加密的書信,被伊莉莎白女王的密碼學家以「頻率分析法」破解,成為謀反的鐵證。解碼學家獲得暫時勝利。
對偉大心靈的清楚刻畫
從瑪麗和伊莉莎白的鬥爭開始,一直到現代的電腦加密法、未來的量子電腦加密法,《碼書》介紹了好幾輪決鬥。每一場決鬥,不論成功或失敗,都可以讓讀者看出極其聰明的腦袋為解決問題付出的努力。這種臨場感,很大程度必須歸功於《碼書》為這些鬥智提供的說明,它不只告訴你哪一方贏了,也讓你知道他們的巧妙思路與設計。
《碼書》介紹的許多密碼法、解碼法多有一定的複雜程度,但作者顯然在說明設計上下了不少功夫,補充和舉例總會在你需要的時候適時出現在下個段落。若你對於有效率的學術普及寫作有興趣,這本書關於說明和例子的安排應該值得參考。
密碼學家的社會運動
在智能戰鬥之外,這本書另一個讓我印象深刻的地方,是最後一個章節介紹的齊瑪曼(Phil Zimmerman)。齊瑪曼認為,隨著科技進步,政府或任何掌權者對人民的監視會越來越容易與透徹:「以往,政府若想侵犯一般公民的隱私,它必須費很多功夫去攔截、用蒸氣開啟、閱讀紙張信件……這就像用用魚鉤和線來釣魚一樣,一次釣一尾……電子郵件跟紙張不一樣,很容易攔截,掃描有興趣的關鍵字。這種工作非常簡易,可以變成自動化且大規模的例行作業……」[2]身為電腦科學家,齊瑪曼試圖提供人民一個解決方案,來保護他認為該有的隱私權:他設計了一個程式「極佳隱私」(Pretty Good Privacy,PGP),讓一般民眾的電腦可以克服運算能力不足的問題,利用當時泛用的加密程式RSA,來進行政府也難以破解的加密。
1991年,齊瑪曼把PGP上傳到網路上免費供人下載,PGP逐漸引起軟體界的討論,人權團體也開始學會用它來規避當權的監視。兩年後,齊瑪曼收到一封來自拉脫維亞的信,當時拉脫維亞剛脫離蘇聯,正值政治緊張時期,信上說:「菲爾,我想讓你知道:萬一獨裁勢力完全掌管了蘇俄──但願永遠不會──你的PGP已經從波羅的海傳到遠東,會在必要時助民主人士一臂之力。謝謝!」
希望自己能一手掌握所有資訊的美國政府試圖找齊瑪曼麻煩,但最後因為難以找到明確的法律起訴他,而不了了之。我對駭客文化並不熟悉,但齊瑪曼的故事似乎讓我更能理解他們追求自由、反對專權的性格。
結論
總地來說,《碼書》是一本有劇情的科普書。作者的安排讓人容易沈迷在編碼與解碼的對決當中,只要你可以欣賞符號謎題,「靠,這種問題到底怎麼可能解決啦!」的驚嘆就會一直推動你閱讀下去,而作者的完善說明,則讓你可以和書中提到的偉大心靈共享知性上的快感和成就感。
NOTE
※專欄內容為作家個人創作,不代表本站立場
密碼無所不在,只看你能否解開:
延伸閱讀:
- 《碼書》
- 《鄭成功密碼》
- 《令人感動的數學》
- 《數學有意思:墓碑上的數學題》