OP-TEE的内存和缓存管理(一):物理内存和缓存

前面讲了TEE OS安全存储方式,讲了一下针对这个TA存储的数据。这里我们来看看展开看看这个过程。

结合《手机安全和可信应用开发指南》OP-TEE的内存和缓存管理这一章。

OP-TEE运行于安全内存中,REE侧无法访问到安全内存和安全缓存(Cache)中的任何数据。本章将详细介绍OP-TEE中的安全内存以及实现原理。

ARM核运行时所需的数据主要来自于硬件内存设备和Cache。
支持TrustZone技术后,ARM核运行态分为安全世界状态(SWA)和正常世界状态(NWS)。
当ARM核处于正常世界状态时,ARM核无权访问硬件内存设备的安全区域和Cache中的安全数据。
为实现数据的安全隔离,ARM使用TZASC来保障正常世界状态无法访问到硬件内存设备的安全区域,对Cache和MMU的扩展保障正常世界状态无法获取到Cache中的安全数据。

硬件层面的内存隔离

1 内存设备安全区域的隔离

借助TrustZone技术搭建的TEE方案之所以能够保障系统的安全是由于TrustZone技术对ARM核和总线进行了安全扩展,并提供了安全组件(IP)来实现对系统资源硬件层面的隔离,包括对中断、内存、片上SRAM、外设等都能实现硬件级别的隔离。

只有当ARM核处于安全世界状态时才有权限访问安全资源,如果ARM核在正常世界状态中试图去访问安全资源,会触发数据访问异常(Segmentation Fault)。

对于不同的系统资源,ARM提供了不同的安全组件来实现对资源的硬件隔离。

对于系统内存(DRAM), ARM使用TZASC组件来实现内存中安全区域和非安全区域的硬件级别的安全隔离,DRAM通过TZASC组件挂接到系统总线上。

图14-1所示为DRAM通过TZASC接入到系统中的框图。

在这里插入图片描述

TZASC组件(tzc_380/tzc_400)可将DRAM的地址空间划分成几个区域,每个区域可以被配置成安全内存区域或非安全内存区域。

当ARM核需要访问物理内存时,除了会将需要访问的物理内存的地址发送到系统总线上之外还会发送PROT信号(安全读写信号),对应于总线上的安全状态位(NS bit)。只有当ARM核处于安全世界状态时,安全状态位才可能是0,即安全读写操作。

由于DRAM是通过TZASC挂接到总线上的,所以读写操作的物理地址信息和PROT信号最终会被发送到TZASC中,TZASC计算出ARM需要读写的物理内存地址区域,再结合该读写请求的安全状态位的值来判定该读写操作请求是否合法,如果需要被读写的物理内存地址在系统启动时被设置成安全区域,而该读写操作又是ARM核在正常世界状态时发起的,则TZASC会判定该读写操作失败并返回错误。

内存区域的划分是在系统启动时通过配置TZASC组件(tzc_400/tzc_380)中的寄存器来实现的。

在ATF中使用的是tzc_400,一般将区域0配置成安全内存区域,用于EL3程序的运行区域1配置成安全内存用于TEE OS和TA的运行,其他区域配置成非安全区域用于REE侧程序的运行。(区域不是对于的NS bit—0、1)

开发者也可根据实际需求修改对内存区域的安全属性的设定。

2 MMU和缓存中数据的安全隔离

TZASC能够提供物理内存硬件级别的安全保护,但ARM核访问数据时首先会到Cache中去查找内容,如果在Cache中有需要被访问的地址的条目,则会直接使用找到的条目中的内容作为访问的结果,只有当在Cache中找不到与需要访问的内存地址匹配的条目时才会从内存中去读取数据。(所以有的安全数据如果保存在cache中,那肯定也得区分一下是不是安全内存)

支持TrustZone技术的ARM核对MMU进行了扩展,MMU在安全世界状态和正常世界状态中具有各自独立的TTBR0、TTBR1和TTBCR,对这些MMU寄存器的虚拟化确保正常世界状态和安全世界状态具有完全独立的MMU地址映射表。

因此在正常世界状态和安全世界状态中,虚拟地址(Virtual Address, VA)到物理地址(Physical Address, PA)的转化是独立分开的。但MMU中的TLB是共用的,只不过对TLB中的每一项扩展了一个安全状态位(NS bit),用来表示该条转化曾经是正常世界状态触发的还是安全世界状态触发的。(每个步骤都没有遗漏)

Cache也有相同的扩展,当ARM核产生访问请求时,将需要被访问虚拟地址经过MMU转换成物理地址,并将物理地址值和当前ARM核是处于正常世界状态还是安全世界状态的标志位NSTID传递给Cache。

Cache根据物理地址和NSTID来判定将哪一个条目的数据发送到AXI上返回给ARM核。图14-2所示为内存在正常世界状态和安全世界状态中的结构框图。

在这里插入图片描述
下篇来看看软件层面的。


版权声明:本文为weixin_45264425原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。