2024年9月14日 星期六

《碼書》~編碼與解碼的戰爭



讀者:朱志德

本次要推薦的書籍是《碼書~編碼與解碼的戰爭》,作者是Simon Singh

第一二章講述講述密碼學的基礎知識,並以幾個重大歷史事件為例,講述編碼和解碼技術是如何逐漸複雜化的。

要秘密傳遞訊息,最常見的做法是隱匿法,利用各種夾帶、隱形墨水,再到近代的微縮攝影,此法歷久不衰。然而一旦訊息被攔截到,內容就完全曝光,因此必須要配合密碼法,讓資訊即使被攔截,也沒辦法看出內容。

密碼法主要有兩種,調換字母順序的移位法,和替代字母或單詞的替代法

早期常見的移位法包括籬笆法、斯巴達密碼棒,而替代法包括凱薩挪移式、希伯來文替代式。但是被知道原理後都容易破解。於是後來又出現了金鑰和演算法分離的單套字母替代式密碼法

收發信雙方先挑選一個單詞(金鑰),當作密碼字母集的起始字母,再依序將剩餘字母填入。攔截者即使知道演算法是替代式,但不知道金鑰是甚麼,就難以破解。簡易與強固的特性,讓單套字母替代式密碼法風行了將近一千年。

然而在公元十世紀,阿拉伯世界發展出了頻率分析法,透過分析文章中字母出現的百分比,就能把密碼還原成最常見的字母和單字。當這套做法入歐洲時,還在使用替代式密碼法的人就倒了楣,對手不但可以破解內容,還能偽造干擾訊息,蘇格蘭的瑪莉王后就應為政變陰謀被破解而被處死。

為了對抗頻率分析法,十六世紀出現了維瓊內爾密碼法,發展了26x26的字母矩陣,而金鑰則指示使用者要依序挑哪幾行來加密。等於每個字母加密時,都使用不同的密碼表,同一個字母會被轉換成不同的字母,因此難以再用頻率分析。當方便傳訊但容易被攔截的摩斯電碼出現時,用維瓊內爾密碼法來加密大為流行。

進入十九世紀,維瓊內爾密碼法又分別被巴貝奇和卡西斯基破解了。由於金鑰長度有限,當文章長度夠長,明文一些常用的單字(例如the)會被重複改寫成相同的密文,再次藉由更複雜的頻率分析,終究能破解金鑰的內容。

第三四章的時間軸進入二十世紀,專家們發現,維瓊內爾密碼法被破解的原因,是因為那是有意義的文字,且長度有限。如果編寫又長又隨機的金鑰,且每次使用後都銷毀再用新的,那破解的機率應該更低。

隨著密碼的複雜化,再用人力進行編碼和解碼太過耗費時間精力了,使用自動化系統編碼和解碼的需求開始出現,工業革命後日新月異的機械設備正好能能滿足這個需求。

在這個情況下,納粹德國雪畢伍斯的奇謎機出現了,而同盟國為了破解奇謎,以圖靈為首的學者們設計的炸彈機帶領大眾進入了電腦資訊時代。

第六七章,講述戰後我們常用的密碼。電腦和網路的出現,解決了機械式密碼需要實體構造的問題,而可以在虛擬空間中進行模擬,不但節省空間和零件設計,速度更快。而隨著電晶體和積體電路取代真空管,電腦也從軍方的專用儀器,變成公司和一般民眾可以方便使用的設備,加密訊息的需求大量增加。

新一代的資訊學家,認為關鍵在於金鑰,金鑰如何在傳遞過程不被攔截?如何設計的足夠複雜即便攔截了也無法解析?最終有兩種方式被提出。

第一種方法是雙重加密。A將訊息加密後寄給B,B再將訊息加密後還給A,A用自己的金鑰將訊息部分解密後傳給B,B再用自己的金鑰將訊息完全解密。在整個過程中,A和B的金鑰都在自己手上,不用傳給對方。方法是透過Y=mod(P)的單向函數,難以逆向破解。

第二種方式是非對稱金鑰,相當於A同時擁有金鑰和掛鎖,掛鎖設計十分複雜難以破解,A將掛鎖直接複製公開寄送,B拿到A的掛鎖後,將自己的資訊上鎖(上鎖後B自己也解不開了),然後再寄給A,A再用自己的金鑰解開。方法是透過兩個質數的乘積,乘積就是那個掛鎖,其中一個質數就是金鑰。這個變成如今網路上最常用的RSA系統。

當時的設計者使用了130位數的質數用以公開說明此系統的效用,花了50年後,集合眾人之力才解開,而目前常見的金鑰大多在308位數以上。

新一代的密碼分析家,難以再從攔截公開資訊破解金鑰,於是最新的手段就是,使用電腦病毒和特洛伊木馬程式,透過網路直接潛入A的電腦,試圖在資訊的汪洋大海中撈出可能的金鑰。

第五章是個小插曲,藉由二戰時期美軍徵調北美原住民,透過將明文翻譯成罕見語言來當作密碼,讓我們回顧古文字解碼的歷史。第八章的量子密碼,究竟已經成為現實,還是仍在未來的幻想,尚不得而知。

沒有留言:

張貼留言