TrustZone内存分区

时间:2015-09-14 02:24:48

标签: linux arm trust-zone

我正在阅读此link的ARM Trustzone。我知道使用TrustZone,可以将内存划分为安全和非安全区域。供应商可以使用它来运行安全的操作系统。

我很好奇的是这个分区的粒度支持是什么?只是可以存在标记为“安全”的内存块,并且每个操作系统只能有一个这样的内存块吗? TrustZone是否具有为各个进程划分内存的能力?

假设我有一个Linux应用程序的.so文件(假设示例)。是否有可能在进程A中的相同代码可以在虚拟地址0x1000到0x2000中标记为安全,而在进程B中可以在虚拟地址0x5000中标记为安全到0x6000?

1 个答案:

答案 0 :(得分:1)

TrustZone分区发生在物理内存级别,因此问题的进程级部分并不真正适用。请注意,作为非安全操作系统的Linux甚至无法查看安全内存,因此对于无法访问的地址进行虚拟映射几乎没有用处;但是,安全操作系统确实能够通过其页表条目中的NS位映射安全和非安全物理地址。

至于物理分区的方式,取决于实现。 TZC-380您的链接指的是支持2-16个区域,最小粒度为32KB;它的继任者TZC-400有9个区域,并且一直到4KB粒度。其他实现可能仍然不同,虽然粒度低于4KB是不可能的,因为对于其MMU打开的CPU来说,这几乎是无法使用的。此外,系统中通常会有一些东西只能硬连线到安全存储器映射(TZC的编程接口,一个),并且通常包括一些专用的安全SRAM。