如何开发使用 Arm 信任区的应用程序?具体来说,我想开发一个可以在安全世界中保存敏感数据的程序。
该程序应该在正常世界还是安全世界中运行?我知道安全世界中有 trustlet,我是否需要开发 trustlet?是否有可用于直接与现有安全世界操作系统交互的 SDK 或 API,或者我是否需要编译和安装自己的安全操作系统?
任何建议将不胜感激。
谢谢!
如何开发使用 Arm 信任区的应用程序?具体来说,我想开发一个可以在安全世界中保存敏感数据的程序。
该程序应该在正常世界还是安全世界中运行?我知道安全世界中有 trustlet,我是否需要开发 trustlet?是否有可用于直接与现有安全世界操作系统交互的 SDK 或 API,或者我是否需要编译和安装自己的安全操作系统?
任何建议将不胜感激。
谢谢!
有两个极端。这些记录在ARMs安全技术的软件概述章节中:使用 TrustZone 技术构建安全系统。
一方面,只有一组API可以从正常世界中调用。这在SMC对Linux的调用中有详细说明。例如,如果设备包含公钥-私钥,则API调用可以对数据进行签名。正常世界永远无法访问私钥,但任何人都可以通过验证签名来验证设备是原始设备。因此,普通世界可以通过任何通信接口自由转发此请求。这可能是验证设备的一部分。
在这种模式下,安全世界和正常世界(在其他地方称为TEE和REE )都有一个成熟的操作系统。操作系统必须与中断和调度合作。他们还可以使用SMC调用、无锁算法和信号量以及共享内存。
ARM建议将FIQ用于安全世界,而将IRQ用于正常世界。具体来说,有一些设置可以阻止正常世界永远掩盖FIQ 。所有这些问题都依赖于系统所需的IPC类型、调度、中断响应等。
最简单的安全调度程序总是会抢占正常世界。只有空闲任务才会将 CPU 交给正常世界。一个更灵活的解决方案是让调度程序合作,以便两个世界可以有更高和更低优先级的任务。
MobiCore等操作系统已经存在,并已部署在三星 Galaxy S3 等大众市场设备上。
MobiCore 是与Android 一起运行的操作系统,因此 trustlets(= MobiCore 应用程序)可以通过对 MobiCore 驱动程序的一组系统调用与 Android 应用程序通信,MobiCore 驱动程序是 Android 操作系统负责与可信执行环境通信的部分。
如果您希望如上所述为 MobiCore 开发 trustlet,您必须成为 MobiCore 开发人员,理论上您可以通过注册成为MobiCore 的 Trustonic 企业的开发人员来做到这一点。
如果您希望在您自己的设备/开发板上使用 ARM 的 TrustZone 技术和开源安全操作系统,也许您可以使用 OpenVirtualization 的SierraTEE,它似乎是为 Xilinx Zynq-7000 AP SOC 编译的,并且还兼容 Android 作为富操作系统。
更好的方法是在一个设备中安装 REE OS 和 TEE OS。当一个程序想要做一些敏感的事情时,设备会切换到 TEE OS,这样你就可以安全地处理敏感数据了。完成 sensitvie 日期后,设备将更改为 REE OS。但是在一个设备上实现两个操作系统切换是一项艰巨的工作。
您可以使用OPTEE(Open Sourec Portable Trusted Execution environment)操作系统。如果您正在寻找可信执行环境应用程序示例,也称为可信应用程序 (TA),那么您可以使用 OP-TEE 和 Comcast Crypto API检查此 optee 可信应用程序示例存储库和此 TA 。
您可以在此处参考文档。