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

Posted

技术标签:

【中文标题】可信执行环境 (TEE) 中的客户端应用程序和可信应用程序【英文标题】:Client Application and Trusted Application in Trusted Execution Environment (TEE) 【发布时间】:2018-07-09 00:13:02 【问题描述】:

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

AFAIK,每个 android 移动设备都安装了一个单独的 TEE 操作系统以及一些预定义的 TA(受信任的应用程序)来存储指纹图像、密码、密钥对等秘密信息。

如何识别安卓手机上运行的TEE OS?是否有可能在一台设备中出现多个 TEE,例如 Trusty(来自 Google)、Kinibi(来自 Trustonic)等?

由于 Trusty 来自 Google,所有设备是否都会默认安装 Trust 操作系统?

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

【问题讨论】:

【参考方案1】:

为了使用 TrustZone 功能(TEE 操作和功能),我们必须使用一个“安全操作系统”:Trusty OS、OP-TEE OS、SierraTEE。 安全启动过程从 ROM 开始,有一些阶段,并在“Rich OS”(不安全操作系统)之前初始化安全操作系统。两者都初始化后,普通世界(富操作系统)的客户端应用程序可以使用 TEE 驱动程序与安全世界(安全操作系统)的受信任应用程序通信。对于您的第一个问题,我认为我们可以通过观察启动过程来观察初始化了哪个 Secure OS。我的小知识让我认为我们无法运行任何命令来发现这些信息,因为两个世界之间的通信是由 TEE 驱动程序完成的。

对于在同一设备上运行的多个 TEE 操作系统,您必须更改 安全启动 的执行方式,以添加安全操作系统初始化的顺序,并且您需要特定的驱动程序来与每个设备进行通信安全操作系统或负责与所有这些通信的通用驱动程序。我不知道您为什么要运行多个 TEE 操作系统,但我知道您可以在安全操作系统中同时运行多个 TA(受信任的应用程序)。

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

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

【讨论】:

【参考方案2】:

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

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

所以在开发CA/TA的时候,你必须要关注目标平台。如果我们以这种方式思考,则很少有可能在单个设备上出现一个以上的 TEE 操作系统。

【讨论】:

以上是关于可信执行环境 (TEE) 中的客户端应用程序和可信应用程序的主要内容,如果未能解决你的问题,请参考以下文章

快速了解什么是可信执行环境TEE技术

可信执行环境 TEE分类

可信执行环境 TEE分类

Android Dev:在可信执行环境 (TEE) 中运行自定义代码,扩展 Keystore

可信安全TEE分析1 概念

可信安全TEE分析4 Intel SGX 设计和编程