本文根据 SOFAChannel#18 直播分享整理,主题:零门槛的机密计算:Occlum LibOS 使用入门和技术揭秘。
前言
为什么 SGX 应用开发难?
-
必须将目标应用做二分:开发者需要决定哪些组件应该置于 Enclave 内部,哪些置于 Enclave 外部,以及双方如何通信。对于复杂的应用,确定高效、合理且安全的划分方案本身就是一件颇具挑战的工作,更不要说实施划分所需的工程量。 -
被限定在某个编程语言:无论使用上述哪种 SDK 开发,一个开发者都将被限定在该 SDK 所支持的语言,这通常意味着 C/C++(当使用 Intel SGX SDK、Open Enclave SDK 或 Google Asylo 时),而无法使用 Java、Python、Go 等更加友好的编程语言。 -
只能获得很有限的功能:处于硬件限制和安全考虑,Enclave 中是无法直接访问 Enclave 外的(不可信)OS 的。由于 Enclave 中缺乏 OS 的支持,各种 SDK 只能提供普通不可信环境下的一个很小的功能子集,这使得很多现有的软件库或工具都无法在 Enclave 中运行。
学会 Occlum 的“三板斧”
new
、
build
和
run
。本节我们以利用 Occlum 在 SGX 中运行一个 Hello World 程序为例进行说明。
$ cat hello_world.c
int main() {
printf("Hello World!\n");
return 0;
}
occlum-gcc
)编译这个程序,并验证它在 Linux 上能正常工作。
occlum-gcc hello_world.c -o hello_world
./hello_world
Hello World!
occlum new
命令)。
occlum new occlum_hello
cd occlum_hello
occlum_hello
的目录,并在该目录中准备一些必要的文件(如
Occlum.json
配置文件)子目录(如
image/
)。
hello_world
制作一个 Occlum 的 Enclave 文件和可信镜像(使用
occlum build
命令)。
cp ../hello_world image/bin
occlum build
hello_world
(使用
occlum run
命令)。
occlum run /bin/hello_world
Hello World!
用起来像 Docker 的 TEE OS
new
、
build
和
run
三个命令,Occlum 还提供
start
、
exec
、
stop
、
kill
等命令,其语意与 Docker 同名命令类似。
occlum build
命令打包和制作可信镜像,该可信镜像是利用 Merkel Hash Tree 来保证镜像在上传到不可信的部署环境之后,无法被攻击者篡改。可信镜像的内容是 Occlum 启动时所载入的 rootfs,组织结构与通常的 Unix 操作系统类似,具体内容由用户决定。
occlum run
命令启动一个新的 Occlum Enclave,该 Enclave 中的 Occlum TEE OS 会从可信镜像中载入并执行相应的应用程序。Occlum 向应用程序提供与 Linux 兼容的系统调用,因此应用程序无需修改(或只需少量修改)即可运行在 Enclave 中。应用程序的内存状态由 Enclave 保护,应用程序的文件 I/O 由 Occlum 做自动的加解密,因此可以同时保护应用在内存和外存中数据的机密性和完整性。
更高效、更强大、更安全和更多内容
-
高效多进程支持:Occlum 实现了一种轻量级的进程,相比此前最先进的开源 TEE OS(Graphene-SGX),进程启动提速 10-1000 倍,进程间通信的吞吐量提升 3 倍(详见我们的论文,链接见文末); -
强大文件系统:Occlum 支持多种文件系统,比如保护完整性的文件系统、保护机密性的文件系统、内存文件系统、主机文件系统等等,满足应用的各种文件 I/O 需求; -
内存安全保障:作为全球首个使用 Rust 语言开发的 TEE OS,Occlum 极大降低了内存安全问题的几率(据统计,Linux 有 50% 的安全漏洞都与内存安全有关),因此更值得信赖;
-
Occlum 官方网站: https://occlum.io -
Occlum 项目地址: https://github.com/occlum/occlum -
Occlum 学术论文: https://arxiv.org/abs/2001.07450 -
SOFAChannel 直播回顾视频: https://www.bilibili.com/video/BV1S5411a7gr
- END -
本文分享自微信公众号 - 支付宝技术(Ant-Techfin)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。