可信执行环境(TEE)中的客户端应用和可信应用

Client Application and Trusted Application in Trusted Execution Environment (TEE)

我是 TEE(可信执行环境)的新手。有人可以帮助我解决一些基本问题吗?

A​​FAIK,每个 Android 移动设备都安装了一个单独的 TEE OS 以及一些预定义的 TA(可信应用程序)来存储指纹图像、密码、密钥对等秘密信息。

如何识别 Android phone 上的 TEE OS 运行?是否有可能多个 TEE 存在于一台设备中,例如 Trusty(来自 Google)、Kinibi(来自 Trustonic)等?

由于Trusty来自Google,所有设备都会默认有一个Trust OS吗?

如何列出 TEE 中存在的现有 TA 应用程序?如果是这样,我们可以使用 CA(客户端应用程序 using Trusty API from google)从移动 phone 连接到现有 TA 吗?

为了使用 TrustZone 功能(TEE 操作和功能),我们必须使用一个 "Secure OS":Trusty OS, OP-TEE OS, SierraTEEsecure boot 进程从 ROM 开始,有一些阶段并在 "Rich OS"(不安全 OS)之前初始化 Secure OS。两者都初始化后,正常世界(Rich OS)中的客户端应用程序可以使用 TEE 驱动程序与安全世界(Secure OS)中的受信任应用程序进行通信。对于你的第一个问题,我想我们可以通过观察启动过程来观察初始化了哪个Secure OS。我的小知识让我认为没有命令我们可以 运行 发现这些信息,因为两个世界之间的通信是由 TEE 驱动程序进行的。

关于同一设备上的多个 TEE OS 运行ning,您必须更改 secure boot 的执行方式,以添加顺序Secure OSes 初始化,您需要特定的驱动程序来与每个 Secure OS 进行通信,或者需要一个负责与所有这些通信的通用驱动程序。我不知道为什么你应该想要很多 TEE OS 运行ning,但我知道你可以 运行 在一个安全的 [=26] 中同时有很多 TA(可信应用程序) =].

要使用 Trusty,您必须检查 Android 版本是否支持它。此外,您还必须检查您的设备是否启用了 TrustZone(许多设备具有该技术,但在出售时禁用了该技术)。

在正常世界中,您无法在安全世界中列出受信任的应用程序 运行ning。您可以列出所有 运行ning 在 Normal World 的客户端应用程序。但是这些肯定可以连接到 Secure World 的特定受信任应用程序 运行ning。

请注意,Trusty OS 不符合全球平台 TEE 规范,而是基于 Google TEE API。

其他 TEE OS 如 OP-TEE/Open TEE 是全球平台合规性,因此解决了互操作性问题。

所以在开发CA / TA 的同时,您必须需要解决目标平台问题。如果我们以这种方式思考,那么单个设备上出现超过一个 TEE OS 的可能性很小。