《密码工程 原理与应用》PDF下载

  • 购买积分:10 如何计算积分?
  • 作  者:(美)尼尔斯·弗格森(Niels Ferguson),布鲁斯·施奈尔著;赵一鸣译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2017
  • ISBN:9787111574354
  • 页数:239 页
图书介绍:本书深入地探讨特定的、具体的协议,讲述如何设计密码协议,分析做出设计决策的原因,并指出其中可能存在的陷阱,从而帮助读者像密码学家一样思考。本书分为五部分,第一部分对密码学进行概述,第二到四部分分别讲述消息安全、密钥协商、密钥管理方面的内容,第五部分介绍标准和专利等其他问题。本书可作为高等院校计算机安全和密码学相关专业的教材或教学参考书,也可作为应用密码工程的自学指南。

第一部分 概述 2

第1章 密码学研究范围 2

1.1 密码学的作用 2

1.2 木桶原理 3

1.3 对手设定 4

1.4 专业偏执狂 5

1.4.1 更广泛的好处 5

1.4.2 攻击 5

1.5 威胁模型 6

1.6 密码学不是唯一解决方案 7

1.7 密码学是非常难的 8

1.8 密码学是简单的部分 8

1.9 通用攻击 9

1.10 安全性和其他设计准则 9

1.10.1 安全性和性能 9

1.10.2 安全性和特性 10

1.10.3 安全性和演变的系统 11

1.11 更多阅读材料 11

1.12 专业偏执狂练习 12

1.12.1 时事练习 12

1.12.2 安全审查练习 12

1.13 习题 13

第2章 密码学简介 14

2.1 加密 14

2.2 认证 15

2.3 公钥加密 16

2.4 数字签名 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 区分攻击的目的 20

2.6.6 其他类型的攻击 20

2.7 深人探讨 20

2.7.1 生日攻击 20

2.7.2 中间相遇攻击 21

2.8 安全等级 22

2.9 性能 22

2.10 复杂性 23

2.11 习题 24

第二部分 消息安全 26

第3章 分组密码 26

3.1 什么是分组密码 26

3.2 攻击类型 27

3.3 理想分组密码 27

3.4 分组密码安全的定义 28

3.5 实际分组密码 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 习题 37

第4章 分组密码工作模式 39

4.1 填充 39

4.2 ECB 40

4.3 CBC 40

4.3.1 固定IV 40

4.3.2 计数器IV 41

4.3.3 随机IV 41

4.3.4 瞬时IV 41

4.4 OFB 42

4.5 CTR 43

4.6 加密与认证 44

4.7 如何选择工作模式 44

4.8 信息泄露 44

4.8.1 碰撞的可能性 45

4.8.2 如何处理信息泄露 46

4.8.3 关于数学证明 46

4.9 习题 47

第5章 散列函数 48

5.1 散列函数的安全性 48

5.2 实际的散列函数 49

5.2.1 一种简单但不安全的散列函数 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 散列函数的缺陷 52

5.3.1 长度扩充 52

5.3.2 部分消息碰撞 52

5.4 修复缺陷 53

5.4.1 一个临时的修复方法 53

5.4.2 一个更有效的修复方法 53

5.4.3 其他修复方法 54

5.5 散列算法的选择 55

5.6 习题 55

第6章 消息认证码 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 习题 61

第7章 安全信道 63

7.1 安全信道的性质 63

7.1.1 角色 63

7.1.2 密钥 63

7.1.3 消息或字节流 64

7.1.4 安全性质 64

7.2 认证与加密的顺序 65

7.3 安全信道设计概述 66

7.3.1 消息编号 66

7.3.2 认证 67

7.3.3 加密 67

7.3.4 组织格式 68

7.4 详细设计 68

7.4.1 初始化 68

7.4.2 发送消息 69

7.4.3 接收消息 70

7.4.4 消息的顺序 71

7.5 备选方案 71

7.6 习题 72

第8章 实现上的问题Ⅰ 74

8.1 创建正确的程序 75

8.1.1 规范 75

8.1.2 测试和修复 75

8.1.3 不严谨的态度 76

8.1.4 如何着手 76

8.2 制作安全的软件 77

8.3 保守秘密 77

8.3.1 清除状态 77

8.3.2 交换文件 79

8.3.3 高速缓冲存储器 79

8.3.4 内存保留数据 80

8.3.5 其他程序的访问 82

8.3.6 数据完整性 82

8.3.7 需要做的工作 83

8.4 代码质量 83

8.4.1 简洁性 83

8.4.2 模块化 83

8.4.3 断言 84

8.4.4 缓冲区溢出 84

8.4.5 测试 85

8.5 侧信道攻击 85

8.6 一些其他的话 86

8.7 习题 86

第三部分 密钥协商 88

第9章 生成随机性 88

9.1 真实随机 88

9.1.1 使用真实随机数的问题 89

9.1.2 伪随机数 89

9.1.3 真实随机数和伪随机数生成器 90

9.2 伪随机数生成器的攻击模型 90

9.3 Fortuna 91

9.4 生成器 91

9.4.1 初始化 93

9.4.2 更新种子 93

9.4.3 生成块 94

9.4.4 生成随机数 94

9.4.5 生成器速度 95

9.5 累加器 95

9.5.1 熵源 95

9.5.2 熵池 96

9.5.3 实现注意事项 97

9.5.4 初始化 98

9.5.5 获取随机数据 99

9.5.6 添加事件 100

9.6 种子文件管理 101

9.6.1 写种子文件 101

9.6.2 更新种子文件 101

9.6.3 读写种子文件的时间 102

9.6.4 备份和虚拟机 102

9.6.5 文件系统更新的原子性 103

9.6.6 初次启动 103

9.7 选择随机元素 103

9.8 习题 104

第10章 素数 106

10.1 整除性与素数 106

10.2 产生小素数 107

10.3 素数的模运算 109

10.3.1 加法和减法 109

10.3.2 乘法 110

10.3.3 群和有限域 110

10.3.4 GCD算法 111

10.3.5 扩展欧几里得算法 111

10.3.6 模2运算 112

10.4 大素数 113

10.4.1 素性测试 115

10.4.2 计算模指数 117

10.5 习题 118

第11章 Diffie-Hellman协议 119

11.1 群 119

11.2 基本的DH 120

11.3 中间人攻击 121

11.4 一些可能的问题 122

11.5 安全的素数 122

11.6 使用较小的子群 123

11.7 p的长度 124

11.8 实践准则 125

11.9 可能出错的地方 126

11.10 习题 127

第12章 RSA 128

12.1 引言 128

12.2 中国剩余定理 128

12.2.1 Garner公式 129

12.2.2 推广 129

12.2.3 应用 130

12.2.4 结论 130

12.3 模n乘法 130

12.4 RSA 131

12.4.1 RSA数字签名 131

12.4.2 公开指数 132

12.4.3 私钥 132

12.4.4 n的长度 133

12.4.5 生成RSA密钥 133

12.5 使用RSA的缺陷 135

12.6 加密 136

12.7 签名 138

12.8 习题 139

第13章 密码协议导论 141

13.1 角色 141

13.2 信任 141

13.3 动机 143

13.4 密码协议中的信任 144

13.5 消息和步骤 144

13.5.1 传输层 145

13.5.2 协议标识符和消息标识符 145

13.5.3 消息编码和解析 146

13.5.4 协议执行状态 146

13.5.5 错误 147

13.5.6 重放和重试 147

13.6 习题 149

第14章 密钥协商 150

14.1 初始设置 150

14.2 初次尝试 150

14.3 协议会一直存在下去 151

14.4 一个认证的惯例 152

14.5 第二次尝试 152

14.6 第三次尝试 153

14.7 最终的协议 154

14.8 关于协议的一些不同观点 155

14.8.1 Alice的观点 155

14.8.2 Bob的观点 155

14.8.3 攻击者的观点 156

14.8.4 密钥泄露 157

14.9 协议的计算复杂性 157

14.10 协议复杂性 158

14.11 一个小警告 159

14.12 基于口令的密钥协商 159

14.13 习题 159

第15章 实现上的问题Ⅱ 160

15.1 大整数的运算 160

15.1.1 woop技术 161

15.1.2 检查DH计算 163

15.1.3 检查RSA加密 163

15.1.4 检查RSA签名 164

15.1.5 结论 164

15.2 更快的乘法 164

15.3 侧信道攻击 165

15.4 协议 166

15.4.1 安全信道上的协议 166

15.4.2 接收一条消息 167

15.4.3 超时设定 168

15.5 习题 168

第四部分 密钥管理 170

第16章 时钟 170

16.1 时钟的使用 170

16.1.1 有效期 170

16.1.2 唯一值 170

16.1.3 单调性 170

16.1.4 实时交易 171

16.2 使用实时时钟芯片 171

16.3 安全性威胁 171

16.3.1 时钟后置 171

16.3.2 时钟停止 172

16.3.3 时钟前置 172

16.4 建立可靠的时钟 173

16.5 相同状态问题 173

16.6 时间 174

16.7 结论 175

16.8 习题 175

第17章 密钥服务器 176

17.1 基本概念 176

17.2 Kerberos协议 176

17.3 更简单的方案 177

17.3.1 安全连接 177

17.3.2 建立密钥 178

17.3.3 重新生成密钥 178

17.3.4 其他性质 178

17.4 如何选择 178

17.5 习题 179

第18章 PKI之梦 180

18.1 PKI的简短回顾 180

18.2 PKI的例子 180

18.2.1 全局PKI 180

18.2.2 VPN访问 181

18.2.3 电子银行 181

18.2.4 炼油厂传感器 181

18.2.5 信用卡组织 181

18.3 其他细节 181

18.3.1 多级证书 181

18.3.2 有效期 182

18.3.3 独立的注册机构 182

18.4 结论 183

18.5 习题 183

第19章 PKI的现实 184

19.1 名字 184

19.2 授权机构 185

19.3 信任 186

19.4 间接授权 186

19.5 直接授权 187

19.6 凭证系统 187

19.7 修正的梦想 188

19.8 撤销 189

19.8.1 撤销列表 189

19.8.2 短有效期 190

19.8.3 在线证书验证 190

19.8.4 撤销是必需的 190

19.9 PKI有什么好处 191

19.10 如何选择 192

19.11 习题 192

第20章 PKI的实用性 193

20.1 证书格式 193

20.1.1 许可语言 193

20.1.2 根密钥 193

20.2 密钥的生命周期 194

20.3 密钥作废的原因 195

20.4 深入探讨 196

20.5 习题 196

第21章 存储秘密 197

21.1 磁盘 197

21.2 人脑记忆 197

21.3 便携式存储 200

21.4 安全令牌 200

21.5 安全UI 201

21.6 生物识别技术 201

21.7 单点登录 202

21.8 丢失的风险 202

21.9 秘密共享 203

21.10 清除秘密 203

21.10.1 纸 203

21.10.2 磁存储介质 204

21.10.3 固态存储 204

21.11 习题 205

第五部分 其他问题 208

第22章 标准和专利 208

22.1 标准 208

22.1.1 标准过程 208

22.1.2 SSL 210

22.1.3 AES:竞争带来的标准化 210

22.2 专利 211

第23章 关于专家 212

参考文献 215

索引 225