一文看懂REE OS、TEE OS、CA以及TA概念、架构、流程

目录

一、概念

二、使能方式

三、TEE软件框架

四、TEE软件流程


一、概念

  • REE(Rich Execution Environment):比如Android系统,是一个开放的环境,容易收到恶意软件的攻击,比如敏感数据被窃取、数字版权被滥用、移动支付被盗用等。运行的系统和应用叫做Rich OSCA(Client APP)。
  • TEE(Trusted Execution Environment):可信执行环境,在目前的移动安全领域,默认就是指基于ARM Trustzone技术的TEE。运行的系统和应用叫做Trusted OSTA(Trusted APP)。

2010年7月GP(Global Platform,全球平台组织)提出了TEE(Trusted Execution Environment)可信执行环境的设计。TEE是一个与REE并存运行的独立执行环境,它具有其自身的执行空间,比Rich OS的安全级别更高,为Rich OS提供安全服务,如指纹的录入比对、支付校验认证等操作。TEE OS各家厂商和组织都有各自的实现方式,但是所有方案的外部接口都会遵循GP(GlobalPlatform)标准:

二、使能方式

Normal world和Secure world分别对应于REE和TEE。通过切换 Secure Configuration Register 系统寄存器来使能该模式的支持,该寄存器最后1bit为0,表示当前CPU处于secure mode。并且 ARM 本身支持将系统资源配置成 secure 状态,通过操作 TZPC 控制寄存器可以将系统总线、内存、DMA、cache 等资源配置成 secure 态,配置成 secure 态之后,normal 端运行的程序无法访问其硬件资源。

三、TEE软件框架

REE中的系统结构:

  • CA(Client APP)对应一些上层应用,比如指纹采集、支付应用等,通过调用TEE Client API实现与TEE环境的交互。
  • REE Communication Agent为TA和CA之间的消息传递提供了REE支持
  • TEE Client API是REE中的TEE驱动程序提供给外部的接口,可以使运行在REE中的CA能够与运行在TEE中的TA交换数据。

TEE中的系统结构:

  • TA(Trusted Application)是TEE中完成特定功能的应用。由于TEE中完成计算因此具有较高的安全性。每一个TA在REE中有一个或者多个对应的CA,在REE环境中可以通过调用CA的接口,将信息传送到TEE环境中执行TA,完成对应功能然后返回计算结果。
  • TEE Communication Agent是可信操作系统的特殊组成部分,它与REE Communication Agent一起工作,使TA与CA之间安全地传输消息。
  • TEE Internal Core API是TEE操作系统提供给TA调用的内部接口,包括密码学算法,内存管理等功能。
  • Trusted Device Drivers可信设备驱动程序,为专用于TEE的可信外设提供通信接口。
  • Shared Memory是一块只有CA和TA可以访问的一块安全内存,CA和TA通过共享内存来快速有效传输指令和数据

CA与TA交互流程如下:CA首先调用TEE Client API触发系统调用,进入REE的操作系统内核态,根据CA调用的参数找到对应的REE驱动程序,REE驱动程序通过调用SMC汇编指令进入Monitor模式,并将处理器切换到安全内核状态,进入安全模式。切换进入TEE以后,CA的服务请求通过总线传到TEE侧,然后TEE OS通过TEE Internal API调用对应的TA,最后TA运行结束后将运行结果和数据返回给CA,执行完以后回到TEE内核态调用SMC汇编指令进入Monitor切回REE环境。

更简清晰的软件交互如下:

简要描述:REE侧的Client APP是通过调用TEE Client API接口来跟TEE OS交互,具体交互流程是TEE Client API通过ioctl系统调用对TEE Driver通信,TEE Driver通过SMC指令实现 OpenSession,InvokeCommand,CloseSession 等的命令转发,同时也会处理来自 TEE 的请求,如请求REE的资源就让TEE Helper Daemon处理。Secure Monitor主要用于REE和TEE的环境切换、转发请求等。

详细描述:

  • REE 部分 Client Applications(CA) 一般是指指纹录入,支付应用等上层应用,其通过调用 TEE Client API 接口来与 TEE 环境的 Trusted OS 进行交互,这里的 TEE Client API 包括 TEE 厂商自定义的一些接口或 GlobalPlatform(GP) 全球组织定义的通用 API,其目的是制定一套标准的编程接口,方便开发者在不同软硬件平台下使用同一套代码实现其功能。
  • TEE Client API 通过 ioctl 系统调用对 TEE Driver 进行操作,TEE Driver 是沟通 REE 和 TEE 的桥梁,其通过 SMC 指令,实现将上层的 OpenSession,InvokeCommand,CloseSession 等标准调用的请求转发到 TEE 环境,同时其也会处理来自 TEE 的请求,将请求转发到 TEE Helper Daemon 让其处理。
  • TEE Helper Daemon 是一个辅助进程,用于 TEE 请求 REE 的资源。 一般来说,TEE 需要获得存储在 EMMC 的数据文件(例如安全加密文件,TA 可执行镜像文件等),而读写 EMMC 操作需要复杂的内核驱动的支持,显然如果把读写 EMMC 的驱动放到 TEE 侧运行会使软件复杂度会变得很高,因此 REE 需要一个可以访问这些资源的辅助进程支持,这就是 TEE Helper Daemon 的基本功能。TEE Helper Daemon 在软件逻辑实现上比较简单,以 OP-TEE 的 tee-supplicant 辅助进程为例,整体上是一个循环流程: 其首先通过 ioctl 接口查询是否有来自 TEE 的请求,如果没有,则进入睡眠等待状态,等待 TEE Driver 的唤醒信号,当 TEE Driver 收到来自 TEE 的请求后,会唤醒 tee-supplicant 辅助进程,然后根据请求号进行相应处理(读写数据文件,读写 EMMC 设备分区等),最后返回结果到 TEE Driver,完成一次循环。

  • TEE 侧的 Secure Monitor 的主要作用是实现 REE 和 TEE 环境的切换,转发请求到 Trusted OS。当 Secure Monitor 收到 TEE Driver 的 SMC 请求后,会将 CPU 切换到 Secure 状态,然后转发请求到 Trusted OS 来处理,Trusted OS 会找到请求对应的 Trusted App(TA) 去处理请求,具体逻辑流程会在下一节中详细说明。 另外 Secure Monitor 还用于开机时候 Trusted OS 的引导工作。

 Trusted OS 是运行在 TEE 侧的小型操作系统,简单来说,其作用是:

  • 构建满足 TA 运行的安全运行环境
  • 提供安全外设(SPI,I2C,Timer 等)的驱动程序
  • 根据 REE 的请求,调度相应 TA 处理请求
  • 提供 TA 运行所需要的加解密,随机数生成,证书生成校验等通用函数库

 上文提到 GlobalPlatform(GP) 全球组织定义的通用 API,TEE Client API 供 REE 侧的 CA 使用,TEE Internal API 则是供 TA 调用 Trusted OS 资源的标准 API,同样是用于方便 TA 开发者在不同软硬件平台进行开发。 

四、TEE软件流程

  1. 首先 CA 需要与 Trusted OS 之间建立一个 Context(InitializeContext),以后此 CA 与 TEE 环境的所有通信均基于此 Context。
  2. 然后 CA 会向 Trusted OS 申请与请求的 TA 建立一个 Session(OpenSession)。
  3. CA 与 TA 之间的 Session 建立完成后,CA 就可以向 TA 发送 Command(InvokeCommand)。
  4. Command 及其参数会通过共享内存的方式传递,TA 从共享内存中获取到 CA 的请求以及请求参数。
  5. TA 在 TEE 环境下执行处理,得到的处理结果重新填充到共享内存中,CA 通过共享内存就可以获取到处理结果。
  6. 获得处理结果后,如不需要进一步请求,则由 CA 发起关闭 Session 的请求(CloseSession),Trusted OS 回收 TA 相关资源,最后 CA 发起销毁 Context 的请求(FinalizeContext),完成一次完整交互。

各步骤时序图:

 

 

参考优秀博客:

深入浅出理解TEE|极客笔记 (deepinout.com)

TEE 软件交互流程概述 - 魅族内核团队 (meizu.com)

  • 41
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TEE_STORAGE_PRIVATE_REE 指的是可信执行环境(Trusted Execution Environment,TEE)中的私有存储空间,其中 REE 表示 Rich Execution Environment,即富执行环境。 在 TEE 中,有两个主要的执行环境:REE 和 TEE。REE 是指非受保护的执行环境,通常是普通操作系统(如 Android)运行的环境,而 TEE 则是受保护的执行环境,提供更高的安全性和可信度。 TEE_STORAGE_PRIVATE_REE 是指在 TEE 中,TEE 与 REE 之间的边界内的私有存储空间。这意味着 REE 无法直接访问或修改 TEE_STORAGE_PRIVATE_REE 中的数据,只有 TEE 内部的组件可以访问和管理这些数据。 通过将私有存储空间限制在 TEE 内部,TEE_STORAGE_PRIVATE_REE 提供了更高级别的安全性和保护,确保敏感数据不会被 REE 或其他非授权的应用程序访问、篡改或泄露。 TEE_STORAGE_PRIVATE_REE 的具体实现和功能可能因不同的 TEE 实现而异,但通常会提供以下特性: 1. 安全隔离:TEE_STORAGE_PRIVATE_REE 与 REE 之间建立了安全边界,确保私有数据不会被 REE 访问或修改。 2. 加密保护:TEE_STORAGE_PRIVATE_REE 可能会对存储的数据进行加密,以增强数据的保密性和安全性。 3. 访问控制:TEE_STORAGE_PRIVATE_REE 可能会实施访问控制机制,只允许经过授权的 TEE 内部组件访问其中的数据。 4. 生命周期管理:TEE_STORAGE_PRIVATE_REE 可能会提供数据的生命周期管理功能,包括创建、读取、更新和删除等操作。 总之,TEE_STORAGE_PRIVATE_REE 是可信执行环境中与 REE 边界内的私有存储空间,用于安全地存储和管理敏感数据,确保其不受非授权应用程序或 REE 的访问和篡改。 希望以上解释对您有所帮助!如果还有其他疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值