图书介绍

手机安全和可信应用开发指南 TrustZone与OP-TEE技术详解PDF|Epub|txt|kindle电子书版本网盘下载

手机安全和可信应用开发指南 TrustZone与OP-TEE技术详解
  • 帅峰云,黄腾,宋洋编著 著
  • 出版社: 北京:机械工业出版社
  • ISBN:9787111609568
  • 出版时间:2018
  • 标注页数:348页
  • 文件大小:39MB
  • 文件页数:365页
  • 主题词:移动电话机-应用程序-程序设计-指南

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

手机安全和可信应用开发指南 TrustZone与OP-TEE技术详解PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第一篇 基础技术篇2

第1章 可信执行环境2

1.1系统存在的安全问题2

1.2 TEE如何保护数据安全2

1.3现有TEE解决方案3

1.3.1智能手机领域的TEE4

1.3.2智能电视领域的TEE4

1.3.3 IoT领域及其他领域的TEE5

1.4为什么选择OP-TEE5

第2章ARM的TrustZone技术6

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为什么使用ATF15

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的toolchain18

4.1.4编译QEMU19

4.1.5运行OP-TEE19

4.1.6运行xtest和optee_example_hello_world19

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

第二篇 系统集成篇34

第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章 安全引导功能及AT F的启动过程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_ supplicant84

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操作RPMB93

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_fops114

9.4.2 tee0设备的tee_ driver_ops结构体变量optee_ ops114

9.4.3 teepriv0设备的操作结构体变量optee_ supp_ ops115

9.4.4共享驱动缓存操作变量tee_shm_dma_buf_ops115

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内核篇130

第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数据是否需要写入Cache217

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-T EE的系统调用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_table232

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

第四篇 应用开发篇250

第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和CA318

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

热门推荐