1.1 密碼學簡史#
為什麼要讀密碼學史#
密碼學的歷史長達數千年,而這段歷史反覆上演同一齣戲:新的加密法問世 → 看起來無堅不摧 → 有人找到統計或結構上的弱點 → 全面崩潰 → 更強的方法誕生。讀歷史不是為了背故事,而是為了建立「懷疑直覺」——當你看到一個新系統宣稱安全時,能想起歷史上那些同樣自信的系統是如何倒下的。
古代:軍事與權謀的工具#
- 西元前 5 世紀,斯巴達的 Scytale(天書密碼棒):把長紙條纏在特定粗細的木棒上書寫,收信人必須有同樣粗細的棒子才能讀出。這是最早的「換位密碼」(transposition cipher)——不改變字母,只改變順序。
- 西元前 1 世紀,凱薩密碼:凱薩在給將領的密令中把每個字母往後移 3 位。這是最著名的「替代密碼」(substitution cipher),我們將在第 2 章親手實作並破解它。
- 中世紀的阿拉伯學者:9 世紀的 Al-Kindi 撰寫了《解密手稿》,系統性地提出頻率分析——利用文字中字母出現頻率的統計規律破解替代密碼。這是密碼分析的誕生,也代表人類第一次意識到「加密」與「破密」是一場持續的軍備競賽。
15~19 世紀:多表密碼與「不可破」的自信#
1467 年,文藝復興建築師 Alberti 發明密碼圓盤,在加密過程中切換替代表,開創「多表替代密碼」。其集大成者是 16 世紀的維吉尼亞密碼(Vigenère cipher),它在長達約三個世紀的時間裡被稱為「不可破的密碼」(le chiffre indéchiffrable)——直到 19 世紀 Kasiski 與 Babbage 用重複片段的間距分析找出金鑰長度,再度證明「沒被破解」不等於「安全」。
1883 年,荷蘭語言學家 Kerckhoffs 提出著名原則:加密系統的安全性應只依賴金鑰的保密,而非演算法本身的祕密(詳見 1.3 節)。這條原則在當時相當前衛,卻成為一百多年後現代密碼學的憲法。
20 世紀:機械密碼與二次大戰#
- Enigma(德國,1918 年起):轉輪式機械密碼機,金鑰空間高達約 10^23,德軍深信不可破。波蘭數學家 Rejewski 等人率先用數學方法部分破解,英國布萊切利園的 Turing 等人再結合可預測的訊息格式(如天氣報告、每日問候)與工程上的設計缺陷(轉輪不會停留在原位)造出 Bombe 破密機。一般認為破解 Enigma 使二戰縮短了約兩年。教訓:金鑰使用程序(金鑰管理)的錯誤,比演算法弱點更常致命。
- 美國的 Navajo 密碼通訊兵:二戰中用納瓦霍語直接通話,日軍始終未能破解。這是「用天然語言當密碼」的罕見成功案例,但也依賴「敵人不了解該語言」這種 Kerckhoffs 式的脆弱前提。
- 香農的奠基工作(1949):貝爾實驗室的 Claude Shannon 發表《保密系統的通信理論》,用資訊理論嚴格定義了完美保密(perfect secrecy),並證明一次性密碼本是唯一能達成完美保密的系統(第 3 章詳述)。密碼學從此從藝術變成科學。
1970 年代至今:現代密碼學的三場革命#
- 標準化的對稱加密:1977 年美國公布 DES(第 3 章),2001 年由 AES 取代(第 4 章)。加密演算法首次公開、接受全世界密碼學家數十年的攻擊檢驗。
- 公開金鑰密碼:1976 年 Diffie 與 Hellman 發表《密碼學的新方向》,提出金鑰交換的概念;1977 年 RSA 問世。這解決了困擾人類兩千年的金鑰配送問題,並催生數位簽章(第 6、7 章)。
- 雜湊與認證體系:MD5、SHA 家族(第 5 章)、HMAC 與 PKI(第 6 章),讓密碼學從「保密」擴展到「完整性、身分驗證、不可否認」,成為整個網際網路信任體系(TLS、區塊鏈)的地基。
現在,我們正站在第四場革命的門口:量子電腦威脅著 RSA 與橢圓曲線的數學根基,NIST 已於 2024 年公布後量子密碼標準(第 10 章)。歷史的劇本再次上演——而這一次,你將學會讀懂劇本本身。
練習#
- 用你自己的話解釋:「演算法從未公開」與「演算法公開但金鑰保密」兩種做法,哪一個在歷史上被破解得更快?為什麼?
- Scytale、凱薩密碼、維吉尼亞密碼分別屬於「換位」還是「替代」?試著各舉一個現代概念的類比。
- 上網查詢「Zimmermann Telegram」(齊默爾曼電報,1917),寫一段 200 字的摘要:它如何影響第一次世界大戰?它的破密封析屬於 1.2 節四種攻擊模型中的哪一種?