参考文献
对比分析
开源项目
|
公司
|
支持芯片
|
特点
|
支持的库
|
开发语言
|
---|---|---|---|---|---|
Teaclave/MesaTEE | 百度 | SGX、TrustZone | Apache孵化项目之一。Teaclave设计思路是构建一个类FaaS(Function as a Service)的计算平台服务。平台在提供TEE机密计算、远程验证、安全存储等功能基础上,再通过一套任务管理框架实现了多任务的管理和并发操作。同时按照FaaS的设计逻辑实现计算函数的可插拔 | Marshal、Math、Binascii、Itertools、Micronumpy | Rust、Python |
Graphene / Gramine OS | OSCAR Lab | SGX Linux | SGX LibOS项目。Gramine(以前叫Graphene)是一个轻量级的库式操作系统,旨在以最小的主机要求运行单个应用程序。Gramine可以在一个孤立的环境中运行应用程序,其好处可以与在虚拟机中运行一个完整的操作系统相媲美–包括客体定制,易于移植到不同的操作系统,以及进程迁移。。 | Tensorflow、Pytorch、OpenVINO、Memchached、Redis、Nginx、Apache HTTP Server | c、python |
Occlum | 蚂蚁金服 | SGX | 降低遗留应用迁移到SGX中的编码成本。对应用代码不做更改或者只做少量调整,就可以迁移到SGX中运行,获得机密性和完整性保护。与其他LibOS项目相比,具有Enclave内多进程管理、全类型的文件系统支持、内存安全、容器化设计功能。 | rust、c/c++ | |
OpenEnclave | Microsoft | SGX、TrustZone(预览阶段) | Open Enclave是一套C/C++的SDK。Open Enclave SDK主要封装了Enclave生命周期管理、Enclave度量、Enclave内外互调用、系统调用、数据封装、远程验证以及一些密码学库。 | MUSL、Openssl、Mbedtls、LLVM LibC++ | |
Asylo | SGX | 提供了C/C++的SDK,但不同的是Asylo更进一步定义了基于SGX的应用实现规范,也就是所谓的编程框架。基于Asylo实现的应用也是分为非可信区和可信区,但互相的通信被约束为C/S模式。非可信部分实现客户端和Enclave管理器,可信部分实现计算服务端。Asylo是一套把SGX做成服务化的编程框架。 | - | C/C++ | |
KubeTEE | SGX | KubeTEE是一个TEE开发、部署、维护中间件框架和服务的集合。特别是,它是针对云原生工作流程的。顾名思义,KubeTEE是基于docker容器、Kubernetes编排和其他云原生技术。它的目标是帮助开发者实现基于TEE的应用,并更容易和顺利地部署TEE服务。 | |||
OP-TEE | Linaro | TrustZone | 是Trusted OS的一个开源实现。 OP-TEE包括安全世界操作系统(OPTEE_OS),普通世界客户端(OPTEE_Client),测试套件(OPTEE_Test / XTest)和Linux驱动程序。操作系统和客户端符合Global Platform规范。项目由Linaro维护,已经适配支持28多个平台/处理器。开发用户负责开发在Linux上运行的客户端应用程序(CA)和在OP-TEE上运行的可信应用程序(TA)。CA使用TEE客户端API与TA对话并从中获取安全服务。CA和TA使用共享内存在彼此之间传递数据 | - | - |
OPEN-TEE | Secure Systems group | TustZone (≥Ubuntu14.04) | Open-TEE开源项目的目标是实现一个符合最近全球平台TEE规范的 “虚拟TEE”。 | - | c/c++ |
Trusty OS | Android社区开源项目 | SGX、TrustZone | Trusty 是一种安全的操作系统 (OS),可为 Android 提供可信执行环境 (TEE)。Trusty OS 与 Android OS 在同一处理器上运行,但 Trusty 通过硬件和软件与系统的其余组件隔离开来。Trusty 与 Android 彼此并行运行。Trusty 可以访问设备主处理器和内存的全部功能,但完全隔离。隔离可以保护 Trusty 免受用户安装的恶意应用以及可能在 Android 中发现的潜在漏洞的侵害。 Trusty 与 ARM 和 Intel 处理器兼容。在 ARM 系统中,Trusty 使用 ARM 的 Trustzone™ 虚拟化主处理器,并创建安全的可信执行环境。使用 Intel 虚拟化技术的 Intel x86 平台也提供类似的支持。 | Little Kernel、Linux 内核驱动程序、Android 用户空间库 | - |
SierraTEE OS | Sierraware | TrustZone、MIPS | 提供了一个最小的安全内核,可以与功能更全面的高级操作系统(如Linux、Android、BSD)在同一内核上并行运行。它还为丰富的操作系统(“正常世界”)提供了驱动程序,以便与安全内核(“安全世界”)通信。 | - |
很多企业自用闭源的Trusted OS,比如苹果的Secure Enclave、高通的QTEE、三星的Knox、Teegris、Trustonic的Kinibi OS、华为的TrustedCore等。
LibOS for SGX
- 为什么需要LibOS见 这儿
英特尔SGX通过应用隔离技术帮助保护选定的代码和数据不被修改。应用程序可以从英特尔SGX的保密性和完整性保证中受益,但开发人员需要非常熟练地对英特尔SGX环境进行有效分区和代码修改。同时,SGX SDK提供了有限的系统调用接口,因此,在Enclave中的应用程序会因为没有暴露的接口而无法运行。
为了很好地支持在英特尔SGX Enclave中运行的应用程序,开发者可以免于编写任何额外的enclave感知代码。LibOS的主要功能如下:
- 提供一个智能点来划分不信任/信任的系统
- 不扩大不信任的接口
- 将整个应用程序移植到Enclave
LibOS for SGX的通用框架是:
目前,支持Intel SGX的开源LibOS有Gramine、Occlum、SCONE和Fortanix等。其中常用的是Gramine和Occlum。
所以 LibOS 也属于 Trusted OS。Trusted OS 是为了开发方便,提供API让应用程序安全访问隔离空间,进行机密计算。