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

news2024/7/6 20:41:48

目录

一、概念

二、使能方式

三、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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/385998.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mask R-cnn 代码运行报错总结

Mask R-cnn 代码运行报错总结环境版本1. 数据集下载与参数配置2. 运行报错开始报错1报错2报错3报错4报错5报错6参考文章 文章1文章2 环境版本 TensorFlow 2.1.0Python 3.7keras 2.3.1 1. 数据集下载与参数配置 下载链接 https://github.com/matterport/Mask_RCNN/releases …

MySQL存储引擎详解及对比和选择

什么是存储引擎? MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善…

Java关键字、标识符、变量数据类型

文章目录关键字标识符标识符的命名规则标识符的命名规范变量变量的数据类型整数类型浮点类型浮点型精度字符类型布尔类型关键字 定义:被 Java 语言赋予了特殊含义,用做专门用途的字符串(或单词)HelloWorld 案例 中,出现…

7年测试工程师,裸辞掉17K的工作,想跳槽找更好的,还是太高估自己了....

14年大学毕业后,在老师和朋友的推荐下,进了软件测试行业,这一干就是7年时间,当时大学本来就是计算机专业,虽然专业学的一塌糊涂,但是当年的软件测试属于新兴行业,人才缺口比较大,而且…

南卡Neo骨传导运动耳机正式发布,打造音质最强款骨传导耳机

最近中国专业骨传导领先品牌NANK南卡发布全新Neo系列骨传导运动耳机,全新来袭的南卡Neo骨传导运动耳机主打音质使用体验,耳机配置上做到更为强劲升级优化,支持一体化机身,首发无线充设计,IPX6等级防水,升级…

Android---进程间通信机制2

Service Manager(SM):大管家。管理系统服务的 Ibinder。 1 如何启动 service_manager 服务 SM注册: 1 binder_open(): 打开驱动(设置大小128K),内存映射 2 binder_become_context_manager(): 设置 SM 为大管家 --- sm 作用:为…

【Python学习笔记】第二十六节 Python PyMySQL

一、什么是 PyMySQL?PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库。可以用它来连接Python和MySQL。如果你追求速度,这是一个很好的选择,因为它比mysql-connector-python快。PyMySQL 遵循 Python 数据库 API v2.0 规范&#x…

【存储】存储特性

存储特性精简配置技术(SmartThin)SmartThin主要功能容量虚拟化存储空间写时分配:Capacity-on-Write读写重定向:Direct-on-Time应用场景及配置流程存储分层技术(SmartTier)存储分层工作原理关键技术容量初始…

智能电子标签——商超版价签

2.1英寸TFT黑白电子价签 ★ 快速变价,高效运营 ★ 市场实用,布局物联网未来 ★ 更好客户体验 ★ 降低系统成本,具备竞争力 ★ 2.1英寸黑白红电子价签 ★ 电池低能耗,常规使用三年 ★ 穿透力强不慣障碍 ★ 2.4G载波&#x…

position:sticky 粘性定位

1、什么是粘性定位? 粘性定位它基于用户的滚动位置来定位。 粘性定位的元素是依赖于用户的滚动,在 position:relative 与 position:fixed 定位之间切换。 它的行为就像 position:relative; 而当页面滚动超出目标区域时,它的表现就像 position…

图机器学习-图神经网络

图神经网络 前面讲了图机器学习的一些传统方法,现在正式进入到课程的核心部分:图神经网络。 Design of GNN 那么图神经网络和我们之前接触的一些深度神经网络有什么不同呢? 对于别的类型的神经网络,往往我们都是处理一些类似网…

win环境nginx下载安装和基本操作使用解析

win环境nginx下载安装和基本操作是我们技术人员必备的技能,今天我们大概梳理一下: 下载 地址:nginx: download 进入后点击: 选择某个版本,就可以下载了,然后解压到某个目录,进入配置文件&…

RAM IP Core

官方文档:ZYNQ 存储资源指导手册 (DS109) RAM 全称 Random Access Memory,随机存取存储器。 随时将数据写入任意指定地址的存储单元,或从任意地址读出数据。读写的速度是由时钟频率决定的。 RAM主要用于存放程序运行的中间数据、运算结果等…

MySQL实战45讲深入浅出索引下

select * from T where k between 3 and 5这个语句的执行流程是: 在 k 索引树上找到 k3 的记录,取得 ID 300;再到 ID 索引树查到 ID300 对应的 R3;在 k 索引树取下一个值 k5,取得 ID500.再回到 ID 索引树查到 ID500 …

深度学习-第T1周——实现mnist手写数字识别

深度学习-第T1周——实现mnist手写数字识别深度学习-第P1周——实现mnist手写数字识别一、前言二、我的环境三、前期工作1、导入依赖项并设置GPU2、导入数据集3、归一化4、可视化图片5、调整图片格式四、构建简单的CNN网络五、编译并训练模型1、设置超参数2、编写训练函数六、预…

【Python】Jupyter .ipynb

Jupyter启动Hello JupyterMarkdown纵然 Anaconda Pycharm 非常好用,但是既然学到 Jupyter,那就多掌握一份技能,毕竟 Jupyter 的确有他的优势在。 我认为 Jupyter 对于 Python 初学者来说,非常友善,他将一整个代码划分…

c#学习笔记

目录1.语句块2.Write和WriteLine的区别:3.params4.托管代码和非托管代码5.DllImport的使用:6.WriteLine、ReadLine和ReadKey:7.C#中访问修饰符8.类型的实例化9.成员可以分为两种:数据成员和函数成员10.枚举enum和结构struct的区别…

使用Debussy加载设计项目

Debussy是NOVAS Software, Inc(思源科技)用来进行HDL Debug & Analysis的工具,这套软体主要不是用来跑模拟或看波形,它最强大的功能是:能够在HDL source code、schematic diagram、waveform、state bubble diagram之间,即时做…

蓝桥杯-考勤刷卡

蓝桥杯-考勤刷卡1、问题描述2、解题思路3、代码实现1、问题描述 小蓝负责一个公司的考勤系统, 他每天都需要根据员工刷卡的情况来确定 每个员工是否到岗。 当员工刷卡时, 会在后台留下一条记录, 包括刷卡的时间和员工编号, 只 要在一天中员工刷过一次卡, 就认为他到岗了。 现在…

电子技术——数字逻辑反相器

电子技术——数字逻辑反相器 在学习完如何通过CMOS数字电路实现组合逻辑,接下来我们评估这种数字CMOS电路的性能。首先,我们考虑最基本的部件——反相器。 电压传导特性 下图是一个反相器的原理图: 在之前,我们已经介绍了MOSFE…