OPTEE-OS简述

本文深入解析TEE(Trusted Execution Environment)技术,介绍其在保护生物特征数据和敏感信息中的作用,探讨Arm公司的TrustZone技术及TEE OS的多样性,如OP-TEE、Trusty等,并阐述TEE如何在硬件和软件层面保障数据安全。

1. 为什么会出现这种技术?

  为了安全,例如:保护指纹虹膜的生物特征数据

2. 为了确保数据安全各家公司都做了些什么?

  Arm公司提出的了trustzone技术,用一根安全总线(称为NS位)来判断当前处于secure world还是non-secure world状态,状态的切换由ATF(arm trusted firmware)来完成

3. 有哪些Normal world os

  Linux,Android

4. 有哪些secure world os

  OP-TEE,Trusty,QSEE,SierraTEE

5. 什么是TEE?

  TEE全称为Trusted execute environment,也就是信任执行环境。TEE是基于trustzone技术搭建的安全执行环境

6. TEE需要硬件支持吗?

  是的,硬件软件缺一不可,两者相辅相成。所谓的硬件是集成到处理器中的功能

7. TEE硬件视图

 

8. TEE软件视图

 

 

9. TEE OS是统一的吗?

  不是,目前各家厂商和组织都有各自的实现方式,但是所有方案的外部接口都会遵循GP(GlobalPlatform)标准

 

10. 各家厂商和组织的TEE OS到底有何区别?

  TA的添加和加载时的校验有所区别

 

11. OPTEE-OS属于哪家厂商的?

  属于Trustonic的

12. OPTEE-OS全称是什么?

  Open-source Portable Trusted Execution Environment OS

13. 到底是如何实现安全的呢?

  当处于secure world状态,那么就会执行TEE OS部分的代码,当处于non-secure world状态时,就执行linux kernel部分的代码

14. Linux内核能直接访问TEE部分的资源吗?

  Linux kernel不能直接访问TEE部分的资源

15. Linux 内核如何才能访问TEE部分的资源呢?

  Linux kernel能通过特定的TA(Trust Appliaction)和CA(Client Application)来访问TEE部分特定的资源

16. TA都做了些什么?

  处理保密信息,如信用卡pin码,私有密码,客户数据,受DRM (Digital Rights Management,数字版权管理)保护的媒体;

  为正常内核提供服务,以便不用协调正常内核就可以充分利用保密信息

17. OP-TEE都包括些什么内容?

  Secure world OS(optee_os)、normal world client(optee_client)、test suite(optee_test/xtest)以及linux驱动

18. OP-TEE软件架构

  产品开发团队负责开发一个运行在linux上的client application(CA)和一个运行在OP-TEE上的trusted application(TA),CA使用TEE client API与TA通信,并且从TA获取安全服务。CA和TA使用共享内存进行通信。

 

19. TEE启动流程

  理论上来说,在启动过程中,OP-TEE必须尽可能早的启动(bootloader的运行优先于OP-TEE会带来一个缺陷,触碰敏感数据)。在一个典型的linux启动过程中,rom bootloader加载/执行一个第一阶段bootloader(如:SPL,MLO,SBL1,FSBL),这个第一阶段bootloader然后执行一个第二阶段bootloader(如:U-Boot,LittleKernel),这个第二阶段bootloader会执行linux内核,所有的这些过程来自一个安全世界上下文。

在一个基于ARMv7的处理器上,附有TEE的典型启动流程是SPL加载OP-TEE和U-Boot,然后跳转到OP-TEE,一旦OP-TEE初始化完毕,OP-TEE就会切换到非安全上下文,并且跳转到U-Boot中。OP-TEE代码会继续放在内存中,以便为linux内核提供安全服务。

在一个基于ARMv8的处理器上,TEE启动流程还涉及到一个SPL加载ARM Trusted firmware的步骤。SPL跳转到arm trusted firmware,这个firmware随后与OP-TEE共同协作,OP-TEE转而跳转到处于非安全上下文的U-Boot中。

在一个ARMv8平台上,ARM Trusted firmware提供一个监视器代码去管理安全世界和非安全世界之间的切换,而在ARMv7平台上这一功能是被嵌入到OP-TEE中的。

 

20. OP-TEE对linux的支持情况是怎样的?

针对OP-TEE的linux内核驱动出现在内核版本4.12及其以上的版本,如果您运行的内核版本较老,那么您需要backport 补丁(https://lwn.net/Articles/716737/)。当然您也需要做以下操作来使能此驱动:

  20.1   设置内核配置项:CONFIG_OPTEE=y

  20.2   添加设备树节点(可以参考这里https://github.com/nodeax/linux-at91/commit/6f4de47f0265d75a7d3a1335b5191d464d611ebe)

  (可选操作:编译OP-TEE OS时使能CFG_DT=y,这样就能在运行时添加必要的节点)

 

 

21. OP-TEE OS为TA提供了安全数据存储设备

  数据要么以某种加密/授权的方式存储在linux文件系统/data/tee中,要么就是存储在一个Emmc RPMB(Replay Protected Memory Block,重放保护内存块)的分区中

22. TEE能减少硬件成本

  TEE能替代专用的安全芯片。

 

23. TEE能最小化应用程序的修改

  为了访问硬件特性,许多安全芯片给用户空间程序提供OpenSSL引擎接口。一个相同的模型能够通过开发一个TEE client app作为OpenSSL引擎与TA之间的接口,因此能够最小化用户空间程序的任何修改。Trusted Application将需要实现密钥管理和加密操作等接口。OP-TEE OS包含libtomcrypt,这个库提供各种各样的对称/非对称/椭圆曲线加密函数,因此TA 大部分工作是负责输入校验和调用合适的OP-TEE 核心API

 

24. TEE加密操作架构示例

 

25. 参考资料

https://www.timesys.com/security/trusted-software-development-op-tee/

转载于:https://www.cnblogs.com/dakewei/p/10267774.html 

本文不以盈利为目的,旨在更方便的让大家共享优秀文章,一起学习,作者如禁止转载,请联系我删除,谢谢!

<think>我们正在讨论RTA-OS的启动过程。根据引用[1],RTA-OS在启动前不需要动态创建任务,所有任务都是静态分配好的。启动过程是通过调用Os_StartOS() API来完成的。 启动过程详解: 1. 初始化:在调用Os_StartOS()之前,系统会进行一些初始化工作,包括硬件初始化、内存初始化等(虽然引用中没有明确提到,但这是操作系统的常规步骤)。 2. 调用Os_StartOS():这个API是启动操作系统的入口。在调用它之后,操作系统将开始运行。 3. 局部变量定义:在Os_StartOS()内部,首先定义了一些局部变量,包括一个布尔类型的want_dispatch和两个指针: - os_current_core_const:指向当前核心的配置常量(从常量数组中根据当前核心ID获取)。 - os_current_controlled_core:指向当前受控核心的数据结构(通过os_current_core_const->controlled获取)。 4. 启动核心:RTA-OS是一个多核操作系统(从引用中提到的OS_PEID_REGID和OS_PEID_SELID可以看出,它支持多核)。Os_StartOS()会启动当前核心的操作系统服务。 5. 任务调度:在启动过程中,操作系统会初始化调度器。由于任务都是静态分配好的,所以不需要动态创建。调度器将根据任务的优先级和状态来调度任务运行。 6. 调度开始:在初始化完成后,调度器开始工作,操作系统进入正常运行状态。 另外,引用[4]提到,在任务调度时(Os_Dispatch API),RTA-OS会进行任务切换,并且会计算任务的运行时间(时间监控)。但是,这是在启动后任务运行过程中的行为。 注意:引用[2]和[3]提供了其他相关信息,但与启动过程关系不直接。引用[2]提到配置RTA-TRACE会使RTA-OS包含仪器化内容,但这属于配置阶段,通常在启动前已经配置好。引用[3]则描述了计数器tick的处理,这也是在操作系统运行后才会发生的。 因此,RTA-OS启动过程可以简述为: - 系统初始化(硬件等) - 调用Os_StartOS() -Os_StartOS()中,初始化当前核心的操作系统数据结构(包括调度器) - 启动调度器,开始执行任务(从最高优先级的就绪任务开始) 由于RTA-OS是静态配置的操作系统,它的启动过程相对简单,因为不需要动态创建任务和资源。 注意:以上解析基于提供的引用,由于引用内容有限,可能不是最完整的,但根据已有信息,我们可以这样理解。 相关问题: §§相关问题§§ 1. RTA-OS中的任务是如何静态分配的? 2. Os_StartOS()函数内部具体执行了哪些步骤? 3. RTA-OS支持多核,那么在多核启动过程中,各个核的启动顺序是怎样的? 4. RTA-OS启动后,第一个任务是如何被调度的? </think>### RTA-OS启动过程详细解析 RTA-OS(Real-Time Application Operating System)的启动过程与其他嵌入式操作系统(如FreeRTOS)有显著差异,其核心特点是**静态任务分配**和**系统级初始化流程**。以下是基于引用文档的详细解析: #### 1. **初始化阶段** - **硬件抽象层初始化**:在调用`Os_StartOS()`前,硬件相关初始化已完成(如寄存器配置、时钟设置)。 - **静态任务分配**:所有任务在编译时已静态配置完成(引用[1]),无需动态创建任务,节省启动时间并确保确定性。 #### 2. **核心启动 API:`Os_StartOS()`** ```c void Os_StartOS(void) { boolean want_dispatch; // 调度标志位 // 获取当前核心的配置常量 const Os_CoreConfiguration *os_current_core_const = &Os_const_coreconfiguration[OS_STSR(OS_PEID_REGID, OS_PEID_SELID)]; // 指向当前受控核心的数据结构 Os_ControlledCoreType *os_current_controlled_core = os_current_core_const->controlled; ... // 后续初始化操作 } ``` - **核心配置加载**: 通过`OS_STSR`宏从寄存器获取当前处理器核心ID(`OS_PEID_REGID`),并定位到对应的核心配置表`Os_const_coreconfiguration`(引用[1])。 - **多核支持**: 每个核心独立维护配置数据结构(`Os_ControlledCoreType`),支持异构多核架构。 #### 3. **调度器初始化** - **静态任务激活**:调度器直接加载预配置的任务控制块(TCB),无需运行时分配内存。 - **计数器初始化**(引用[3]): - 若使用软件计数器,初始化tick中断机制。 - 首次tick到达时计算匹配值,避免无效中断占用资源。 #### 4. **监控模块启用** - **时间监控**(引用[4]): 在`Os_Dispatch`任务切换时: 1. 计算被抢占任务(Task0)的已运行时长。 2. 新任务(Task1)完成后,记录完整运行时并重置时间戳。 3. Task0恢复时累计总时长(扣除Task1的抢占时间)。 - **栈监控**: 静态分配的任务栈在启动时即启用溢出检测。 #### 5. **跟踪仪器化(可选)** - **RTA-TRACE集成**(引用[2]): 若配置该工具,OS会嵌入运行时数据采集点,但未安装时不影响功能(仅轻微增加资源占用)。 #### 6. **启动完成** - 调度器开始运行最高优先级就绪任务。 - 系统进入稳态循环,按调度策略执行任务。 --- ### 与其他OS的差异 | **特性** | **RTA-OS** | **FreeRTOS** | |----------------|--------------------------------|---------------------------| | 任务创建 | 静态分配(编译时) | 动态创建(运行时) | | 启动速度 | 更快(无动态初始化) | 较慢(需分配资源) | | 多核支持 | 内置异构多核管理 | 需第三方扩展(如AMP/SMP)| | 实时性保障 | 通过静态配置确保确定性 | 依赖动态优先级调整 | > 关键优势:RTA-OS的静态设计满足汽车电子ASIL-D等高安全场景,避免动态内存分配导致的非确定性[^1][^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值