为Arm信任区制定计划

时间:2013-03-16 21:40:16

标签: security arm trust-zone

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

这个程序应该在正常世界还是安全世界中运行?我知道安全领域有信任小组,我是否需要开发信任小组?有SDK还是API 我可以用来直接与现有的安全世界操作系统交互,还是需要编译和安装我自己的安全操作系统?

非常感谢任何建议。

谢谢!

4 个答案:

答案 0 :(得分:7)

有两个极端。这些内容记录在 ARM 安全技术的Software overview章节中:使用TrustZone技术构建安全系统

的API

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

合作操作系统

在此模式下,安全正常世界中都有一个完整的操作系统(称为 TEE REE < / em>其他地方)。操作系统必须与中断和调度协作。他们还可以使用 SMC 调用,lock free算法和信号量以及共享内存

ARM 建议将 FIQ 用于安全世界,并为保留 IRQ 正常的世界。具体来说,有一些设置可以阻止正常世界屏蔽 FIQ 。所有这些问题都依赖于系统需要的 IPC 调度中断响应等类型。

最简单的安全调度程序将始终抢占正常世界。只有 idle 任务才能将CPU产生到 normal 世界。一个更灵活的解决方案是让调度程序合作,这样两个世界都可以拥有更高和更低优先级的任务。

答案 1 :(得分:1)

更好的方法是在一台设备中安装REE OS和TEE OS。当程序想要做一些敏感的事情时,设备将更改为TEE OS,因此您可以安全地处理敏感日期。完成敏感日期后,设备将更改为REE OS。 但是在设备上实现两个OS开关是一项艰巨的工作。

答案 2 :(得分:1)

MobiCore等操作系统已经存在,已部署在三星Galaxy S3等大众市场设备上。

MobiCore是一个运行 Android的操作系统,因此trustlets(= MobiCore应用程序)可以通过对MobiCore driver的一组系统调用与Android应用程序进行通信,这是Android操作系统负责与可信执行环境进行通信。

如果您正在寻求为MobiCore开发trustlet,如上所述,您必须成为MobiCore开发人员,理论上您可以通过注册为developer for MobiCore's Trustonic venture来完成。

如果您希望在自己的设备/开发板上使用ARM的TrustZone技术和开源安全操作系统,也许您可​​以使用OpenVirtualization的SierraTEE,它似乎是针对Xilinx Zynq-7000 AP SOC和也兼容Android作为丰富的操作系统。

答案 3 :(得分:0)

您可以使用OPTEE(Open Sourec Portable Trusted Execution environment) OS。如果要查找受信任的执行环境应用程序示例(也称为受信任的应用程序(TA)),则可以检查this optee trusted applications examples repositorythis TA using OP-TEE and Comcast Crypto API

  • Optee os提供以下用于编写受信任的应用程序的API:
    • 用于安全存储的安全存储API
    • 用于加密,解密安全凭证和数据的密码操作API
    • Secure Element API,可帮助在防篡改平台上托管应用程序或小程序
    • 时间API
    • 算术API 对于客户端或正常世界,optee提供:
  • Tee客户端Apis

您可以在此处引用documentation