第1 章 引言 1
1.1 人物角色 1
1.2 Alice 的网上银行 2
1.2.1 机密性、完整性和可用性 2
1.2.2 CIA 并不是全部 3
1.3 关于本书 4
1.3.1 加密技术 5
1.3.2 访问控制 5
1.3.3 网络安全 6
1.3.4 软件 6
1.4 人的问题 7
1.5 原理和实践 7
1.6 习题 8
第Ⅰ部分 加密
第2 章 经典加密 14
2.1 引言 14
2.2 何谓“加密” 15
2.3 经典密码 17
2.3.1 简单代换密码 17
2.3.2 简单代换密码分析 19
2.3.3 “安全”的定义 20
2.3.4 双换位密码 21
2.3.5 一次性密码 22
2.3.6 密码本密码 25
2.4 历史上的经典加密 27
2.4.1 “1876 年大选”的密码 27
2.4.2 齐默尔曼电报 29
2.4.3 VENONA 计划 30
2.5 现代密码史 31
2.6 加密技术分类 34
2.7 密码分析技术分类 35
2.8 小结 36
2.9 习题 37
第3 章 对称密码 42
3.1 引言 42
3.2 流密码 43
3.2.1 A5/1 44
3.2.2 RC4 46
3.3 分组密码 48
3.3.1 Feistel 密码 48
3.3.2 DES 49
3.3.3 3DES 54
3.3.4 AES 56
3.3.5 TEA 58
3.3.6 分组密码模式 60
3.4 完整性 64
3.5 量子计算机和对称加密 65
3.6 小结 67
3.7 习题 68
第4 章 公钥加密 73
4.1 引言 73
4.2 背包加密方案 75
4.3 RSA 79
4.3.1 教科书RSA 示例 80
4.3.2 反复平方 81
4.3.3 加速RSA 83
4.4 Diffie-Hellman 84
4.5 椭圆曲线加密 85
4.5.1 椭圆曲线数学 86
4.5.2 ECC Diffie – Hellman 88
4.5.3 实际的椭圆曲线示例 89
4.6 公钥符号 89
4.7 公钥加密的作用 90
4.7.1 现实世界中的机密性 90
4.7.2 签名和不可否认性 91
4.7.3 机密性和不可否认性 92
4.8 证书和PKI 94
4.9 量子计算机和公钥 96
4.10 小结 97
4.11 习题 98
第5 章 加密散列函数 106
5.1 引言 107
5.2 什么是加密散列函数 107
5.3 生日问题 109
5.4 生日攻击 110
5.5 非加密散列 111
5.6 SHA-3 112
5.7 HMAC 115
5.8 加密散列应用程序 117
5.8.1 在线竞价 117
5.8.2 区块链 118
5.9 各种加密相关主题 125
5.9.1 秘密共享 125
5.9.2 随机数 129
5.9.3 信息隐藏 131
5.10 小结 134
5.11 习题 135
第Ⅱ部分 访问控制
第6 章 认证 146
6.1 引言 146
6.2 认证方法 147
6.3 密码 148
6.3.1 密钥与密码 149
6.3.2 选择密码 149
6.3.3 通过密码攻击系统 151
6.3.4 密码验证 152
6.3.5 密码破解的数学原理 153
6.3.6 其他密码问题 157
6.4 生物识别 158
6.4.1 错误类型 160
6.4.2 生物识别技术示例 160
6.4.3 生物识别错误率 165
6.4.4 生物识别结论 166
6.5 你拥有的东西 166
6.6 双因子认证 167
6.7 单点登录和Web cookie 167
6.8 小结 168
6.9 习题 169
第7 章 授权 177
7.1 引言 177
7.2 授权简史 178
7.2.1 橙皮书 179
7.2.2 通用标准 181
7.3 访问控制矩阵 182
7.3.1 ACL 和能力 183
7.3.2 混淆代理 184
7.4 多级安全模型 185
7.4.1 Bell-LaPadula 187
7.4.2 Biba 模型 188
7.4.3 隔离项 189
7.5 隐秘信道 191
7.6 推理控制 193
7.7 CAPTCHA 194
7.8 小结 196
7.9 习题 197
第Ⅲ部分 网络安全主题
第8 章 网络安全基础 202
8.1 引言 202
8.2 网络基础 203
8.2.1 协议栈 204
8.2.2 应用层 205
8.2.3 传输层 207
8.2.4 网络层 210
8.2.5 链路层 211
8.3 跨站脚本攻击 213
8.4 防火墙 215
8.4.1 包过滤防火墙 216
8.4.2 基于状态检测的包过滤防火墙 218
8.4.3 应用代理 218
8.4.4 纵深防御 219
8.5 入侵检测系统 220
8.5.1 基于特征的入侵检测系统 222
8.5.2 基于异常的入侵检测系统 223
8.6 小结 227
8.7 习题 227
第9 章 简单认证协议 233
9.1 引言 233
9.2 简单安全协议 235
9.3 认证协议 237
9.3.1 利用对称密钥进行认证 240
9.3.2 利用公钥进行认证 243
9.3.3 会话密钥 244
9.3.4 完全正向保密 246
9.3.5 双向认证、会话密钥以及PFS 248
9.3.6 时间戳 248
9.4 “认证”与TCP 协议 250
9.5 零知识证明 253
9.6 协议分析技巧 257
9.7 小结 258
9.8 习题 259
第10 章 现实世界的安全协议 267
10.1 引言 267
10.2 SSH 268
10.3 SSL 270
10.3.1 SSL 和中间人 272
10.3.2 SSL 连接 273
10.3.3 SSL 与IPsec 274
10.4 IPsec 275
10.4.1 IKE 阶段1 276
10.4.2 IKE 阶段2 283
10.4.3 IPsec 和IP 数据报 284
10.4.4 传输和隧道模式 285
10.4.5 ESP 和AH 286
10.5 Kerberos 288
10.5.1 Kerberized 登录 289
10.5.2 Kerberos 票据 290
10.5.3 Kerberos 的安全 291
10.6 WEP 292
10.6.1 WEP 认证 293
10.6.2 WEP 加密 293
10.6.3 WEP 协议的不完整性 294
10.6.4 WEP 的其他问题 295
10.6.5 WEP:底线 295
10.7 GSM 295
10.7.1 GSM 架构 296
10.7.2 GSM 安全架构 298
10.7.3 GSM 认证协议 300
10.7.4 GSM 安全缺陷 300
10.7.5 GSM 结论 303
10.7.6 3GPP 303
10.8 小结 304
10.9 习题 304
第Ⅳ部分 软件
第11 章 软件缺陷与恶意软件 314
11.1 引言 314
11.2 软件缺陷 315
11.2.1 缓冲区溢出 318
11.2.2 不完全验证 328
11.2.3 竞争条件 329
11.3 恶意软件 330
11.3.1 恶意软件示例 331
11.3.2 恶意软件检测 337
11.3.3 恶意软件的未来 339
11.3.4 恶意软件检测的未来 340
11.4 基于软件的各式攻击 340
11.4.1 腊肠攻击 341
11.4.2 线性攻击 341
11.4.3 定时炸弹 343
11.4.4 信任软件 344
11.5 小结 344
11.6 习题 345
第12 章 软件中的不安全因素 353
12.1 引言 353
12.2 软件逆向工程 354
12.2.1 Java 字节码逆向工程 356
12.2.2 SRE 示例 358
12.2.3 防反汇编技术 362
12.2.4 反调试技术 363
12.2.5 软件防篡改 364
12.3 软件开发 366
12.3.1 缺陷和测试 367
12.3.2 安全软件的开发 369
12.4 小结 369
12.5 习题 370
附录 376