TrustZone与OP-TEE技术详解 读书笔记一
1.TEE介绍
TEE: Trusted Execution Environment 可信执行环境
Trustzone:
Trustzone从armV6引入,主要是将CPU的工作状态分为Normal world status, NWS 和Secure World Status, SWS. 有了这两种状态,就可以在CPU访问外围硬件资源时,提供保护和安全隔离(权限检查)。当
CPU处于正常世界状态时,任何应用都无法访问安全硬件设备,也无法访问属于安全世界状态
下的内存、缓存(Cache)以及其他外围安全硬件设备。
REE: 正常世界,因为资源丰富,所以被叫成,Rich Execution Environment.
当执行在TEE环境时,也有类似linux的系统环境主要包含正常世界状态的客户端应用(Client
Application,CA)、安全世界状态的可信应用,可信硬件驱动(Secure Driver,SD)以及可
信内核系统(Trusted Execution Environment Operation System,TEE OS。
GP:规定了TEE解决方案的架构以及提供TA开发的API原型,开发者可以使用这些规定的API开发实际的TA,并能使其正常运行与不同的TEE解决方案中。
2.Trustzone技术
支持TrustZone技术的ARM核在运行时将工作状态划分为两种:安全状态和非安全状态。
当处理器核处于安全状态时只能运行TEE侧的代码,且具有REE侧地址空间的访问权限。当处理
器核处于非安全状态时只能运行REE侧的代码,且只能通过事先定义好的客户端接口来获取TEE
侧中特定的数据和调用特定的功能。
安全状态的切换:系统通过调用安全监控模式调用(secure monitor call,smc)指令实现ARM核的安全状
态与非安全状态之间的切换。
AXI总线上安全状态位的扩展:系统总线多了一个控制信号,表示当前的读写操作是secure or non-secure.
外围没有支持安全位检查的设备如何保护?
可以通过AXI-to-APB桥,改桥可以检查AXI的访问请求是否有权限,来判断是否有权访问外围设备
TZASC: 将从设备的全部地址空间进行划分,然后根据安全权限来判断是否有权访问划分后的地址空间。
Cache和MMU
支持Trustzone的soc,对MMU进行虚拟化,安全状态和非安全状态分别由两个虚拟地址转换表。
3.ATF
ATF是ARM可信任的,开源的固件,由ARM官方提供,统一ARM底层接口,比如电源状态控制,安全启动需求,smc。
ATF源码共分为bl1、bl2、bl31、bl32、bl33部分,其中bl1、bl2、bl31部分属于固定的固件,bl32和bl33分别用于加载TEE OS和REE侧的镜像。整个加载过程可配置成安全启动的方式,每一个镜像文件在被加载之前都会验证镜像文件的电子签名是否合法。
ATF主要功能是
1.初始化ARM内核;
2.引导bootloader,linux内核,TEE OS
3.实现REE和TEE环境的切换。bl31来切换。
ATF运行在ARM EL3的小系统。optee运行在EL1的小系统.
Yocto: Tee.img由teeload, bl31.bin optee.bin组成,Android,tee.img 由bl31.bin optee.bin组成。
boot stage
常见的如yocto: bootrom(BL1) -> lk2(BL2)->ATF/GZ(BL31) ->lk2(bl33)->kernel
android: bootrom(BL1) -> preloader(BL2)->lk2(bl2_ext)->ATF/GZ(BL31) ->lk2(bl33)->kernel
lk2/uboot就是在作为bl33使用。
一般atf只是用来切换world,所以只用到atf bl31的部分

浙公网安备 33010602011771号