第1章 超大规模集成电路测试背景 1
1.1 引言 1
1.2 测试成本和产品质量 1
1.2.1 测试成本 2
1.2.2 缺陷、成品率和缺陷等级 2
1.3 测试生成 3
1.3.1 结构测试与功能测试的对比 3
1.3.2 故障模型 4
1.3.3 可测性:可控性和可观察性 5
1.3.4 自动测试模式生成(ATPG) 8
1.4 结构化的可测性设计技术概述 8
1.4.1 可测性设计 8
1.4.2 扫描设计:扫描单元、扫描链及扫描测试压缩 9
1.4.3 部分扫描设计 11
1.4.4 边界扫描 12
1.4.5 BIST法 13
1.5 全速延迟测试 14
1.5.1 为什么采用全速延迟测试 14
1.5.2 全速测试基础:发射捕获和发射偏移 15
1.5.3 全速延迟测试的挑战 16
参考文献 17
第2章 哈希函数的硬件实现 18
2.1 加密哈希函数概述 18
2.1.1 构建哈希函数 18
2.1.2 哈希函数的应用 19
2.2 哈希函数的硬件实现 20
2.2.1 MD5 20
2.2.2 SHA-2 22
2.2.3 面积优化 24
2.3 SHA-3的候选对象 24
2.3.1 Keccak算法 25
2.3.2 BLAKE算法 26
2.3.3 Grφstl算法 27
2.3.4 Skein算法 29
2.3.5 JH算法 30
2.3.6 算法性能 31
参考文献 33
第3章 RSA算法的实现与安全性 36
3.1 引言 36
3.2 算法的描述与分析 37
3.3 硬件实现简介 39
3.4 安全性分析 42
3.5 结论 44
参考文献 45
第4章 基于物理上不可克隆和无序的安全性 46
4.1 引言 46
4.2 独特对象 47
4.2.1 独特对象的历史和实例 48
4.2.2 独特对象的协议及应用 51
4.2.3 安全性 51
4.3 弱物理不可克隆函数 52
4.3.1 历史与实现的实例 53
4.3.2 协议、应用与安全 55
4.4 强物理不可克隆函数 56
4.4.1 强PUF的历史及举例 57
4.4.2 协议、应用及安全 60
4.5 受控的PUF 62
4.5.1 受控的PUF特性 62
4.5.2 历史和实现 62
4.5.3 协议、应用与安全 63
4.6 新兴的PUF 64
4.6.1 保密模型PUF 64
4.6.2 定时认证 64
4.6.3 具有公共模型的PUF 64
4.6.4 量子读取的PUF 65
4.6.5 具有超高信息量的PUF 65
4.7 未来的研究课题 65
4.7.1 公共PUF的公开性问题 65
4.7.2 高效的硬件实现:开销与安全 66
4.7.3 错误校正与可实现性 66
4.7.4 IC计量及伪造检测 66
4.7.5 攻击和漏洞分析 66
4.7.6 形式化验证与安全性证明 67
4.7.7 新的协议及应用 67
4.8 结论 67
参考文献 67
第5章 硬件计量综述 74
5.1 引言 74
5.2 分类与模型 75
5.3 被动式芯片计量 77
5.3.1 非功能识别的被动计量 77
5.3.2 被动式功能性计量 78
5.4 主动式芯片计量 80
5.4.1 内部的主动式芯片计量 81
5.4.2 外部的主动式芯片计量 84
5.5 结论 85
参考文献 85
第6章 利用数字水印保护硬件IP 88
6.1 引言 88
6.1.1 设计复用和IP设计 88
6.1.2 什么是IP设计 88
6.1.3 为什么要保护IP设计 88
6.1.4 哪些行为可以保护IP安全 89
6.2 利用基于约束的水印技术保护IP设计 89
6.2.1 例子:最简布尔表达式的水印 91
6.2.2 基于约束的水印的背景与要求 92
6.3 带无关项的水印 92
6.4 通过复制模块向HDL源码添加水印 95
6.4.1 例子:4比特模式检测器 95
6.4.2 状态转换图的Verilog实现 95
6.4.3 通过复制模块向Verilog代码添加水印 96
6.4.4 通过模块分割嵌入水印 98
6.4.5 水印技术的性能评估 99
6.5 结论 101
参考文献 101
第7章 物理攻击与防篡改 102
7.1 攻击场景 102
7.2 防篡改等级 103
7.3 攻击类别 104
7.3.1 非入侵式攻击 105
7.3.2 入侵式攻击 106
7.3.3 半入侵式攻击 107
7.4 用非入侵式攻击威胁安全性 108
7.4.1 边信道攻击 108
7.5 入侵式攻击对安全的威胁 111
7.5.1 剥层分析 113
7.5.2 逆向工程 113
7.5.3 微探针 114
7.6 半入侵式攻击对安全的威胁 115
7.6.1 紫外线攻击 115
7.6.2 先进的成像技术 115
7.6.3 光故障注入 117
7.6.4 光学边信道分析 118
7.6.5 基于光学增强的定位功率分析 119
7.7 物理攻击对策 121
7.8 结论 122
参考文献 123
第8章 边信道攻击与对策 125
8.1 引言 125
8.2 边信道 126
8.2.1 功耗 126
8.2.2 电磁 128
8.2.3 光学 129
8.2.4 时序及延迟 129
8.2.5 声学 130
8.3 利用边信道信息的攻击 130
8.4 对策 131
8.4.1 隐藏 131
8.4.2 掩码/盲化 135
8.4.3 模块划分 135
8.4.4 物理安全与防篡改 136
8.5 结论 136
参考文献 137
第9章 FPGA中的可信设计 140
9.1 引言 140
9.2 FPGA的综合流程及其脆弱性 140
9.2.1 脆弱性 141
9.3 基于FPGA的应用密码学 144
9.3.1 脆弱性 144
9.4 FPGA硬件安全基础 146
9.4.1 物理不可克隆函数 147
9.4.2 真随机数发生器 152
9.5 顶级的FPCA安全性挑战 154
9.5.1 算法密码安全 154
9.5.2 基于硬件的密码学:原语和协议 154
9.5.3 集成电路与工具的数字权限管理 155
9.5.4 可信工具 155
9.5.5 可信IP 156
9.5.6 抵御逆向工程 156
9.5.7 木马检测与诊断 156
9.5.8 零知识和不经意传输 157
9.5.9 自我可信的综合 157
9.5.10 新的FPGA架构和技术 157
9.5.11 基于硬件安全的FPGA工具 157
9.5.12 边信道 158
9.5.13 理论基础 158
9.5.14 物理和社会的安全应用 158
9.5.15 恢复技术和长寿使能技术 158
9.5.16 可执行的摘要 159
9.6 总结 159
参考文献 159
第10章 嵌入式系统的安全性 165
10.1 引言 165
10.1.1 安全计算模型及风险模型 165
10.1.2 程序数据属性的保护 166
10.1.3 嵌入式系统安全处理的软硬件方法 166
10.2 针对高效动态信息流跟踪的安全页面分配 167
10.2.1 相关工作 167
10.2.2 我们的PIF方法 169
10.2.3 安全分析和攻击检测 173
10.2.4 实验结果 174
10.2.5 总结 176
10.3 利用预测架构验证运行的程序 177
10.3.1 预备知识 177
10.3.2 控制流传输和执行路径验证的推测架构 180
10.3.3 实验结果与安全性分析 183
10.3.4 总结 184
参考文献 185
第11章 嵌入式微控制器的边信道攻击和对策 189
11.1 引言 189
11.2 嵌入式微控制器的边信道泄漏 189
11.3 对微控制器的边信道攻击 190
11.3.1 边信道分析 191
11.3.2 PowerPC实现高级加密标准(AES) 192
11.3.3 边信道分析:功率模型的选择 193
11.3.4 边信道分析:实用的假设检验 194
11.3.5 边信道分析:攻击结果 195
11.4 微控制器的边信道对策 196
11.4.1 隐藏对策的电路级实现 197
11.4.2 VSC:将DRP移植到软件中 198
11.4.3 VSC的实现 198
11.4.4 将AES映射到VSC上 199
11.4.5 实验结果 201
11.5 总结 202
参考文献 202
第12章 射频识别(RFID)标签的安全性 204
12.1 引言 204
12.1.1 RFID的历史 205
12.1.2 物联网 205
12.1.3 RFID的应用 205
12.1.4 射频识别参考模型 207
12.1.5 射频识别标签的种类 208
12.1.6 射频识别对社会和个人的影响 208
12.2 对无源射频识别标签安全的攻击 208
12.2.1 伪装攻击 208
12.2.2 信息泄漏攻击 210
12.2.3 拒绝服务攻击 211
12.2.4 物理操作攻击 212
12.3 射频识别标签的保护机制 212
12.3.1 伪装攻击 212
12.3.2 信息泄漏攻击 213
12.3.3 拒绝服务攻击 214
12.3.4 物理操作攻击 214
12.4 用于防伪的RFID标签指纹 215
12.4.1 指纹电子设备的背景 215
12.4.2 标签的最小功率响应 215
12.4.3 标签频率响应和瞬态响应 216
12.4.4 标签时间响应 216
参考文献 217
第13章 内存完整性保护 219
13.1 引言 219
13.1.1 问题的定义 219
13.2 简单的解决方案:采用消息验证码 220
13.2.1 程序代码的完整性 220
13.3 瓶颈与限制 221
13.3.1 回放攻击 221
13.3.2 可信根 222
13.4 模块构建 222
13.4.1 Merkle树 222
13.4.2 哈希函数 223
13.4.3 Merkle树以外的方案 224
13.5 已有的方案 225
13.5.1 基于GCM的验证方案 225
13.5.2 自适应树对数方案 226
13.5.3 基于UMAC的Merlle树方案 228
13.6 内存完整性保护的推广 231
参考文献 232
第14章 硬件木马分类 233
14.1 引言 233
14.2 硬件木马 233
14.3 木马分类 233
14.3.1 按插入阶段分类 233
14.3.2 按抽象的层次分类 235
14.3.3 按激活机制分类 236
14.3.4 按影响分类 236
14.3.5 按位置分类 237
14.4 硬件木马案例 238
14.4.1 基于边信道的恶意片外泄漏木马(MOLES) 238
14.4.2 通过RS-232泄漏密钥的木马 239
14.4.3 综合工具木马 239
14.4.4 通过温度边信道泄漏密钥的木马 240
14.4.5 拒绝服务(DoS)木马 240
14.4.6 通过VGA显示器泄漏信息的木马 241
14.5 总结 241
参考文献 241
第15章 硬件木马检测 243
15.1 引言 243
15.2 芯片的硬件木马检测 244
15.2.1 木马检测方法的分类 244
15.2.2 木马检测所面临的挑战 246
15.2.3 测试和验证方法 250
15.2.4 实时监测法 256
15.2.5 木马检测方法的比较 257
15.3 IP硬核的可信度验证 257
15.4 总结 258
参考文献 259
第16章 硬件可信度设计 261
16.1 概述 261
16.2 基于延迟的方案 261
16.2.1 影子寄存器 261
16.2.2 环形振荡器 263
16.3 罕见事件的删除 266
16.4 木马测试设计 269
16.4.1 步骤Ⅰ:代码评估 270
16.4.2 步骤Ⅱ:敏感路径的选择 270
16.4.3 步骤Ⅲ:插入探测点 271
16.5 带校验的硬件 271
16.6 总结 273
参考文献 274
第17章 安全和测试 276
17.1 引言 276
17.1.1 测试接口的发展 276
17.1.2 示例:测试一个2比特状态机 277
17.1.3 故障测试与木马检测的比较 280
17.1.4 VLSI测试:目标和指标 280
17.1.5 可测性和安全性之间的冲突 281
17.2 基于扫描的测试 281
17.2.1 基于扫描的攻击 282
17.2.2 扫描攻击的对策 282
17.3 BIST 284
17.4 JTAG 284
17.4.1 JTAG劫持 287
17.4.2 JTAG防御 287
17.5 片上系统测试结构 289
17.5.1 劫持SoC测试 290
17.5.2 SoC测试的保护措施 290
17.6 测试安全的新兴领域 291
17.6.1 汽车的OBD-Ⅱ 292
17.6.2 医疗植入设备的接口安全 292
17.7 总结和展望 292
参考文献 293
第18章 保护IP核免受扫描边信道攻击 294
18.1 引言 294
18.1.1 前期的工作 295
18.2 扫描攻击的分类 295
18.2.1 基于扫描的可观测性攻击 295
18.2.2 基于扫描的可控性/可观测性攻击 296
18.3 低成本安全扫描 297
18.3.1 LCSS测试流程 299
18.4 自动的LCSS插入流程 299
18.4.1 低成本安全扫描插入流程 299
18.5 分析及结论 300
18.5.1 开销 300
18.5.2 对安全性和可测试性的影响 303
18.6 总结 305
参考文献 306