第1章 古典密码学 1
1.1 几个简单的密码体制 1
1.1.1 移位密码 2
1.1.2 代换密码 5
1.1.3 仿射密码 6
1.1.4 维吉尼亚密码 9
1.1.5 希尔密码 10
1.1.6 置换密码 14
1.1.7 流密码 16
1.2 密码分析 19
1.2.1 仿射密码的密码分析 21
1.2.2 代换密码的密码分析 22
1.2.3 维吉尼亚密码的密码分析 24
1.2.4 希尔密码的密码分析 27
1.2.5 LFSR流密码的密码分析 28
1.3 注释与参考文献 29
习题 30
第2章 Shannon理论 36
2.1 引言 36
2.2 概率论基础 37
2.3 完善保密性 38
2.4 熵 42
2.4.1 Huffman编码 43
2.5 熵的性质 46
2.6 伪密钥和唯一解距离 48
2.7 乘积密码体制 52
习题 54
第3章 分组密码与高级加密标准 57
3.1 引言 57
3.2 代换-置换网络 58
3.3 线性密码分析 61
3.3.1 堆积引理 61
3.3.2 S盒的线性逼近 63
3.3.3 SPN的线性密码分析 66
3.4 差分密码分析 69
3.5 数据加密标准 74
3.5.1 DES的描述 74
3.5.2 DES的分析 78
3.6 高级加密标准 79
3.6.1 AES的描述 80
3.6.2 AES的分析 84
3.7 工作模式 84
3.8 注释与参考文献 87
习题 88
第4章 Hash函数 92
4.1 Hash函数与数据完整性 92
4.2 Hash函数的安全性 93
4.2.1 随机谕示模型 94
4.2.2 随机谕示模型中的算法 95
4.2.3 安全性准则的比较 98
4.3 迭代Hash函数 100
4.3.1 Merkle-Damgard结构 101
4.3.2 安全Hash算法 106
4.4 消息认证码 108
4.4.1 嵌套MAC和HMAC 109
4.4.2 CBC-MAC 111
4.5 无条件安全消息认证码 113
4.5.1 强泛Hash函数族 115
4.5.2 欺骗概率的优化 117
4.6 注释与参考文献 119
习题 120
第5章 RSA密码体制和整数因子分解 126
5.1 公钥密码学简介 126
5.2 更多的数论知识 127
5.2.1 Euclidean算法 127
5.2.2 中国剩余定理 131
5.2.3 其他有用的事实 133
5.3 RSA密码体制 135
5.3.1 实现RSA 136
5.4 素性检测 139
5.4.1 Legendre和Jacobi符号 140
5.4.2 Solovay-Strassen算法 142
5.4.3 Miller-Rabin算法 146
5.5 模n的平方根 147
5.6 分解因子算法 148
5.6.1 Pollardp-1算法 148
5.6.2 Pollardp算法 150
5.6.3 Dixon的随机平方算法 152
5.6.4 实际中的分解因子算法 156
5.7 对RSA的其他攻击 157
5.7.1 计算φ(n) 157
5.7.2 解密指数 158
5.7.3 Wiener的低解密指数攻击 162
5.8 Rabin密码体制 165
5.8.1 Rabin密码体制的安全性 167
5.9 RSA的语义安全性 168
5.9.1 与明文比特相关的部分信息 169
5.9.2 最优非对称加密填充 171
5.10 注释与参考文献 176
习题 177
第6章 公钥密码学和离散对数 184
6.1 E1Gamal密码体制 184
6.2 离散对数问题的算法 186
6.2.1 Shanks算法 186
6.2.2 Pollardp离散对数算法 188
6.2.3 Pohlig-Hellman算法 190
6.2.4 指数演算法 193
6.3 通用算法的复杂度下界 194
6.4 有限域 197
6.5 椭圆曲线 201
6.5.1 实数上的椭圆曲线 201
6.5.2 模素数的椭圆曲线 203
6.5.3 椭圆曲线的性质 206
6.5.4 点压缩与ECIES 206
6.5.5 计算椭圆曲线上的乘积 208
6.6 实际中的离散对数算法 210
6.7 E1Gamal体制的安全性 211
6.7.1 离散对数的比特安全性 211
6.7.2 E1Gamal体制的语义安全性 214
6.7.3 Diffie-Hellman问题 215
6.8 注释与参考文献 216
习题 217
第7章 签名方案 222
7.1 引言 222
7.2 签名方案的安全性需求 224
7.2.1 签名和Hash函数 225
7.3 E1Gamal签名方案 226
7.3.1 E1Gamal签名方案的安全性 228
7.4 E1Gamal签名方案的变形 230
7.4.1 Schnorr签名方案 230
7.4.2 数字签名算法(DSA) 232
7.4.3 椭圆曲线DSA 234
7.5 可证明安全的签名方案 235
7.5.1 一次签名 235
7.5.2 全域Hash 238
7.6 不可否认的签名 241
7.7 fail-stop签名 245
7.8 注释与参考文献 248
习题 249
第8章 伪随机数的生成 252
8.1 引言与示例 252
8.2 概率分布的不可区分性 255
8.2.1 下一比特预测器 257
8.3 Blum-Blum-Shub生成器 262
8.3.1 BBS生成器的安全性 264
8.4 概率加密 268
8.5 注释与参考文献 272
习题 272
第9章 身份识别方案与实体认证 275
9.1 引言 275
9.2 对称密钥环境下的挑战-响应方案 277
9.2.1 攻击模型和敌手目标 281
9.2.2 交互认证 282
9.3 公钥环境下的挑战-响应方案 284
9.3.1 证书 285
9.3.2 公钥身份识别方案 285
9.4 Schnorr身份识别方案 287
9.4.1 Schnorr身份识别方案的安全性 290
9.5 Okamoto身份识别方案 293
9.6 Guillou-Quisquater身份识别方案 296
9.6.1 基于身份的身份识别方案 298
9.7 注释与参考文献 299
习题 299
第10章 密钥分配 303
10.1 引言 303
10.2 Diffie-Hellman密钥预分配 306
10.3 无条件安全的密钥预分配 307
10.3.1 Blom密钥预分配方案 307
10.4 密钥分配模式 313
10.4.1 Fiat-Naor密钥分配模式 315
10.4.2 Mitchell-Piper密钥分配模式 316
10.5 会话密钥分配方案 319
10.5.1 Needham-Schroeder方案 320
10.5.2 针对NS方案的Denning-Sacco攻击 321
10.5.3 Kerberos 321
10.5.4 Bellare-Rogaway方案 324
10.6 注释与参考文献 326
习题 327
第11章 密钥协商方案 330
11.1 引言 330
11.2 Diffie-Hellman密钥协商 330
11.2.1 端-端密钥协商方案 332
11.2.2 STS的安全性 332
11.2.3 已知会话密钥攻击 335
11.3 MTI密钥协商方案 336
11.3.1 关于MTI/A0的已知会话密钥攻击 339
11.4 使用自认证密钥的密钥协商 341
11.5 加密密钥交换 344
11.6 会议密钥协商方案 346
11.7 注释与参考文献 348
习题 349
第12章 公开密钥基础设施 351
12.1 引言:PKI简介 351
12.1.1 一个实际协议:安全套接层SSL 353
12.2 证书 354
12.2.1 证书生命周期管理 355
12.3 信任模型 356
12.3.1 严格层次模型 356
12.3.2 网络化PKI模型 357
12.3.3 Web浏览器模型 359
12.3.4 Pretty Good Privacy(PGP) 359
12.4 PKI的未来 361
12.4.1 PKI的替代方案 361
12.5 基于身份的密码体制 362
12.5.1 基于身份的Cock加密方案 363
12.6 注释与参考文献 367
习题 368
第13章 秘密共享方案 370
13.1 引言:Shamir门限方案 370
13.1.1 简化的(t,t)门限方案 373
13.2 访问结构和一般的秘密共享 374
13.2.1 单调电路构造 375
13.2.2 正式定义 379
13.3 信息率和高效方案的构造 382
13.3.1 向量空间构造 383
13.3.2 信息率上界 389
13.3.3 分解构造 392
13.4 注释与参考文献 395
习题 396
第14章 组播安全和版权保护 398
14.1 组播安全简介 398
14.2 广播加密 398
14.2.1 利用Ramp方案的一种改进 406
14.3 组播密钥重建 409
14.3.1 “黑名单”方案 410
14.3.2 Naor-Pinkas密钥重建方案 412
14.3.3 逻辑密钥层次体系方案 414
14.4 版权保护 416
14.4.1 指纹技术 416
14.4.2 可识别父码的性质 418
14.4.3 2-IPP码 419
14.5 追踪非法分发的密钥 422
14.6 注释与参考文献 426
习题 426
进一步阅读 430
参考文献 433