在处理器中的TrustZone和系统架构中,我们探讨了硬件中的TrustZone支持,包括Arm处理器和更广泛的内存系统。本主题关注TrustZone系统中发现的软件架构。
下图显示了启用TrustZone的系统的典型软件栈:
【注意】:为简单起见,该图不包括管理程序,尽管它们可能存在。
安全状态中的可信内核承载服务,例如密钥管理或数字版权管理(DRM)。在非安全状态下运行的软件需要对这些服务进行受控访问。
用户空间应用程序不太可能直接了解TrustZone。相反,它将使用由用户空间库提供的高级API。该库处理与可信服务的通信。这类似于例如图形API提供对底层GPU的抽象。
服务库和可信服务之间的通信通常使用内存中的消息队列或邮箱进行处理。术语“World Shared Memory”(WSM)有时用于描述用于此通信的内存。这些队列必须位于两组软件都可以看到的内存中,这意味着非安全内存。这是因为非安全状态只能看到非安全内存。
服务库将请求或多个请求放入邮箱,然后调用内核空间中的驱动程序。驱动程序负责与受信任执行环境(TEE)进行低级交互,这可能包括为消息队列分配内存并在TEE中注册它们。请记住,这两个世界正在不同的虚拟地址空间中运行,因此它们不能使用虚拟地址进行通信。
驱动程序将调用安全状态,通常使用