Fork of the Occlum, contains additional features that are used by DeTEE
Go to file
Valentyn Faychuk 54ea7d6cfd
Some checks failed
Code Coverage / Collect-code-coverage (push) Has been cancelled
Demo Test / C_cpp_rust_golang_embedded_mode_support_test (push) Has been cancelled
Demo Test / Java_support_test (push) Has been cancelled
Demo Test / Fish_test (push) Has been cancelled
Demo Test / Bazel_test (push) Has been cancelled
Demo Test / Https_server_test (push) Has been cancelled
Demo Test / Local_attestation_test (push) Has been cancelled
Demo Test / Sqlite_test (push) Has been cancelled
Demo Test / Xgboost_test (push) Has been cancelled
Demo Test / Tensorflow_lite_test (push) Has been cancelled
Demo Test / Pytorch_test (push) Has been cancelled
Demo Test / Distributed_Pytorch_test (push) Has been cancelled
Demo Test / Tensorflow_test (push) Has been cancelled
Demo Test / Grpc_musl_test (push) Has been cancelled
Demo Test / Grpc_glibc_test (push) Has been cancelled
Demo Test / Grpc_tls_test (push) Has been cancelled
Demo Test / Openvino_test (push) Has been cancelled
Demo Test / Python_musl_support_test (push) Has been cancelled
Demo Test / Python_glibc_support_test (push) Has been cancelled
Demo Test / Redis_support_test (push) Has been cancelled
Demo Test / Flink_test (push) Has been cancelled
Demo Test / Cluster_serving_test (push) Has been cancelled
Demo Test / Enclave_RA_TLS_test (push) Has been cancelled
Demo Test / Vault_test (push) Has been cancelled
Demo Test / Sofaboot_test (push) Has been cancelled
Demo Test / Netty_UT_test (push) Has been cancelled
Demo Test / Bash_test (push) Has been cancelled
Demo Test / Sysbench_test (push) Has been cancelled
Demo Test / Gvisor_syscalls_test (push) Has been cancelled
Demo Test / Flask_tls_test (push) Has been cancelled
Demo Test / Iperf2_test (push) Has been cancelled
Demo Test / Linux_LTP_test (push) Has been cancelled
Demo Test / FIO_test (push) Has been cancelled
Demo Test / PaddlePaddle_test (push) Has been cancelled
Demo Test / RuntimeBoot_test (push) Has been cancelled
Demo Test / Swtpm_test (push) Has been cancelled
SGX Hardware Mode Test / Make-test-on-ubuntu ([self-hosted SGX2-HW EDMM]) (push) Has been cancelled
SGX Hardware Mode Test / Make-test-on-ubuntu ([self-hosted SGX2-HW]) (push) Has been cancelled
SGX Hardware Mode Test / C_cpp_rust_golang_embedded_mode_support_test ([self-hosted SGX2-HW EDMM]) (push) Has been cancelled
SGX Hardware Mode Test / C_cpp_rust_golang_embedded_mode_support_test ([self-hosted SGX2-HW]) (push) Has been cancelled
SGX Hardware Mode Test / Java_support_test ([self-hosted SGX2-HW EDMM PKU]) (push) Has been cancelled
SGX Hardware Mode Test / Java_support_test ([self-hosted SGX2-HW]) (push) Has been cancelled
SGX Hardware Mode Test / Bazel_test ([self-hosted SGX2-HW EDMM]) (push) Has been cancelled
SGX Hardware Mode Test / Bazel_test ([self-hosted SGX2-HW]) (push) Has been cancelled
SGX Hardware Mode Test / Fish_test ([self-hosted SGX2-HW EDMM]) (push) Has been cancelled
SGX Hardware Mode Test / Fish_test ([self-hosted SGX2-HW]) (push) Has been cancelled
SGX Hardware Mode Test / Xgboost_test ([self-hosted SGX2-HW EDMM]) (push) Has been cancelled
SGX Hardware Mode Test / Xgboost_test ([self-hosted SGX2-HW]) (push) Has been cancelled
SGX Hardware Mode Test / Sqlite_test ([self-hosted SGX2-HW EDMM]) (push) Has been cancelled
SGX Hardware Mode Test / Sqlite_test ([self-hosted SGX2-HW]) (push) Has been cancelled
SGX Hardware Mode Test / Python_musl_support_test ([self-hosted SGX2-HW EDMM]) (push) Has been cancelled
SGX Hardware Mode Test / Python_musl_support_test ([self-hosted SGX2-HW]) (push) Has been cancelled
SGX Hardware Mode Test / Openvino_test ([self-hosted SGX2-HW EDMM]) (push) Has been cancelled
SGX Hardware Mode Test / Openvino_test ([self-hosted SGX2-HW]) (push) Has been cancelled
SGX Hardware Mode Test / Grpc_test ([self-hosted SGX2-HW EDMM]) (push) Has been cancelled
SGX Hardware Mode Test / Grpc_test ([self-hosted SGX2-HW]) (push) Has been cancelled
SGX Hardware Mode Test / Gvisor_test ([self-hosted SGX2-HW EDMM]) (push) Has been cancelled
SGX Hardware Mode Test / Gvisor_test ([self-hosted SGX2-HW]) (push) Has been cancelled
SGX Hardware Mode Test / Test_deb_deploy ([self-hosted SGX2-HW]) (push) Has been cancelled
SGX Hardware Mode Test / Tensorflow_serving_test ([self-hosted SGX2-HW EDMM]) (push) Has been cancelled
SGX Hardware Mode Test / Tensorflow_serving_test ([self-hosted SGX2-HW]) (push) Has been cancelled
SGX Hardware Mode Test / Remote_attestation_test ([self-hosted SGX2-HW EDMM]) (push) Has been cancelled
SGX Hardware Mode Test / Remote_attestation_test ([self-hosted SGX2-HW]) (push) Has been cancelled
SGX Hardware Mode Test / Init_RA_grpc ([self-hosted SGX2-HW EDMM]) (push) Has been cancelled
SGX Hardware Mode Test / Init_RA_grpc ([self-hosted SGX2-HW]) (push) Has been cancelled
SGX Hardware Mode Test / Init_RA_AECS ([self-hosted SGX2-HW EDMM]) (push) Has been cancelled
SGX Hardware Mode Test / Init_RA_AECS ([self-hosted SGX2-HW]) (push) Has been cancelled
SGX Hardware Mode Test / MySQL_test ([self-hosted SGX2-HW EDMM]) (push) Has been cancelled
SGX Hardware Mode Test / MySQL_test ([self-hosted SGX2-HW]) (push) Has been cancelled
SGX Hardware Mode Test / Netty_UT_test ([self-hosted SGX2-HW EDMM]) (push) Has been cancelled
SGX Hardware Mode Test / Netty_UT_test ([self-hosted SGX2-HW]) (push) Has been cancelled
SGX Hardware Mode Test / Stress_test_with_musl ([self-hosted SGX2-HW EDMM]) (push) Has been cancelled
SGX Hardware Mode Test / Stress_test_with_musl ([self-hosted SGX2-HW]) (push) Has been cancelled
SGX Hardware Mode Test / Stress_test_with_glibc ([self-hosted SGX2-HW EDMM]) (push) Has been cancelled
SGX Hardware Mode Test / Stress_test_with_glibc ([self-hosted SGX2-HW]) (push) Has been cancelled
Essential Test / Make_test_on_ubuntu (push) Has been cancelled
Rune Test / Rune_test (centos8.2) (push) Has been cancelled
Rune Test / Rune_test (ubuntu18.04) (push) Has been cancelled
add utilities library to docker image
Signed-off-by: Valentyn Faychuk <valy@detee.ltd>
2025-01-22 04:59:44 +02:00
.githooks Integrate cargo fmt into make format 2020-10-14 20:34:12 +08:00
.github Add "kernel_heap_monitor" feature 2024-03-06 17:44:30 +08:00
demos [demos] Update Linux LTP test demo 2024-03-06 15:59:26 +08:00
deps [deps] Update rust sgx sdk 2024-03-06 17:44:30 +08:00
docs Add AMX and EDMM as feature in Occlum.json 2024-03-06 15:59:26 +08:00
etc Add AMX and EDMM as feature in Occlum.json 2024-03-06 15:59:26 +08:00
example Update demos to enable EDMM features 2023-11-07 09:26:20 +08:00
src Bump version to 0.30.1 2024-03-06 17:45:10 +08:00
test Use special exception register and Replace sgx_tprotect_rsrv_mem with low leve API 2024-03-06 15:59:26 +08:00
tools add utilities library to docker image 2025-01-22 04:59:44 +02:00
.all-contributorsrc docs: update .all-contributorsrc 2019-02-26 21:15:11 +08:00
.astylerc Disable backup file when make format 2020-07-01 21:22:29 +08:00
.gitignore sealing key generation 2025-01-22 03:40:37 +02:00
.gitmodules Upgrade dependencies for occlum_exec 2022-09-06 15:38:41 +08:00
.readthedocs.yaml [readthedoc] enable PDF format build 2023-10-19 09:27:53 +08:00
CODE_OF_CONDUCT.md Update COC of Occlum project 2022-07-03 18:59:10 -07:00
codecov.yml Add codecov ignore path 2021-10-08 10:03:40 +08:00
CONTRIBUTORS.md docs: update CONTRIBUTORS.md 2019-02-26 21:15:11 +08:00
LICENSE Modify the project license description 2023-03-15 16:08:41 +08:00
Makefile Disable DCAP for make submodule with hyper mode 2023-06-21 10:48:52 +08:00
README.md Update README 2025-01-22 03:40:38 +02:00

Occlum logo

All Contributors Essential Test SGX Hardware Mode Test Demo Test

NEWS: Our paper Occlum: Secure and Efficient Multitasking Inside a Single Enclave of Intel SGX has been accepted by ASPLOS'20. This research paper highlights the advantages of the single-address-space architecture adopted by Occlum and describes a novel in-enclave isolation mechanism that complements this approach. The paper can be found on ACM Digital Library and Arxiv.

Occlum is a memory-safe, multi-process library OS (LibOS) for Intel SGX. As a LibOS, it enables legacy applications to run on SGX with little or even no modifications of source code, thus protecting the confidentiality and integrity of user workloads transparently.

Occlum has the following salient features:

  • Efficient multitasking. Occlum offers light-weight LibOS processes: they are light-weight in the sense that all LibOS processes share the same SGX enclave. Compared to the heavy-weight, per-enclave LibOS processes, Occlum's light-weight LibOS processes is up to 1,000X faster on startup and 3X faster on IPC. In addition, Occlum offers an optional PKU (Protection Keys for Userspace) feature to enhance fault isolation between Occlum's LibOS and userspace processes if needed.
  • Multiple file system support. Occlum supports various types of file systems, e.g., read-only hashed FS (for integrity protection), writable encrypted FS (for confidentiality protection), untrusted host FS (for convenient data exchange between the LibOS and the host OS).
  • Memory safety. Occlum is the first SGX LibOS written in a memory-safe programming language (Rust). Thus, Occlum is much less likely to contain low-level, memory-safety bugs and is more trustworthy to host security-critical applications.
  • Ease-of-use. Occlum provides user-friendly build and command-line tools. Running applications on Occlum inside SGX enclaves can be as simple as only typing several shell commands (see the next section).

Since version 0.30.0, Occlum has introduced EDMM as an optional feature. With EDMM, Occlum configurations become more flexible, and enclave loading time is significantly reduced. More details please refer to edmm_config_guide.

Occlum Documentation

The official Occlum documentation can be found at https://occlum.readthedocs.io.

Some quick links are as below.

What is the Implementation Status?

Occlum is being actively developed. We now focus on implementing more system calls and additional features required in the production environment, including baremetal server and public cloud (Aliyun, Azure, ...) VM.

Also, a dedicated branch 1.0.0-preview is used for next generation Occlum development.

How about the Internal Working?

The high-level architecture of Occlum is summarized in the figure below:

Arch Overview

Why the Name?

The project name Occlum stems from the word Occlumency coined in Harry Potter series by J. K. Rowling. In Harry Potter and the Order of Phoenix, Occlumency is described as:

The magical defence of the mind against external penetration. An obscure branch of magic, but a highly useful one... Used properly, the power of Occlumency will help shield you from access or influence.

The same thing can be said for Occlum, not for the mind, but for the program:

The magical defence of the program against external penetration. An obscure branch of technology, but a highly useful one... Used properly, the power of Occlum will help shield your program from access or influence.

Of course, Occlum must be run on Intel x86 CPUs with SGX support to do its magic.

Contributors

Contributions of any kind are welcome! We will publish contributing guidelines and accept pull requests after the project gets more stable.

Thanks go to all these wonderful contributors to this project.

License

Occlum is released under BSD License. See the copyright information here.

DeTEE

Occlum is a part of the DeTEE project. DeTEE is a research project that aims to provide a secure and efficient computing environment for data-intensive applications.

# Run the occlum ubuntu 20.04 docker container
docker run --device /dev/sgx/enclave --device /dev/sgx/provision --rm --name valytest -it -v /home/vfaychuk:/root/vfaychuk occlum/occlum:latest-ubuntu20.04
# inside the container run the following commands
apt update && apt install -y ssh-client
mkdir -p /root/.ssh && vim /root/.ssh/config
#Host gitea.detee.cloud
#     IdentityFile ~/.ssh/gitea_ed25519
vim /root/.ssh/gitea_ed25519
# put the server private key to download the repo
chown -R root:root /root/.ssh
chmod 600 /root/.ssh/gitea_ed25519
ssh-keyscan -H gitea.detee.cloud > ~/.ssh/known_hosts
git clone git@gitea.detee.cloud:SGX/occlum.git
cd occlum && make submodule
cd tools/toolchains/utils_lib/
# following command installs the utils library which can derive sealing key of the enclave
./build.sh