本書深入地探討特定的、具體的協(xié)議,講述如何設(shè)計(jì)密碼協(xié)議,分析做出設(shè)計(jì)決策的原因,并指出其中可能存在的陷阱,從而幫助讀者像密碼學(xué)家一樣思考。本書分為五部分,第 一部分對(duì)密碼學(xué)進(jìn)行概述,第二到四部分分別講述消息安全、密鑰協(xié)商、密鑰管理方面的內(nèi)容,第五部分介紹標(biāo)準(zhǔn)和專利等其他問題。本書可作為高等院校計(jì)算機(jī)安全和密碼學(xué)相關(guān)專業(yè)的教材或教學(xué)參考書,也可作為應(yīng)用密碼工程的自學(xué)指南。
目 錄
Cryptography Engineering: Design Principles and Practical Applications
出版者的話
譯者序
前言
《實(shí)用密碼學(xué)》前言
關(guān)于作者
第一部分 概述
第1章 密碼學(xué)研究范圍 2
1.1 密碼學(xué)的作用 2
1.2 木桶原理 3
1.3 對(duì)手設(shè)定 4
1.4 專業(yè)偏執(zhí)狂 5
1.4.1 更廣泛的好處 5
1.4.2 攻擊 5
1.5 威脅模型 6
1.6 密碼學(xué)不是唯一解決方案 7
1.7 密碼學(xué)是非常難的 8
1.8 密碼學(xué)是簡單的部分 8
1.9 通用攻擊 9
1.10 安全性和其他設(shè)計(jì)準(zhǔn)則 9
1.10.1 安全性和性能 9
1.10.2 安全性和特性 10
1.10.3 安全性和演變的系統(tǒng) 11
1.11 更多閱讀材料 11
1.12 專業(yè)偏執(zhí)狂練習(xí) 12
1.12.1 時(shí)事練習(xí) 12
1.12.2 安全審查練習(xí) 12
1.13 習(xí)題 13
第2章 密碼學(xué)簡介 14
2.1 加密 14
2.2 認(rèn)證 15
2.3 公鑰加密 16
2.4 數(shù)字簽名 17
2.5 PKI 18
2.6 攻擊 18
2.6.1 唯密文攻擊模型 19
2.6.2 已知明文攻擊模型 19
2.6.3 選擇明文攻擊模型 19
2.6.4 選擇密文攻擊模型 19
2.6.5 區(qū)分攻擊的目的 20
2.6.6 其他類型的攻擊 20
2.7 深入探討 20
2.7.1 生日攻擊 20
2.7.2 中間相遇攻擊 21
2.8 安全等級(jí) 22
2.9 性能 22
2.10 復(fù)雜性 23
2.11 習(xí)題 24
第二部分 消息安全
第3章 分組密碼 26
3.1 什么是分組密碼 26
3.2 攻擊類型 27
3.3 理想分組密碼 27
3.4 分組密碼安全的定義 28
3.5 實(shí)際分組密碼 30
3.5.1 DES 30
3.5.2 AES 32
3.5.3 Serpent 34
3.5.4 Twofish 34
3.5.5 其他的AES候選算法 36
3.5.6 如何選擇分組密碼 36
3.5.7 如何選擇密鑰長度 36
3.6 習(xí)題 37
第4章 分組密碼工作模式 39
4.1 填充 39
4.2 ECB 40
4.3 CBC 40
4.3.1 固定IV 40
4.3.2 計(jì)數(shù)器IV 41
4.3.3 隨機(jī)IV 41
4.3.4 瞬時(shí)IV 41
4.4 OFB 42
4.5 CTR 43
4.6 加密與認(rèn)證 44
4.7 如何選擇工作模式 44
4.8 信息泄露 44
4.8.1 碰撞的可能性 45
4.8.2 如何處理信息泄露 46
4.8.3 關(guān)于數(shù)學(xué)證明 46
4.9 習(xí)題 47
第5章 散列函數(shù) 48
5.1 散列函數(shù)的安全性 48
5.2 實(shí)際的散列函數(shù) 49
5.2.1 一種簡單但不安全的散列函數(shù) 50
5.2.2 MD5 50
5.2.3 SHA-1 51
5.2.4 SHA-224、SHA-256、SHA-384和SHA-512 51
5.3 散列函數(shù)的缺陷 52
5.3.1 長度擴(kuò)充 52
5.3.2 部分消息碰撞 52
5.4 修復(fù)缺陷 53
5.4.1 一個(gè)臨時(shí)的修復(fù)方法 53
5.4.2 一個(gè)更有效的修復(fù)方法 53
5.4.3 其他修復(fù)方法 54
5.5 散列算法的選擇 55
5.6 習(xí)題 55
第6章 消息認(rèn)證碼 56
6.1 MAC的作用 56
6.2 理想MAC與MAC的安全性 56
6.3 CBC-MAC和CMAC 57
6.4 HMAC 58
6.5 GMAC 59
6.6 如何選擇MAC 60
6.7 MAC的使用 60
6.8 習(xí)題 61
第7章 安全信道 63
7.1 安全信道的性質(zhì) 63
7.1.1 角色 63
7.1.2 密鑰 63
7.1.3 消息或字節(jié)流 64
7.1.4 安全性質(zhì) 64
7.2 認(rèn)證與加密的順序 65
7.3 安全信道設(shè)計(jì)概述 66
7.3.1 消息編號(hào) 66
7.3.2 認(rèn)證 67
7.3.3 加密 67
7.3.4 組織格式 68
7.4 詳細(xì)設(shè)計(jì) 68
7.4.1 初始化 68
7.4.2 發(fā)送消息 69
7.4.3 接收消息 70
7.4.4 消息的順序 71
7.5 備選方案 71
7.6 習(xí)題 72
第8章 實(shí)現(xiàn)上的問題I 74
8.1 創(chuàng)建正確的程序 75
8.1.1 規(guī)范 75
8.1.2 測(cè)試和修復(fù) 75
8.1.3 不嚴(yán)謹(jǐn)?shù)膽B(tài)度 76
8.1.4 如何著手 76
8.2 制作安全的軟件 77
8.3 保守秘密 77
8.3.1 清除狀態(tài) 77
8.3.2 交換文件 79
8.3.3 高速緩沖存儲(chǔ)器 79
8.3.4 內(nèi)存保留數(shù)據(jù) 80
8.3.5 其他程序的訪問 82
8.3.6 數(shù)據(jù)完整性 82
8.3.7 需要做的工作 83
8.4 代碼質(zhì)量 83
8.4.1 簡潔性 83
8.4.2 模塊化 83
8.4.3 斷言 84
8.4.4 緩沖區(qū)溢出 84
8.4.5 測(cè)試 85
8.5 側(cè)信道攻擊 85
8.6 一些其他的話 86
8.7 習(xí)題 86
第三部分 密鑰協(xié)商
第9章 生成隨機(jī)性 88
9.1 真實(shí)隨機(jī) 88
9.1.1 使用真實(shí)隨機(jī)數(shù)的問題 89
9.1.2 偽隨機(jī)數(shù) 89
9.1.3 真實(shí)隨機(jī)數(shù)和偽隨機(jī)數(shù)生成器 90
9.2 偽隨機(jī)數(shù)生成器的攻擊模型 90
9.3 Fortuna 91
9.4 生成器 91
9.4.1 初始化 93
9.4.2 更新種子 93
9.4.3 生成塊 94
9.4.4 生成隨機(jī)數(shù) 94
9.4.5 生成器速度 95
9.5 累加器 95
9.5.1 熵源 95
9.5.2 熵池 96
9.5.3 ?實(shí)現(xiàn)注意事項(xiàng) 97
9.5.4?初始化 98
9.5.5 獲取隨機(jī)數(shù)據(jù) 99
9.5.6 添加事件 100
9.6 種子文件管理 101
9.6.1 寫種子文件 101
9.6.2 更新種子文件 101
9.6.3 讀寫種子文件的時(shí)間 102
9.6.4 備份和虛擬機(jī) 102
9.6.5 文件系統(tǒng)更新的原子性 103
9.6.6 初次啟動(dòng) 103
9.7 選擇隨機(jī)元素 103
9.8 習(xí)題 104
第10章 素?cái)?shù) 106
10.1 整除性與素?cái)?shù) 106
10.2 產(chǎn)生小素?cái)?shù) 107
10.3 素?cái)?shù)的模運(yùn)算 109
10.3.1 加法和減法 109
10.3.2 乘法 110
10.3