第1章 密码学和数据安全导论 1
1.1 密码学及本书内容概述 1
1.2 对称密码学 3
1.2.1 基础知识 4
1.2.2 简单对称加密:替换密码 5
1.3 密码分析 8
1.3.1 破译密码体制的一般思路 8
1.3.2 合适的密钥长度 10
1.4 模运算与多种古典密码 11
1.4.1 模运算 12
1.4.2 整数环 15
1.4.3 移位密码(凯撒密码) 16
1.4.4 仿射密码 18
1.5 讨论及扩展阅读 19
1.6 要点回顾 21
1.7 习题 21
第2章 序列密码 27
2.1 引言 27
2.1.1 序列密码与分组密码 27
2.1.2 序列密码的加密与解密 29
2.2 随机数与牢不可破的分组密码 32
2.2.1 随机数生成器 32
2.2.2 一次一密 34
2.2.3 关于实际序列密码 35
2.3 基于移位寄存器的序列密码 38
2.3.1 线性反馈移位寄存器(LFSR) 39
2.3.2 针对单个LFSR的已知明文攻击 43
2.3.3 Trivium 44
2.4 讨论及扩展阅读 46
2.5 要点回顾 47
2.6 习题 48
第3章 数据加密标准与替换算法 51
3.1 DES简介 51
3.2 DES算法概述 54
3.3 DES的内部结构 56
3.3.1 初始置换与逆初始置换 56
3.3.2 f函数 58
3.3.3 密钥编排 63
3.4 解密 65
3.5 DES的安全性 68
3.5.1 穷尽密钥搜索 68
3.5.2 分析攻击 70
3.6 软件实现与硬件实现 71
3.6.1 软件 71
3.6.2 硬件 72
3.7 DES替换算法 72
3.7.1 AES和AES入围密码 72
3.7.2 3DES与DESX 73
3.7.3 轻量级密码PRESENT 73
3.8 讨论及扩展阅读 76
3.9 要点回顾 77
3.10 习题 78
第4章 高级加密标准 83
4.1 引言 83
4.2 AES算法概述 85
4.3 一些数学知识:伽罗瓦域简介 87
4.3.1 有限域的存在性 87
4.3.2 素域 89
4.3.3 扩展域GF(2m) 90
4.3.4 GF(2m)内的加法与减法 91
4.3.5 GF(2m)内的乘法 91
4.3.6 GF(2m)内的逆操作 93
4.4 AES的内部结构 95
4.4.1 字节代换层 96
4.4.2 扩散层 99
4.4.3 密钥加法层 101
4.4.4 密钥编排 101
4.5 解密 106
4.6 软件实现与硬件实现 110
4.6.1 软件 110
4.6.2 硬件 111
4.7 讨论及扩展阅读 111
4.8 要点回顾 112
4.9 习题 112
第5章 分组密码的更多内容 117
5.1 分组密码加密:操作模式 117
5.1.1 电子密码本模式(ECB) 118
5.1.2 密码分组链接模式(CBC) 122
5.1.3 输出反馈模式(OFB) 123
5.1.4 密码反馈模式(CFB) 125
5.1.5 计数器模式(CTR) 126
5.1.6 伽罗瓦计数器模式(GCM) 127
5.2 回顾穷尽密钥搜索 129
5.3 增强分组密码的安全性 130
5.3.1 双重加密与中间人攻击 131
5.3.2 三重加密 133
5.3.3 密钥漂白 134
5.4 讨论及扩展阅读 136
5.5 要点回顾 137
5.6 习题 137
第6章 公钥密码学简介 141
6.1 对称密码学与非对称密码学 141
6.2 公钥密码学的实用性 145
6.2.1 安全机制 145
6.2.2 遗留问题:公钥的可靠性 146
6.2.3 重要的公钥算法 146
6.2.4 密钥长度与安全等级 147
6.3 公钥算法的基本数论知识 148
6.3.1 欧几里得算法 148
6.3.2 扩展的欧几里得算法 151
6.3.3 欧拉函数 155
6.3.4 费马小定理与欧拉定理 157
6.4 讨论及扩展阅读 159
6.5 要点回顾 160
6.6 习题 160
第7章 RSA密码体制 163
7.1 引言 164
7.2 加密与解密 164
7.3 密钥生成与正确性验证 165
7.4 加密与解密:快速指数运算 169
7.5 RSA的加速技术 173
7.5.1 使用短公开指数的快速加密 173
7.5.2 使用中国余数定理的快速加密 174
7.6 寻找大素数 177
7.6.1 素数的普遍性 177
7.6.2 素性测试 178
7.7 实际中的RSA:填充 182
7.8 攻击 183
7.9 软件实现与硬件实现 186
7.10 讨论及扩展阅读 187
7.11 要点回顾 188
7.12 习题 189
第8章 基于离散对数问题的公钥密码体制 193
8.1 Diffie-Hellman密钥交换 194
8.2 一些代数知识 196
8.2.1 群 196
8.2.2 循环群 198
8.2.3 子群 202
8.3 离散对数问题 204
8.3.1 素数域内的离散对数问题 204
8.3.2 推广的离散对数问题 205
8.3.3 针对离散对数问题的攻击 207
8.4 Diffie-Hellman密钥交换的安全性 211
8.5 Elgamal加密方案 212
8.5.1 从Diffie-Hellman密钥交换到Elgamal加密 212
8.5.2 Elgamal协议 213
8.5.3 计算方面 215
8.5.4 安全性 216
8.6 讨论及扩展阅读 218
8.7 要点回顾 219
8.8 习题 219
第9章 椭圆曲线密码体制 225
9.1 椭圆曲线的计算方式 226
9.1.1 椭圆曲线的定义 227
9.1.2 椭圆曲线上的群操作 228
9.2 使用椭圆曲线构建离散对数问题 232
9.3 基于椭圆曲线的Diffie-Hellman密钥交换 236
9.4 安全性 238
9.5 软件实现与硬件实现 238
9.6 讨论及扩展阅读 239
9.7 要点回顾 241
9.8 习题 241
第10章 数字签名 245
10.1 引言 245
10.1.1 对称密码学尚不能完全满足需要的原因 246
10.1.2 数字签名的基本原理 247
10.1.3 安全服务 248
10.2 RSA签名方案 249
10.2.1 教科书的RSA数字签名 250
10.2.2 计算方面 251
10.2.3 安全性 252
10.3 Elgamal数字签名方案 255
10.3.1 教科书的Elgamal数字签名 255
10.3.2 计算方面 257
10.3.3 安全性 258
10.4 数字签名算法 261
10.4.1 DSA算法 261
10.4.2 计算方面 264
10.4.3 安全性 265
10.5 椭圆曲线数字签名算法 266
10.5.1 ECDSA算法 267
10.5.2 计算方面 270
10.5.3 安全性 270
10.6 讨论及扩展阅读 271
10.7 要点回顾 272
10.8 习题 272
第11章 哈希函数 277
11.1 动机:对长消息签名 277
11.2 哈希函数的安全性要求 280
11.2.1 抗第一原像性或单向性 280
11.2.2 抗第二原像性或弱抗冲突性 281
11.2.3 抗冲突性与生日攻击 282
11.3 哈希函数概述 286
11.3.1 专用的哈希函数:MD4家族 287
11.3.2 从分组密码构建的哈希函数 288
11.4 安全哈希算法SHA-1 290
11.4.1 预处理 291
11.4.2 哈希计算 292
11.4.3 实现 294
11.5 讨论及扩展阅读 295
11.6 要点回顾 296
11.7 习题 297
第12章 消息验证码 301
12.1 消息验证码的基本原理 301
12.2 来自哈希函数的MAC:HMAC 303
12.3 来自分组密码的MAC:CBC-MAC 307
12.4 伽罗瓦计数器消息验证码 308
12.5 讨论及扩展阅读 309
12.6 要点回顾 309
12.7 习题 310
第13章 密钥建立 313
13.1 引言 314
13.1.1 一些术语 314
13.1.2 密钥刷新和密钥衍生 314
13.1.3 n2密钥分配问题 316
13.2 使用对称密钥技术的密钥建立 317
13.2.1 使用密钥分配中心的密钥建立 318
13.2.2 Kerberos 321
13.2.3 使用对称密钥分配的其他问题 323
13.3 使用非对称密钥技术的密钥建立 323
13.3.1 中间人攻击 324
13.3.2 证书 326
13.3.3 PKI和CA 329
13.4 讨论及扩展阅读 332
13.5 要点回顾 333
13.6 习题 333
参考文献 339