思维导图备注

手机安全和可信应用开发指南:TrustZone与OP-TEE技术详解
首页 收藏书籍 阅读记录
  • 书签 我的书签
  • 添加书签 添加书签 移除书签 移除书签

第四篇 应用开发篇

浏览 1 扫码
  • 小字体
  • 中字体
  • 大字体
2022-01-25 00:30:49
请 登录 再阅读
上一篇:
下一篇:
  • 书签
  • 添加书签 移除书签
  • 推荐序
  • 前言
  • 致谢
  • 第一篇 基础技术篇
    • 第1章 可信执行环境
      • 1.2 TEE如何保护数据安全
      • 1.3 现有TEE解决方案
        • 1.3.1 智能手机领域的TEE
        • 1.3.2 智能电视领域的TEE
        • 1.3.3 IoT领域及其他领域的TEE
      • 1.4 为什么选择OP-TEE
    • 第2章 ARM的TrustZone技术
      • 2.1.1 片上系统硬件框架
      • 2.1.2 ARMv7架构的TrustZone技术
      • 2.2 ARM安全扩展组件
        • 2.2.1 AXI总线上安全状态位的扩展
        • 2.2.2 AXI-to-APB桥的作用
        • 2.2.3 TrustZone地址空间控制组件
        • 2.2.4 TrustZone内存适配器组件
        • 2.2.5 TrustZone保护控制器组件
        • 2.2.6 TrustZone中断控制器组件
        • 2.2.7 Cache和MMU的扩展
      • 2.1.3 ARMv8架构的TrustZone技术
      • 2.3 TrustZone技术对资源隔离的实现
        • 2.3.1 中断源的隔离
        • 2.3.2 片上RAM和片上ROM的隔离
        • 2.3.3 片外DRAM的隔离
        • 2.3.4 外围设备的隔离
      • 2.4 小结
    • 第3章 ARM可信固件
      • 3.2 ATF的主要功能
      • 3.3 ATF与TEE的关系
      • 3.4 小结
    • 第4章 OP-TEE运行环境的搭建及编译
      • 4.1 获取OP-TEE代码并搭建运行环境
        • 4.1.2 获取OP-TEE的源代码
        • 4.1.3 获取编译OP-TEE的toolchain
        • 4.1.4 编译QEMU
        • 4.1.5 运行OP-TEE
        • 4.1.6 运行xtest和optee_example_hello_world
      • 4.2 运行CA和TA示例
        • 4.2.1 示例代码的获取和集成
        • 4.2.2 目录和文件创建
        • 4.2.3 CA端代码的修改
        • 4.2.4 TA端代码的修改
        • 4.2.5 TA和CA在OP-TEE的集成
      • 4.3 OP-TEE源代码结构
      • 4.4 OP-TEE编译
        • 4.4.2 bios.bin镜像的生成过程
        • 4.4.3 run-only目标的执行
      • 4.5 小结
  • 第二篇 系统集成篇
    • 第5章 QEMU运行OP-TEE的启动过程
      • 5.1 bios.bin的入口函数
      • 5.2 OP-TEE镜像的加载和启动
      • 5.3 Linux内核镜像的加载和启动
      • 5.4 rootfs的挂载
      • 5.5 OP-TEE驱动的启动
      • 5.6 tee_supplicant的启动
      • 5.7 小结
    • 第6章 安全引导功能及ATF的启动过程
      • 6.1 安全引导的作用
      • 6.2 安全引导的原理
        • 6.2.1 ARMv7安全引导的过程
        • 6.2.2 ARMv8安全引导的过程
      • 6.3 ATF的启动过程
        • 6.3.1 ATF中bl1的启动
        • 6.3.2 ATF中bl2的启动
        • 6.3.3 ATF中bl31的启动
        • 6.3.4 ATF中bl32的启动
        • 6.3.5 ATF启动过程小结
      • 6.4 小结
    • 第7章 OP-TEE OS的启动过程
      • 7.1.1 OP-TEE OS的入口函数
      • 7.1.2 OP-TEE的内核初始化过程
      • 7.2 ARM64位与ARM32位OP-TEE启动过程的差异
      • 7.1.3 OP-TEE服务项的启动
      • 7.3 小结
      • 7.1.4 OP-TEE驱动的挂载
    • 第8章 OP-TEE在REE侧的上层软件
      • 8.1 OP-TEE的软件框架
      • 8.2 REE侧libteec库提供的接口
        • 8.2.1 libteec库提供的接口说明
        • 8.2.2 CA调用libteec库中接口的流程
      • 8.3 REE侧的守护进程——tee_supplicant
        • 8.3.1 tee_supplicant编译生成和自启动
        • 8.3.2 tee_supplicant入口函数
        • 8.3.3 tee_supplicant存放RPC请求的结构体
        • 8.3.4 tee_supplicant中的无限循环
        • 8.3.5 tee_supplicant获取TA的RPC请求
        • 8.3.6 TA RPC请求的解析
        • 8.3.7 RPC请求的处理
        • 8.3.8 回复RPC请求
      • 8.4 各种RPC请求的处理
        • 8.4.1 加载TA镜像
        • 8.4.2 操作REE侧的文件系统
        • 8.4.3 操作RPMB
        • 8.4.4 分配共享内存
        • 8.4.5 释放共享内存
        • 8.4.6 记录程序执行效率
        • 8.4.7 网络套接字操作
      • 8.5 小结
    • 第9章 REE侧OP-TEE的驱动
      • 9.1 OP-TEE驱动模块的编译保存
      • 9.2 REE侧OP-TEE驱动的加载
        • 9.2.1 设备号和class的初始化
        • 9.2.2 optee_driver_init函数
        • 9.2.3 挂载驱动的probe操作
        • 9.2.4 获取切换到Monitor模式或EL3的接口
        • 9.2.5 驱动版本和API版本校验
        • 9.2.6 判定OP-TEE是否预留共享内存空间
        • 9.2.7 配置驱动与OP-TEE之间的共享内存
        • 9.2.8 分配和设置tee0和teepriv0的设备信息结构体变量
        • 9.2.9 tee0和teepriv0设备的注册
        • 9.2.10 请求队列的初始化
        • 9.2.11 使能TEE中共享内存的缓存
        • 9.2.12 OP-TEE驱动挂载的总结
      • 9.3 REE侧用户空间对驱动的调用过程
      • 9.4 OP-TEE驱动中重要的结构体变量
        • 9.4.1 OP-TEE驱动的file_operation结构体变量tee_fops
        • 9.4.2 tee0设备的tee_driver_ops结构体变量optee_ops
        • 9.4.3 teepriv0设备的操作结构体变量optee_supp_ops
        • 9.4.4 共享驱动缓存操作变量tee_shm_dma_buf_ops
      • 9.5 OP-TEE驱动与OP-TEE之间共享内存的注册和分配
      • 9.6 libteec库中的接口在驱动中的实现
        • 9.6.1 libteec库中的open操作
        • 9.6.2 libteec库中的release操作
        • 9.6.3 libteec执行get_version操作
        • 9.6.4 libteec库中的open session操作
        • 9.6.5 libteec库中的invoke操作
      • 9.7 tee_supplicant接口在驱动中的实现
        • 9.7.1 接收OP-TEE的RPC请求
        • 9.7.2 获取OP-TEE的RPC请求
        • 9.7.3 OP-TEE的RPC请求的返回
      • 9.8 小结
  • 第三篇 OP-TEE内核篇
    • 第10章 ARM核安全态和非安全态间的切换
      • 10.1.1 ARMv7运行模式扩展
      • 10.1.2 安全状态位扩展
      • 10.2 Monitor模式下的处理过程
        • 10.2.1 Monitor模式对安全监控模式调用的处理
        • 10.2.2 正常世界状态中触发安全监控模式调用的处理过程
        • 10.2.3 安全世界状态中触发安全监控模式调用的处理过程
      • 10.1.3 重要寄存器
      • 10.3 ARMv8基本知识
        • 10.3.1 ARM核运行模式的新定义
        • 10.3.2 ARMv8安全状态位扩展
        • 10.3.4 安全监控模式调用汇编指令
      • 10.1.4 安全监控模式调用的汇编指令
      • 10.4 EL3的处理过程
        • 10.4.1 ATF中EL3异常向量表的注册
        • 10.4.2 EL3处理安全监控模式调用的流程
        • 10.4.3 安全世界状态中触发安全监控模式调用的处理过程
        • 10.4.4 正常世界状态中触发安全监控模式调用的处理过程
        • 10.4.5 opteed_smc_handler函数
      • 10.5 小结
    • 第11章 OP-TEE对安全监控模式调用的处理
      • 11.1 OP-TEE的线程向量表
      • 11.2 ARMv7中Monitor模式对安全监控模式调用的处理
      • 11.3 ARMv8中EL3处理安全监控模式调用的实现
      • 11.4 OP-TEE对快速安全监控模式调用的处理
      • 11.5 OP-TEE对标准安全监控模式调用的处理
        • 11.5.1 OP-TEE对RPC请求返回操作的处理
        • 11.5.2 OP-TEE对libteec库触发的安全监控模式调用的处理
      • 11.6 小结
    • 第12章 OP-TEE对中断的处理
      • 12.1 系统的中断处理
      • 12.2 中断控制器
        • 12.2.1 GIC寄存器
        • 12.2.2 ARMv7 SCR寄存器的设定
        • 12.2.3 ARMv8 SCR寄存器的设定
        • 12.2.4 GICv2架构
        • 12.2.5 GICv3架构
      • 12.3 异常向量表配置
        • 12.3.1 ARMv7中Monitor模式的异常向量表
        • 12.3.2 ARMv8中EL3阶段的异常向量表
        • 12.3.3 OP-TEE异常向量的配置
      • 12.4 OP-TEE的线程向量表
      • 12.5 全局handle变量的初始化
      • 12.6 ARMv7 Monitor对FIQ事件的处理
      • 12.7 ARMv8 EL3阶段对FIQ事件的处理
      • 12.8 OP-TEE对FIQ事件的处理
      • 12.9 OP-TEE对IRQ事件的处理
      • 12.10 小结
    • 第13章 OP-TEE对TA操作的各种实现
      • 13.1 创建会话在OP-TEE中的实现
        • 13.1.1 静态TA的创建会话操作
        • 13.1.2 动态TA的创建会话操作
      • 13.2 调用TA命令操作在OP-TEE中的实现
        • 13.2.1 静态TA的调用命令操作的实现
        • 13.2.2 动态TA的调用命令操作实现
      • 13.3 关闭会话操作在OP-TEE中的实现
        • 13.3.1 静态TA的关闭会话操作
        • 13.3.2 动态TA的关闭会话操作
      • 13.4 小结
    • 第14章 OP-TEE的内存和缓存管理
      • 14.1.1 内存设备安全区域的隔离
      • 14.1.2 MMU和缓存中数据的安全隔离
      • 14.2 ARM核对内存的访问
        • 14.2.1 ARM核获取内存数据的过程
        • 14.2.2 获取缓存数据的过程
        • 14.2.3 缓存和TLB中条目的一致性
      • 14.3 OP-TEE对内存区域的管理
        • 14.3.1 OP-TEE中内存区域的类型
        • 14.3.2 内存区域编译设置
      • 14.4 MMU的初始化和映射页表
        • 14.4.1 MMU的初始化入口函数
        • 14.4.2 物理地址到虚拟地址表的建立
        • 14.4.3 MMU转换页表的创建
        • 14.4.4 MMU寄存器配置
      • 14.5 OP-TEE内存安全权限检查
      • 14.6 系统的共享内存
        • 14.6.1 共享内存的配置
        • 14.6.2 OP-TEE驱动与OP-TEE之间的共享内存
        • 14.6.3 OP-TEE内核空间与用户空间之间的共享内存
      • 14.7 数据是否需要写入Cache
      • 14.8 小结
    • 第15章 OP-TEE中的线程管理
      • 15.1 OP-TEE中的线程
      • 15.2 线程状态切换
        • 15.2.1 Free态到Active态的实现
        • 15.2.2 Active态到Suspend态的实现
        • 15.2.3 Suspend态到Active态的实现
        • 15.2.4 Active态到Free态的实现
      • 15.3 线程运行时的资源
        • 15.3.1 线程数据结构体
        • 15.3.2 OP-TEE分配的内核栈
        • 15.3.3 线程运行于用户空间的资源
        • 15.3.4 tee_ta_session结构体
      • 15.4 线程运行时资源的使用关系
      • 15.5 OP-TEE中线程的调度
      • 15.6 线程的死锁
        • 15.6.1 死锁的原理
        • 15.6.2 防止死锁
      • 15.7 小结
    • 第16章 OP-TEE的系统调用
      • 16.2 OP-TEE系统调用的实现
        • 16.2.1 系统调用的整体流程
        • 16.2.2 系统调用的定义
        • 16.2.3 系统调用表tee_sv_syacall_table
      • 16.3 小结
    • 第17章 OP-TEE的IPC机制
      • 17.1 IPC机制的作用
      • 17.2 IPC机制的原理
      • 17.3 IPC的实现
        • 17.3.2 TA调用系统服务和安全驱动的实现
        • 17.3.3 TA对密码学系统服务的调用实现
        • 17.3.4 对SE功能模块进行操作的系统服务
        • 17.3.5 加载TA镜像的系统服务
      • 17.4 小结
  • 第四篇 应用开发篇
    • 第18章 TA镜像的签名和加载
      • 18.1 TA镜像文件的编译和签名
        • 18.1.1 TA镜像文件的编译
        • 18.1.2 对TA镜像文件的签名
      • 18.2 TA镜像的加载
        • 18.2.1 REE侧获取TA镜像文件的内容
        • 18.2.2 加载TA镜像的RPC请求
        • 18.2.3 RPC请求的发送
        • 18.2.4 读取TA镜像文件内容到共享内存
      • 18.3 TA镜像合法性的验证
        • 18.3.1 验证TA镜像合法性使用的RSA公钥的产生和获取
        • 18.3.2 TA镜像文件合法性的检查
      • 18.4 加载TA镜像到OP-TEE的用户空间
      • 18.5 TA运行上下文的初始化
      • 18.6 小结
    • 第19章 OP-TEE中的密码学算法
      • 19.1 算法使用示例
        • 19.1.1 示例代码获取和集成
        • 19.1.2 板级编译文件的修改
        • 19.1.3 通用编译文件的修改
        • 19.1.4 编译运行
      • 19.2 OP-TEE中的SHA算法
        • 19.2.1 TA中使用SHA算法的实现
        • 19.2.2 SHA算法实现接口说明
      • 19.3 OP-TEE中的AES算法
        • 19.3.2 AES算法实现接口说明
      • 19.4 OP-TEE中的RSA算法
        • 19.4.1 TA中使用RSA算法的实现
        • 19.4.2 RSA算法实现接口说明
      • 19.5 小结
    • 第20章 OP-TEE的安全存储
      • 20.2 安全存储使用示例
        • 20.2.1 示例代码获取和集成
        • 20.2.2 板级编译文件的修改
        • 20.2.3 通用编译文件的修改
        • 20.2.4 编译运行
      • 20.3 安全存储功能使用的密钥
        • 20.3.1 安全存储密钥
        • 20.3.2 可信应用的存储密钥
        • 20.3.3 文件加密密钥
      • 20.4 安全文件、dirf.db文件的数据格式和操作过程
        • 20.4.1 dirf.db文件和安全文件的格式
        • 20.4.2 安全存储功能中使用的重要结构体
        • 20.4.3 安全存储中的文件节点组成
        • 20.4.4 查询安全文件中的特定数据块
      • 20.5 安全存储文件的创建
        • 20.5.1 安全存储软件框架
        • 20.5.2 dirf.db文件的创建
        • 20.5.3 安全文件的创建
      • 20.6 安全文件的打开操作
        • 20.6.2 打开dirf.db文件并建立节点树
        • 20.6.3 安全文件在/data/tee目录下的文件编号
        • 20.6.4 打开特定安全文件
      • 20.7 安全文件的读写操作
        • 20.7.1 安全文件中数据的读取
        • 20.7.2 安全文件中数据的写入
      • 20.8 安全文件中数据的加解密
        • 20.8.1 各种类型数据的组成及作用
        • 20.8.2 元数据的加密
        • 20.8.3 数据块区域的加密策略
      • 20.9 小结
    • 第21章 可信应用及客户端应用的开发
      • 21.1 TA及CA的基本概念
      • 21.2 GP标准
      • 21.3 GP标准对TA属性的定义
      • 21.4 GP标准定义的接口
        • 21.4.1 GP定义的客户端接口
        • 21.4.2 GP定义的内部接口
      • 21.5 TA和CA的实现
        • 21.5.1 建立CA和TA的目录结构
        • 21.5.2 CA代码的实现
        • 21.5.3 TA代码的实现
      • 21.6 TA和CA的集成
        • 21.6.2 OP-TEE中comm.mk和xxx.mk文件的修改
      • 21.7 TA和CA的调试
      • 21.8 TA和CA的使用
    • 21.9 小结
      • 22.1 安全设备的硬件安全隔离
      • 22.2 OP-TEE中安全驱动的框架
        • 22.2.1 系统服务层
        • 22.2.2 驱动层
        • 22.2.3 驱动文件在源代码中的位置
      • 22.3 安全驱动的开发过程和示例
        • 22.3.1 示例代码获取和集成
        • 22.3.2 驱动实现
        • 22.3.3 添加系统服务
        • 22.3.4 添加系统调用
        • 22.3.5 测试使用的TA和CA
      • 22.4 安全驱动示例的测试
      • 22.5 小结
    • 第23章 终端密钥在线下发系统
      • 23.1 密钥在线下发系统的框架
      • 23.2 密钥在线下发的数据包格式
      • 23.3 密钥在线下发系统示例
        • 23.3.1 示例代码获取和集成
        • 23.3.2 板级编译文件的修改
        • 23.3.3 通用编译文件的修改
        • 23.3.4 编译运行
      • 23.4 离线工具的使用
      • 23.5 小结
    • 第24章 基于OP-TEE的在线支付系统
      • 24.1 在线支付系统的基本框架
      • 24.2 可信通信通道
      • 24.3 数据交互协议
        • 24.3.1 数据头部区域
        • 24.3.2 数据区域
        • 24.3.3 电子签名区域
        • 24.3.4 交互数据包的格式
      • 24.4 在线支付系统示例的实现
        • 24.4.1 第一次握手请求
        • 24.4.2 第二次握手数据的解析
        • 24.4.3 第三次握手请求
        • 24.4.4 支付请求
        • 24.4.5 支付反馈
      • 24.5 示例的集成
        • 24.5.1 示例代码的获取和集成
        • 24.5.2 板级编译文件的修改
        • 24.5.3 通用编译文件的修改
        • 24.5.4 编译运行
        • 24.5.6 服务器端工具
      • 24.6 组包操作嵌入内核
      • 24.7 支付系统与生物特征的结合
      • 24.8 小结
    • 第25章 TEE可信应用的使用领域
      • 25.1 在线支付
      • 25.2 数字版权保护
      • 25.3 身份验证
      • 25.4 其他领域
  • 术语表
暂无相关搜索结果!
    展开/收起文章目录

    二维码

    手机扫一扫,轻松掌上学

    《手机安全和可信应用开发指南:TrustZone与OP-TEE技术详解》电子书下载

    请下载您需要的格式的电子书,随时随地,享受学习的乐趣!
    EPUB 电子书

    书签列表

      阅读记录

      阅读进度: 0.00% ( 0/0 ) 重置阅读进度