新闻: 我们的论文《Occlum:英特尔 SGX 单个飞地内的安全高效多任务处理》已被 ASPLOS'20 接收。这篇研究论文突出了 Occlum 采用的单地址空间架构的优势,并描述了一种新颖的飞地内隔离机制,作为这种方法的补充。论文可在 ACM 数字图书馆 和 Arxiv 上找到。
Occlum 是一个内存安全、多进程的库操作系统(LibOS),适用于 英特尔 SGX。作为一个 LibOS,它能够让传统应用程序在 SGX 上运行,只需很少甚至无需修改源代码,从而透明地保护用户工作负载的机密性和完整性。
Occlum 具有以下显著特点:
- 高效的多任务处理。 Occlum 提供轻量级 LibOS 进程:它们之所以轻量级,是因为所有 LibOS 进程共享同一个 SGX 飞地。与重量级的每飞地 LibOS 进程相比,Occlum 的轻量级 LibOS 进程在启动时速度快1000 倍,在 IPC 上速度快3 倍。此外,Occlum 还提供了可选的 PKU(用户空间保护密钥)功能,以在需要时增强 Occlum 的 LibOS 和用户空间进程之间的故障隔离。
- 多文件系统支持。 Occlum 支持各种类型的文件系统,例如,只读哈希文件系统(用于完整性保护)、可写加密文件系统(用于机密性保护)、不受信任的主机文件系统(用于 LibOS 和主机操作系统之间的便捷数据交换)。
- 内存安全。 Occlum 是第一个用内存安全的编程语言(Rust)编写的 SGX LibOS。因此,Occlum 出现低级内存安全漏洞的可能性大大降低,更值得信赖来托管安全关键型应用程序。
- 易用性。 Occlum 提供用户友好的构建和命令行工具。在 SGX 飞地内运行 Occlum 上的应用程序可以像输入几个 shell 命令一样简单(请参阅下一节)。
从 0.30.0 版本开始,Occlum 引入了 EDMM 作为可选功能。使用 EDMM,Occlum 的配置变得更加灵活,飞地加载时间显著减少。更多详情请参阅 edmm_config_guide。
Occlum 文档
Occlum 的官方文档可在 https://occlum.readthedocs.io
找到。
以下是一些快速链接。
实现状态如何?
Occlum 正在积极开发中。我们目前专注于实现更多的系统调用和生产环境所需的其他功能,包括裸机服务器和公共云(阿里云、Azure 等)虚拟机。
此外,我们使用专门的分支 1.0.0-preview 进行下一代 Occlum 的开发。
内部工作原理是什么?
Occlum 的高级架构总结如下图所示:
为什么取这个名字?
项目名称 Occlum 源自 J.K. 罗琳的《哈利·波特》系列中创造的词 Occlumency。在《哈利·波特与凤凰社》中,Occlumency 被描述为:
防御外部侵入的神奇心灵防护。这是一个鲜为人知但非常有用的魔法分支... 正确使用 Occlumency 的力量将帮助你抵御访问或影响。
同样的话也适用于 Occlum,不是针对心灵,而是针对程序:
防御外部侵入的神奇程序防护。这是一个鲜为人知但非常有用的技术分支... 正确使用 Occlum 的力量将帮助你的程序抵御访问或影响。
当然,Occlum 必须在支持 SGX 的英特尔 x86 CPU 上运行才能发挥其魔力。
贡献者
我们欢迎任何形式的贡献!在项目变得更加稳定后,我们将发布贡献指南并接受拉取请求。
许可证
Occlum 在 BSD 许可证下发布。请参阅此处的版权信息。