每週一書《圖解密碼技術 第3版》分享!

內容簡介

本書以圖配文的形式,詳細講解了6種重要的密碼技術:對稱密碼、公鑰密碼、單向散列函數、消息認證碼、數字簽名和僞*數生成器。 第1部分講述了密碼技術的歷史沿革、對稱密碼、分組密碼模式(包括ECB、CBC、CFB、OFB、CTR)、公鑰密碼、混合密碼系統。第2部分重點介紹了認證方面的內容,涉及單向散列函數、消息認證碼、數字簽名、證書等。第3部分講述了密鑰、*數、PGP、SSL/TLS 以及密碼技術在現實生活中的應用。 第3版對舊版內容進行了大幅更新,並新增POODLE攻擊、心臟出血漏洞、Superfish事件、SHA-3競賽、Keccak、認證加密、橢圓曲線密碼、比特幣等內容。

 

作者簡介

結城浩(作者)生於1963年,日本傑出技術作家和程序員。在編程語言、設計模式、數學、加密技術等領域,編寫了很多深受歡迎的入門書。代表作有《數學女孩》系列、《程序員的數學》等。 

 

周自恆(譯者) IT、編程愛好者,初中時曾在NOI(國家信息學奧賽)天津賽區獲一等獎,現就職於 某管理諮詢公司,任諮詢顧問兼戰略技術總監。譯著有《圖解CIO工作指南(第4版)》《大數據的衝擊》《代碼的未來》《30天自制操作系統》《家用遊戲機簡史》《有趣的二進制》等。

 

目錄

1部分 密碼  1

1章 環遊密碼世界  3

1.1 本章學習的內容  4

1.2 密碼  4

1.2.1 AliceBob  4

1.2.2 發送者、接收者和竊聽者  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 混合密碼系統  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.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.5.4 差分分析與線性分析  60

3.6 三重DES  61

3.6.1 什麼是三重DES  61

3.6.2 三重DES的加密  61

3.6.3 三重DES的解密  63

3.6.4 三重DES的現狀  64

3.7 AES的選定過程  65

3.7.1 什麼是AES  65

3.7.2 AES的選拔過程  65

3.7.3 AES最終候選算法的確定與AES的最終確定  66

3.8 Rijndael  66

3.8.1 什麼是Rijndael  66

3.8.2 Rijndael的加密和解密  67

3.8.3 Rijndael的破譯  71

3.8.4 應該使用哪種對稱密碼呢  71

3.9 本章小結  72

3.10 小測驗的答案  73

4章 分組密碼的模式——分組密碼是如何迭代的  75

4.1 本章學習的內容  76

4.2 分組密碼的模式  77

4.2.1 分組密碼與流密碼  77

4.2.2 什麼是模式  77

4.2.3 明文分組與密文分組  78

4.2.4 主動攻擊者Mallory  78

4.3 ECB模式  79

4.3.1 什麼是ECB模式  79

4.3.2 ECB模式的特點  80

4.3.3 對ECB模式的攻擊  80

4.4 CBC模式  82

4.4.1 什麼是CBC模式  82

4.4.2 初始化向量  83

4.4.3 CBC模式的特點  84

4.4.4 對CBC模式的攻擊  84

4.4.5 填充提示攻擊  86

4.4.6 對初始化向量(IV)進行攻擊  86

4.4.7 CBC模式的應用實例  86

4.5 CFB模式  88

4.5.1 什麼是CFB模式  88

4.5.2 初始化向量  89

4.5.3 CFB模式與流密碼  89

4.5.4 CFB模式的解密  90

4.5.5 對CFB模式的攻擊  90

4.6 OFB模式  91

4.6.1 什麼是OFB模式  91

4.6.2 初始化向量  92

4.6.3 CFB模式與OFB模式的對比  92

4.7 CTR模式  93

4.7.1 計數器的生成方法  95

4.7.2 OFB模式與CTR模式的對比  95

4.7.3 CTR模式的特點  95

4.7.4 錯誤與機密性  96

4.8 應該使用哪種模式呢  96

4.9 本章小結  97

4.10 小測驗的答案  98

5章 公鑰密碼——用公鑰加密,用私鑰解密  101

5.1 投幣寄物櫃的使用方法  102

5.2 本章學習的內容  102

5.3 密鑰配送問題  102

5.3.1 什麼是密鑰配送問題  102

5.3.2 通過事先共享密鑰來解決  104

5.3.3 通過密鑰分配中心來解決  105

5.3.4 通過Diffie-Hellman密鑰交換來解決密鑰配送問題  106

5.3.5 通過公鑰密碼來解決密鑰配送問題  106

5.4 公鑰密碼  107

5.4.1 什麼是公鑰密碼  107

5.4.2 公鑰密碼的歷史  108

5.4.3 公鑰通信的流程  108

5.4.4 各種術語  110

5.4.5 公鑰密碼無法解決的問題  110

5.5 時鐘運算  110

5.5.1 加法  111

5.5.2 減法  113

5.5.3 乘法  114

5.5.4 除法  114

5.5.5 乘方  118

5.5.6 對數  118

5.5.7 從時鐘指針到RSA  119

5.6 RSA  120

5.6.1 什麼是RSA  120

5.6.2 RSA加密  120

5.6.3 RSA解密  121

5.6.4 生成密鑰對  122

5.6.5 具體實踐一下吧  125

5.7 對RSA的攻擊  128

5.7.1 通過密文來求得明文  128

5.7.2 通過暴力破解來找出D  128

5.7.3 通過EN求出D  129

5.7.4 中間人攻擊  130

5.7.5 選擇密文攻擊  132

5.8 其他公鑰密碼  133

5.8.1 ElGamal方式  133

5.8.2 Rabin方式  133

5.8.3 橢圓曲線密碼  133

5.9 關於公鑰密碼的Q&A  133

5.9.1 公鑰密碼的機密性  134

5.9.2 公鑰密碼與對稱密碼的密鑰長度  134

5.9.3 對稱密碼的未來  135

5.9.4 RSA與質數  135

5.9.5 RSA與質因數分解  136

5.9.6 RSA的長度  136

5.10 本章小結  138

5.11 小測驗的答案  139

6章 混合密碼系統——用對稱密碼提高速度,用公鑰密碼保護會話密鑰  141

6.1 混合動力汽車  142

6.2 本章學習的內容  142

6.3 混合密碼系統  142

6.3.1 對稱密碼與公鑰密碼  142

6.3.2 混合密碼系統  143

6.3.3 加密  144

6.3.4 解密  146

6.3.5 混合密碼系統的具體例子  147

6.4 怎樣纔是高強度的混合密碼系統  147

6.4.1 僞隨機數生成器  147

6.4.2 對稱密碼  148

6.4.3 公鑰密碼  148

6.4.4 密鑰長度的平衡  148

6.5 密碼技術的組合  148

6.6 本章小結  149

6.7 小測驗的答案  150

2部分 認證  151

7章 單向散列函數——獲取消息的指紋  153

7.1 本章學習的內容  154

7.2 什麼是單向散列函數  154

7.2.1 這個文件是不是真的呢  154

7.2.2 什麼是單向散列函數  157

7.2.3 單向散列函數的性質  159

7.2.4 關於術語  162

7.3 單向散列函數的實際應用  163

7.3.1 檢測軟件是否被篡改  163

7.3.2 基於口令的加密  165

7.3.3 消息認證碼  165

7.3.4 數字簽名  165

7.3.5 僞隨機數生成器  165

7.3.6 一次性口令  165

7.4 單向散列函數的具體例子  166

7.4.1 MD4MD5  166

7.4.2 SHA-1SHA-256SHA-384SHA-512  166

7.4.3 RIPEMD-160  167

7.4.4 SHA-3  167

7.5 SHA-3的選拔過程  168

7.5.1 什麼是SHA-3  168

7.5.2 SHA-3的選拔過程  168

7.5.3 SHA-3最終候選名單的確定與SHA-3的最終確定  168

7.6 Keccak  169

7.6.1 什麼是Keccak  169

7.6.2 海綿結構  170

7.6.3 雙工結構  171

7.6.4 Keccak的內部狀態  172

7.6.5 函數Keccak-f [b ]  174

7.6.6 對Keccak的攻擊  177

7.6.7 對縮水版Keccak的攻擊競賽  177

7.7 應該使用哪種單向散列函數呢  178

7.8 對單向散列函數的攻擊  178

7.8.1 暴力破解(攻擊故事1)  178

7.8.2 生日攻擊(攻擊故事2)  180

7.9 單向散列函數無法解決的問題  182

7.10 本章小結  183

7.11 小測驗的答案  184

8章 消息認證碼——消息被正確傳送了嗎  187

8.1 本章學習的內容  188

8.2 消息認證碼  188

8.2.1 匯款請求是正確的嗎  188

8.2.2 什麼是消息認證碼  189

8.2.3 消息認證碼的使用步驟  190

8.2.4 消息認證碼的密鑰配送問題  190

8.3 消息認證碼的應用實例  191

8.3.1 SWIFT  191

8.3.2 IPsec  191

8.3.3 SSL/TLS  192

8.4 消息認證碼的實現方法  192

8.4.1 使用單向散列函數實現  192

8.4.2 使用分組密碼實現  192

8.4.3 其他實現方法  192

8.5 認證加密  192

8.6 HMAC的詳細介紹  193

8.6.1 什麼是HMAC  193

8.6.2 HMAC的步驟  194

8.7 對消息認證碼的攻擊  196

8.7.1 重放攻擊  196

8.7.2 密鑰推測攻擊  198

8.8 消息認證碼無法解決的問題  199

8.8.1 對第三方證明  199

8.8.2 防止否認  199

8.9 本章小結  200

8.10 小測驗的答案  200

9章 數字簽名——消息到底是誰寫的  203

9.1 羊媽媽的認證  204

9.2 本章學習的內容  204

9.3 數字簽名  204

9.3.1 Alice的借條  204

9.3.2 從消息認證碼到數字簽名  205

9.3.3 簽名的生成和驗證  206

9.3.4 公鑰密碼與數字簽名  207

9.4 數字簽名的方法  209

9.4.1 直接對消息簽名的方法  209

9.4.2 對消息的散列值簽名的方法  211

9.5 對數字簽名的疑問  214

9.5.1 密文爲什麼能作爲簽名使用  214

9.5.2 數字簽名不能保證機密性嗎  214

9.5.3 這種簽名可以隨意複製嗎  215

9.5.4 消息內容會不會被任意修改  215

9.5.5 簽名會不會被重複使用  216

9.5.6 刪除簽名也無法作廢合同嗎  216

9.5.7 如何防止否認  217

9.5.8 數字簽名真的能夠代替簽名嗎  217

9.6 數字簽名的應用實例  218

9.6.1 安全信息公告  218

9.6.2 軟件下載  219

9.6.3 公鑰證書  220

9.6.4 SSL/TLS  220

9.7 通過RSA實現數字簽名  220

9.7.1 用RSA生成簽名  220

9.7.2 用RSA驗證簽名  221

9.7.3 具體實踐一下吧  221

9.8 其他的數字簽名  222

9.8.1 ElGamal方式  222

9.8.2 DSA  223

9.8.3 ECDSA  223

9.8.4 Rabin方式  223

9.9 對數字簽名的攻擊  223

9.9.1 中間人攻擊  223

9.9.2 對單向散列函數的攻擊  224

9.9.3 利用數字簽名攻擊公鑰密碼  224

9.9.4 潛在僞造  225

9.9.5 其他攻擊  226

9.10 各種密碼技術的對比  226

9.10.1 消息認證碼與數字簽名  226

9.10.2 混合密碼系統與對散列值簽名  227

9.11 數字簽名無法解決的問題  227

9.12 本章小結  227

9.13 小測驗的答案  228

10章 證書——爲公鑰加上數字簽名  229

10.1 本章學習的內容  230

10.2 證書  230

10.2.1 什麼是證書  230

10.2.2 證書的應用場景  230

10.3 實際生成一張證書  233

10.3.1 賽門鐵克的Digital ID免費試用服務  233

10.3.2 生成證書  233

10.3.3 顯示證書  234

10.3.4 證書標準規範  236

10.4 公鑰基礎設施(PKI)  237

10.4.1 什麼是公鑰基礎設施  237

10.4.2 PKI 的組成要素  238

10.4.3 認證機構的工作  240

10.4.4 證書的層級結構  241

10.4.5 各種各樣的PKI  242

10.5 對證書的攻擊  243

10.5.1 在公鑰註冊之前進行攻擊  244

10.5.2 註冊相似人名進行攻擊  245

10.5.3 竊取認證機構的私鑰進行攻擊  245

10.5.4 攻擊者僞裝成認證機構進行攻擊  246

10.5.5 鑽CRL的空子進行攻擊(1)  246

10.5.6 鑽CRL的空子進行攻擊(2)  247

10.5.7 Superfish  248

10.6 關於證書的Q&A  249

10.6.1 爲什麼需要證書  249

10.6.2 通過自己的方法進行認證是不是更安全  250

10.6.3 爲什麼要相信認證機構  251

10.7 本章小結  252

10.8 小測驗的答案  253

3部分 密鑰、隨機數與應用技術  255

11章 密鑰——祕密的精華  257

11.1 本章學習的內容  258

11.2 什麼是密鑰  258

11.2.1 密鑰就是一個巨大的數字  258

11.2.2 密鑰與明文是等價的  260

11.2.3 密碼算法與密鑰  260

11.3 各種不同的密鑰  260

11.3.1 對稱密碼的密鑰與公鑰密碼的密鑰  260

11.3.2 消息認證碼的密鑰與數字簽名的密鑰  261

11.3.3 用於確保機密性的密鑰與用於認證的密鑰  262

11.3.4 會話密鑰與主密鑰  263

11.3.5 用於加密內容的密鑰與用於加密密鑰的密鑰  264

11.4 密鑰的管理  264

11.4.1 生成密鑰  264

11.4.2 配送密鑰  265

11.4.3 更新密鑰  265

11.4.4 保存密鑰  266

11.4.5 作廢密鑰  267

11.5 Diffie-Hellman密鑰交換  268

11.5.1 什麼是Diffie-Hellman密鑰交換  268

11.5.2 Diffie-Hellman密鑰交換的步驟  268

11.5.3 Eve能計算出密鑰嗎  270

11.5.4 生成元的意義  271

11.5.5 具體實踐一下  272

11.5.6 橢圓曲線Diffie-Hellman密鑰交換  273

11.6 基於口令的密碼(PBE)  274

11.6.1 什麼是基於口令的密碼  274

11.6.2 PBE加密  275

11.6.3 PBE解密  276

11.6.4 鹽的作用  277

11.6.5 口令的作用  279

11.6.6 通過拉伸來改良PBE  279

11.7 如何生成安全的口令  279

11.7.1 使用只有自己才能知道的信息  280

11.7.2 將多個不同的口令分開使用  280

11.7.3 有效利用筆記  281

11.7.4 理解口令的侷限性  281

11.7.5 使用口令生成和管理工具  282

11.8 本章小結  282

11.9 小測驗的答案  283

12章 隨機數——不可預測性的源泉  285

12.1 騾子的鎖匠鋪  286

12.2 本章學習的內容  286

12.3 使用隨機數的密碼技術  286

12.4 隨機數的性質  287

12.4.1 對隨機數的性質進行分類  287

12.4.2 隨機性  288

12.4.3 不可預測性  289

12.4.4 不可重現性  289

12.5 僞隨機數生成器  291

12.6 具體的僞隨機數生成器  292

12.6.1 雜亂的方法  293

12.6.2 線性同餘法  293

12.6.3 單向散列函數法  296

12.6.4 密碼法  298

12.6.5 ANSI X9.17  300

12.6.6 其他算法  302

12.7 對僞隨機數生成器的攻擊  303

12.7.1 對種子進行攻擊  303

12.7.2 對隨機數池進行攻擊  303

12.8 本章小結  304

12.9 小測驗的答案  304

13章 PGP——密碼技術的完美組合  307

13.1 本章學習的內容  308

13.2 PGP 簡介  308

13.2.1 什麼是PGP  308

13.2.2 關於OpenPGP  309

13.2.3 關於GNU Privacy Guard  309

13.2.4 PGP的功能  310

13.3 生成密鑰對  311

13.4 加密與解密  314

13.4.1 加密  314

13.4.2 解密  316

13.5 生成和驗證數字簽名  319

13.5.1 生成數字簽名  319

13.5.2 驗證數字簽名  321

13.6 生成數字簽名並加密以及解密並驗證數字簽名  324

13.6.1 生成數字簽名並加密  324

13.6.2 解密並驗證數字簽名  324

13.7 信任網  328

13.7.1 公鑰合法性  328

13.7.2 場景1:通過自己的數字簽名進行確認  328

13.7.3 場景2:通過自己完全信任的人的數字簽名進行確認  329

13.7.4 場景3:通過自己有限信任的多個人的數字簽名進行確認  330

13.7.5 公鑰合法性與所有者信任是不同的  331

13.7.6 所有者信任級別是因人而異的  331

13.8 本章小結  333

13.9 小測驗的答案  333

14章 SSL/TLS ——爲了更安全的通信  335

14.1 本章學習的內容  336

14.2 什麼是SSL/TLS  336

14.2.1 AliceBob書店買書  336

14.2.2 客戶端與服務器  337

14.2.3 用SSL/TLS承載HTTP  338

14.2.4 SSL/TLS的工作  339

14.2.5 SSL/TLS也可以保護其他的協議  340

14.2.6 密碼套件  340

14.2.7 SSLTLS的區別  341

14.3 使用SSL/TLS進行通信  341

14.3.1 層次化的協議  341

14.3.2 1 TLS記錄協議  343

14.3.3 2-1握手協議  344

14.3.4 2-2密碼規格變更協議  350

14.3.5 2-3警告協議  351

14.3.6 2-4應用數據協議  351

14.3.7 主密碼  351

14.3.8 TLS中使用的密碼技術小結  353

14.4 對SSL/TLS的攻擊  353

14.4.1 對各個密碼技術的攻擊  353

14.4.2 OpenSSL的心臟出血漏洞  353

14.4.3 SSL 3.0的漏洞與POODLE攻擊  354

14.4.4 FREAK攻擊與密碼產品出口管制  354

14.4.5 對僞隨機數生成器的攻擊  355

14.4.6 利用證書的時間差進行攻擊  355

14.5 SSL/TLS用戶的注意事項  356

14.5.1 不要誤解證書的含義  356

14.5.2 密碼通信之前的數據是不受保護的  356

14.5.3 密碼通信之後的數據是不受保護的  356

14.6 本章小結  357

14.7 小測驗的答案  357

15章 密碼技術與現實社會 ——我們生活在不完美的安全中  359

15.1 本章學習的內容  360

15.2 密碼技術小結  360

15.2.1 密碼學家的工具箱  360

15.2.2 密碼與認證  362

15.2.3 密碼技術的框架化  362

15.2.4 密碼技術與壓縮技術  362

15.3 虛擬貨幣——比特幣  365

15.3.1 什麼是比特幣  365

15.3.2 P2P 網絡  366

15.3.3 地址  366

15.3.4 錢包  367

15.3.5 區塊鏈  367

15.3.6 區塊的添加  368

15.3.7 交易  369

15.3.8 挖礦  369

15.3.9 確認  370

15.3.10 匿名性  371

15.3.11 信任的意義  371

15.3.12 比特幣小結  372

15.4 追尋完美的密碼技術  372

15.4.1 量子密碼  373

15.4.2 量子計算機  374

15.4.3 哪一種技術會率先進入實用領域  374

15.5 只有完美的密碼,沒有完美的人  375

15.5.1 理論是完美的,現實是殘酷的  375

15.5.2 防禦必須天衣無縫,攻擊只需突破一點  375

15.5.3 攻擊實例1:經過PGP加密的電子郵件  376

15.5.4 攻擊實例2:用SSL/TLS加密的信用卡號  377

15.6 本章小結  379

附錄 橢圓曲線密碼

密碼技術綜合測驗  381

附錄A 橢圓曲線密碼  382

附錄B 密碼技術綜合測驗  392

參考文獻  401

 

如果想得到下載地址,請微信搜索關注“中科院計算所培訓中心”公衆號,添加中科院計算所培訓中心助教“zhongkeyuanjss666”,幫助進入中科院計算所IT技術分享羣,羣裏有地址分享。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章