| 作者 |
| 郑云文帅峰云 黄腾 宋洋 |
| 丛书名 |
| 网络空间安全技术丛书 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9781911011711 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 ---------------------------数据安全架构设计与实战--------------------------- 本书系统性地介绍数据安全架构的设计与实践,融入了作者多年在安全领域积累的实践经验。全书分四大部分,共20章。第一部分介绍安全架构的基础知识,内容包括安全、数据安全、安全架构、5A方法论、CIA等基本概念,为后续论述奠定基础。第二部分介绍产品安全架构,内容包括:身份认证、授权、访问控制、审计、资产保护等,讲解如何从源头设计来保障数据安全和隐私安全,防患于未然。第三部分介绍安全技术体系架构,内容包括:安全技术架构、网络和通信层安全架构、设备和主机层安全架构、应用和数据层安全架构、安全架构案例分析等。第四部分介绍数据安全与隐私保护治理,内容包括:数据安全治理、数据安全政策文件体系、隐私保护基础与增强技术、GRC方案、数据安全与隐私保护的统一等。 ---------------------------手机安全和可信应用开发指南:TrustZone与OP-TEE技术详解--------------------------- TrustZone技术是一种提高ARM芯片安全性的技术,OP-TEE是基于ARM的TrustZone技术搭建的可信执行环境。两者的结合可为系统软件提供硬件级别的安全保护。 本书主要分为4篇,总计25章,第一篇介绍了TrustZone技术的背景、实现原理、系统基本框架以及OP-TEE开发环境的搭建;第二篇分析了OP-TEE在REE和TEE中各组件的作用和联系,为将OP-TEE集成到基于ARMv7/ARMv8处理器的开发平台打下基础;第三篇详细介绍OP-TEE内核的中断处理、进程管理和通信等主要功能的实现原理,使读者对TEE OS的架构设计有进一步的认识;第四篇介绍基于OP-TEE在加密、解密、安全存储、在线支付等方面的实际应用,以及如何开发基于OP-TEE的可信应用程序和安全驱动软件。 本书适合以ARM芯片为核心的手机或嵌入式系统功能与应用开发人员和技术支持人员,以及有志于研究和学习ARM芯片安全技术的大专院校学生。 |
| 目录 |
---------------------------数据安全架构设计与实战--------------------------- 对本书的赞誉 序 一 序 二 前 言 第一部分 安全架构基础 第1章 架构 2 1.1 什么是架构 2 1.2 架构关注的问题 4 第2章 安全架构 5 2.1 什么是安全 5 2.2 为什么使用“数据安全”这个术语 7 2.3 什么是安全架构 10 2.4 安全架构5A方法论 11 2.5 安全架构5A与CIA的关系 13 第二部分 产品安全架构 第3章 产品安全架构简介 16 3.1 产品安全架构 16 3.2 典型的产品架构与框架 17 3.2.1 三层架构 17 3.2.2 B/S架构 18 3.2.3 C/S架构 19 3.2.4 SOA及微服务架构 19 3.2.5 典型的框架 20 3.3 数据访问层的实现 21 3.3.1 自定义DAL 21 3.3.2 使用ORM 22 3.3.3 使用DB Proxy 23 3.3.4 配合统一的数据服务简化DAL 23 第4章 身份认证:把好第一道门 24 4.1 什么是身份认证 24 4.2 如何对用户进行身份认证 26 4.2.1 会话机制 27 4.2.2 持续的消息认证机制 29 4.2.3 不同应用的登录状态与超时管理 30 4.2.4 SSO的典型误区 31 4.3 口令面临的风险及保护 32 4.3.1 口令的保护 33 4.3.2 口令强度 33 4.4 前端慢速加盐散列案例 34 4.5 指纹、声纹、虹膜、面部识别的数据保护 35 4.6 MD5、SHA1还能用于口令保护吗 36 4.6.1 单向散列算法简介 36 4.6.2 Hash算法的选用 38 4.6.3 存量加盐HASH的安全性 38 4.7 后台身份认证 39 4.7.1 基于用户Ticket的后台身份认证 40 4.7.2 基于AppKey的后台身份认证 41 4.7.3 基于非对称加密技术的后台身份认证 41 4.7.4 基于HMAC的后台身份认证 42 4.7.5 基于AES-GCM共享密钥的后台身份认证 44 4.8 双因子认证 44 4.8.1 手机短信验证码 44 4.8.2 TOTP 44 4.8.3 U2F 45 4.9 扫码认证 45 4.10 小结与思考 46 第5章 授权:执掌大权的司令部 48 5.1 授权不严漏洞简介 48 5.2 授权的原则与方式 49 5.2.1 基于属性的授权 49 5.2.2 基于角色的授权 50 5.2.3 基于任务的授权 51 5.2.4 基于ACL的授权 51 5.2.5 动态授权 52 5.3 典型的授权风险 52 5.3.1 平行越权 52 5.3.2 垂直越权 53 5.3.3 诱导授权 53 5.3.4 职责未分离 53 5.4 授权漏洞的发现与改进 54 5.4.1 交叉测试法 54 5.4.2 漏洞改进 54 第6章 访问控制:收敛与放行的执行官 56 6.1 典型的访问控制策略 56 6.1.1 基于属性的访问控制 57 6.1.2 基于角色的访问控制 57 6.1.3 基于任务的访问控制 57 6.1.4 基于ACL的访问控制 58 6.1.5 基于专家知识的访问控制 58 6.1.6 基于IP的辅助访问控制 59 6.1.7 访问控制与授权的关系 61 6.2 不信任原则与输入参数的访问控制 61 6.2.1 基于身份的信任原则 61 6.2.2 执行边界检查防止缓冲区溢出 62 6.2.3 参数化查询防止SQL注入漏洞 62 6.2.4 内容转义及CSP防跨站脚本 68 6.2.5 防跨站请求伪造 70 6.2.6 防跨路径操纵 75 6.2.7 防SSRF 76 6.2.8 上传控制 77 6.2.9 Method控制 78 6.3 防止遍历查询 79 第7章 可审计:事件追溯最后一环 81 7.1 为什么需要可审计 81 7.2 操作日志内容 82 7.3 操作日志的保存与清理 82 7.3.1 日志存储位置 82 7.3.2 日志的保存期限 83 第8章 资产保护:数据或资源的贴身保镖 84 8.1 数据安全存储 84 8.1.1 什么是存储加密 84 8.1.2 数据存储需要加密吗 87 8.1.3 加密后如何检索 88 8.1.4 如何加密结构化数据 88 8.2 数据安全传输 89 8.2.1 选择什么样的HTTPS证书 91 8.2.2 HTTPS的部署 92 8.2.3 TLS质量与合规 93 8.3 数据展示与脱敏 94 8.3.1 不脱敏的风险在哪里 94 8.3.2 脱敏的标准 94 8.3.3 脱敏在什么时候进行 94 8.3.4 业务需要使用明文信息怎么办 95 8.4 数据完整性校验 95 第9章 业务安全:让产品自我免疫 97 9.1 一分钱漏洞 97 9.2 账号安全 99 9.2.1 防撞库设计 99 9.2.2 防弱口令尝试 99 9.2.3 防账号数据库泄露 100 9.2.4 防垃圾账号 100 9.2.5 防账号找回逻辑缺陷 100 9.3 B2B交易安全 101 9.4 产品防攻击能力 103 第三部分 安全技术体系架构 第10章 安全技术体系架构简介 106 10.1 安全技术体系架构的建设性思维 106 10.2 安全产品和技术的演化 107 10.2.1 安全产品的“老三样” 107 10.2.2 网络层延伸 107 10.2.3 主机层延伸 108 10.2.4 应用层延伸 108 10.2.5 安全新技术 108 10.3 安全技术体系架构的二维模型 109 10.4 风险管理的“三道防线” 110 10.5 安全技术体系强化产品安全 112 10.5.1 网络部署架构 112 10.5.2 主机层安全 113 10.5.3 应用层安全 115 10.5.4 数据层安全 117 第11章 网络和通信层安全架构 119 11.1 简介 119 11.2 网络安全域 120 11.2.1 最简单的网络安全域 120 11.2.2 最简单的网络安全域改进 121 11.2.3 推荐的网络安全域 121 11.2.4 从有边界网络到无边界网络 122 11.2.5 网络安全域小结 124 11.3 网络接入身份认证 125 11.4 网络接入授权 127 11.5 网络层访问控制 127 11.5.1 网络准入控制 127 11.5.2 生产网络主动连接外网的访问控制 129 11.5.3 网络防火墙的管理 130 11.5.4 内部网络值得信任吗 131 11.5.5 运维通道的访问控制 132 11.6 网络层流量审计 132 11.7 网络层资产保护:DDoS缓解 133 11.7.1 DDoS简介 133 11.7.2 DDoS缓解措施 134 11.7.3 专业抗DDoS方案 134 第12章 设备和主机层安全架构 136 12.1 简介 136 12.2 身份认证与账号安全 136 12.2.1 设备/主机身份认证的主要风险 137 12.2.2 动态口令 137 12.2.3 一次一密认证方案 137 12.2.4 私有协议后台认证方案 138 12.3 授权与访问控制 138 12.3.1 主机授权与账号的访问控制 138 12.3.2 主机服务监听地址 139 12.3.3 跳板机与登录来源控制 140 12.3.4 自动化运维 141 12.3.5 云端运维 142 12.3.6 数据传输 142 12.3.7 设备的访问控制 143 12.4 运维审计与主机资产保护 144 12.4.1 打补丁与防病毒软件 144 12.4.2 母盘镜像与容器镜像 145 12.4.3 开源镜像与软件供应链攻击防范 145 12.4.4 基于主机的入侵检测系统 147 第13章 应用和数据层安全架构 150 13.1 简介 150 13.2 三层架构实践 151 13.2.1 B/S架构 152 13.2.2 C/S架构 153 13.3 应用和数据层身份认证 154 13.3.1 SSO身份认证系统 154 13.3.2 业务系统的身份认证 155 13.3.3 存储系统的身份认证 155 13.3.4 登录状态管理与超时管理 156 13.4 应用和数据层的授权管理 156 13.4.1 权限管理系统 156 13.4.2 权限管理系统的局限性 157 13.5 应用和数据层的访问控制 158 13.5.1 统一的应用网关接入 158 13.5.2 数据库实例的安全访问原则 159 13.6 统一的日志管理平台 159 13.7 应用和数据层的资产保护 160 13.7.1 KMS与存储加密 160 13.7.2 应用网关与HTTPS 164 13.7.3 WAF(Web应用防火墙) 165 13.7.4 CC攻击防御 167 13.7.5 RASP 168 13.7.6 业务风险控制 169 13.8 客户端数据安全 171 13.8.1 客户端敏感数据保护 172 13.8.2 安全传输与防劫持 172 13.8.3 客户端发布 174 第14章 安全架构案例与实战 176 14.1 零信任与无边界网络架构 176 14.1.1 无边界网络概述 177 14.1.2 对人的身份认证(SSO及U2F) 178 14.1.3 对设备的身份认证 178 14.1.4 最小授权原则 178 14.1.5 设备准入控制 179 14.1.6 应用访问控制 179 14.1.7 借鉴与改进 180 14.2 统一HTTPS接入与安全防御 181 14.2.1 原理与架构 181 14.2.2 应用网关与HTTPS 182 14.2.3 WAF与CC防御 183 14.2.4 私钥数据保护 183 14.2.5 负载均衡 184 14.2.6 编码实现 184 14.2.7 典型特点 185 14.3 存储加密实践 186 14.3.1 数据库字段加密 186 14.3.2 数据库透明加密 186 14.3.3 网盘文件加密方案探讨 187 14.3.4 配置文件口令加密 188 14.4 最佳实践小结 189 14.4.1 统一接入 189 14.4.2 收缩防火墙的使用 190 14.4.3 数据服务 190 14.4.4 建立KMS 191 14.4.5 全站HTTPS 191 14.4.6 通用组件作为基础设施 191 14.4.7 自动化运维 192 第四部分 数据安全与隐私保护治理 第15章 数据安全治理 194 15.1 治理简介 194 15.1.1 治理与管理的区别 194 15.1.2 治理三要素 196 15.2 数据安全治理简介 196 15.2.1 数据安全治理的要素 197 15.2.2 数据安全治理与数据安全管理的关系 201 15.3 安全项目管理 203 15.4 安全运营管理 204 15.5 合规与风险管理 208 15.6 安全开发生命周期管理(SDL) 208 15.6.1 SQL注入漏洞案例 209 15.6.2 SDL关键检查点与检查项 211 15.6.3 SDL核心工作 212 15.7 风险管理 212 15.7.1 风险识别或评估 212 15.7.2 风险度量或成熟度分析 216 15.7.3 风险处置与收敛跟踪 220 15.7.4 风险运营工具和技术 221 15.8 PDCA方法论与数据安全治理 224 第16章 数据安全政策文件体系 227 16.1 数据安全文件体系 227 16.1.1 四层文件体系架构简介 228 16.1.2 数据安全四层文件体系 228 16.1.3 标准、规范与管理规定的关系 229 16.1.4 外部法规转为内部文件 231 16.2 数据安全政策总纲 232 16.2.1 数据安全的目标和范围 232 16.2.2 数据安全组织与职责 233 16.2.3 授权原则 233 16.2.4 数据保护原则 234 16.2.5 数据安全外部合规要求 234 16.3 数据安全管理政策 234 16.3.1 数据分级与分类 234 16.3.2 风险评估与定级指南 235 16.3.3 风险管理要求 237 16.3.4 事件管理要求 238 16.3.5 人员管理要求 239 16.3.6 配置和运维管理 242 16.3.7 业务连续性管理 243 16.4 数据安全标准 244 16.4.1 算法与协议标准 244 16.4.2 口令标准 247 16.4.3 产品与组件标准 248 16.4.4 数据脱敏标准 251 16.4.5 漏洞定级标准 251 16.5 数据安全技术规范 252 16.5.1 安全架构设计规范 253 16.5.2 安全开发规范 255 16.5.3 安全运维规范 256 16.5.4 安全配置规范 257 16.6 外部合规认证与测评 259 第17章 隐私保护基础 262 17.1 隐私保护简介 262 17.1.1 典型案例 262 17.1.2 什么是隐私 263 17.1.3 隐私保护与数据安全的关系 264 17.1.4 我需要了解隐私保护吗 264 17.1.5 隐私保护的技术手段 265 17.1.6 合规遵从 265 17.2 GDPR 268 17.2.1 简介 268 17.2.2 两种角色 269 17.2.3 六项原则及问责制 270 17.2.4 处理个人数据的六个法律依据 271 17.2.5 处理儿童数据 271 17.2.6 特殊的数据类型 272 17.2.7 数据主体的权利 272 17.2.8 数据控制者和数据处理者的义务 274 17.2.9 违规与处罚 276 17.3 个人信息安全规范 276 17.3.1 简介 276 17.3.2 个人信息安全原则 277 17.3.3 个人信息的生命周期管理 277 17.4 GAPP框架 279 17.5 ISO 27018 280 第18章 隐私保护增强技术 281 18.1 隐私保护技术初探 281 18.2 去标识化 283 18.2.1 匿名化 283 18.2.2 假名化 284 18.2.3 K-匿名 284 18.3 差分隐私 286 18.3.1 差分隐私原理 286 18.3.2 差分隐私噪声添加机制 288 18.3.3 数值型差分隐私 288 18.3.4 数值型差分隐私的局限性 291 18.3.5 离散型差分隐私 292 18.3.6 差分隐私案例 294 18.3.7 差分隐私实战 294 第19章 GRC与隐私保护治理 297 19.1 风险 297 19.2 GRC简介 298 19.2.1 GRC三领域 299 19.2.2 GRC控制模型 304 19.3 隐私保护治理简介 306 19.4 隐私保护治理GRC实践 307 19.4.1 计划 308 19.4.2 执行 308 19.4.3 检查 311 19.4.4 处理 311 19.5 隐私保护能力成熟度 311 第20章 数据安全与隐私保护的统一 317 20.1 以数据为中心的统一治理 317 20.1.1 统一的数据安全治理 317 20.1.2 统一数据与数据流图 319 20.1.3 统一数据服务 319 20.2 统一的数据安全生命周期管理 320 20.2.1 数据安全生命周期 321 20.2.2 全生命周期的数据主体权利保障 326 20.2.3 典型案例 327 20.3 数据安全治理能力成熟度模型(DSGMM) 334 附录 数据安全架构与治理总结 338 参考文献 340 ---------------------------手机安全和可信应用开发指南:TrustZone与OP-TEE技术详解--------------------------- 推荐序 前言 致谢 第一篇 基础技术篇 第1章 可信执行环境 2 1.1 系统存在的安全问题 2 1.2 TEE如何保护数据安全 2 1.3 现有TEE解决方案 3 1.3.1 智能手机领域的TEE 4 1.3.2 智能电视领域的TEE 4 1.3.3 IoT领域及其他领域的TEE 5 1.4 为什么选择OP-TEE 5 第2章 ARM的TrustZone技术 2.1 TrustZone技术 6 2.1.1 片上系统硬件框架 6 2.1.2 ARMv7架构的TrustZone技术 7 2.1.3 ARMv8架构的TrustZone技术 8 2.2 ARM安全扩展组件 8 2.2.1 AXI总线上安全状态位的扩展 9 2.2.2 AXI-to-APB桥的作用 9 2.2.3 TrustZone地址空间控制组件 9 2.2.4 TrustZone内存适配器组件 10 2.2.5 TrustZone保护控制器组件 11 2.2.6 TrustZone中断控制器组件 12 2.2.7 Cache和MMU的扩展 12 2.3 TrustZone技术对资源隔离的实现 13 2.3.1 中断源的隔离 13 2.3.2 片上RAM和片上ROM的隔离 13 2.3.3 片外DRAM的隔离 13 2.3.4 外围设备的隔离 14 2.4 小结 14 第3章 ARM可信固件 15 3.1 为什么使用ATF 15 3.2 ATF的主要功能 15 3.3 ATF与TEE的关系 15 3.4 小结 16 第4章 OP-TEE运行环境的搭建及编译 17 4.1 获取OP-TEE代码并搭建运行环境 17 4.1.1 OP-TEE开发环境的搭建 17 4.1.2 获取OP-TEE的源代码 17 4.1.3 获取编译OP-TEE的toolchain 18 4.1.4 编译QEMU 19 4.1.5 运行OP-TEE 19 4.1.6 运行xtest和optee_example_hello_world 19 4.2 运行CA和TA示例 19 4.2.1 示例代码的获取和集成 20 4.2.2 和文件创建 21 4.2.3 CA端代码的修改 22 4.2.4 TA端代码的修改 22 4.2.5 TA和CA在OP-TEE的集成 22 4.3 OP-TEE源代码结构 24 4.4 OP-TEE编译 25 4.4.1 编译目标的依赖关系 25 4.4.2 bios.bin镜像的生成过程 27 4.4.3 run-only目标的执行 28 4.5 小结 32 第二篇 系统集成篇 第5章 QEMU运行OP-TEE的启动过程 34 5.1 bios.bin的入口函数 34 5.2 OP-TEE镜像的加载和启动 36 5.3 Linux内核镜像的加载和启动 37 5.4 rootfs的挂载 38 5.5 OP-TEE驱动的启动 38 5.6 tee_supplicant的启动 39 5.7 小结 39 第6章 安全引导功能及ATF的启动过程 40 6.1 安全引导的作用 40 6.2 安全引导的原理 40 6.2.1 ARMv7安全引导的过程 41 6.2.2 ARMv8安全引导的过程 42 6.3 ATF的启动过程 43 6.3.1 ATF中bl1的启动 44 6.3.2 ATF中bl2的启动 49 6.3.3 ATF中bl31的启动 54 6.3.4 ATF中bl32的启动 57 6.3.5 ATF启动过程小结 59 6.4 小结 59 第7章 OP-TEE OS的启动过程 60 7.1 OP-TEE镜像启动过程 60 7.1.1 OP-TEE OS的入口函数 60 7.1.2 OP-TEE的内核初始化过程 60 7.1.3 OP-TEE服务项的启动 67 7.1.4 OP-TEE驱动的挂载 69 7.2 ARM64位与ARM32位OP-TEE启动过程的差异 69 7.3 小结 71 第8章 OP-TEE在REE侧的上层软件 72 8.1 OP-TEE的软件框架 72 8.2 REE侧libteec库提供的接口 73 8.2.1 libteec库提供的接口说明 73 8.2.2 CA调用libteec库中接口的流程 84 8.3 REE侧的守护进程—tee_supplicant 84 8.3.1 tee_supplicant编译生成和自启动 84 8.3.2 tee_supplicant入口函数 85 8.3.3 tee_supplicant存放RPC请求的结构体 87 8.3.4 tee_supplicant中的无限循环 87 8.3.5 tee_supplicant获取TA的RPC请求 89 8.3.6 TA RPC请求的解析 89 8.3.7 RPC请求的处理 90 8.3.8 回复RPC请求 90 8.4 各种RPC请求的处理 91 8.4.1 加载TA镜像 91 8.4.2 操作REE侧的文件系统 92 8.4.3 操作RPMB 93 8.4.4 分配共享内存 93 8.4.5 释放共享内存 94 8.4.6 记录程序执行效率 95 8.4.7 网络套接字操作 97 8.5 小结 97 第9章 REE侧OP-TEE的驱动 98 9.1 OP-TEE驱动模块的编译保存 98 9.2 REE侧OP-TEE驱动的加载 99 9.2.1 设备号和class的初始化 100 9.2.2 optee_driver_init函数 101 9.2.3 挂载驱动的probe操作 101 9.2.4 获取切换到Monitor模式或EL3的接口 103 9.2.5 驱动版本和API版本校验 105 9.2.6 判定OP-TEE是否预留共享内存空间 106 9.2.7 配置驱动与OP-TEE之间的共享内存 106 9.2.8 分配和设置tee0和teepriv0的设备信息结构体变量 109 9.2.9 tee0和teepriv0设备的注册 111 9.2.10 请求队列的初始化 112 9.2.11 使能TEE中共享内存的缓存 112 9.2.12 OP-TEE驱动挂载的总结 113 9.3 REE侧用户空间对驱动的调用过程 113 9.4 OP-TEE驱动中重要的结构体变量 114 9.4.1 OP-TEE驱动的file_operation结构体变量tee_fops 114 9.4.2 tee0设备的tee_driver_ops结构体变量optee_ops 114 9.4.3 teepriv0设备的操作结构体变量optee_supp_ops 115 9.4.4 共享驱动缓存操作变量tee_shm_dma_buf_ops 115 9.5 OP-TEE驱动与OP-TEE之间共享内存的注册和分配 116 9.6 libteec库中的接口在驱动中的实现 117 9.6.1 libteec库中的open操作 117 9.6.2 libteec库中的release操作 118 9.6.3 libteec执行get_version操作 120 9.6.4 libteec库中的open session操作 120 9.6.5 libteec库中的invoke操作 122 9.7 tee_supplicant接口在驱动中的实现 123 9.7.1 接收OP-TEE的RPC请求 124 9.7.2 获取OP-TEE的RPC请求 126 9.7.3 OP-TEE的RPC请求的返回 127 9.8 小结 128 第三篇 OP-TEE内核篇 第10章 ARM核安全态和非安全态间的切换 130 10.1 ARMv7基本知识 130 10.1.1 ARMv7运行模式扩展 130 10.1.2 安全状态位扩展 130 10.1.3 重要寄存器 131 10.1.4 安全监控模式调用的汇编指令 132 10.2 Monitor模式下的处理过程 132 10.2.1 Monitor模式对安全监控模式调用的处理 133 10.2.2 正常世界状态中触发安全监控模式调用的处理过程 134 10.2.3 安全世界状态中触发安全监控模式调用的处理过程 136 10.3 ARMv8基本知识 136 10.3.1 ARM核运行模式的新定义 137 10.3.2 ARMv8 安全状态位扩展 137 10.3.3 寄存器资源 137 10.3.4 安全监控模式调用汇编指令 138 10.4 EL3的处理过程 140 10.4.1 ATF中EL3异常向量表的注册 140 10.4.2 EL3处理安全监控模式调用的流程 140 10.4.3 安全世界状态中触发安全监控模式调用的处理过程 141 10.4.4 正常世界状态中触发安全监控模式调用的处理过程 142 10.4.5 opteed_smc_handler函数 143 10.5 小结 145 第11章 OP-TEE对安全监控模式调用的处理 146 11.1 OP-TEE的线程向量表 146 11.2 ARMv7中Monitor模式对安全监控模式调用的处理 146 11.3 ARMv8中EL3处理安全监控模式调用的实现 147 11.4 OP-TEE对快速安全监控模式调用的处理 148 11.5 OP-TEE对标准安全监控模式调用的处理 150 11.5.1 OP-TEE对RPC请求返回操作的处理 152 11.5.2 OP-TEE对libteec库触发的安全监控模式调用的处理 152 11.6 小结 157 第12章 OP-TEE对中断的处理 158 12.1 系统的中断处理 158 12.2 中断控制器 158 12.2.1 GIC 寄存器 159 12.2.2 ARMv7 SCR寄存器的设定 160 12.2.3 ARMv8 SCR寄存器的设定 160 12.2.4 GICv2架构 163 12.2.5 GICv3架构 163 12.3 异常向量表配置 164 12.3.1 ARMv7中Monitor模式的异常向量表 165 12.3.2 ARMv8中EL3阶段的异常向量表 165 12.3.3 OP-TEE异常向量的配置 167 12.4 OP-TEE的线程向量表 170 12.5 全局handle变量的初始化 170 12.6 ARMv7 Monitor对FIQ事件的处理 172 12.7 ARMv8 EL3阶段对FIQ事件的处理 173 12.8 OP-TEE对FIQ事件的处理 176 12.9 OP-TEE对IRQ事件的处理 177 12.10 小结 180 第13章 OP-TEE对TA操作的各种实现 181 13.1 创建会话在OP-TEE中的实现 181 13.1.1 静态TA的创建会话操作 182 13.1.2 动态TA的创建会话操作 186 13.2 调用TA命令操作在OP-TEE中的实现 191 13.2.1 静态TA的调用命令操作的实现 193 13.2.2 动态TA的调用命令操作实现 194 13.3 关闭会话操作在OP-TEE中的实现 195 13.3.1 静态TA的关闭会话操作 197 13.3.2 动态TA的关闭会话操作 197 13.4 小结 197 第14章 OP-TEE的内存和缓存管理 198 14.1 物理内存和缓存数据的硬件安全保护 198 14.1.1 内存设备安全区域的隔离 198 14.1.2 MMU和缓存中数据的安全隔离 199 14.2 ARM核对内存的访问 200 14.2.1 ARM核获取内存数据的过程 200 14.2.2 获取缓存数据的过程 201 14.2.3 缓存和TLB中条目的一致性 203 14.3 OP-TEE对内存区域的管理 204 14.3.1 OP-TEE中内存区域的类型 204 14.3.2 内存区域编译设置 205 14.4 MMU的初始化和映射页表 206 14.4.1 MMU的初始化入口函数 206 14.4.2 物理地址到虚拟地址表的建立 208 14.4.3 MMU转换页表的创建 211 14.4.4 MMU寄存器配置 212 14.5 OP-TEE内存安全权限检查 213 14.6 系统的共享内存 214 14.6.1 共享内存的配置 215 14.6.2 OP-TEE驱动与OP-TEE之间的共享内存 215 14.6.3 OP-TEE内核空间与用户空间之间的共享内存 216 14.7 数据是否需要写入Cache 217 14.8 小结 218 第15章 OP-TEE中的线程管理 219 15.1 OP-TEE中的线程 219 15.2 线程状态切换 220 15.2.1 Free态到Active态的实现 220 15.2.2 Active态到Suspend态的实现 221 15.2.3 Suspend态到Active态的实现 222 15.2.4 Active态到Free态的实现 222 15.3 线程运行时的资源 223 15.3.1 线程数据结构体 223 15.3.2 OP-TEE分配的内核栈 224 15.3.3 线程运行于用户空间的资源 225 15.3.4 tee_ta_session结构体 226 15.4 线程运行时资源的使用关系 227 15.5 OP-TEE中线程的调度 228 15.6 线程的死锁 228 15.6.1 死锁的原理 229 15.6.2 防止死锁 229 15.7 小结 229 第16章 OP-TEE的系统调用 230 16.1 OP-TEE系统调用的作用 230 16.2 OP-TEE系统调用的实现 230 16.2.1 系统调用的整体流程 230 16.2.2 系统调用的定义 232 16.2.3 系统调用表tee_sv_syacall_table 232 16.3 小结 233 第17章 OP-TEE的IPC机制 234 17.1 IPC机制的作用 234 17.2 IPC机制的原理 234 17.3 IPC的实现 234 17.3.1 TA调用其他TA的实现 235 17.3.2 TA调用系统服务和安全驱动的实现 240 17.3.3 TA对密码学系统服务的调用实现 242 17.3.4 对SE功能模块进行操作的系统服务 246 17.3.5 加载TA镜像的系统服务 247 17.4 小结 247 第四篇 应用开发篇 第18章 TA镜像的签名和加载 250 18.1 TA镜像文件的编译和签名 250 18.1.1 TA镜像文件的编译 250 18.1.2 对TA镜像文件的签名 251 18.2 TA镜像的加载 253 18.2.1 REE侧获取TA镜像文件的内容 253 18.2.2 加载TA镜像的RPC请求 255 18.2.3 RPC请求的发送 256 18.2.4 读取TA镜像文件内容到共享内存 257 18.3 TA镜像合法性的验证 258 18.3.1 验证TA镜像合法性使用的RSA公钥的产生和获取 258 18.3.2 TA镜像文件合法性的检查 260 18.4 加载TA镜像到OP-TEE的用户空间 261 18.5 TA运行上下文的初始化 262 18.6 小结 263 第19章 OP-TEE中的密码学算法 264 19.1 算法使用示例 264 19.1.1 示例代码获取和集成 264 19.1.2 板级编译文件的修改 265 19.1.3 通用编译文件的修改 266 19.1.4 编译运行 267 19.2 OP-TEE中的SHA算法 267 19.2.1 TA中使用SHA算法的实现 267 19.2.2 SHA算法实现接口说明 268 19.3 OP-TEE中的AES算法 269 19.3.1 TA中使用AES算法的实现 269 19.3.2 AES算法实现接口说明 270 19.4 OP-TEE中的RSA算法 273 19.4.1 TA中使用RSA算法的实现 273 19.4.2 RSA算法实现接口说明 274 19.5 小结 277 第20章 OP-TEE的安全存储 278 20.1 安全存储简介 278 20.2 安全存储使用示例 278 20.2.1 示例代码获取和集成 279 20.2.2 板级编译文件的修改 280 20.2.3 通用编译文件的修改 280 20.2.4 编译运行 281 20.3 安全存储功能使用的密钥 281 20.3.1 安全存储密钥 282 20.3.2 可信应用的存储密钥 282 20.3.3 文件加密密钥 283 20.4 安全文件、dirf.db文件的数据格式和操作过程 284 20.4.1 dirf.db文件和安全文件的格式 285 20.4.2 安全存储功能中使用的重要结构体 286 20.4.3 安全存储中的文件节点组成 287 20.4.4 查询安全文件中的特定数据块 287 20.5 安全存储文件的创建 288 20.5.1 安全存储软件框架 288 20.5.2 dirf.db文件的创建 289 20.5.3 安全文件的创建 290 20.6 安全文件的打开操作 291 20.6.1 安全文件的打开 291 20.6.2 打开dirf.db文件并建立节点树 292 20.6.3 安全文件在/data/tee下的文件编号 294 20.6.4 打开特定安全文件 295 20.7 安全文件的读写操作 295 20.7.1 安全文件中数据的读取 295 20.7.2 安全文件中数据的写入 297 20.8 安全文件中数据的加解密 298 20.8.1 各种类型数据的组成及作用 298 20.8.2 元数据的加密 298 20.8.3 数据块区域的加密策略 299 20.9 小结 300 第21章 可信应用及客户端应用的开发 301 21.1 TA及CA的基本概念 301 21.2 GP标准 302 21.3 GP标准对TA属性的定义 302 21.4 GP标准定义的接口 303 21.4.1 GP定义的客户端接口 303 21.4.2 GP定义的内部接口 304 21.5 TA和CA的实现 308 21.5.1 建立CA和TA的结构 308 21.5.2 CA代码的实现 308 21.5.3 TA代码的实现 309 21.6 TA和CA的集成 309 21.6.1 CA和TA的Makefile的修改 309 21.6.2 OP-TEE中comm.mk和xxx.mk文件的修改 310 21.7 TA和CA的调试 310 21.8 TA和CA的使用 310 21.9 小结 311 第22章 安全驱动的开发 312 22.1 安全设备的硬件安全隔离 312 22.2 OP-TEE中安全驱动的框架 313 22.2.1 系统服务层 314 22.2.2 驱动层 314 22.2.3 驱动文件在源代码中的位置 314 22.3 安全驱动的开发过程和示例 315 22.3.1 示例代码获取和集成 315 22.3.2 驱动实现 316 22.3.3 添加系统服务 317 22.3.4 添加系统调用 317 22.3.5 测试使用的TA和CA 318 22.4 安全驱动示例的测试 319 22.5 小结 321 第23章 终端密钥在线下发系统 322 23.1 密钥在线下发系统的框架 322 23.2 密钥在线下发的数据包格式 323 23.3 密钥在线下发系统示例 324 23.3.1 示例代码获取和集成 324 23.3.2 板级编译文件的修改 325 23.3.3 通用编译文件的修改 325 23.3.4 编译运行 326 23.4 离线工具的使用 327 23.5 小结 327 第24章 基于OP-TEE的在线支付系统 328 24.1 在线支付系统的基本框架 328 24.2 可信通信通道 329 24.3 数据交互协议 329 24.3.1 数据头部区域 330 24.3.2 数据区域 330 24.3.3 电子签名区域 331 24.3.4 交互数据包的格式 331 24.4 在线支付系统示例的实现 331 24.4.1 第一次握手请求 332 24.4.2 第二次握手数据的解析 333 24.4.3 第三次握手请求 334 24.4.4 支付请求 334 24.4.5 支付反馈 335 24.5 示例的集成 336 24.5.1 示例代码的获取和集成 336 24.5.2 板级编译文件的修改 338 24.5.3 通用编译文件的修改 338 24.5.4 编译运行 339 24.5.5 示例支持的命令说明 339 24.5.6 服务器端工具 340 24.6 组包操作嵌入内核 340 24.7 支付系统与生物特征的结合 340 24.8 小结 341 第25章 TEE可信应用的使用领域 342 25.1 在线支付 342 25.2 数字版权保护 342 25.3 身份验证 343 25.4 其他领域 343 术语表 345 |