本文介绍optee 全部环境的各部分组成,及其相互之间的关系
optee 各部分组成
Tee linux driver
这是Linux内核中的一个驱动程序,负责与OP-TEE操作系统进行通信。它提供了用户空间与安全世界(即OP-TEE OS)之间的接口。
他会 在Linux创建一些节点 如
- /dev/teepriv0
- /dev/tee0
- /sys/class/tee_info/sys_boot_complete
Tee_Supplicant
Tee_Supplicant是一个用户空间守护进程,它与OP-TEE OS通信,处理来自OP-TEE OS的请求,例如访问文件系统,RPMB或网络资源。它还负责管理安全存储(Secure Storage),用户TA,即ree side TA , 就是经过tee-supplicant load 进 bl32 的。
Optee_Client
Optee_Client是一组用户空间库和工具,它们提供了与OP-TEE OS交互的API。这些库和工具允许普通应用程序(CA,Client Applications)调用受信任的应用程序(TAs)。编译最终的文件名为 libteec.so 。
Optee Os
OP-TEE OS是运行在安全世界中的操作系统,也叫(BL32),它提供了安全的执行环境,用于运行受信任的应用程序(TAs)。OP-TEE OS负责处理来自普通应用程序的请求,并在安全环境中执行相应的操作。
BL32 由 bl31 所启动, 遵循ATF启动框架流程,同属于uboot的一部分。
CA & TA
- CA (Client Application): 这是运行在普通操作系统(如Linux)上的应用程序,它通过调用OP-TEE提供的API来请求安全服务。
- TA (Trusted Application): 这是运行在OP-TEE OS中的安全应用程序,它执行敏感操作,如加密、解密、认证等,并且这些操作是在硬件保护的安全环境中进行的。
我们可以在github optee仓库中找到对应的资源, 其中还有tts 这样的库,这些是optee 封装的测试库,用于测试当前optee 环境是否支持这些测试项, 比如测试 storage, rpmb, 加解密 等等。
对于不同的vendor 厂商, 还会有 一些storage 专门定制的分区,用来存放 tee的持久化文件, 这些不同的厂商实现方式不同,比如 /storage/ 分区, rpmb分区, 通常用来存放一些 KEY文件等
RPMB分区是EMMC flash的特性, 通常在rpmb分区存放key文件,以及保存TA文件的版本信息,在每次加载ta的时候,bl32 都会去 /uuid/ta_version 下去检查版本信息,进行比对,如果当前的版本小于rpmb存放的version, 那就禁止ta加载,这也是一种anti-rollback 机制
另外这里单独提一下BL31 , 虽然他不属于OPTEE的范畴,但BL31确是Normal World 切换到 Secure World 的根基, SMCCALL 会经过bl31 的解析 来判断是否切换到bl32 ,所以 bl31 运行在EL3 模式, bl32 运行在EL2模式
标签:optee,环境,TEE,应用程序,TA,OS,组成,OP From: https://blog.csdn.net/coversky2016/article/details/140815509