第1篇 分组密码算法 1
第1章 绪论 1
1.1 分组密码的研究背景 1
1.2 分组密码的研究现状 2
1.3 分组密码的数学模型 6
1.4 全书结构 7
第2章 分组密码算法介绍 8
2.1 数据加密标准DES 8
2.1.1 DES的加密算法 8
2.1.2 DES的解密算法 12
2.1.3 DES的密钥扩展算法 12
2.1.4 DES的安全性分析 13
2.2 高级加密标准AES 14
2.2.1 AES的数学基础 14
2.2.2 AES的输入输出和中间状态 16
2.2.3 AES的加密算法 17
2.2.4 AES的解密算法 20
2.2.5 AES的密钥扩展算法 22
2.2.6 AES的安全性分析 22
2.3 ISOIEC分组密码标准 24
2.3.1 TDEA 24
2.3.2 MISTY1 25
2.3.3 CAST-128 32
2.3.4 Camellia 34
2.3.5 SEED 46
2.4 NESSIE建议分组密码 48
2.4.1 SHACAL2 49
2.5 日本CRYPTREC计划 50
2.5.1 CIPHERUNICORN-E和CIPHERUNICORN-A 51
2.5.2 Hierocrypt-L1和Hierocrypt-3 52
2.5.3 SC2000 54
2.6 韩国标准ARIA 58
2.6.1 ARIA的加密算法 58
2.6.2 ARIA的解密算法 60
2.6.3 ARIA的密钥扩展算法 60
2.6.4 ARIA的安全性分析 61
2.7 行业或企业标准 61
2.7.1 IDEA 61
2.7.2 SMS4 63
2.7.3 RC6 66
2.7.4 CLEFIA 68
2.7.5 KASUMI 72
2.7.6 Skipjack 77
2.7.7 FOX 80
2.8 其他分组密码 83
2.8.1 Serpent 83
2.8.2 Twofish 85
2.8.3 MARS 87
2.8.4 SAFER++ 90
2.8.5 注记 92
第2篇 分组密码分析方法 95
第3章 朴素密码分析方法 95
3.1 引言 95
3.1.1 无条件安全性和计算安全性 95
3.1.2 攻击的分类 96
3.1.3 攻击的复杂度 96
3.2 穷尽密钥搜索攻击 97
3.3 字典攻击 97
3.4 查表攻击 97
3.5 时间存储折中攻击 97
第4章 差分密码分析方法 99
4.1 差分密码分析的基本原理 99
4.2 DES的差分密码分析 102
4.2.1 理论依据 102
4.2.2 3轮DES的差分密码分析 104
4.2.3 6轮DES的差分密码分析 107
4.2.4 16轮DES的差分密码分析 117
4.3 高阶差分密码分析 117
4.3.1 准备知识 117
4.3.2 Feistel型密码的高阶差分密码分析 118
4.4 截段差分密码分析 118
4.4.1 基本原理 118
4.4.2 6轮DES的截断差分密码分析 119
4.5 不可能差分密码分析 120
4.5.1 基本原理 120
4.5.2 低轮DEAL-128的不可能差分密码分析 121
4.5.3 低轮Camellia的不可能差分密码分析 122
4.5.4 低轮AES的不可能差分密码分析 125
4.6 飞来去器攻击和矩阵攻击 130
4.6.1 基本原理 130
4.6.2 12轮DES的矩阵攻击 132
第5章 线性密码分析方法 135
5.1 线性密码分析的基本原理 135
5.2 DES的线性密码分析 137
5.2.1 理论依据 137
5.2.2 3轮DES的线性密码分析 139
5.2.3 5轮DES的线性密码分析 139
5.2.4 16轮DES的线性密码分析 140
5.3 多重线性密码分析 140
5.4 非线性密码分析 141
5.4.1 基本原理 141
5.4.2 5轮DES的非线性密码分析 142
5.5 划分密码分析 143
5.5.1 基本原理 143
5.5.2 迭代分组密码的划分密码分析 144
5.6 差分-线性密码分析 146
5.6.1 基本原理 146
5.6.2 8轮DES的差分-线性密码分析 147
第6章 相关密钥密码分析 149
6.1 相关密钥密码分析的攻击假设 149
6.2 LOKI 89的相关密钥攻击 149
6.3 低轮AES-192的相关密钥攻击 151
6.3.1 低轮AES-192的相关密钥-矩阵攻击 151
6.3.2 低轮AES-192的相关密钥-不可能差分攻击 158
6.3.3 低轮AES-192的相关密钥-差分线性攻击 162
第7章 侧信道攻击 168
7.1 计时攻击 169
7.2 能量分析 171
7.2.1 简单能量分析 172
7.2.2 差分能量分析 174
7.3 电磁分析 175
7.4 故障攻击 178
7.5 缓存攻击 180
第8章 其他分析方法 183
8.1 积分密码分析 183
8.1.1 基本原理 183
8.1.2 低轮AES的Square攻击 183
8.1.3 低轮AES的积分密码分析 185
8.2 碰撞攻击 188
8.2.1 基本原理 188
8.2.2 低轮AES的碰撞攻击 189
8.2.3 低轮Camellia的碰撞攻击 192
8.2.4 低轮FOX的碰撞-积分攻击 199
8.3 代数攻击 203
8.3.1 代数攻击的基本原理 203
8.3.2 AES的多变量方程组表示 204
8.4 滑动攻击 209
8.4.1 滑动攻击的基本原理 209
8.4.2 DES的滑动攻击 209
8.5 插值攻击 213
8.5.1 插值攻击的基本原理 213
8.5.2 SHARK的插值攻击 214
8.6 相关密码攻击 216
第3篇 分组密码设计理论 217
第9章 分组密码的设计原理和整体结构 217
9.1 Shannon的保密系统理论 217
9.2 分组密码的一般设计原理 218
9.2.1 针对安全性的一般设计原则 218
9.2.2 针对实现的设计原则 219
9.3 迭代分组密码 219
9.4 分组密码的整体结构 220
9.4.1 Feistel结构 220
9.4.2 SP结构 221
9.4.3 广义Feistel结构 221
9.4.4 MISTY结构 222
9.4.5 Lai-Massey结构 222
9.5 细化的整体结构 223
第10章 分组密码基础模块的设计准则及构造方法 225
10.1 S盒的设计准则及构造方法 225
10.1.1 S盒的设计准则 225
10.1.2 S盒的构造方法 229
10.2 扩散层的设计准则及构造方法 235
10.2.1 扩散层的设计准则 235
10.2.2 扩散层的构造方法 236
10.3 轮函数的设计准则及构造方法 245
10.3.1 轮函数的设计准则 245
10.3.2 轮函数的构造方法 245
10.4 密钥扩展算法的设计 246
第11章 分组密码对差分和线性密码分析的安全性评估 250
11.1 几个概念 250
11.2 评估方法的分类 252
11.3 整体结构对差分和线性密码分析的理论安全性 252
11.3.1 Feistel结构 253
11.3.2 SP结构 254
11.3.3 MISTY结构 256
11.4 细化整体结构对差分和线性密码分析的实际安全性 260
11.4.1 Feistel-SP结构 260
11.4.2 Feistel-Feistel结构 260
11.4.3 SP-Feistel结构 260
11.4.4 SP-SPS结构 261
11.4.5 GFN-SP结构 261
11.5 小结 268
第12章 分组密码的可证明安全性 269
12.1 引言 269
12.2 随机函数和随机置换 270
12.2.1 函数族 270
12.2.2 随机函数和随机置换 271
12.3 伪随机函数 272
12.4 伪随机置换 275
12.4.1 选择明文攻击下的伪随机置换 275
12.4.2 选择密文攻击下的伪随机置换 276
12.4.3 示例攻击 277
12.5 伪随机函数和伪随机置换 278
12.5.1 生日攻击 278
12.5.2 伪随机函数和伪随机置换的关系 279
12.6 针对密钥恢复攻击的安全性 280
12.7 针对相关密钥攻击的安全性 284
12.8 Feistel结构的伪随机性 288
第4篇 分组密码的密钥管理 297
第13章 密钥建立协议 297
13.1 引言 297
13.2 基于对称加密的密钥传输 299
13.2.1 无服务器的对称密钥传输 299
13.2.2 有服务器的对称密钥传输 301
13.3 基于对称加密的密钥协商 302
13.4 基于公钥加密的密钥传输 303
13.5 基于非对称技术的密钥协商 305
第14章 密钥管理技术 307
14.1 引言 307
14.2 密钥建立模式 307
14.2.1 密钥建立模式简述 307
14.2.2 第三方的作用 309
14.3 秘密密钥分发技术 310
14.3.1 密钥分层和周期 310
14.3.2 密钥转换中心和对称密钥证书 311
14.4 公钥分发技术 312
第5篇 分组密码工作模式 316
第15章 分组密码保密工作模式 316
15.1 引言 316
15.2 典型分组密码保密工作模式 317
15.2.1 ECB 317
15.2.2 CBC 318
15.2.3 CFB 319
15.2.4 OFB 321
15.2.5 CTR 322
15.2.6 f8 324
15.3 保密存在的问题 325
15.4 选择明文攻击下的不可区分性 326
15.4.1 概念 326
15.4.2 选择明文攻击示例 328
15.5 CTR在选择明文攻击下的安全性 330
15.6 明文恢复下的安全性 335
15.7 选择密文攻击下的不可区分性 337
15.8 CBC模式的侧信道攻击 340
第16章 分组密码认证工作模式 344
16.1 引言 344
16.2 消息认证码 345
16.2.1 消息认证码的定义 345
16.2.2 消息认证码的安全性 346
16.2.3 消息认证码的分类 349
16.3 典型分组密码认证工作模式 349
16.3.1 CBC-MAC 349
16.3.2 CMAC 350
16.3.3 3GPP-MAC 351
16.3.4 XOR MAC 352
16.3.5 PMAC 353
16.4 基于伪随机函数设计MAC 355
16.5 CBC-MAC的安全性 356
16.5.1 CBC-MAC的理论安全性 356
16.5.2 CBC-MAC的生日攻击 357
16.5.3 长度可变性 359
16.6 CMAC的理论安全性 362
16.7 MAC的实际安全性 366
16.7.1 CBC-MAC的实际攻击 367
16.7.2 CMAC的实际安全性 368
16.7.3 PMAC的实际安全性 369
第17章 分组密码的认证加密模式 371
17.1 引言 371
17.2 合成认证加密模式 373
17.3 One-pass认证加密模式 376
17.3.1 IACBC 376
17.3.2 IAPM 378
17.3.3 OCB 379
17.3.4 AESKW 380
17.4 Two-pass认证加密模式 382
17.4.1 CCM 382
17.4.2 GCM 383
17.5 两类特殊的认证加密模式 385
17.5.1 基于Nonce的认证加密模式 385
17.5.2 带关联数据的认证加密模式 386
17.5.3 AEAD模式的设计方法 387
17.6 典型AEAD模式 389
17.6.1 EAX 389
17.6.2 CWC 390
第18章 其他分组密码工作模式 392
18.1 保长加密模式 392
18.1.1 CMC 392
18.1.2 EME 393
18.1.3 ABL 394
18.1.4 XCB 394
18.1.5 HCTR 395
18.2 可调分组密码 396
18.2.1 可调分组密码的安全模型 396
18.2.2 小分组可调加密方案LRW-AES 397
18.2.3 大分组可调加密方案EME-32-AES 397
18.3 Hash模式 398
18.3.1 单倍长度构造 399
18.3.2 双倍长度构造 402
18.3.3 注记 404
第6篇 分组密码的检测与评估第19章 分组密码的统计检测 407
19.1 概率统计基础 407
19.1.1 几种概率分布 407
19.1.2 假设检验 408
19.2 分组密码的检测原理 410
19.2.1 密文随机性检测 410
19.2.2 明密文独立性检测 412
19.2.3 明文扩散性检测 413
19.2.4 密钥有效性检测 413
19.3 分组密码的检测示例 413
第20章 分组密码的评估 416
20.1 分组密码的评估要素 416
20.1.1 安全性 416
20.1.2 统计检测 417
20.1.3 性能 417
20.1.4 设计特点 417
20.1.5 和公开分组密码的比较 417
20.2 AES第二轮的评估 418
20.2.1 安全性 418
20.2.2 软件性能 418
20.2.3 资源受限环境 418
20.2.4 硬件性能 418
20.2.5 针对实现的攻击 419
20.2.6 加密和解密 419
20.2.7 密钥扩展算法 419
20.2.8 其他功能和适应性 419
20.2.9 并行性 419
20.3 小结 420
参考文献 421