绪论 3
第1章 旁路分析及其与故障攻击的相关性 3
1.1 引言 3
1.2 背景介绍 4
1.3 简单功耗分析 5
1.3.1 案例研究:RSA签名运算SPA 5
1.3.2 案例研究:AES加密SPA 6
1.3.3 案例研究:文件访问SPA 9
1.4 差分功耗分析 10
1.4.1 基于DPA的故障注入触发 11
1.5 高级场景 12
1.6 小结 13
私钥密码体制故障分析 17
第2章 分组密码攻击 17
2.1 引言 17
2.2 利用相同输出的分组密码攻击 18
2.2.1 三种相似却不同的故障分析方法 18
2.2.2 AES按位碰撞/无效故障分析 20
2.2.3 DES碰撞故障分析 20
2.2.4 针对抗DPA的AES实现的CFA攻击 21
2.2.5 针对外部编码DES实现的IFA攻击 24
2.2.6 针对AES的被动和主动组合攻击 26
2.3 针对分组密码的其他故障攻击 27
2.3.1 减少密码算法轮数 27
2.3.2 破坏DES的掩码S盒 28
第3章 DES差分故障分析 32
3.1 引言 32
3.2 数据加密标准 32
3.3 基本攻击 35
3.3.1 第16轮攻击 35
3.3.2 第15轮攻击 36
3.3.3 攻击结果 38
3.4 攻击的通用化以及向中间轮的扩展 38
3.4.1 通用DFA的基本原理 38
3.4.2 错误密钥区分器 39
3.4.3 攻击结果 41
3.4.4 基于解密问询器将攻击扩展至前几轮 42
3.5 基于内部碰撞的前几轮故障攻击 42
3.5.1 符号说明和定义 42
3.5.2 攻击描述 43
3.5.3 攻击改进 45
3.5.4 选择较好的特征 45
3.5.5 攻击结果 46
第4章 AES差分故障分析 48
4.1 引言 48
4.2 针对AES算法的DFA 51
4.2.1 AES密码DEA原理 51
4.2.2 AES标准DFA 51
4.2.3 AES中间轮DFA 54
4.2.4 AES对角线DFA 56
4.2.5 AES前几轮DFA 58
4.3 针对AES的DFA方法比较 58
4.3.1 故障模型 59
4.3.2 对比分析 60
4.4 防御对策 61
4.5 小结 62
第5章 对称密码算法抗故障攻击防御对策 63
5.1 引言 63
5.2 抗故障攻击的通用构建模块 64
5.2.1 循环保护 64
5.2.2 循环冗余校验 64
5.2.3 模块冗余 65
5.2.4 双轨实现 65
5.2.5 随机时延和掩码 65
5.3 基于DMR的分组密码故障攻击防御对策 66
5.3.1 逆运算 66
5.3.2 对合密码 67
5.3.3 反馈模式 68
5.4 基于编码理论的AES故障攻击防御对策 69
5.4.1 奇偶校验 69
5.4.2 计算摘要值 70
5.4.3 嵌入环 72
5.4.4 感染运算 72
5.5 协议层防御 73
5.5.1 “全有或全无”变换 73
5.5.2 消息修改 74
5.5.3 密钥更新 74
5.6 小结 75
第6章 AES故障攻击防御对策 76
6.1 引言 76
6.2 AES密码算法 77
6.2.1 算法描述 77
6.2.2 硬件实现 79
6.3 故障攻击 80
6.4 错误检测方法 81
6.4.1 硬件冗余与时间冗余 82
6.4.2 信息冗余 83
6.5 故障与错误 90
6.6 小结 93
公钥密码体制故障分析 97
第7章 经典RSA实现差分故障分析综述 97
7.1 引言 97
7.2 RSA实现 98
7.2.1 标准RSA 98
7.2.2 模幂运算方法 99
7.3 针对标准RSA实现的经典故障分析 101
7.3.1 中间计算扰动 101
7.4 利用RSA公开模数的扰动 103
7.4.1 签名前修改N,解决小离散对数问题 104
7.4.2 利用RSA签名运算中N的故障 106
7.5 小结 108
第8章 RSA-CRT实现故障攻击 109
8.1 引言 109
8.2 针对RSA-CRT的故障攻击 109
8.3 基本防御对策 110
8.4 Shamir方法和变种 110
8.4.1 感染运算 112
8.4.2 BOS算法与攻击方法 112
8.4.3 Ciet-Joye算法与攻击方法 114
8.4.4 Vigilant算法与攻击方法 115
8.4.5 Shamir方法和变种总结 115
8.5 Giraud方法和变种 117
8.6 嵌入法 118
8.7 二阶故障攻击 118
第9章 椭圆曲线密码系统故障攻击 120
9.1 引言 120
9.2 背景知识 121
9.2.1 预备知识 121
9.2.2 椭圆曲线群 122
9.2.3 椭圆曲线标量乘法 123
9.2.4 数字系统中的故障 125
9.3 无效曲线故障攻击 126
9.3.1 基点故障注入攻击 126
9.3.2 系统参数故障注入攻击 129
9.3.3 中间变量故障注入攻击 131
9.4 符号改变故障攻击 131
9.4.1 防御对策 133
9.5 针对虚假运算和验证运算的故障攻击 134
9.5.1 安全错误故障攻击 134
9.5.2 二阶故障攻击 134
9.6 ECC故障攻击防御对策总结 135
9.7 小结 136
第10章 基于故障检测的ECC故障攻击防御对策 137
10.1 引言 137
10.2 基于奇偶校验码的故障检测 137
10.2.1 基于单比特奇偶校验的故障检测方法 138
10.2.2 基于多比特奇偶校验的故障检测方法 142
10.3 基于时间冗余的故障检测 145
10.4 椭圆曲线标量乘法中的故障检测 146
第11章 基于非线性鲁棒编码的抗故障注入攻击密码设备设计 149
11.1 引言 149
11.2 攻击者故障模型 150
11.3 鲁棒编码的定义和基本性质 151
11.4 边界、最优性和完美鲁棒编码 152
11.5 最优系统鲁棒编码的构建 154
11.5.1 部分鲁棒编码 157
11.5.2 鲁棒编码和部分鲁棒编码的变种 157
11.6 基于非线性编码的安全AES架构 158
11.6.1 AES非线性模块的保护 159
11.6.2 AES线性模块的保护 160
11.7 基于非线性编码的安全FSM设计 163
11.7.1 错误检测技术 164
11.7.2 案例研究 166
11.7.3 实现结果 168
11.8 基于非线性编码的安全ECC实现 169
11.8.1 ECC概述 169
11.8.2 错误检测技术 170
11.8.3 点加-倍点构建方案 171
11.8.4 引入面积开销估算 173
11.9 小结 174
第12章 结合格基规约的签名故障攻击 175
12.1 引言 175
12.2 格的基础知识 176
12.2.1 符号说明与背景知识 176
12.2.2 格与格基 176
12.2.3 格容积 177
12.2.4 格基规约 178
12.2.5 实际应用中的格问题 180
12.3 针对DSA签名的故障攻击 181
12.3.1 DSA签名方案 181
12.3.2 攻击模型 182
12.3.3 攻击描述 182
12.3.4 防御对策 185
12.4 针对随机RSA签名的故障攻击 185
12.4.1 ISO/IEC 9797-2签名方案 186
12.4.2 攻击模型 187
12.4.3 单个故障攻击 188
12.4.4 多个故障攻击 189
12.4.5 防御对策 192
第13章 配对密码学故障攻击 193
13.1 引言 193
13.2 背景知识与符号说明 195
13.2.1 Weil配对 196
13.2.2 Tate配对 196
13.2.3 η和ηG配对 197
13.2.4 Ate配对 198
13.3 攻击 199
13.3.1 攻击1 199
13.3.2 攻击2 201
13.4 防护对策 202
13.4.1 重复计算 203
13.4.2 中间结果校验 203
13.4.3 随机化或故障容忍的米勒循环计数器 204
13.4.4 输入随机化与隐藏 204
13.5 小结 205
混合部分 209
第14章 序列密码故障攻击 209
14.1 引言 209
14.2 基于不可能状态的RC4故障分析 211
14.2.1 密码描述与性质 211
14.2.2 不可能状态与故障 212
14.3 Trivium差分故障分析 213
14.3.1 密码描述 213
14.3.2 攻击技术 214
14.4 高级案例:HC-128差分故障分析 216
14.4.1 密码描述 216
14.4.2 攻击描述 218
14.5 Grain、Rabbit和SNOW 3G故障分析综述 219
14.6 小结 220
第15章 故障攻击防御对策对抗功耗分析攻击能力的影响 223
15.1 引言 223
15.2 错误检测和纠正电路 224
15.3 实验配置 225
15.4 故障攻击对功耗分析攻击防御的影响评估 227
15.4.1 新增校验位对Kocher的均值差DPA攻击的影响评估 228
15.4.2 校验位对基于Pearson相关性系数的DPA攻击的影响评估 229
15.4.3 基于信息论的校验位影响评估 231
15.4.4 校验位对成功率的影响评估 233
15.5 小结 235
故障攻击实现 239
第16章 微处理器攻击中的故障注入技术 239
16.1 引言 239
16.2 故障注入技术 240
16.2.1 高成本故障注入技术 240
16.2.2 低成本故障注入技术 242
16.3 通用处理器的低压故障 245
16.3.1 CPU架构和实验设置 245
16.3.2 故障注入 247
16.3.3 故障类型描述 249
16.3.4 故障扩张 250
16.3.5 错误描述和频率调节的影响 250
16.3.6 计算错误的影响 251
16.4 小结 253
第17章 密码电路全局故障 254
17.1 引言 254
17.2 故障模型 257
17.2.1 CMOS逻辑门的传输延迟 257
17.2.2 同步逻辑的时间约束 257
17.2.3 比特翻转故障模型的物理解释 259
17.2.4 非CMOS逻辑的全局故障模型 260
17.3 FPGA仿真和ASIC硬件故障攻击实验 261
17.3.1 AES硬件实现中的故障统计 261
17.3.2 其他目标的故障统计 267
17.4 小结 268
第18章 针对评估板的故障注入和密钥恢复实验 269
18.1 引言 269
18.2 故障注入机理 270
18.3 故障注入实验环境 271
18.3.1 实验环境 271
18.3.2 目标加密LSI 274
18.4 故障注入实验结果 275
18.4.1 分组密码故障注入实验结果 275
18.4.2 公钥密码故障注入实验结果 279
18.5 基于故障密文的密钥恢复 280
18.5.1 AES差分故障分析攻击 280
18.5.2 Boneh等针对CRT-RSA的故障攻击 281
18.5.3 Yen等针对存在虚假运算的RSA故障攻击(安全错误攻击) 283
18.6 小结 284
参考文献 285