目錄
第1部分 密碼 1
第1章 環(huán)游密碼世界 3
1.1 本章學習的內容 4
1.2 密碼 4
1.2.1 Alice與Bob 4
1.2.2 發(fā)送者、接收者和竊聽者 4
1.2.3 加密與解密 6
1.2.4 密碼保證了消息的機密性 7
1.2.5 破譯 7
1.3 對稱密碼與公鑰密碼 8
1.3.1 密碼算法 8
1.3.2 密鑰 8
1.3.3 對稱密碼與公鑰密碼 9
1.3.4 混合密碼系統(tǒng) 10
1.4 其他密碼技術 10
1.4.1 單向散列函數 10
1.4.2 消息認證碼 10
1.4.3 數字簽名 11
1.4.4 偽隨機數生成器 11
1.5 密碼學家的工具箱 12
1.6 隱寫術與數字水印 13
1.7 密碼與信息安全常識 14
1.7.1 不要使用保密的密碼算法 14
1.7.2 使用低強度的密碼比不進行任何加密更危險 15
1.7.3 任何密碼總有一天都會被破解 15
1.7.4 密碼只是信息安全的一部分 16
1.8 本章小結 16
1.9 小測驗的答案 17
第2章 歷史上的密碼——寫一篇別人看不懂的文章 19
2.1 本章學習的內容 20
2.2 愷撒密碼 20
2.2.1 什么是愷撒密碼 21
2.2.2 愷撒密碼的加密 21
2.2.3 愷撒密碼的解密 22
2.2.4 用暴力破解來破譯密碼 23
2.3 簡單替換密碼 24
2.3.1 什么是簡單替換密碼 24
2.3.2 簡單替換密碼的加密 25
2.3.3 簡單替換密碼的解密 26
2.3.4 簡單替換密碼的密鑰空間 26
2.3.5 用頻率分析來破譯密碼 26
2.4 Enigma 31
2.4.1 什么是Enigma 31
2.4.2 用Enigma進行加密通信 31
2.4.3 Enigma的構造 32
2.4.4 Enigma的加密 34
2.4.5 每日密碼與通信密碼 36
2.4.6 避免通信錯誤 36
2.4.7 Enigma的解密 36
2.4.8 Enigma的弱點 38
2.4.9 Enigma的破譯 38
2.5 思考 40
2.5.1 為什么要將密碼算法和密鑰分開呢 40
2.6 本章小結 41
2.7 小測驗的答案 42
第3章 對稱密碼(共享密鑰密碼)——用相同的密鑰進行加密和解密 45
3.1 炒雞蛋與對稱密碼 46
3.2 本章學習的內容 46
3.3 從文字密碼到比特序列密碼 46
3.3.1 編碼 46
3.3.2 XOR 47
3.4 一次性密碼本——絕對不會被破譯的密碼 50
3.4.1 什么是一次性密碼本 50
3.4.2 一次性密碼本的加密 50
3.4.3 一次性密碼本的解密 51
3.4.4 一次性密碼本是無法破譯的 51
3.4.5 一次性密碼本為什么沒有被使用 52
3.5 DES 53
3.5.1 什么是DES 53
3.5.2 加密和解密 54
3.5.3 DES的結構(Feistel網絡) 54
3.6 三重DES 60
3.6.1 什么是三重DES 60
3.6.2 三重DES的加密 60
3.6.3 三重DES的解密 63
3.6.4 三重DES的現狀 64
3.7 AES的選定過程 64
3.7.1 什么是AES 65
3.7.2 AES的選定過程 65
3.7.3 AES最終候選算法的確定與AES的最終確定 65
3.8 Rijndael 66
3.8.1 什么是Rijndael 66
3.8.2 Rijndael的加密和解密 66
3.8.3 Rijndael的破譯 68
3.8.4 應該使用哪種對稱密碼呢 68
3.9 本章小結 70
3.10 小測驗的答案 71
第4章 分組密碼的模式——分組密碼是如何迭代的 73
4.1 本章學習的內容 74
4.2 分組密碼的模式 75
4.2.1 分組密碼與流密碼 75
4.2.2 什么是模式 75
4.2.3 明文分組與密文分組 76
4.2.4 主動攻擊者Mallory 76
4.3 ECB模式 77
4.3.1 什么是ECB模式 77
4.3.2 ECB模式的特點 78
4.3.3 對ECB模式的攻擊 78
4.4 CBC模式 80
4.4.1 什么是CBC模式 80
4.4.2 初始化向量 81
4.4.3 CBC模式的特點 82
4.4.4 對CBC模式的攻擊 82
4.4.5 CBC的應用實例 84
4.5 CFB模式 85
4.5.1 什么是CFB模式 85
4.5.2 初始化向量 86
4.5.3 CFB模式與流密碼 86
4.5.4 CFB模式的解密 87
4.5.5 對CFB模式的攻擊 87
4.6 OFB模式 88
4.6.1 什么是OFB模式 88
4.6.2 初始化向量 89
4.6.3 CFB模式與OFB模式的對比 89
4.7 CTR模式 90
4.7.1 計數器的生成方法 92
4.7.2 OFB模式與CTR模式的對比 92
4.7.3 CTR模式的特點 92
4.7.4 錯誤與機密性 93
4.8 應該使用哪種模式呢 93
4.9 本章小結 94
4.10 小測驗的答案 95
第5章 公鑰密碼——用公鑰加密,用私鑰解密 97
5.1 投幣寄物柜的使用方法 98
5.2 本章學習的內容 98
5.3 密鑰配送問題 98
5.3.1 什么是密鑰配送問題 98
5.3.2 通過事先共享密鑰來解決 100
5.3.3 通過密鑰分配中心來解決 101
5.3.4 通過Diffie-Hellman密鑰交換來解決密鑰配送問題 102
5.3.5 通過公鑰密碼來解決密鑰配送問題 102
5.4 公鑰密碼 103
5.4.1 什么是公鑰密碼 103
5.4.2 公鑰密碼的歷史 104
5.4.3 公鑰通信的流程 104
5.4.4 各種術語 106
5.4.5 公鑰密碼無法解決的問題 106
5.5 時鐘運算 106
5.5.1 加法 107
5.5.2 減法 109
5.5.3 乘法 110
5.5.4 除法 110
5.5.5 乘方 114
5.5.6 對數 114
5.5.7 從時鐘指針到RSA 115
5.6 RSA 116
5.6.1 什么是RSA 116
5.6.2 RSA加密 116
5.6.3 RSA解密 117
5.6.4 生成密鑰對 118
5.6.5 具體實踐一下吧 121
5.7 對RSA的攻擊 124
5.7.1 通過密文來求得明文 124
5.7.2 通過暴力破解來找出D 124
5.7.3 通過E和N求出D 125
5.7.4 中間人攻擊 126
5.8 其他公鑰密碼 128
5.8.1 ElGamal方式 128
5.8.2 Rabin方式 128
5.8.3 橢圓曲線密碼 128
5.9 關于公鑰密碼的問答 128
5.9.1 公鑰密碼的機密性 129
5.9.2 公鑰密碼與對稱密碼的密鑰長度 129
5.9.3 對稱密碼的未來 129
5.9.4 RSA與質數 130
5.9.5 RSA與質因數分解 130
5.9.6 RSA的長度 131
5.10 本章小結 132
5.11 小測驗的答案 133
第6章 混合密碼系統(tǒng)——用對稱密碼提高速度,用公鑰密碼保護會話密鑰 135
6.1 混合動力汽車 136
6.2 本章學習的內容 136
6.3 混合密碼系統(tǒng) 136
6.3.1 對稱密碼與公鑰密碼 136
6.3.2 混合密碼系統(tǒng) 137
6.3.3 加密 138
6.3.4 解密 140
6.3.5 混合密碼系統(tǒng)的具體例子 141
6.4 怎樣才是高強度的混合密碼系統(tǒng) 141
6.4.1 偽隨機數生成器 141
6.4.2 對稱密碼 142
6.4.3 公鑰密碼 142
6.4.4 密鑰長度的平衡 142
6.5 密碼技術的組合 142
6.6 本章小結 143
6.7 小測驗的答案 144
第2部分 認證 145
第7章 單向散列函數——獲取消息的“指紋” 147
7.1 本章學習的內容 148
7.2 什么是單向散列函數 148
7.2.1 這個文件是不是真的呢 148
7.2.2 什么是單向散列函數 151
7.2.3 單向散列函數的性質 153
7.2.4 關于術語 156
7.3 單向散列函數的實際應用 157
7.3.1 檢測軟件是否被篡改 157
7.3.2 基于口令的加密 159
7.3.3 消息認證碼 159
7.3.4 數字簽名 159
7.3.5 偽隨機數生成器 159
7.3.6 一次性口令 159
7.4 單向散列函數的具體例子 160
7.4.1 MD4、MD5 1