jacinto6,  jacinto7,  linux

ARM ATF/OPTEE

Contents

ARM Boot Flow

ATF 简介

Non-secure world与Secure world


“arm 架构参考手册
1. 处于Secure state的时候PE可以访问 Secure物理地址空间也可以访问Non Secure物理地址空间;
2. 处于Non-secure state的时候PE只可以访问Non Secure物理地址空间,不可以访问Secure物理地址空间。我们知道PE是通过地址来访问所有的硬件资源的。只要我们把一些硬件资源的地址区间映射到Non-secure world,另一些硬件资源(比如spi、部分dram)的地址区间映射到Secure world,就可以实现Non-secure world与Secure world的隔离了。

ATF 实现原理

Non-secure与Secure之间的切换需要经过EL3(secure monitor),本章要讲的ATF(Arm Trust Firmware)就是运行在EL3上的一个monitor

ATF – 主要负责 secure 和non secure 之间的切换。

OPTEE

TEE全称为 Trusted Execute Environment也就是信任执行环境。 TEE 是基于Trusezone 技术搭建的安全执行环境。 TEE的环境需要硬件支持。 硬件视图如下:

软件视图如下:

OPTEE 的功能

为了安全,像指纹,人脸特征,电话本敏感信息的处理可以放在TEE。
当处于secure world状态,那么就会执行TEE OS部分的代码,当处于non-secure world状态时,就执行linux kernel部分的代码
1. Linux kernel不能直接访问TEE部分的资源
2. Linux kernel能通过特定的TA(Trust Appliaction)和CA(Client Application)来访问TEE部分
3. TA处理保密信息,如信用卡pin码,私有密码,客户数据,受DRM (Digital Rights Management,数字版权管理)保护的媒体;
4. OP-TEE都包括些什么内容?Secure world OS(optee_os)、normal world client(optee_client)、test suite(optee_test/xtest)以及linux驱动

OPTEE 支持的操作系统

Linux/Android

OP-TEE软件架构

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

OPTEE的缩写

OPTEE-OS全称是什么?
Open-source Portable Trusted Execution Environment OS

TEE 启动流程

OP-TEE必须尽可能早的启动(bootloader的运行优先于OP-TEE会带来一个缺陷,触碰敏感数据)

在一个基于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中。

Linux Support

OP-TEE的linux内核驱动出现在内核版本4.12。
1. 设置内核配置项:CONFIG_OPTEE=y
2. 添加设备树节点(可以参考这里https://github.com/nodeax/linux-at91/commit/6f4de47f0265d75a7d3a1335b5191d464d611ebe)

OP-TEE 安全存储

OS为TA提供了安全数据存储设备

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

应用

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

参考

1. https://blog.csdn.net/Neutionwei/article/details/114915307
2. https://blog.csdn.net/chenying126/article/details/78638944
3. https://www.timesys.com/security/trusted-software-development-op-tee/
4. OPTEE https://www.slideshare.net/linaroorg/tee-kernel-support-is-now-upstream-what-this-means-for-open-source-security-76943254?next_slideshow=1
5. ARMV8-M中的TrustZone如何保护代码的安全?

发表评论

您的电子邮箱地址不会被公开。