




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
手机安全和可信应用开发指南:TrustZone与OP-TEE技术详解演讲人2021-11-11手机安全和可信应用开发指南:TrustZone与OP-TEE101.02.03.04.目录第一篇基础技术篇第二篇系统集成篇第三篇OP-TEE内核篇第四篇应用开发篇01.02.03.04.目录第一篇基础技术篇第二篇系统集2第一篇基础技术篇01第一篇基础技术篇0131可信执行环境1.4为什么选择OP-TEE1.3现有TEE解决方案1.2TEE如何保护数据安全1.1系统存在的安全问题
1.3.1智能手机领域的TEE1.3.2智能电视领域的TEE1.3.3IoT领域及其他领域的TEE
1可信执行环境1.4为什么选择OP-TEE1.3现有T42ARM的TrustZone技术2.2ARM安全扩展组件2.4小结2.1TrustZone技术2.3TrustZone技术对资源隔离的实现2ARM的TrustZone技术2.2ARM安全扩展组件52ARM的TrustZone技术2.1TrustZone技术2.1.1片上系统硬件框架2.1.2ARMv7架构的TrustZone技术2.1.3ARMv8架构的TrustZone技术2ARM的TrustZone技术2.1TrustZone62ARM的TrustZone技术2.2ARM安全扩展组件2.2.1AXI总线上安全状态位的扩展2.2.2AXI-to-APB桥的作用2.2.3TrustZone地址空间控制组件2.2.4TrustZone内存适配器组件2.2.5TrustZone保护控制器组件2.2.6TrustZone中断控制器组件2.2.7Cache和MMU的扩展2ARM的TrustZone技术2.2ARM安全扩展组件72ARM的TrustZone技术2.3TrustZone技术对资源隔离的实现2.3.1中断源的隔离2.3.2片上RAM和片上ROM的隔离2.3.3片外DRAM的隔离2.3.4外围设备的隔离2ARM的TrustZone技术2.3TrustZone8第一篇基础技术篇3ARM可信固件3.1为什么使用ATF3.2ATF的主要功能3.3ATF与TEE的关系3.4小结第一篇基础技术篇3ARM可信固件3.1为什么使用ATF94OP-TEE运行环境的搭建及编译4.5小结4.4OP-TEE编译4.3OP-TEE源代码结构4.2运行CA和TA示例4.1获取OP-TEE代码并搭建运行环境4OP-TEE运行环境的搭建及编译4.5小结4.4OP104OP-TEE运行环境的搭建及编译4.1获取OP-TEE代码并搭建运行环境4.1.1OP-TEE开发环境的搭建4.1.2获取OP-TEE的源代码4.1.3获取编译OP-TEE的toolchain4.1.4编译QEMU4.1.5运行OP-TEE4.1.6运行xtest和optee_example_hello_world4OP-TEE运行环境的搭建及编译4.1获取OP-TEE114OP-TEE运行环境的搭建及编译4.2运行CA和TA示例4.2.1示例代码的获取和集成4.2.2目录和文件创建4.2.3CA端代码的修改4.2.4TA端代码的修改4.2.5TA和CA在OP-TEE的集成4OP-TEE运行环境的搭建及编译4.2运行CA和TA示124OP-TEE运行环境的搭建及编译4.4OP-TEE编译4.4.1编译目标的依赖关系4.4.2bios.bin镜像的生成过程4.4.3run-only目标的执行4OP-TEE运行环境的搭建及编译4.4OP-TEE编译13第二篇系统集成篇02第二篇系统集成篇02145QEMU运行OP-TEE的启动过程第二篇系统集成篇5.2OP-TEE镜像的加载和启动5.4rootfs的挂载5.6tee_supplicant的启动5.1bios.bin的入口函数5.3Linux内核镜像的加载和启动5.5OP-TEE驱动的启动5QEMU运行OP-TEE的启动过程第二篇系统集成篇5.15第二篇系统集成篇5QEMU运行OP-TEE的启动过程5.7小结第二篇系统集成篇5QEMU运行OP-TEE的启动过程5.166安全引导功能及ATF的启动过程010203046.1安全引导的作用6.2安全引导的原理6.3ATF的启动过程6.4小结6安全引导功能及ATF的启动过程010203046.1安176安全引导功能及ATF的启动过程6.2安全引导的原理6.2.1ARMv7安全引导的过程6.2.2ARMv8安全引导的过程6安全引导功能及ATF的启动过程6.2安全引导的原理6.186安全引导功能及ATF的启动过程6.3ATF的启动过程6.3.1ATF中bl1的启动6.3.2ATF中bl2的启动6.3.3ATF中bl31的启动6.3.4ATF中bl32的启动6.3.5ATF启动过程小结6安全引导功能及ATF的启动过程6.3ATF的启动过程6197OP-TEEOS的启动过程7.1.1OP-TEEOS的入口函数7.1.2OP-TEE的内核初始化过程7.1.3OP-TEE服务项的启动7.1.4OP-TEE驱动的挂载7.1OP-TEE镜像启动过程
7.2ARM64位与ARM32位OP-TEE启动过程的差异
7.3小结7OP-TEEOS的启动过程7.1.1OP-TEEO208OP-TEE在REE侧的上层软件8.1OP-TEE的软件框架8.3REE侧的守护进程——tee_supplicant8.5小结8.2REE侧libteec库提供的接口8.4各种RPC请求的处理8OP-TEE在REE侧的上层软件8.1OP-TEE的软218OP-TEE在REE侧的上层软件8.2REE侧libteec库提供的接口8.2.1libteec库提供的接口说明8.2.2CA调用libteec库中接口的流程8OP-TEE在REE侧的上层软件8.2REE侧libt228OP-TEE在REE侧的上层软件8.3REE侧的守护进程——tee_supplicant8.3.1tee_supplicant编译生成和自启动8.3.2tee_supplicant入口函数8.3.3tee_supplicant存放RPC请求的结构体8.3.4tee_supplicant中的无限循环8.3.5tee_supplicant获取TA的RPC请求8.3.6TARPC请求的解析8.3.7RPC请求的处理8.3.8回复RPC请求8OP-TEE在REE侧的上层软件8.3REE侧的守护进238OP-TEE在REE侧的上层软件8.4各种RPC请求的处理8.4.1加载TA镜像8.4.2操作REE侧的文件系统8.4.3操作RPMB8.4.4分配共享内存8.4.5释放共享内存8.4.6记录程序执行效率8.4.7网络套接字操作8OP-TEE在REE侧的上层软件8.4各种RPC请求的249REE侧OP-TEE的驱动9.1OP-TEE驱动模块的编译保存9.6libteec库中的接口在驱动中的实现9.5OP-TEE驱动与OP-TEE之间共享内存的注册和分配9.2REE侧OP-TEE驱动的加载9.3REE侧用户空间对驱动的调用过程9.4OP-TEE驱动中重要的结构体变量9REE侧OP-TEE的驱动9.1OP-TEE驱动模块的259REE侧OP-TEE的驱动9.8小结9.7tee_supplicant接口在驱动中的实现9REE侧OP-TEE的驱动9.8小结9.7tee_s269REE侧OP-TEE的驱动9.2REE侧OP-TEE驱动的加载9.2.1设备号和class的初始化9.2.2optee_driver_init函数9.2.3挂载驱动的probe操作9.2.4获取切换到Monitor模式或EL3的接口9.2.5驱动版本和API版本校验9.2.6判定OP-TEE是否预留共享内存空间9REE侧OP-TEE的驱动9.2REE侧OP-TEE驱279REE侧OP-TEE的驱动9.2REE侧OP-TEE驱动的加载9.2.7配置驱动与OP-TEE之间的共享内存9.2.8分配和设置tee0和teepriv0的设备信息结构体变量9.2.9tee0和teepriv0设备的注册9.2.10请求队列的初始化9.2.11使能TEE中共享内存的缓存9.2.12OP-TEE驱动挂载的总结9REE侧OP-TEE的驱动9.2REE侧OP-TEE驱289REE侧OP-TEE的驱动9.4OP-TEE驱动中重要的结构体变量9.4.1OP-TEE驱动的file_operation结构体变量tee_fops9.4.2tee0设备的tee_driver_ops结构体变量optee_ops9.4.3teepriv0设备的操作结构体变量optee_supp_ops9.4.4共享驱动缓存操作变量tee_shm_dma_buf_ops9REE侧OP-TEE的驱动9.4OP-TEE驱动中重要299REE侧OP-TEE的驱动9.6libteec库中的接口在驱动中的实现9.6.1libteec库中的open操作9.6.2libteec库中的release操作9.6.3libteec执行get_version操作9.6.4libteec库中的opensession操作9.6.5libteec库中的invoke操作9REE侧OP-TEE的驱动9.6libteec库中的接309REE侧OP-TEE的驱动9.7tee_supplicant接口在驱动中的实现9.7.1接收OP-TEE的RPC请求9.7.2获取OP-TEE的RPC请求9.7.3OP-TEE的RPC请求的返回9REE侧OP-TEE的驱动9.7tee_supplic31第三篇OP-TEE内核篇03第三篇OP-TEE内核篇033210ARM核安全态和非安全态间的切换10.5小结10.4EL3的处理过程10.3ARMv8基本知识10.2Monitor模式下的处理过程10.1ARMv7基本知识10ARM核安全态和非安全态间的切换10.5小结10.43310ARM核安全态和非安全态间的切换10.1ARMv7基本知识10.1.1ARMv7运行模式扩展10.1.2安全状态位扩展10.1.3重要寄存器10.1.4安全监控模式调用的汇编指令10ARM核安全态和非安全态间的切换10.1ARMv7基3410ARM核安全态和非安全态间的切换10.2Monitor模式下的处理过程10.2.1Monitor模式对安全监控模式调用的处理10.2.2正常世界状态中触发安全监控模式调用的处理过程10.2.3安全世界状态中触发安全监控模式调用的处理过程10ARM核安全态和非安全态间的切换10.2Monito3510ARM核安全态和非安全态间的切换10.3ARMv8基本知识10.3.1ARM核运行模式的新定义10.3.2ARMv8安全状态位扩展10.3.3寄存器资源10.3.4安全监控模式调用汇编指令10ARM核安全态和非安全态间的切换10.3ARMv8基3610ARM核安全态和非安全态间的切换10.4EL3的处理过程10.4.1ATF中EL3异常向量表的注册10.4.2EL3处理安全监控模式调用的流程10.4.3安全世界状态中触发安全监控模式调用的处理过程10.4.4正常世界状态中触发安全监控模式调用的处理过程10.4.5opteed_smc_handler函数10ARM核安全态和非安全态间的切换10.4EL3的处理3711OP-TEE对安全监控模式调用的处理
11.1OP-TEE的线程向量表01
11.2ARMv7中Monitor模式对安全监控模式调用的处理02
11.3ARMv8中EL3处理安全监控模式调用的实现03
11.4OP-TEE对快速安全监控模式调用的处理0411.5.1OP-TEE对RPC请求返回操作的处理11.5.2OP-TEE对libteec库触发的安全监控模式调用的处理11.5OP-TEE对标准安全监控模式调用的处理05
11.6小结0611OP-TEE对安全监控模式调用的处理11.1OP-3812OP-TEE对中断的处理12.2中断控制器12.4OP-TEE的线程向量表12.6ARMv7Monitor对FIQ事件的处理12.1系统的中断处理12.3异常向量表配置12.5全局handle变量的初始化12OP-TEE对中断的处理12.2中断控制器12.43912OP-TEE对中断的处理12.8OP-TEE对FIQ事件的处理12.10小结12.7ARMv8EL3阶段对FIQ事件的处理12.9OP-TEE对IRQ事件的处理12OP-TEE对中断的处理12.8OP-TEE对FIQ4012OP-TEE对中断的处理12.2中断控制器12.2.1GIC寄存器12.2.2ARMv7SCR寄存器的设定12.2.3ARMv8SCR寄存器的设定12.2.4GICv2架构12.2.5GICv3架构12OP-TEE对中断的处理12.2中断控制器12.2.4112OP-TEE对中断的处理12.3异常向量表配置12.3.1ARMv7中Monitor模式的异常向量表12.3.2ARMv8中EL3阶段的异常向量表12.3.3OP-TEE异常向量的配置12OP-TEE对中断的处理12.3异常向量表配置12.4213OP-TEE对TA操作的各种实现13.1创建会话在OP-TEE中的实现13.2调用TA命令操作在OP-TEE中的实现13.3关闭会话操作在OP-TEE中的实现13.4小结13.1.1静态TA的创建会话操作13.1.2动态TA的创建会话操作13.3.1静态TA的关闭会话操作13.3.2动态TA的关闭会话操作13.2.1静态TA的调用命令操作的实现13.2.2动态TA的调用命令操作实现
13OP-TEE对TA操作的各种实现13.1创建会话在O4314OP-TEE的内存和缓存管理14.1物理内存和缓存数据的硬件安全保护14.3OP-TEE对内存区域的管理14.5OP-TEE内存安全权限检查14.2ARM核对内存的访问14.4MMU的初始化和映射页表14.6系统的共享内存14OP-TEE的内存和缓存管理14.1物理内存和缓存数4414OP-TEE的内存和缓存管理14.7数据是否需要写入Cache14.8小结14OP-TEE的内存和缓存管理14.7数据是否需要写入4514OP-TEE的内存和缓存管理14.1物理内存和缓存数据的硬件安全保护14.1.1内存设备安全区域的隔离14.1.2MMU和缓存中数据的安全隔离14OP-TEE的内存和缓存管理14.1物理内存和缓存数4614OP-TEE的内存和缓存管理14.2ARM核对内存的访问14.2.1ARM核获取内存数据的过程14.2.2获取缓存数据的过程14.2.3缓存和TLB中条目的一致性14OP-TEE的内存和缓存管理14.2ARM核对内存的4714OP-TEE的内存和缓存管理14.3OP-TEE对内存区域的管理14.3.1OP-TEE中内存区域的类型14.3.2内存区域编译设置14OP-TEE的内存和缓存管理14.3OP-TEE对内4814OP-TEE的内存和缓存管理14.4MMU的初始化和映射页表14.4.1MMU的初始化入口函数14.4.2物理地址到虚拟地址表的建立14.4.3MMU转换页表的创建14.4.4MMU寄存器配置14OP-TEE的内存和缓存管理14.4MMU的初始化和4914OP-TEE的内存和缓存管理14.6系统的共享内存14.6.1共享内存的配置14.6.2OP-TEE驱动与OP-TEE之间的共享内存14.6.3OP-TEE内核空间与用户空间之间的共享内存14OP-TEE的内存和缓存管理14.6系统的共享内存15015OP-TEE中的线程管理15.6线程的死锁15.5OP-TEE中线程的调度15.4线程运行时资源的使用关系15.3线程运行时的资源15.2线程状态切换15.1OP-TEE中的线程15OP-TEE中的线程管理15.6线程的死锁15.55115OP-TEE中的线程管理15.7小结15OP-TEE中的线程管理15.7小结5215OP-TEE中的线程管理15.2线程状态切换15.2.1Free态到Active态的实现15.2.2Active态到Suspend态的实现15.2.3Suspend态到Active态的实现15.2.4Active态到Free态的实现15OP-TEE中的线程管理15.2线程状态切换15.25315OP-TEE中的线程管理15.3线程运行时的资源15.3.1线程数据结构体15.3.2OP-TEE分配的内核栈15.3.3线程运行于用户空间的资源15.3.4tee_ta_session结构体15OP-TEE中的线程管理15.3线程运行时的资源155415OP-TEE中的线程管理15.6线程的死锁15.6.1死锁的原理15.6.2防止死锁15OP-TEE中的线程管理15.6线程的死锁15.6.5516OP-TEE的系统调用16.3小结16.2OP-TEE系统调用的实现16.1OP-TEE系统调用的作用
16.2.1系统调用的整体流程16.2.2系统调用的定义16.2.3系统调用表tee_sv_syacall_table
16OP-TEE的系统调用16.3小结16.2OP-T5617OP-TEE的IPC机制17.1IPC机制的作用
17.2IPC机制的原理
17.4小结
17.3IPC的实现17.3.1TA调用其他TA的实现17.3.2TA调用系统服务和安全驱动的实现17.3.3TA对密码学系统服务的调用实现17.3.4对SE功能模块进行操作的系统服务17.3.5加载TA镜像的系统服务17OP-TEE的IPC机制17.1IPC机制的作用157第四篇应用开发篇04第四篇应用开发篇045818TA镜像的签名和加载18.2TA镜像的加载18.4加载TA镜像到OP-TEE的用户空间18.6小结18.1TA镜像文件的编译和签名18.3TA镜像合法性的验证18.5TA运行上下文的初始化18TA镜像的签名和加载18.2TA镜像的加载18.45918TA镜像的签名和加载18.1TA镜像文件的编译和签名18.1.1TA镜像文件的编译18.1.2对TA镜像文件的签名18TA镜像的签名和加载18.1TA镜像文件的编译和签名6018TA镜像的签名和加载18.2TA镜像的加载18.2.1REE侧获取TA镜像文件的内容18.2.2加载TA镜像的RPC请求18.2.3RPC请求的发送18.2.4读取TA镜像文件内容到共享内存18TA镜像的签名和加载18.2TA镜像的加载18.2.6118TA镜像的签名和加载18.3TA镜像合法性的验证18.3.1验证TA镜像合法性使用的RSA公钥的产生和获取18.3.2TA镜像文件合法性的检查18TA镜像的签名和加载18.3TA镜像合法性的验证186219OP-TEE中的密码学算法19.1算法使用示例19.2OP-TEE中的SHA算法19.5小结19.4OP-TEE中的RSA算法19.3OP-TEE中的AES算法19OP-TEE中的密码学算法19.1算法使用示例19.6319OP-TEE中的密码学算法19.1算法使用示例19.1.1示例代码获取和集成19.1.2板级编译文件的修改19.1.3通用编译文件的修改19.1.4编译运行19OP-TEE中的密码学算法19.1算法使用示例19.6419OP-TEE中的密码学算法19.2OP-TEE中的SHA算法19.2.1TA中使用SHA算法的实现19.2.2SHA算法实现接口说明19OP-TEE中的密码学算法19.2OP-TEE中的S6519OP-TEE中的密码学算法19.3OP-TEE中的AES算法19.3.1TA中使用AES算法的实现19.3.2AES算法实现接口说明19OP-TEE中的密码学算法19.3OP-TEE中的A6619OP-TEE中的密码学算法19.4OP-TEE中的RSA算法19.4.1TA中使用RSA算法的实现19.4.2RSA算法实现接口说明19OP-TEE中的密码学算法19.4OP-TEE中的R6720OP-TEE的安全存储ABCDEF20.1安全存储简介20.2安全存储使用示例20.3安全存储功能使用的密钥20.4安全文件、dirf.db文件的数据格式和操作过程20.5安全存储文件的创建20.6安全文件的打开操作20OP-TEE的安全存储ABCDEF20.1安全存储简6820OP-TEE的安全存储20.7安全文件的读写操作20.8安全文件中数据的加解密20.9小结20OP-TEE的安全存储20.7安全文件的读写操作206920OP-TEE的安全存储20.2安全存储使用示例20.2.1示例代码获取和集成20.2.2板级编译文件的修改20.2.3通用编译文件的修改20.2.4编译运行20OP-TEE的安全存储20.2安全存储使用示例20.7020OP-TEE的安全存储20.3安全存储功能使用的密钥20.3.1安全存储密钥20.3.2可信应用的存储密钥20.3.3文件加密密钥20OP-TEE的安全存储20.3安全存储功能使用的密钥71第四篇应用开发篇21可信应用及客户端应用的开发第四篇应用开发篇21可信应用及客户端应用的开发72第四篇应用开发篇22安全驱动的开发第四篇应用开发篇22安全驱动的开发73第四篇应用开发篇23终端密钥在线下发系统第四篇应用开发篇23终端密钥在线下发系统74第四篇应用开发篇24基于OP-TEE的在线支付系统第四篇应用开发篇24基于OP-TEE的在线支付系统75第四篇应用开发篇25TEE可信应用的使用领域第四篇应用开发篇25TEE可信应用的使用领域76第四篇应用开发篇术语表第四篇应用开发篇术语表77感谢聆听感谢聆听78手机安全和可信应用开发指南:TrustZone与OP-TEE技术详解演讲人2021-11-11手机安全和可信应用开发指南:TrustZone与OP-TEE7901.02.03.04.目录第一篇基础技术篇第二篇系统集成篇第三篇OP-TEE内核篇第四篇应用开发篇01.02.03.04.目录第一篇基础技术篇第二篇系统集80第一篇基础技术篇01第一篇基础技术篇01811可信执行环境1.4为什么选择OP-TEE1.3现有TEE解决方案1.2TEE如何保护数据安全1.1系统存在的安全问题
1.3.1智能手机领域的TEE1.3.2智能电视领域的TEE1.3.3IoT领域及其他领域的TEE
1可信执行环境1.4为什么选择OP-TEE1.3现有T822ARM的TrustZone技术2.2ARM安全扩展组件2.4小结2.1TrustZone技术2.3TrustZone技术对资源隔离的实现2ARM的TrustZone技术2.2ARM安全扩展组件832ARM的TrustZone技术2.1TrustZone技术2.1.1片上系统硬件框架2.1.2ARMv7架构的TrustZone技术2.1.3ARMv8架构的TrustZone技术2ARM的TrustZone技术2.1TrustZone842ARM的TrustZone技术2.2ARM安全扩展组件2.2.1AXI总线上安全状态位的扩展2.2.2AXI-to-APB桥的作用2.2.3TrustZone地址空间控制组件2.2.4TrustZone内存适配器组件2.2.5TrustZone保护控制器组件2.2.6TrustZone中断控制器组件2.2.7Cache和MMU的扩展2ARM的TrustZone技术2.2ARM安全扩展组件852ARM的TrustZone技术2.3TrustZone技术对资源隔离的实现2.3.1中断源的隔离2.3.2片上RAM和片上ROM的隔离2.3.3片外DRAM的隔离2.3.4外围设备的隔离2ARM的TrustZone技术2.3TrustZone86第一篇基础技术篇3ARM可信固件3.1为什么使用ATF3.2ATF的主要功能3.3ATF与TEE的关系3.4小结第一篇基础技术篇3ARM可信固件3.1为什么使用ATF874OP-TEE运行环境的搭建及编译4.5小结4.4OP-TEE编译4.3OP-TEE源代码结构4.2运行CA和TA示例4.1获取OP-TEE代码并搭建运行环境4OP-TEE运行环境的搭建及编译4.5小结4.4OP884OP-TEE运行环境的搭建及编译4.1获取OP-TEE代码并搭建运行环境4.1.1OP-TEE开发环境的搭建4.1.2获取OP-TEE的源代码4.1.3获取编译OP-TEE的toolchain4.1.4编译QEMU4.1.5运行OP-TEE4.1.6运行xtest和optee_example_hello_world4OP-TEE运行环境的搭建及编译4.1获取OP-TEE894OP-TEE运行环境的搭建及编译4.2运行CA和TA示例4.2.1示例代码的获取和集成4.2.2目录和文件创建4.2.3CA端代码的修改4.2.4TA端代码的修改4.2.5TA和CA在OP-TEE的集成4OP-TEE运行环境的搭建及编译4.2运行CA和TA示904OP-TEE运行环境的搭建及编译4.4OP-TEE编译4.4.1编译目标的依赖关系4.4.2bios.bin镜像的生成过程4.4.3run-only目标的执行4OP-TEE运行环境的搭建及编译4.4OP-TEE编译91第二篇系统集成篇02第二篇系统集成篇02925QEMU运行OP-TEE的启动过程第二篇系统集成篇5.2OP-TEE镜像的加载和启动5.4rootfs的挂载5.6tee_supplicant的启动5.1bios.bin的入口函数5.3Linux内核镜像的加载和启动5.5OP-TEE驱动的启动5QEMU运行OP-TEE的启动过程第二篇系统集成篇5.93第二篇系统集成篇5QEMU运行OP-TEE的启动过程5.7小结第二篇系统集成篇5QEMU运行OP-TEE的启动过程5.946安全引导功能及ATF的启动过程010203046.1安全引导的作用6.2安全引导的原理6.3ATF的启动过程6.4小结6安全引导功能及ATF的启动过程010203046.1安956安全引导功能及ATF的启动过程6.2安全引导的原理6.2.1ARMv7安全引导的过程6.2.2ARMv8安全引导的过程6安全引导功能及ATF的启动过程6.2安全引导的原理6.966安全引导功能及ATF的启动过程6.3ATF的启动过程6.3.1ATF中bl1的启动6.3.2ATF中bl2的启动6.3.3ATF中bl31的启动6.3.4ATF中bl32的启动6.3.5ATF启动过程小结6安全引导功能及ATF的启动过程6.3ATF的启动过程6977OP-TEEOS的启动过程7.1.1OP-TEEOS的入口函数7.1.2OP-TEE的内核初始化过程7.1.3OP-TEE服务项的启动7.1.4OP-TEE驱动的挂载7.1OP-TEE镜像启动过程
7.2ARM64位与ARM32位OP-TEE启动过程的差异
7.3小结7OP-TEEOS的启动过程7.1.1OP-TEEO988OP-TEE在REE侧的上层软件8.1OP-TEE的软件框架8.3REE侧的守护进程——tee_supplicant8.5小结8.2REE侧libteec库提供的接口8.4各种RPC请求的处理8OP-TEE在REE侧的上层软件8.1OP-TEE的软998OP-TEE在REE侧的上层软件8.2REE侧libteec库提供的接口8.2.1libteec库提供的接口说明8.2.2CA调用libteec库中接口的流程8OP-TEE在REE侧的上层软件8.2REE侧libt1008OP-TEE在REE侧的上层软件8.3REE侧的守护进程——tee_supplicant8.3.1tee_supplicant编译生成和自启动8.3.2tee_supplicant入口函数8.3.3tee_supplicant存放RPC请求的结构体8.3.4tee_supplicant中的无限循环8.3.5tee_supplicant获取TA的RPC请求8.3.6TARPC请求的解析8.3.7RPC请求的处理8.3.8回复RPC请求8OP-TEE在REE侧的上层软件8.3REE侧的守护进1018OP-TEE在REE侧的上层软件8.4各种RPC请求的处理8.4.1加载TA镜像8.4.2操作REE侧的文件系统8.4.3操作RPMB8.4.4分配共享内存8.4.5释放共享内存8.4.6记录程序执行效率8.4.7网络套接字操作8OP-TEE在REE侧的上层软件8.4各种RPC请求的1029REE侧OP-TEE的驱动9.1OP-TEE驱动模块的编译保存9.6libteec库中的接口在驱动中的实现9.5OP-TEE驱动与OP-TEE之间共享内存的注册和分配9.2REE侧OP-TEE驱动的加载9.3REE侧用户空间对驱动的调用过程9.4OP-TEE驱动中重要的结构体变量9REE侧OP-TEE的驱动9.1OP-TEE驱动模块的1039REE侧OP-TEE的驱动9.8小结9.7tee_supplicant接口在驱动中的实现9REE侧OP-TEE的驱动9.8小结9.7tee_s1049REE侧OP-TEE的驱动9.2REE侧OP-TEE驱动的加载9.2.1设备号和class的初始化9.2.2optee_driver_init函数9.2.3挂载驱动的probe操作9.2.4获取切换到Monitor模式或EL3的接口9.2.5驱动版本和API版本校验9.2.6判定OP-TEE是否预留共享内存空间9REE侧OP-TEE的驱动9.2REE侧OP-TEE驱1059REE侧OP-TEE的驱动9.2REE侧OP-TEE驱动的加载9.2.7配置驱动与OP-TEE之间的共享内存9.2.8分配和设置tee0和teepriv0的设备信息结构体变量9.2.9tee0和teepriv0设备的注册9.2.10请求队列的初始化9.2.11使能TEE中共享内存的缓存9.2.12OP-TEE驱动挂载的总结9REE侧OP-TEE的驱动9.2REE侧OP-TEE驱1069REE侧OP-TEE的驱动9.4OP-TEE驱动中重要的结构体变量9.4.1OP-TEE驱动的file_operation结构体变量tee_fops9.4.2tee0设备的tee_driver_ops结构体变量optee_ops9.4.3teepriv0设备的操作结构体变量optee_supp_ops9.4.4共享驱动缓存操作变量tee_shm_dma_buf_ops9REE侧OP-TEE的驱动9.4OP-TEE驱动中重要1079REE侧OP-TEE的驱动9.6libteec库中的接口在驱动中的实现9.6.1libteec库中的open操作9.6.2libteec库中的release操作9.6.3libteec执行get_version操作9.6.4libteec库中的opensession操作9.6.5libteec库中的invoke操作9REE侧OP-TEE的驱动9.6libteec库中的接1089REE侧OP-TEE的驱动9.7tee_supplicant接口在驱动中的实现9.7.1接收OP-TEE的RPC请求9.7.2获取OP-TEE的RPC请求9.7.3OP-TEE的RPC请求的返回9REE侧OP-TEE的驱动9.7tee_supplic109第三篇OP-TEE内核篇03第三篇OP-TEE内核篇0311010ARM核安全态和非安全态间的切换10.5小结10.4EL3的处理过程10.3ARMv8基本知识10.2Monitor模式下的处理过程10.1ARMv7基本知识10ARM核安全态和非安全态间的切换10.5小结10.411110ARM核安全态和非安全态间的切换10.1ARMv7基本知识10.1.1ARMv7运行模式扩展10.1.2安全状态位扩展10.1.3重要寄存器10.1.4安全监控模式调用的汇编指令10ARM核安全态和非安全态间的切换10.1ARMv7基11210ARM核安全态和非安全态间的切换10.2Monitor模式下的处理过程10.2.1Monitor模式对安全监控模式调用的处理10.2.2正常世界状态中触发安全监控模式调用的处理过程10.2.3安全世界状态中触发安全监控模式调用的处理过程10ARM核安全态和非安全态间的切换10.2Monito11310ARM核安全态和非安全态间的切换10.3ARMv8基本知识10.3.1ARM核运行模式的新定义10.3.2ARMv8安全状态位扩展10.3.3寄存器资源10.3.4安全监控模式调用汇编指令10ARM核安全态和非安全态间的切换10.3ARMv8基11410ARM核安全态和非安全态间的切换10.4EL3的处理过程10.4.1ATF中EL3异常向量表的注册10.4.2EL3处理安全监控模式调用的流程10.4.3安全世界状态中触发安全监控模式调用的处理过程10.4.4正常世界状态中触发安全监控模式调用的处理过程10.4.5opteed_smc_handler函数10ARM核安全态和非安全态间的切换10.4EL3的处理11511OP-TEE对安全监控模式调用的处理
11.1OP-TEE的线程向量表01
11.2ARMv7中Monitor模式对安全监控模式调用的处理02
11.3ARMv8中EL3处理安全监控模式调用的实现03
11.4OP-TEE对快速安全监控模式调用的处理0411.5.1OP-TEE对RPC请求返回操作的处理11.5.2OP-TEE对libteec库触发的安全监控模式调用的处理11.5OP-TEE对标准安全监控模式调用的处理05
11.6小结0611OP-TEE对安全监控模式调用的处理11.1OP-11612OP-TEE对中断的处理12.2中断控制器12.4OP-TEE的线程向量表12.6ARMv7Monitor对FIQ事件的处理12.1系统的中断处理12.3异常向量表配置12.5全局handle变量的初始化12OP-TEE对中断的处理12.2中断控制器12.411712OP-TEE对中断的处理12.8OP-TEE对FIQ事件的处理12.10小结12.7ARMv8EL3阶段对FIQ事件的处理12.9OP-TEE对IRQ事件的处理12OP-TEE对中断的处理12.8OP-TEE对FIQ11812OP-TEE对中断的处理12.2中断控制器12.2.1GIC寄存器12.2.2ARMv7SCR寄存器的设定12.2.3ARMv8SCR寄存器的设定12.2.4GICv2架构12.2.5GICv3架构12OP-TEE对中断的处理12.2中断控制器12.2.11912OP-TEE对中断的处理12.3异常向量表配置12.3.1ARMv7中Monitor模式的异常向量表12.3.2ARMv8中EL3阶段的异常向量表12.3.3OP-TEE异常向量的配置12OP-TEE对中断的处理12.3异常向量表配置12.12013OP-TEE对TA操作的各种实现13.1创建会话在OP-TEE中的实现13.2调用TA命令操作在OP-TEE中的实现13.3关闭会话操作在OP-TEE中的实现13.4小结13.1.1静态TA的创建会话操作13.1.2动态TA的创建会话操作13.3.1静态TA的关闭会话操作13.3.2动态TA的关闭会话操作13.2.1静态TA的调用命令操作的实现13.2.2动态TA的调用命令操作实现
13OP-TEE对TA操作的各种实现13.1创建会话在O12114OP-TEE的内存和缓存管理14.1物理内存和缓存数据的硬件安全保护14.3OP-TEE对内存区域的管理14.5OP-TEE内存安全权限检查14.2ARM核对内存的访问14.4MMU的初始化和映射页表14.6系统的共享内存14OP-TEE的内存和缓存管理14.1物理内存和缓存数12214OP-TEE的内存和缓存管理14.7数据是否需要写入Cache14.8小结14OP-TEE的内存和缓存管理14.7数据是否需要写入12314OP-TEE的内存和缓存管理14.1物理内存和缓存数据的硬件安全保护14.1.1内存设备安全区域的隔离14.1.2MMU和缓存中数据的安全隔离14OP-TEE的内存和缓存管理14.1物理内存和缓存数12414OP-TEE的内存和缓存管理14.2ARM核对内存的访问14.2.1ARM核获取内存数据的过程14.2.2获取缓存数据的过程14.2.3缓存和TLB中条目的一致性14OP-TEE的内存和缓存管理14.2ARM核对内存的12514OP-TEE的内存和缓存管理14.3OP-TEE对内存区域的管理14.3.1OP-TEE中内存区域的类型14.3.2内存区域编译设置14OP-TEE的内存和缓存管理14.3OP-TEE对内12614OP-TEE的内存和缓存管理14.4MMU的初始化和映射页表14.4.1MMU的初始化入口函数14.4.2物理地址到虚拟地址表的建立14.4.3MMU转换页表的创建14.4.4MMU寄存器配置14OP-TEE的内存和缓存管理14.4MMU的初始化和12714OP-TEE的内存和缓存管理14.6系统的共享内存14.6.1共享内存的配置14.6.2OP-TEE驱动与OP-TEE之间的共享内存14.6.3OP-TEE内核空间与用户空间之间的共享内存14OP-TEE的内存和缓存管理14.6系统的共享内存112815OP-TEE中的线程管理15.6线程的死锁15.5OP-TEE中线程的调度15.4线程运行时资源的使用关系15.3线程运行时的资源15.2线程状态切换15.1OP-TEE中的线程15OP-TEE中的线程管理15.6线程的死锁15.512915OP-TEE中的线程管理15.7小结15OP-TEE中的线程管理15.7小结13015OP-TEE中的线程管理15.2线程状态切换15.2.1Free态到Active态的实现15.2.2Active态到Suspend态的实现15.2.3Suspend态到Active态的实现15.2.4Active态到Free态的实现15OP-TEE中的线程管理15.2线程状态切换15.213115OP-TEE中的线程管理15.3线程运行时的资源15.3.1线程数据结构体15.3.2OP-TEE分配的内核栈15.3.3线程运行于用户空间的资源15.3.4tee_ta_session结构体15OP-TEE中的线程管理15.3线程运行时的资源1513215OP-TEE中的线程管理15.6线程的死锁15.6.1死锁的原理15.6.2防止死锁15OP-TEE中的线程管理15.6线程的死锁15.6.13316OP-TEE的系统调用16.3小结16.2OP-TEE系统调用的实现16.1OP-TEE系统调用的作用
16.2.1系统调用的整体流程16.2.2系统调用的定义16.2.3系统调用表tee_sv_syacall_table
16OP-TEE的系统调用16.3小结16.2OP-T13417OP-TEE的IPC机制17.1IPC机制的作用
17.2IPC机制的原理
17.4小结
17.3IPC的实现17.3.1TA调用其他TA的实现17.3.2TA调用系统服务和安全驱动的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 潜水装备的水下作业安全意识培养与提升考核试卷
- 舞蹈教育在儿童成长中的作用考核试卷
- 窗帘面料的环保染整技术考核试卷
- 四川水利职业技术学院《临床检验仪器与技术》2023-2024学年第二学期期末试卷
- 山西省运城市万荣县2025年初三下学期第二次模拟考试化学试题文试卷含解析
- 山东省威海市文登区文登实验、三里河中学2025届中考化学试题模拟试卷(8)含解析
- 沈阳工业大学《现代地球物理学进展》2023-2024学年第二学期期末试卷
- 潍坊学院《大学写作实践课》2023-2024学年第二学期期末试卷
- 景德镇市重点中学2024-2025学年初三考前热身生物试题试卷含解析
- 天门职业学院《应用真菌学》2023-2024学年第二学期期末试卷
- 2025届福建省多地市联考高三下学期二模物理试题(原卷版+解析版)
- 2025年传染病护理
- 2025年上半年池州市园林局招考专业技术人员易考易错模拟试题(共500题)试卷后附参考答案
- 武汉市2025届高中毕业生四月调研考试 试卷与解析
- 2025北京各区高三一模数学分类汇编解析 答案
- 第18课《井冈翠竹》 课件
- 质量信誉考核自评报告3篇
- 胃肠炎护理教学查房
- 护士站管理制度
- 药物服用指导与患者教育试题及答案
- (四调)武汉市2025届高中毕业生四月调研考试 英语试卷
评论
0/150
提交评论