专栏底层软件J6X op-tee arm trustzone开发介绍

J6X op-tee arm trustzone开发介绍

费小财2026-02-11
40
0

ARM TrustZone

ARM TrustZone技术是所有Cortex-A类处理器的基本功能,是通过ARM架构安全扩展引入的。这些扩展可在供应商、平台和应用程序中提供一致的程序员模型,同时提供真实的硬件支持的安全环境。

ARM TrustZone技术是系统范围的安全方法,针对高性能计算平台上的大量应用,包括安全支付、数字版权管理(DRM)、企业服务和基于Web的服务。TrustZone技术与Cortex-A处理器紧密集成,并通过AMBA AXI总线和特定的TrustZone系统IP块在系统中进行扩展,所以ARM TrustZone技术是从硬件层次上提供的安全机制。此系统方法意味着可以保护安全内存、加密块、键盘和屏幕等外设,从而可确保它们免遭软件攻击。

OP-TEE总体架构

从系统架构角度看,如下是启用了ARM TrustZone技术后的64位平台系统架构图。整个系统被分成了两个世界:左边是非安全世界,右边是安全世界。安全世界可以访问两个世界的所有资源,非安全世界只能访问非安全世界的资源,如果非安全世界访问安全世界的资源,则将产生系统硬件总线报错等异常,是无法获取到资源的。

这两个世界之间的往来需要通过ARM Trusted Firmware作为桥梁。当CPU处于非安全世界时,如果想进入安全世界则需要先进入ARM Trusted Firmware(通过ARM的SMC硬件指令),在ARM Trusted Firmware里的Secure Monitor代码会把CPU从非安全身份切换成安全的身份,然后再以安全身份进入安全世界。反之亦然。这个是完全从硬件级别上进行的安全和非安全身份转变。

alt text

目前用于ARM TrustZone技术的开源项目中,使用比较广泛的是OP-TEE。OP-TEE是一个开源工程,完整的实现了一个可信执行环境(TEE),可以配合非安全的OS运行。OP-TEE包含optee_os、optee_client、optee_driver三部分。总体架构图如下图所示:

alt text

关于 OP-TEE

SOC采用的TEE方案为OP-TEE。Horizon基于OP-TEE v3.19版本开发,为SOC提供安全执行环境。

编译OP-TEE

编译命令:

运行内存和生命周期

OP-TEE OS运行在memory中,地址为0xA200_0000~0xAA00_0000。

注意:在OS DTS中需要将这一部分内存保留,否则会出现不可预知的错误,比如系统崩溃。

OP-TEE OS使用的内存分布如下图所示,包含以下几部分:

TEE core:为OP-TEE内核运行空间,总大小6MB,其中heap段为2MB,用于在运行时使用malloc分配内存。

TA:预留56MB,为TA的运行空间。每个TA都有自己的独立地址空间,分配某一个TA的内存只能由该TA和OP-TEE内核访问,其他TA无法访问。

share memory:预留64MB,REE和TEE都可以访问,可用于在REE和TEE之间传递数据。

IPC:预留2MB,HSM和TEE都可以访问,用于TEE和HSM进行IPC通信。

alt text

OP-TEE OS启动后,会一直常驻于内存中运行。

开启Log示例

I/TC: OP-TEE version: 8850482 (gcc version 12.2.1 20221205 (Arm GNU Toolchain 12.2.Rel1 (Build arm-12.24))) #2 Mon Jul 29 14:25:07 UTC 2024 aarch64
I/TC: Primary CPU initializing
I/TC: Primary CPU switching to normal world boot

固件版本号识别

OP-TEE OS的版本号可以通过下面几种方法获取:

  • 从上述开机log中获取:

    I/TC: OP-TEE version: 8850482

  • \ dmesg\ 命令获取
    root@hobot:~# dmesg | grep optee
    [ 1.955067] optee: probing for conduit method.
    [ 1.955081] optee: revision 3.19 (8850482b)
    [ 1.955633] optee: initialized driver
  • \ cat /proc/version_optee
    root@hobot:~# cat /proc/version_optee
    optee revision 3.19 (8850482b)

(注:如上打印仅供参考,版本号及日期可能随着SDK发布有变化)

底层软件
社区征文前沿技术官方教程征程6
评论0
0/1000