我是TEE(可信执行环境)的新手。有人可以帮我解决一些基本疑虑吗?
AFAIK,每个Android移动设备都安装了单独的TEE操作系统以及一些预定义的TA(受信任的应用程序)来存储指纹图像,密码,密钥对等秘密信息。
如何识别在Android手机上运行的TEE操作系统?是否有可能在一个设备中出现多个TEE,如Trusty(来自Google),Kinibi(来自Trustonic)等?
由于Trusty来自Google,默认情况下所有设备都会拥有Trust OS吗?
如何列出TEE中存在的现有TA应用程序?如果是这样,我们可以使用手机中的CA(客户端应用程序using Trusty API from google)连接到现有的TA吗?
答案 0 :(得分:3)
为了使用TrustZone功能(TEE操作和功能),我们必须使用一个“安全操作系统”:Trusty OS,OP-TEE OS,SierraTEE。从ROM开始的安全启动过程具有某些阶段,并在“ Rich OS”(不安全的OS)之前初始化安全OS。两者都初始化后,普通世界(Rich OS)上的客户端应用程序可以使用TEE驱动程序与安全世界(Secure OS)上的可信应用程序进行通信。对于您的第一个问题,我认为我们可以观察引导过程来观察哪个Secure OS进行了初始化。我的一点知识使我认为,由于两个世界之间的通信是由TEE驱动程序进行的,因此无法运行命令来发现此信息。
关于同一设备上运行的多个TEE操作系统,您必须更改执行安全启动的方式,以添加安全操作系统初始化的顺序,并且您需要特定的驱动程序来与每个设备进行通信安全操作系统或负责与所有操作系统进行通信的通用驱动程序。我不知道您为什么要运行许多TEE操作系统,但是我知道您可以在安全OS中同时运行许多TA(受信任的应用程序)。
要与Trusty一起使用,您必须检查Android版本是否支持它。另外,您还必须检查设备上是否启用了TrustZone(许多设备都具有该技术,但在出售时禁用了该技术)。
在“正常世界”中,您无法列出在“安全世界”中运行的“受信任的应用程序”。您可以列出在正常世界中运行的所有客户端应用程序。但是这些肯定可以连接到在Secure World运行的特定受信任的应用程序。
答案 1 :(得分:0)
请注意,Trusty OS不符合全球平台TEE规范,而是基于Google TEE API。
其他TEE操作系统(如OP-TEE / Open TEE)符合全球平台规范,因此可以解决互操作性问题。
因此,在开发CA / TA时,您必须确定护理目标平台。如果我们以这种方式考虑,则很少有机会在单个设备上出现一个以上的TEE操作系统。