目录
第 一部分 基础知识
第 1 章 安全开发流程 2
1.1 关于各种指南的讨论 ..................................................................................................... 2
1.2 产品安全责任 ................................................................................................................. 4
1.3 意识与培训 ..................................................................................................................... 5
1.4 资产与保护目标 ............................................................................................................. 6
1.4.1 识别宝贵的资产 ................................................................................................. 6
1.4.2 相关保护需求 ..................................................................................................... 8
1.5 攻击者、威胁和风险 ................................................................................................... 10
1.5.1 潜在攻击者 ....................................................................................................... 10
1.5.2 潜在的负面影响 ............................................................................................... 12
1.5.3 没有风险,就没有优先级 ............................................................................... 14
1.6 安全需求和安全架构 ................................................................................................... 15
1.6.1 风险处理 ........................................................................................................... 16
1.6.2 安全开发原则 ................................................................................................... 17
1.7 安全实施和安全测试 ................................................................................................... 18
1.7.1 左移策略 ........................................................................................................... 18
1.7.2 持续测试和分析 ............................................................................................... 19
1.7.3 攻击者即服务 ................................................................................................... 20
1.8 漏洞监测和响应 ........................................................................................................... 22
1.8.1 漏洞报告 ........................................................................................................... 22
1.8.2 审查和评估脆弱性报告 ................................................................................... 23
1.8.3 修复或解决问题 ............................................................................................... 23
1.8.4 测试 ................................................................................................................... 23
1.8.5 公开解决方案 ................................................................................................... 23
1.8.6 避免今后出现问题 ........................................................................................... 24
1.8.7 建立信任 ........................................................................................................... 24
1.9 总结 ............................................................................................................................... 25
第 2 章 密码学 26
2.1 柯克霍夫原则 ............................................................................................................... 26
2.2 安全级别 ....................................................................................................................... 27
2.3 对称密码 ....................................................................................................................... 28
2.3.1 数据加密标准 ................................................................................................... 28
2.3.2 高级加密标准 ................................................................................................... 29
2.4 运行模式 ....................................................................................................................... 31
2.4.1 电子密码本模式 ............................................................................................... 32
2.4.2 密文分组链接模式 ........................................................................................... 32
2.4.3 计数器模式 ....................................................................................................... 33
2.5 哈希函数 ....................................................................................................................... 34
2.6 消息认证码 ................................................................................................................... 36
2.7 认证加密 ....................................................................................................................... 37
2.7.1 策略和要求 ....................................................................................................... 37
2.7.2 伽罗瓦计数器模式 ........................................................................................... 38
2.8 非对称密码学 ............................................................................................................... 40
2.9 RSA 密码系统 .............................................................................................................. 41
2.9.1 基本 RSA 数学 ................................................................................................. 41
2.9.2 真实世界中 RSA 的使用 ................................................................................. 42
2.10 Diffie-Hellman 密钥交换 ........................................................................................... 43
2.10.1 数学之美 ....................................................................................................... 43
2.10.2 中间人攻击 ................................................................................................... 44
2.11 椭圆曲线密码学 ......................................................................................................... 45
2.11.1 曲线背后的数学 ........................................................................................... 45
2.11.2 选择的痛苦 ................................................................................................... 47
2.11.3 ECC 的实际应用........................................................................................... 47
2.12 总结 ............................................................................................................................. 48
第二部分 设备安全构建模块
第 3 章 随机数生成器 50
3.1 对不可预测性的需求 ................................................................................................... 50
3.2 不可预测性的本质 ....................................................................................................... 51
3.3 真随机数生成器 ........................................................................................................... 52
3.3.1 环形振荡器 ....................................................................................................... 53
3.3.2 熵源的健康状况 ............................................................................................... 54
3.4 伪随机数生成器 ........................................................................................................... 55
3.5 实用 RNG 的构建和应用 ............................................................................................ 56
3.5.1 RNG 的选择 ..................................................................................................... 56
3.5.2 错误处理 ........................................................................................................... 57
3.5.3 启动时熵 ........................................................................................................... 57
3.6 案例研究:从硬件到 Python 的随机数 ..................................................................... 57
3.6.1 硬件 RNG 和熵源 ............................................................................................. 57
3.6.2 Linux 中的硬件 RNG 集成 .............................................................................. 58
3.6.3 Linux RNG 架构 ............................................................................................... 59
3.6.4 Python 中的加密安全随机数 ........................................................................... 61
3.7 案例研究:随机性快速检查的实用工具 ................................................................... 62
3.7.1 分布分析和模式识别的简单工具 ................................................................... 63
3.7.2 问题 1:通过模数限制输出空间 .................................................................... 65
3.7.3 问题 2:定制 PRNG 设计 ............................................................................... 66
3.8 总结 ............................................................................................................................... 67
第 4 章 密码实施 68
4.1 实施背景和要求 ........................................................................................................... 68
4.2 选择加密实现 ............................................................................................................... 70
4.3 AES 实现选项 .............................................................................................................. 71
4.3.1 基本架构 ........................................................................................................... 72
4.3.2 优化运行 ........................................................................................................... 72
4.4 RSA 和 ECDSA 的实施特点 ....................................................................................... 73
4.4.1 RSA 优化 .......................................................................................................... 73
4.4.2 ECDSA 细节 ..................................................................................................... 74
4.5 案例研究:STM32MP157F 器件的加密性能 ........................................................... 74
4.5.1 对称加密的参数选择 ....................................................................................... 75
4.5.2 SHA-256 算法的软件与硬件实现 ................................................................... 78
4.5.3 非对称加密操作的软件性能比较 ................................................................... 81
4.6 总结 ............................................................................................................................... 82
第 5 章 机密数据存储与安全内存 84
5.1 机密数据 ....................................................................................................................... 84
5.2 在嵌入式系统中保护机密的困境 ............................................................................... 86
5.3 安全文件系统方案 ....................................................................................................... 86
5.3.1 加密堆叠文件系统 ........................................................................................... 87
5.3.2 原生文件系统加密 ........................................................................................... 87
5.3.3 加密块设备 ....................................................................................................... 87
5.3.4 建议方案 ........................................................................................................... 88
5.3.5 口令 ................................................................................................................... 88
5.4 硬件中的安全内存 ....................................................................................................... 88
5.4.1 外部安全存储器模块 ....................................................................................... 89
5.4.2 片上安全存储系统 ........................................................................................... 90
5.5 应用代码中的安全 ....................................................................................................... 91
5.6 密码安全存储实践 ....................................................................................................... 92
5.7 案例研究:Linux 加密文件容器 ................................................................................ 93
5.7.1 加密性能基准测试 ........................................................................................... 94
5.7.2 容器的创建 ....................................................................................................... 95
5.7.3 效率分析 ........................................................................................................... 96
5.8 读保护机制的低成本解决方案 ................................................................................... 98
5.9 总结 ............................................................................................................................... 99
第 6 章 安全设备身份认证 100
6.1 每个设备都是独一无二的 ......................................................................................... 100
6.2 识别和标识符 ............................................................................................................. 101
6.2.1 唯一标识符 ..................................................................................................... 101
6.2.2 系统身份 ......................................................................................................... 102
6.3 身份认证和认证器 ..................................................................................................... 102
6.3.1 认证协议 ......................................................................................................... 103
6.3.2 专用认证芯片 ................................................................................................. 104
6.3.3 多因素身份验证 ............................................................................................. 104
6.3.4 受信任的第三方 ............................................................................................. 105
6.3.5 证书和证书授权中心 ..................................................................................... 106
6.4 身份生命周期管理 ..................................................................................................... 107
6.4.1 身份生成 ......................................................................................................... 107
6.4.2 供应 ................................................................................................................. 108
6.4.3 实时使用 ......................................................................................................... 109
6.4.4 交换或销毁 ..................................................................................................... 109
6.5 案例研究:身份生成及供应 ..................................................................................... 110
6.5.1 标识符和系统身份 ......................................................................................... 110
6.5.2 证书签名请求 ................................................................................................. 112
6.5.3 证书授权中心 ................................................................................................. 115
6.6 案例研究:生产中的 RSA 密钥生成 ....................................................................... 117
6.7 总结 ............................................................................................................................. 118
第 7 章 通信安全 120
7.1 全维度防护目标 ......................................................................................................... 120
7.2 传输层安全 ................................................................................................................. 121
7.2.1 TLS 的发展历史 ............................................................................................. 122
7.2.2 TLS 基础 ......................................................................................................... 122
7.2.3 TLS 1.3 ............................................................................................................ 123
7.2.4 其他握手选项 ................................................................................................. 124
7.2.5 加密算法的选择 ............................................................................................. 124
7.2.6 TLS 1.2 ............................................................................................................ 125
7.2.7 TLS 1.2 与 TLS 1.3 的区别 ............................................................................ 125
7.2.8 安全使用 ......................................................................................................... 125
7.2.9 设备和基础设施的要求 ................................................................................. 126
7.3 应用示例和软件库 ..................................................................................................... 127
7.4 案例研究:安全的 MQTT 通信 ............................................................................... 127
7.4.1 Mosquitto 的安装和配置 ................................................................................ 127
7.4.2 首次试运行 ..................................................................................................... 129
7.4.3 使用 Wireshark 和 SSLyze 进行通信安全分析 ............................................. 130
7.5 不使用 TLS 的安全通信 ............................................................................................ 134
7.6 安全通信中的冗余 ..................................................................................................... 135
7.7 总结 ............................................................................................................................. 136
第三部分 高级设备安全概念
第 8 章 安全启动与系统完整性 138
8.1 系统启动的复杂性 ..................................................................................................... 138
8.2 引导保护概念 ............................................................................................................. 140
8.3 经典安全启动链 ......................................................................................................... 141
8.4 实施安全启动的考虑 ................................................................................................. 143
8.4.1 硬件和软件要求 ............................................................................................. 143
8.4.2 开发过程 ......................................................................................................... 144
8.4.3 生产和生命周期 ............................................................................................. 144
8.5 开源许可证与安全启动 ............................................................................................. 145
8.6 案例研究:STM32MP157F 设备上的安全启动过程 ............................................. 146
8.6.1 启动过程 ......................................................................................................... 146
8.6.2 安全启动从硬件开始 ..................................................................................... 147
8.6.3 基于 BL2 TF-A 的安全启动 .......................................................................... 148
8.6.4 U-Boot 的安全启动功能 ................................................................................ 149
8.7 启动过程之外的完整性保护 ..................................................................................... 151
8.7.1 内核模块验证 ................................................................................................. 152
8.7.2 文件系统完整性 ............................................................................................. 152
8.7.3 基于 MAC 的文件系统保护 .......................................................................... 152
8.7.4 只读文件系统 ................................................................................................. 153
8.7.5 全面的完整性保护 ......................................................................................... 153
8.8 写保护作为低成本解决方案 ..................................................................................... 153
8.9 总结 ............................................................................................................................. 154
第 9 章 固件更新安全 155
9.1 更新的必然性 ............................................................................................................. 155
9.2 安全保障 ..................................................................................................................... 156
9.3 更新的分发与部署 ..................................................................................................... 158
9.3.1 本地更新与远程更新 ..................................................................................... 158
9.3.2 拉取策略与推送策略 ..................................................................................... 158
9.4 更新的粒度与格式 ..................................................................................................... 159
9.4.1 固件组成部分 ................................................................................................. 159
9.4.2 更新格式 ......................................................................................................... 160
9.4.3 包管理器的问题 ............................................................................................. 161
9.5 设备分区策略 ............................................................................................................. 162
9.5.1 更新/恢复分区 ................................................................................................ 162
9.5.2 A/B 系统方法 ................................................................................................. 162
9.5.3 引导加载程序的更新 ..................................................................................... 164
9.6 开发、后端与设备的交互 ......................................................................................... 164
9.7 案例研究:基于 SWUpdate 的安全固件更新 ......................................................... 165
9.7.1 SD 卡布局自定义 ........................................................................................... 165
9.7.2 SWUpdate 的安装与配置 ............................................................................... 167
9.7.3 密钥生成 ......................................................................................................... 167
9.7.4 软件集合 ......................................................................................................... 168
9.7.5 生成更新文件的脚本 ..................................................................................... 169
9.7.6 设备特定定制 ................................................................................................. 170
9.7.7 更新过程评估 ................................................................................................. 173
9.8 总结 ............................................................................................................................. 175
第 10 章 鲁棒设备架构 176
10.1 处于网络压力下的设备 ........................................................................................... 176
10.1.1 邻近设备故障 ............................................................................................. 177
10.1.2 协议模糊测试 ............................................................................................. 177
10.1.3 网络与漏洞扫描 ......................................................................................... 177
10.1.4 泛洪攻击 ..................................................................................................... 177
10.1.5 鲁棒架构 ..................................................................................................... 177
10.2 设备核心功能 ........................................................................................................... 178
10.2.1 传感器 ......................................................................................................... 178
10.2.2 执行器 ......................................................................................................... 178
10.2.3 控制器 ......................................................................................................... 179
10.3 实时系统 ................................................................................................................... 179
10.3.1 软实时系统 ................................................................................................. 180
10.3.2 强实时系统 ................................................................................................. 180
10.3.3 硬实时系统 ................................................................................................. 180
10.3.4 DoS 攻击的影响 ......................................................................................... 180
10.4 资源耗尽及预防策略 ............................................................................................... 180
10.5 硬件级实现方案 ....................................................................................................... 181
10.5.1 专用预处理单元 ......................................................................................... 181
10.5.2 多核架构 ..................................................................................................... 182
10.6 操作系统的职能 ....................................................................................................... 183
10.6.1 操作系统选项 ............................................................................................. 183
10.6.2 支持实时补丁的 Linux 操作系统 .............................................................. 184
10.7 应用与协议考量 ....................................................................................................... 185
10.7.1 识别逻辑缺陷 ............................................................................................. 186
10.7.2 实施输入与发送方验证 ............................................................................. 186
10.7.3 分析主动防护措施 ..................................................................................... 186
10.7.4 引入混沌工程和模糊测试 ......................................................................... 186
10.8 案例研究:STM32MP157F 设备的鲁棒性选项 ................................................... 187
10.8.1 基本系统属性 ............................................................................................. 187
10.8.2 低延迟内核的测量 ..................................................................................... 188
10.8.3 实时内核性能测试 ..................................................................................... 190
10.8.4 实时协处理器 ............................................................................................. 191
10.9 总结 ........................................................................................................................... 193
第 11 章 访问控制与管理 194
11.1 日常威胁 ................................................................................................................... 194
11.2 访问控制与损害遏制 ............................................................................................... 195
11.2.1 设计与开发阶段 ......................................................................................... 196
11.2.2 生产环境注意事项 ..................................................................................... 197
11.3 自主访问控制 ........................................................................................................... 198
11.3.1 Linux 文件系统权限 ................................................................................... 198
11.3.2 Linux 用户与用户组管理 ........................................................................... 199
11.3.3 Linux 权限管理 ........................................................................................... 200
11.3.4 访问控制列表 ............................................................................................. 201
11.4 案例研究:STM32MP157F-DK2 固件的访问控制 .............................................. 201
11.4.1 Yocto 中的用户创建与文件配置 ............................................................... 202
11.4.2 系统文件与预定义用户的探索 ................................................................. 204
11.4.3 SSH 守护进程访问控制配置 ..................................................................... 205
11.5 强制访问控制 ........................................................................................................... 206
11.5.1 Linux 安全模块 ........................................................................................... 207
11.5.2 SELinux ....................................................................................................... 207
11.5.3 AppArmor .................................................................................................... 208
11.5.4 其他 LSM 及非 LSM 的强制访问控制机制 ............................................. 209
11.6 案例研究:使用 AppArmor 实现应用限制........................................................... 210
11.6.1 AppArmor 的安装 ....................................................................................... 210
11.6.2 应用程序剖析 ............................................................................................. 213
11.7 总结 ........................................................................................................................... 217
第 12 章 系统监控 218
12.1 出于正当理由的监控 ............................................................................................... 218
12.2 监控关键指标 ........................................................................................................... 219
12.2.1 用户交互与访问控制 ................................................................................. 220
12.2.2 通信 ............................................................................................................. 220
12.2.3 应用行为 ..................................................................................................... 221
12.2.4 系统行为 ..................................................................................................... 222
12.2.5 基于风险的监控 ......................................................................................... 222
12.3 设计监控方案 ........................................................................................................... 223
12.3.1 嵌入式系统面临的挑战 ............................................................................. 223
12.3.2 设备端日志记录过程的监控 ..................................................................... 225
12.3.3 集中式日志分析与治理 ............................................................................. 225
12.4 案例研究:STM32MP157F 设备事件日志记录 ................................................... 226
12.4.1 基于 journald 的用户会话监控 .................................................................. 226
12.4.2 使用 auditd 进行内核事件监控 ................................................................. 227
12.4.3 服务与应用程序事件日志记录 ................................................................. 230
12.4.4 日志记录到远程服务器 ............................................................................. 231
12.5 总结 ........................................................................................................................... 232
后记 233