第1章 绪论 1
1.1 嵌入式软件的特征 1
1.1.1 嵌入式计算机控制系统 1
1.1.2 嵌入式软件的特征分析 2
1.2 软件安全性的概念 3
1.2.1 软件失效安全性的概念 3
1.2.2 软件安全性与系统安全性之间的关系 4
1.2.3 软件安全性保证的定义 5
1.3 安全关键嵌入式软件保证技术现状及问题 6
1.3.1 现有嵌入式软件安全性问题案例分析 6
1.3.2 嵌入式软件安全性特征分析 11
1.3.3 嵌入式软件安全性保证技术发展现状 12
1.4 小结 22
参考文献 22
第2章 安全关键嵌入式软件开发过程保证体系 23
2.1 嵌入式软件安全保证工程 23
2.2 安全关键嵌入式软件安全性保证体系 25
2.2.1 体系构建 25
2.2.2 体系框架剪裁方法 29
2.2.3 嵌入式软件开发过程一致性追踪 31
2.2.4 基于工程实践的安全关键软件检查模型 33
2.3 小结 34
参考文献 35
第3章 安全关键嵌入式软件需求分析 36
3.1 软件需求分析的定义及嵌入式软件需求分析 36
3.2 嵌入式软件安全需求工程 42
3.2.1 嵌入式软件安全需求分析的必要性 43
3.2.2 软件安全需求工程 46
3.2.3 软件安全性需求提取 48
3.3 嵌入式软件安全需求分析技术 51
3.3.1 软件安全性需求BDA分析技术 53
3.3.2 软件需求分析的形式化分析技术 57
3.3.3 软件需求中的一致性追踪 63
3.3.4 软件需求检查单 64
3.4 小结 65
参考文献 66
第4章 安全关键软件设计分析 67
4.1 软件安全性分析设计 68
4.1.1 软件安全性设计原则 68
4.1.2 软件体系结构的安全性设计 69
4.1.3 软件安全关键部件/模块/单元的设计 74
4.1.4 软件容错和容失效的安全性设计 77
4.1.5 软件安全性设计的其他考虑 80
4.2 软件设计产品的安全性分析验证 83
4.2.1 设计产品的安全性分析验证 84
4.2.2 软件需求安全性分析的更新 88
4.2.3 软件需求设计的一致性追踪分析 88
4.2.4 软件设计变更的安全性分析 89
4.3 小结 90
参考文献 90
第5章 安全关键软件的实现 91
5.1 软件实现的安全编程要求 92
5.1.1 编程语言 92
5.1.2 编程方法 93
5.1.3 编码规范 93
5.1.4 代码复杂性控制 99
5.1.5 代码效率保证 99
5.2 代码的安全性分析验证 100
5.2.1 静态分析 100
5.2.2 单元测试 102
5.2.3 代码审查 104
5.2.4 形式化分析 105
5.2.5 FTA与FMEA分析 105
5.2.6 与设计的一致性追踪分析 105
5.2.7 代码变更的安全性分析 106
5.2.8 运行时错误分析 106
5.3 小结 108
参考文献 108
第6章 安全关键嵌入式软件测试 109
6.1 安全关键嵌入式软件安全性测试流程 110
6.1.1 安全关键嵌入式软件测试的特点 110
6.1.2 软件安全性测试过程 111
6.1.3 安全性测试要求 114
6.2 安全关键嵌入式软件安全性测试技术 120
6.2.1 软件故障注入技术与工具 121
6.2.2 软件运行时错误检测技术与工具 124
6.2.3 软件逆向分析技术与工具 130
6.2.4 基于数据流分析的测试用例生成技术与工具 134
6.3 小结 135
参考文献 136
第7章 技术发展展望 137
7.1 可信软件需求分析技术发展展望 137
7.2 安全关键软件设计分析技术展望 138
7.3 安全关键软件实现技术展望 139
7.4 安全测试技术发展展望 139
参考文献 141
附录 142
A1 安全关键软件检查模型 142
A1.1 嵌入式软件工程化检查模型 142
A1.2 嵌入式软件测试检查模型 145
A1.3 嵌入式软件安全性专项检查模型 146
A1.4 FPGA安全开发检查模型 149
A2 软件安全需求明细的确定 155
A2.1 设计与开发过程的需求 155
A2.2 系统设计需求 155
A2.3 计算系统环境需求 159
A2.4 自检设计需求 160
A2.5 安全关键计算系统功能保护需求 160
A2.6 接口设计需求 161
A2.7 用户界面 162
A2.8 关键性定时和中断功能 163
A2.9 软件设计与开发需求 164
A2.10 软件维护需求 166
A2.11 软件分析与测试 167
A2.12 特殊软件安全需求 168