如何开发使用Arm的信任区域的应用程序?具体来说,我想开发一个可以在安全的世界中保存敏感数据的程序。
这个程序应该在正常世界还是安全世界中运行?我知道安全领域有信任小组,我是否需要开发信任小组?有SDK还是API 我可以用来直接与现有的安全世界操作系统交互,还是需要编译和安装我自己的安全操作系统?
非常感谢任何建议。
谢谢!
答案 0 :(得分:7)
有两个极端。这些内容记录在 ARM 安全技术的Software overview章节中:使用TrustZone技术构建安全系统。
在频谱的一端,只有一组 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 repository和this TA using OP-TEE and Comcast Crypto API。
您可以在此处引用documentation。