7

如何开发使用 Arm 信任区的应用程序?具体来说,我想开发一个可以在安全世界中保存敏感数据的程序。

该程序应该在正常世界还是安全世界中运行?我知道安全世界中有 trustlet,我是否需要开发 trustlet?是否有可用于直接与现有安全世界操作系统交互的 SDK 或 API,或者我是否需要编译和安装自己的安全操作系统?

任何建议将不胜感激。

谢谢!

4

4 回答 4

7

有两个极端。这些记录在ARMs安全技术的软件概述章节中:使用 TrustZone 技术构建安全系统

蜜蜂

一方面,只有一组API可以从正常世界中调用。这在SMCLinux的调用中有详细说明。例如,如果设备包含公钥-私钥,则API调用可以对数据进行签名。正常世界永远无法访问私钥,但任何人都可以通过验证签名来验证设备是原始设备。因此,普通世界可以通过任何通信接口自由转发此请求。这可能是验证设备的一部分。

合作操作系统

在这种模式下,安全世界和正常世界(在其他地方称为TEEREE )都有一个成熟的操作系统。操作系统必须与中断和调度合作。他们还可以使用SMC调用、无锁算法和信号量以及共享内存

ARM建议将FIQ用于安全世界,而将IRQ用于正常世界。具体来说,有一些设置可以阻止正常世界永远掩盖FIQ 。所有这些问题都依赖于系统所需的IPC类型、调度中断响应等。

最简单的安全调度程序总是会抢占正常世界。只有空闲任务才会将 CPU 交给正常世界。一个更灵活的解决方案是让调度程序合作,以便两个世界可以有更高和更低优先级的任务。

于 2013-10-16T17:47:08.177 回答
1

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 作为富操作系统。

于 2013-11-12T11:01:44.953 回答
1

更好的方法是在一个设备中安装 REE OS 和 TEE OS。当一个程序想要做一些敏感的事情时,设备会切换到 TEE OS,这样你就可以安全地处理敏感数据了。完成 sensitvie 日期后,设备将更改为 REE OS。但是在一个设备上实现两个操作系统切换是一项艰巨的工作。

于 2013-10-04T07:51:52.733 回答
0

您可以使用OPTEE(Open Sourec Portable Trusted Execution environment)操作系统。如果您正在寻找可信执行环境应用程序示例,也称为可信应用程序 (TA),那么您可以使用 OP-TEE 和 Comcast Crypto API检查此 optee 可信应用程序示例存储库和此 TA 。

  • Optee os 提供以下 API 用于编写可信应用程序:
    • 用于安全存储的安全存储 API
    • 用于加密、解密安全凭证和数据的加密操作 API
    • 安全元素 API,有助于在防篡改平台上托管应用程序或小程序
    • 时间 API
    • 算术 API 对于客户端或普通世界 optee 提供:
  • Tee 客户端 API

您可以在此处参考文档

于 2018-11-03T10:44:05.590 回答