第1部分 数据库安全 1
第1章 数据库安全问题 3
1.1 数据库面临的攻击 4
1.1.1 攻击的类型 4
1.1.2 针对机密性的攻击 5
1.1.3 针对完整性的攻击 6
1.1.4 针对可用性的攻击 8
1.1.5 威胁模型 9
1.2 保护数据库安全的外部要求 11
1.2.1 法律法规 12
1.2.4 声誉损害 15
1.2.3 贸易法规 15
1.2.2 业务合规性 15
1.3 本章小结 16
第2章 利用密码技术保护数据库 17
2.1 简单复习数据库知识 17
2.2 密码学是什么 19
2.2.1 对称加密算法 20
2.2.2 公用密钥加密 21
2.2.3 加密哈希算法 22
2.3 密码学的应用 23
2.3.1 保护机密性 23
2.3.2 保证完整性 25
2.5 密码攻击 27
2.4 密码风险 27
2.6 数据混淆 31
2.7 透明加密 32
2.8 本章小结 34
第2部分 密码基础设施 35
第3章 密码基础设施概述 37
3.1 应用系统架构 38
3.2 密码系统架构 40
3.3 密钥 42
3.3.1 密钥分离 42
3.3.2 密钥族 43
3.3.3 密钥生命周期 46
3.3.4 密钥范围 48
3.3.5 密钥疲劳 51
3.3.6 密钥迁移 53
3.3.7 密钥更换及其时间安排 54
3.3.8 密钥别名和密钥清单 55
3.4 本章小结 55
第4章 密码引擎和算法 57
4.1 本地引擎 58
4.2 专用引擎 60
4.3 密码算法 62
4.3.1 对称算法 63
4.3.2 操作模式 64
4.4 本章小结 71
第5章 密钥:库、清单和管理器 73
5.1 密钥库 73
5.1.1 密钥库的保护 75
5.1.2 密钥的备份与恢复 78
5.2 密钥清单 79
5.3 密钥管理器 83
5.3.1 密钥区域 83
5.3.2 密钥管理 85
5.4 本章小结 86
第6章 密码提供者和使用者 87
6.1 提供者 88
6.2 使用者 90
6.3 本章小结 92
第3部分 密码项目 93
第7章 管理密码项目 95
7.1 安全意识 96
7.2 客户参与 97
7.3 项目范围 99
7.4 项目角色 100
7.5 本章小结 102
第8章 增强需求的安全性 103
8.1 安全需求、策略和标准 105
8.2.1 访问控制 106
8.2 一般需求 106
8.2.2 数据过滤 107
8.2.3 日志与监控 108
8.2.4 常见的威胁 109
8.2.5 信息机密性 110
8.3 需求复查 111
8.4 确定密码标准 113
8.5 数据分级 114
8.6 本章小结 115
第9章 增强设计的安全性 117
9.1 数据流图 118
9.2.1 尽量减少受攻击区域 120
9.2 设计指南 120
9.2.2 尽可能指定最小权限 121
9.2.3 职责分离 122
9.2.4 纵深防御 123
9.2.5 安全地处理失效问题 124
9.2.6 默认安全 124
9.2.7 规划安全保护策略 125
9.3 威胁建模 125
9.4 安全模式 127
9.5 设计密码系统 129
9.6 本章小结 132
第10章 安全开发 133
10.1.1 检查所有输入与输出数据的合法性 134
10.1 安全开发的指导原则 134
10.1.2 以最小权限运行程序 135
10.1.3 清理内存中的敏感数据 137
10.1.4 记录所有安全事件 137
10.1.5 检查源代码和可执行程序 138
10.1.6 针对安全性的单元测试 139
10.1.7 使用开发语言或平台的安全指南 140
10.2 本章小结 141
第11章 测试 143
11.1 安全功能测试 144
11.1.1 访问控制 144
11.1.2 数据过滤 145
11.1.3 日志和监控 146
11.1.4 常见威胁 147
11.1.5 信息机密性 147
11.1.6 使用检查来替代测试 148
11.2 穿透测试 148
11.3 本章小结 152
第12章 部署、保护和停止运行 155
12.1 部署 155
12.2 保护 157
12.3 停止运行 159
12.4 本章小结 160
第4部分 示例代码 161
第13章 示例程序说明 163
13.1 工具类和通用服务 165
13.2 引擎与密钥库示例 168
13.3 本章小结 169
第14章 密钥库 171
14.1 本地密钥 172
14.2 本地密钥存储库 176
14.2.1 生成密钥加密密钥 176
14.2.2 在本地密钥存储库中生成一个密钥 178
14.2.3 对密钥进行加密 179
14.2.4 将密钥保存到存储库中 182
14.2.5 更换密钥加密密钥 183
14.3 访问本地密钥 186
14.4 本章小结 188
第15章 密钥清单 189
15.1 密钥别名 189
15.1.1 创建新的密钥别名 193
15.1.2 从清单中读取密钥别名 194
15.1.3 读取当前活动密钥 196
15.1.4 保存密钥别名 198
15.1.5 确定密钥的状态 199
15.1.6 优化状态检查 201
15.2 本章小结 202
16.1 密钥管理工具——KeyTool 203
第16章 密钥管理者 203
16.1.1 与KeyTool交互 204
16.1.2 生成密钥加密密钥 208
16.1.3 将新的密钥装载到密钥存储库中 208
16.1.4 查看密钥信息 209
16.1.5 停用密钥 211
16.1.6 销毁密钥 212
16.1.7 更新等待启用的密钥 214
16.2 本章小结 218
第17章 引擎 219
17.1 本地引擎 219
17.2 本章小结 222
第18章 票据和提供者 223
18.1 加密请求和解密结果 223
18.2 票据 224
18.2.1 密码票据 225
18.2.2 复合票据 226
18.3 提供者 227
18.3.1 对业务数据进行加密 228
18.3.2 对业务数据进行解密 229
18.3.3 更换密钥 230
18.4 本章小结 231
第19章 使用者 233
19.1 客户信息 235
19.2 信用卡信息 237
19.3 客户管理工具 239
19.3.1 使用客户管理工具 239
19.3.2 增加客户 241
19.3.3 查看客户信息 244
19.3.4 查找客户 248
19.3.5 更换密钥 250
19.4 本章小结 254
第20章 异常 255
20.1 别名异常 255
20.2 非法密钥状态异常 255
20.3 无法找到密钥异常 256
20.4 无法找到当前活动密钥异常 256
20.5 多个别名ID异常 257
20.6 无法找到客户异常 258
20.7 本章小结 258
第21章 示例系统的运行 259
21.1 设置密钥 259
21.1.1 生成密钥加密密钥 259
21.1.2 创建新的密钥 260
21.2 操作客户信息 262
21.3 更换密钥 264
21.4 更换密钥加密密钥 268
21.5 本章小结 269
附录 词汇表 271
参考文献 273