第1章 高级加密标准的制定过程 1
1.1 最初阶段 1
1.2 AES:范围和意义 1
1.3 AES制定过程的启动 2
1.4 第一轮评估 3
1.5 评估准则 4
1.5.1 安全性 4
1.5.2 代价 4
1.5.3 算法和实现特性 5
1.6 5个最终的候选者 5
1.6.1 第二届AES会议 6
1.6.2 5个决赛草案 7
1.7 第二轮评估 7
1.8 选择 8
2.1 有限域 9
第2章 预备知识 9
2.1.1 群、环和域 10
2.1.2 向量空间 11
2.1.3 含有有限个元素的域 13
2.1.4 域上的多项式 13
2.1.5 多项式运算 14
2.1.6 多项式与字节 16
2.1.7 多项式与列向量 16
2.2.1 定义 18
2.2 线性码 18
2.2.2 MDS码 19
2.3 布尔函数 20
2.3.1 束分割 21
2.3.2 换位 21
2.3.3 砖匠函数 22
2.3.4 迭代布尔变换 23
2.4.1 迭代型分组密码 24
2.4 分组密码 24
2.4.2 密钥交替的分组密码 25
2.5 分组密码的工作模式 27
2.5.1 分组加密模式 27
2.5.2 密钥流生成器模式 28
2.5.3 消息鉴别模式 29
2.5.4 密码散列 29
2.6 小结 30
第3章 Rijndael的详细描述 31
3.1 Rijndael和AES的区别 31
3.2 加、解密的输入/输出 31
3.3 Rijndael的结构 33
3.4 轮变换 34
3.4.1 步骤SubBytes 35
3.4.2 步骤ShiftRows 37
3.4.3 步骤MixColumns 39
3.4.4 密钥加法 41
3.5 轮的数目 42
3.6 密钥编排方案 43
3.6.1 设计准则 44
3.6.2 选取 44
3.7 解密 46
3.7.1 两轮Rijndael的解密 47
3.7.2 代数性质 48
3.7.3 等价解密算法 49
3.8 小结 52
第4章 Rijndael的实现 53
4.1 8位平台 53
4.1.1 有限域乘法 53
4.1.2 加密 54
4.1.3 解密 55
4.2 32位平台 58
4.3 专用硬件 60
4.3.1 SRD的分解 61
4.3.2 GF(28)中求逆的有效方案 61
4.4 多处理器平台 62
4.5 性能数据 63
4.6 小结 64
第5章 设计原则 65
5.1 密码设计的通用准则 65
5.1.1 安全性 65
5.1.2 效率 66
5.1.3 密钥的灵活性 66
5.1.4 多样性 66
5.1.5 讨论 66
5.2 简单性 67
5.3.2 轮变换内部的对称性 68
5.3.1 各轮之间的对称性 68
5.3 对称性 68
5.3.3 D-盒的对称性 70
5.3.4 S-盒的对称性和简单性 70
5.3.5 加密和解密的对称性 70
5.3.6 对称性的其他优点 71
5.4 运算的选取 72
5.4.1 算术运算 72
5.4.2 数据相依移位 73
5.5 安全策略 73
5.5.1 安全目标 73
5.5.2 未知攻击与已知攻击 75
5.5.3 可证明安全与可证明的界 75
5.6 设计方法 75
5.6.1 非线性和扩散准则 75
5.6.2 抗差分和线性密码分析 76
5.6.3 局部和全局优化 77
5.7 密钥交替的密码结构 78
5.8 密钥编排方案 79
5.8.1 密钥编排方案的功能 79
5.8.2 密钥扩展和密钥选取 80
5.8.3 密钥扩展的代价 80
5.8.4 一种递归密钥扩展 81
5.9 小结 81
第6章 数据加密标准(DES) 82
6.1 DES 82
6.2 差分密码分析 84
6.3 线性密码分析 86
6.4 小结 88
第7章 相关矩阵 89
7.1 Walsh-Hadamard变换 89
7.1.1 奇偶性和选择模式 89
7.1.4 正交性和相关性 90
7.1.2 相关性 90
7.1.3 二元布尔函数对应的实值函数 90
7.1.5 二元布尔函数的谱 91
7.2 二元布尔函数的复合 93
7.2.1 异或 93
7.2.2 与 94
7.2.3 分离布尔函数 94
7.3 相关矩阵 95
7.3.1 布尔函数与其相关矩阵之间的等价性 95
7.3.2 迭代型布尔函数 96
7.3.3 布尔置换 97
7.4 特殊的布尔函数 98
7.4.1 与常量进行异或 98
7.4.2 线性函数 99
7.4.3 砖匠函数 99
7.5 导出性质 100
7.6 截短函数 101
7.7 互相关性与自相关性 102
7.8 线性轨迹 103
7.9 密码 104
7.9.1 通常情况 105
7.9.2 密钥替换型密码 105
7.9.3 所有轮密钥的平均 106
7.9.4 密钥编排方案的影响 108
7.10 相关矩阵和线性密码分析文献 110
7.10.1 DES的线性密码分析 110
7.10.2 线性外壳 111
7.11 小结 113
第8章 差分传播 114
8.1 差分传播 114
8.2 特殊函数 115
8.2.1 仿射函数 115
8.3 差分传播概率和相关性 116
8.2.2 砖匠函数 116
8.2.3 截短函数 116
8.4 差分轨迹 118
8.4.1 一般情况 118
8.4.2 限制的独立性 119
8.5 密钥交替密码 120
8.6 密钥编排方案的影响 120
8.7 差分轨迹和差分密码分析文献 121
8.7.1 修订的DES差分分析 121
8.7.2 马尔可夫密码 122
8.8 小结 123
第9章 宽轨迹策略 124
9.1 密钥交替分组密码中的差分传播 124
9.1.1 线性密码分析 124
9.1.2 差分密码分析 126
9.2 宽轨迹策略 127
9.1.3 线性轨迹和差分轨迹的区别 127
9.2.1 分组密码中的γλ轮结构 128
9.2.2 轨迹的权值 130
9.2.3 扩散 131
9.3 分支数和两轮轨迹 133
9.3.1 推导性质 134
9.3.2 两轮传播定理 135
9.4 一个高效的密钥交替结构 135
9.4.1 扩散步骤θ 136
9.4.2 线性步骤Θ 137
9.4.3 四轮轨迹束权值的下限 138
9.4.4 Θ的有效构造 138
9.5 Rijndael的轮结构 140
9.5.1 密钥迭代结构 140
9.5.2 宽轨迹策略在Rijndael中的应用 143
9.6 θ的构造 144
9.7.1 超立方体结构 146
9.7 对于结构Ι和π的选择 146
9.7.2 矩形结构 148
9.8 小结 148
第10章 密码分析 149
10.1 缩短差分 149
10.2 渗透攻击 149
10.2.1 预备知识 150
10.2.2 基本攻击 151
10.2.3 最后一轮的影响 152
10.2.4 在结尾处扩展 153
10.2.5 初始扩展 154
10.2.6 六轮攻击 154
10.2.7 Herds攻击 155
10.3 Gilbert-Minier攻击 155
10.3.2 七轮攻击 156
10.3.1 四轮区分器 156
10.4 插值攻击 157
10.5 与DES类似的对称性和弱密钥 158
10.6 与IDEA类似的弱密钥 158
10.7 密钥相关攻击 158
10.8 实现攻击 159
10.8.1 时间攻击 159
10.8.2 能量分析 160
10.9 小结 161
第11章 相关的分组密码 163
11.1 综述 163
11.1.1 Rijndael密码族的进化 163
11.1.2 轮变换 164
11.2 SHARK密码 165
11.3 Square 168
11.4 BKSQ 170
11.5.1 Crypton 173
11.5 Rijndael的派生 173
11.5.2 Twofish 174
11.5.3 ANUBIS 174
11.5.4 GRAND CRU 175
11.5.5 Hierocrypt 175
11.6 小结 175
附录A 伽罗华域中的传播分析 177
A.1 GF(2n)上的函数 178
A.1.1 差分传播 179
A.1.2 相关性 179
A.1.3 GF(2n)上的线性函数 182
A.1.4 GF(2)上的线性函数 182
A.2 (GF(2n))l上的函数 184
A.2.1 差分传播 184
A.2.2 相关性 184
A.2.3 GF(2n)上的线性函数 185
A.2.4 GF(2)上的线性函数 186
A.3 GF(pn)的表示 187
A.3.1 GF(pn)的循环表示 187
A.3.2 GF(pn)的向量空间表示 187
A.3.3 对偶基 188
A.4 布尔函数和GF(2n)中的函数 189
A.4.1 GF(2)n和GF(2n)中的差分 190
A.4.2 迹模式与选择模式之间的关系 190
A.4.3 GF(p)n与GF(pn)中线性函数之间的关系 191
A.4.4 举例说明 193
A.5 Rijndael-GF 195
附录B 轨迹聚集 197
B.1 具有最大分支数的变换 197
B.2 两轮的界 200
B.2.1 差分传播 201
B.2.2 相关性 204
B.3 四轮的界 205
B.4 两种情况的研究 206
B.4.1 差分轨迹 206
B.4.2 线性轨迹 208
附录C 置换表 211
C.1 SRD 211
C.2 其他表格 214
C.2.1 xtime 214
C.2.2 轮常数 215
附录D 测试向量 216
D.1 扩展密钥KeyExpansion 216
D.2 Rijndael(128,128) 216
D.3 其他的分组长度和密钥长度 219
附录E 参考代码 223
参考文献 231