目錄
自序
01
「只要解出來,算你了不起」
古典密碼:高手過招的智慧博弈
1.1 換種表示:編碼 16
1.1.1 最初的編碼:摩斯電碼 18
1.1.2 摩斯電碼的困境 24
1.1.3 博多碼與ASCII碼 29
1.1.4 琳琅滿目的各國編碼標準 36
1.1.5 Unicode與UTF 38
1.1.6 Base16、Base32與Base64 41
1.2 換個位置:移位密碼 45
1.2.1 移位密碼的起源:斯巴達密碼棒 45
1.2.2 柵欄密碼 47
1.2.3 帶金鑰的柵欄移位密碼 50
1.2.4 其他移位密碼 53
1.2.5 知乎上的移位密碼破解實例 55
1.3 換種符號:代換密碼 59
1.3.1 代換密碼的起源:凱撒密碼 59
1.3.2 簡單的代換密碼 61
1.3.3 複雜的代換密碼 65
1.3.4 將字母代換成符號 68
1.3.5 代換密碼的安全性 72
1.4 密碼吧神帖的破解 78
1.4.1 第一層密碼:摩斯電碼 78
1.4.2 第二層密碼:手機鍵盤代換密碼 78
1.4.3 第三層密碼:電腦鍵盤代換密碼 80
1.4.4 第四層和第五層密碼:格柵密碼與字母逆序 81
02
「今天有小雨,無特殊情況」
戰爭密碼:生死攸關的較量
2.1 將古典進行到底:第一次世界大戰中的密碼 92
2.1.1 齊默曼電報 92
2.1.2 ADFGX密碼 96
2.1.3 ADFGVX密碼 99
2.2 維吉尼亞密碼:安全密碼設計的思路源泉 102
2.2.1 維吉尼亞密碼的發明史 102
2.2.2 維吉尼亞密碼的缺陷 107
2.2.3 維吉尼亞密碼的破解 110
2.2.4 《消失》:不能用頻率分析法攻擊的文本 115
2.3 恩尼格瑪機:第二次世界大戰德軍的密碼 119
2.3.1 恩尼格瑪機的核心:轉子 119
2.3.2 恩尼格瑪機的組成和使用方法 125
2.3.3 恩尼格瑪機的工作原理 128
2.3.4 恩尼格瑪機的破解方法 136
03
「曾愛理不理,現高攀不起」
數論基礎:密碼背後的數學原理
3.1 質數的定義:整數之間的整除關係 154
3.1.1 最簡單的運算:加、減、乘、除 154
3.1.2 加、減、乘、除引發的兩次數學危機 158
3.1.3 質數的定義 164
3.1.4 哥德巴赫猜想 164
3.2 質數的性質 170
3.2.1 質數的分布 171
3.2.2 質數螺旋與孿生質數 172
3.2.3 質數的判定 178
3.2.4 最大公因數及其應用 183
3.3 同餘算數及其性質 186
3.3.1 同餘算數 186
3.3.2 模數為2的同餘算數:電腦的基礎 187
3.3.3 模數為N的同餘算數:奇妙的互質 193
3.3.4 模數為p的同餘算數:單純許多 199
3.3.5 看似簡單卻如此困難:整數分解問題與離散對數問題 201
3.4 身份證號碼中隱藏的數學玄機 209
3.4.1 身份證號碼的出生日期碼擴展 209
3.4.2 身份證號碼的校驗方法 212
3.4.3 身份證校驗碼所蘊含的數學原理 218
3.4.4 有關身份證號碼的擴展問題 221
04
「你說你能破解,你行你上呀」
安全密碼:守護數據的科學方法
4.1 「誰來都沒用,上帝也不行」:對稱密碼 230
4.1.1 對稱密碼的基本概念 230
4.1.2 避免金鑰重複使用的另一種加密構想:滾動金鑰 234
4.1.3 一次一密:從看似不可破解到可證明不可破解 239
4.1.4 完備保密性的缺陷與計算安全性 246
4.1.5 實現計算安全性:DES與AES 248
4.2 「給我保險箱,放好撞上門」:公開金鑰密碼 253
4.2.1 信件安全傳遞問題 254
4.2.2 狄菲—赫爾曼金鑰協商協定 259
4.2.3 狄菲與赫爾曼的好幫手默克 265
4.2.4 撞門的保險箱:公開金鑰加密 271
4.2.5 RSA公鑰加密方案與ElGamal公鑰加密方案 273
4.3 「鑰匙防調包,本人簽個字」:數位簽章 278
4.3.1 威力十足的中間人攻擊 279
4.3.2 防止鑰匙或保險箱調包的數位簽章 282
4.3.3 RSA數位簽章方案 286
4.4 RSA的破解之道 291
4.4.1 質數選得足夠大,合數的質因數分解難度並不一定大 293
4.4.2 在使用RSA時,永遠不要使用相同的合數 295
4.4.3 公鑰和私鑰都不能選得特別小 296
4.4.4 RSA中的其他安全問題 298
後記 303
專有名詞、人名一覽表 305 |