书籍详情
软件安全保障体系架构
作者:杨元原 等
出版社:电子工业出版社
出版时间:2022-04-01
ISBN:9787121431326
定价:¥98.00
购买这本书可以去
内容简介
本书从软件安全保障的主要思路和要点出发,详细介绍了软件安全开发生命周期过程中需要考虑的安全要素。全书共9章,主要包括:第1章 综述;第2章 软件安全保障概念;第3章 安全需求和威胁建模;第4章 安全设计原则;第5章 基于组件的软件工程;第6章 安全编码;第7章 软件安全测试;第8章 安全交付和维护;第9章 通用评估准则与软件安全保障等内容。
作者简介
杨元原,公安部第三研究所副研究员,2011年毕业于西安电子科技大学密码学专业,博士。长期从事信息安全领域的科研、测评工作,通用评估准则团队负责人。曾负责/核心参与编制信息安全相关国家/行业标准10余项,发表SCI/EI论文10余篇,授权专利多项。
目录
第1章 综述 1
1.1 编写背景 1
1.2 编写目的 4
1.3 本书结构 5
第2章 软件安全保障概念 7
2.1 软件工程 7
2.1.1 软件工程概述 7
2.1.2 软件工程基本原理 9
2.1.3 软件工程的特点 11
2.1.4 软件生命周期及生命周期模型 12
2.2 软件质量和软件质量保障 17
2.2.1 软件质量 17
2.2.2 软件质量保障 19
2.3 软件安全 21
2.3.1 信息与信息安全 21
2.3.2 软件安全概述 26
2.3.3 安全功能软件与安全软件 29
2.3.4 软件安全与硬件安全 30
2.3.5 信息系统安全与软件安全 31
2.4 软件安全保障 33
2.5 影响软件安全的要素 34
2.6 软件面临的威胁 39
2.6.1 软件漏洞的发掘 40
2.6.2 造成软件漏洞的原因 43
2.6.3 漏洞避免与安全性 45
2.6.4 通用软件漏洞数据库 46
第3章 安全需求和威胁建模 48
3.1 需求的定义与分类 48
3.1.1 软件需求 48
3.1.2 软件需求分类 50
3.1.3 软件安全需求 52
3.2 否定性和非功能性安全需求 53
3.3 安全需求的来源 55
3.4 安全需求的验证 57
3.5 安全建模方法 58
3.5.1 软件安全建模 58
3.5.2 威胁建模 60
第4章 安全设计原则 78
4.1 安全设计思想和方法 78
4.1.1 安全设计思想 78
4.1.2 安全设计方法 80
4.2 安全架构 82
4.3 安全设计原则 83
4.3.1 通用原则1:减少关键组件的数量 83
4.3.2 通用原则2:避免暴露薄弱组件和关键组件 88
4.3.3 通用原则3:减少攻击者破坏的途径 93
4.4 执行环境安全 99
4.4.1 环境等级划分:约束和隔离机制 100
4.4.2 应用程序框架 104
第5章 基于组件的软件工程 106
5.1 基于模块的软件设计 106
5.1.1 软件模块化 106
5.1.2 模块化设计的安全原则 108
5.2 COTS和OSS组件的安全问题 110
5.2.1 缺乏可见性问题 110
5.2.2 软件来源和安装问题 111
5.2.3 安全假设的有效性 113
5.2.4 休眠代码、死代码和恶意代码 113
5.3 组件的安全评估 114
5.3.1 组件的安全评估步骤 115
5.3.2 组件相关问题 117
5.4 组件的集成 117
5.5 基于组件的安全维护 118
第6章 安全编码 119
6.1 安全编码原则和实践 119
6.1.1 保持代码简洁性 119
6.1.2 遵循安全的编码指南 120
6.1.3 使用一致的编码风格 121
6.1.4 保证代码的可追溯性、可重用性和可维护性 121
6.1.5 资源分配 121
6.1.6 尽量清除状态信息 122
6.1.7 避免未经授权的特权升级 122
6.1.8 使用一致的命名规则 122
6.1.9 谨慎使用封装 123
6.1.10 权衡攻击模式 124
6.1.11 输入验证 125
6.1.12 输出过滤和“净化” 129
6.1.13 避免安全冲突 129
6.1.14 代码审查 130
6.1.15 少反馈及检查返回 132
6.1.16 会话管理及配置参数管理 133
6.1.17 安全启动 134
6.1.18 并发控制 134
6.2 异常处理 135
6.2.1 异常识别及事件监视器 136
6.2.2 异常和失败处理 137
6.2.3 核心转储 139
6.3 安全存储和缓存管理 139
6.4 进程间通信 141
6.5 特定语言的安全问题 141
6.6 安全编码和编译工具 145
6.6.1 编译器安全检查和执行 145
6.6.2 安全的软件库 148
6.6.3 运行错误检查和安全执行 148
6.6.4 代码混淆 149
第7章 软件安全测试 150
7.1 软件测试和软件安全测试 151
7.1.1 软件测试 151
7.1.2 软件安全测试 156
7.1.3 软件测试和软件安全测试的关系 163
7.2 测试计划 164
7.2.1 测试环境和测试要求 164
7.2.2 测试时机 165
7.3 软件安全测试技术 168
7.3.1 白盒和灰盒测试技术 168
7.3.2 黑盒测试技术 172
7.4 重要的软件安全测试点 179
7.4.1 输入验证测试 179
7.4.2 缓冲区溢出测试 180
7.4.3 SQL注入缺陷控制测试 180
7.4.4 XSS脚本攻击控制测试 181
7.4.5 抗抵赖控制测试 181
7.4.6 失效控制测试 182
7.4.7 优先权提升控制测试 183
7.5 解释和使用测试结果 183
第8章 安全交付和维护 185
8.1 分发前的准备 185
8.2 安全分发 190
8.3 安全安装和配置 191
8.3.1 初始化文件安全 192
8.3.2 安全假设验证 193
8.3.3 删除所有未使用的文件 193
8.3.4 默认账户及口令更改 194
8.3.5 删除未使用的默认账户 194
8.3.6 执行环境“锁定” 195
8.3.7 设置默认安装模块 196
8.3.8 配置应用安全策略 196
8.3.9 启用小用户身份 197
8.3.10 开启应用日志审计 197
8.3.11 数据备份 197
8.4 安全维护 197
8.4.1 漏洞管理 197
8.4.2 软件老化 199
第9章 通用评估准则与软件安全保障 201
9.1 通用评估准则的发展历史 201
9.2 通用评估准则的组成和重要概念 203
9.2.1 TOE的概念 205
9.2.2 安全目标和保护轮廓 205
9.3 安全保障要求与软件安全保障 206
附录A 术语定义 208
参考文献 216
1.1 编写背景 1
1.2 编写目的 4
1.3 本书结构 5
第2章 软件安全保障概念 7
2.1 软件工程 7
2.1.1 软件工程概述 7
2.1.2 软件工程基本原理 9
2.1.3 软件工程的特点 11
2.1.4 软件生命周期及生命周期模型 12
2.2 软件质量和软件质量保障 17
2.2.1 软件质量 17
2.2.2 软件质量保障 19
2.3 软件安全 21
2.3.1 信息与信息安全 21
2.3.2 软件安全概述 26
2.3.3 安全功能软件与安全软件 29
2.3.4 软件安全与硬件安全 30
2.3.5 信息系统安全与软件安全 31
2.4 软件安全保障 33
2.5 影响软件安全的要素 34
2.6 软件面临的威胁 39
2.6.1 软件漏洞的发掘 40
2.6.2 造成软件漏洞的原因 43
2.6.3 漏洞避免与安全性 45
2.6.4 通用软件漏洞数据库 46
第3章 安全需求和威胁建模 48
3.1 需求的定义与分类 48
3.1.1 软件需求 48
3.1.2 软件需求分类 50
3.1.3 软件安全需求 52
3.2 否定性和非功能性安全需求 53
3.3 安全需求的来源 55
3.4 安全需求的验证 57
3.5 安全建模方法 58
3.5.1 软件安全建模 58
3.5.2 威胁建模 60
第4章 安全设计原则 78
4.1 安全设计思想和方法 78
4.1.1 安全设计思想 78
4.1.2 安全设计方法 80
4.2 安全架构 82
4.3 安全设计原则 83
4.3.1 通用原则1:减少关键组件的数量 83
4.3.2 通用原则2:避免暴露薄弱组件和关键组件 88
4.3.3 通用原则3:减少攻击者破坏的途径 93
4.4 执行环境安全 99
4.4.1 环境等级划分:约束和隔离机制 100
4.4.2 应用程序框架 104
第5章 基于组件的软件工程 106
5.1 基于模块的软件设计 106
5.1.1 软件模块化 106
5.1.2 模块化设计的安全原则 108
5.2 COTS和OSS组件的安全问题 110
5.2.1 缺乏可见性问题 110
5.2.2 软件来源和安装问题 111
5.2.3 安全假设的有效性 113
5.2.4 休眠代码、死代码和恶意代码 113
5.3 组件的安全评估 114
5.3.1 组件的安全评估步骤 115
5.3.2 组件相关问题 117
5.4 组件的集成 117
5.5 基于组件的安全维护 118
第6章 安全编码 119
6.1 安全编码原则和实践 119
6.1.1 保持代码简洁性 119
6.1.2 遵循安全的编码指南 120
6.1.3 使用一致的编码风格 121
6.1.4 保证代码的可追溯性、可重用性和可维护性 121
6.1.5 资源分配 121
6.1.6 尽量清除状态信息 122
6.1.7 避免未经授权的特权升级 122
6.1.8 使用一致的命名规则 122
6.1.9 谨慎使用封装 123
6.1.10 权衡攻击模式 124
6.1.11 输入验证 125
6.1.12 输出过滤和“净化” 129
6.1.13 避免安全冲突 129
6.1.14 代码审查 130
6.1.15 少反馈及检查返回 132
6.1.16 会话管理及配置参数管理 133
6.1.17 安全启动 134
6.1.18 并发控制 134
6.2 异常处理 135
6.2.1 异常识别及事件监视器 136
6.2.2 异常和失败处理 137
6.2.3 核心转储 139
6.3 安全存储和缓存管理 139
6.4 进程间通信 141
6.5 特定语言的安全问题 141
6.6 安全编码和编译工具 145
6.6.1 编译器安全检查和执行 145
6.6.2 安全的软件库 148
6.6.3 运行错误检查和安全执行 148
6.6.4 代码混淆 149
第7章 软件安全测试 150
7.1 软件测试和软件安全测试 151
7.1.1 软件测试 151
7.1.2 软件安全测试 156
7.1.3 软件测试和软件安全测试的关系 163
7.2 测试计划 164
7.2.1 测试环境和测试要求 164
7.2.2 测试时机 165
7.3 软件安全测试技术 168
7.3.1 白盒和灰盒测试技术 168
7.3.2 黑盒测试技术 172
7.4 重要的软件安全测试点 179
7.4.1 输入验证测试 179
7.4.2 缓冲区溢出测试 180
7.4.3 SQL注入缺陷控制测试 180
7.4.4 XSS脚本攻击控制测试 181
7.4.5 抗抵赖控制测试 181
7.4.6 失效控制测试 182
7.4.7 优先权提升控制测试 183
7.5 解释和使用测试结果 183
第8章 安全交付和维护 185
8.1 分发前的准备 185
8.2 安全分发 190
8.3 安全安装和配置 191
8.3.1 初始化文件安全 192
8.3.2 安全假设验证 193
8.3.3 删除所有未使用的文件 193
8.3.4 默认账户及口令更改 194
8.3.5 删除未使用的默认账户 194
8.3.6 执行环境“锁定” 195
8.3.7 设置默认安装模块 196
8.3.8 配置应用安全策略 196
8.3.9 启用小用户身份 197
8.3.10 开启应用日志审计 197
8.3.11 数据备份 197
8.4 安全维护 197
8.4.1 漏洞管理 197
8.4.2 软件老化 199
第9章 通用评估准则与软件安全保障 201
9.1 通用评估准则的发展历史 201
9.2 通用评估准则的组成和重要概念 203
9.2.1 TOE的概念 205
9.2.2 安全目标和保护轮廓 205
9.3 安全保障要求与软件安全保障 206
附录A 术语定义 208
参考文献 216
猜您喜欢