occlum/occlum
GitHub: occlum/occlum
一个基于 Rust 的内存安全多进程库操作系统,为 Intel SGX 提供轻量级、高隔离的 Enclave 运行环境。
Stars: 1520 | Forks: 248

##
**最新消息:** 我们的论文《Occlum: Secure and Efficient Multitasking Inside a Single Enclave of Intel SGX》已被 [ASPLOS'20](https://asplos-conference.org/programs/) 接收。该研究论文强调了 Occlum 所采用的单地址空间架构的优势,并描述了一种新的 Enclave 内隔离机制,以补充这一方法。论文可在 [ACM 数字图书馆](https://dl.acm.org/doi/abs/10.1145/3373376.3378469) 和 [Arxiv](https://arxiv.org/abs/2001.07450) 上查阅。
Occlum 是一个 *内存安全*、*多进程* 的库操作系统(LibOS),适用于 [Intel SGX](https://software.intel.com/en-us/sgx)。作为一个 LibOS,它使 *遗留* 应用程序能够在 SGX 上运行,且 *几乎或完全不需要修改源代码*,从而透明地保护用户工作负载的机密性和完整性。
Occlum 具有以下显著特性:
* **高效的多任务处理。** Occlum 提供 *轻量级* 的 LibOS 进程:它们是轻量级的,因为所有 LibOS 进程共享同一个 SGX Enclave。相比于重量级的每个 Enclave 一个 LibOS 进程,Occlum 的轻量级 LibOS 进程在启动时快达 *1,000 倍*,IPC 速度快 *3 倍*。此外,Occlum 提供可选的 [**PKU**](./docs/pku_manual.md)(用户空间保护键)功能,以在需要时增强 Occlum LibOS 与用户空间进程之间的故障隔离。
* **多种文件系统支持。** Occlum 支持多种类型的文件系统,例如 *只读哈希文件系统*(用于完整性保护)、*可写加密文件系统*(用于机密性保护)、*不受信任的主机文件系统*(用于 LibOS 与主机操作系统之间的便捷数据交换)。
* **内存安全。** Occlum 是 *首个* 使用内存安全编程语言([Rust](https://www.rust-lang.org/))编写的 SGX LibOS。因此,Occlum 更少可能包含低级的内存安全漏洞,并且更适合托管安全关键型应用程序。
* **易用性。** Occlum 提供用户友好的构建工具和命令行工具。在 SGX Enclave 中运行 Occlum 应用程序可以像输入几条 Shell 命令一样简单(请参见下一节)。
从版本 0.30.0 开始,Occlum 引入了 EDMM 作为可选功能。通过 EDMM,Occlum 的配置更加灵活,且 Enclave 加载时间显著缩短。更多细节请参考 [edmm_config_guide](./docs/edmm/edmm_config_guide.md)。
## Occlum 文档
官方 Occlum 文档可在 [`https://occlum.readthedocs.io`](https://occlum.readthedocs.io) 查阅。
以下是一些快速链接。
* [`快速开始`](https://occlum.readthedocs.io/en/latest/quickstart.html#)
* [`构建与安装`](https://occlum.readthedocs.io/en/latest/build_and_install.html#)
* [`Occlum 配置`](https://occlum.readthedocs.io/en/latest/occlum_configuration.html)
* [`Occlum 兼容可执行二进制文件`](https://occlum.readthedocs.io/en/latest/binaries_compatibility.html)
* [`演示`](https://occlum.readthedocs.io/en/latest/Demos/demos.html)
* [`问答`](https://occlum.readthedocs.io/en/latest/qa.html)
## 实现状态如何?
Occlum 正在积极开发中。我们目前专注于实现生产环境中所需的更多系统调用和附加功能,包括裸机服务器和公有云(阿里云、Azure、...)虚拟机。
此外,分支 **1.0.0-preview** 专门用于下一代 Occlum 的开发。
## 内部工作原理如何?
Occlum 的高层架构总结如下:

## 为什么取这个名字?
项目名称 Occlum 源自 J. K. Rowling 在《哈利·波特》系列中创造的 *Occlumency* 一词。在《哈利·波特与凤凰社》中,Occlumency 被描述为:
同样的道理也适用于 Occlum,不是针对思想,而是针对程序:
当然,Occlum 必须运行在支持 SGX 的 Intel x86 CPU 上才能发挥其魔力。
## 贡献者
欢迎任何形式的贡献!项目在更加稳定后,我们将发布贡献指南并接受拉取请求。
感谢 [所有为该项目做出卓越贡献的开发者](CONTRIBUTORS.md)。
## 许可证
Occlum 采用 BSD 许可证发布。版权信息请参见 [这里](LICENSE)。
标签:ASPLOS, Enclave, Intel SGX, Kali工具, PKU, Rust, TEE, 内存保护键, 内存安全, 加密文件系统, 单地址空间架构, 只读哈希文件系统, 可信计算, 可视化界面, 多进程, 安全LibOS, 安全隔离, 库操作系统, 文件系统, 机密计算, 网络流量审计, 轻量级进程, 运行时隔离, 通知系统