Security and confidential computing axel simon office of the CTO enarx.io
The Problem
The Need for Confidentiality and Integrity Banking & Finance ● Government & Public Sector ● Telco ● IoT ● HIPAA ● GDPR ● Sensitive enterprise functions ● Defense ● Human Rights NGOs ● ... ●
Virtualization Stack Application Middleware Userspace Kernel Bootloader Hypervisor Firmware BIOS | EFI CPU | Management Engine
Container Stack Application Middleware Userspace Container Engine Kernel Bootloader Hypervisor Firmware BIOS | EFI CPU | Management Engine
Virtualization Stack as seen by xkcd (xkcd.com/2166)
Trusted Execution Environments
What’s a TEE? TEE Application Middleware Userspace Kernel Bootloader Hypervisor Firmware BIOS | EFI CPU | Management Engine
What’s a TEE? TEE Application Middleware Userspace Kernel Bootloader Hypervisor Firmware BIOS | EFI Only the CPU has access CPU | Management Engine
What’s a TEE? TEE Application Middleware Userspace Kernel What happens when Bootloader other layers try to access? Hypervisor Firmware BIOS | EFI Only the CPU has access CPU | Management Engine
What’s a TEE? TEE Application Middleware Userspace Kernel What happens when Bootloader other layers try to access? Hypervisor Blocked by CPU Firmware BIOS | EFI Only the CPU has access CPU | Management Engine
Trusted Execution Environments Host TEE TEE is a protected area within the host, for execution of sensitive workloads
Trusted Execution Environments Host TEE TEE is a protected area within the TEE provides: host, for execution of sensitive Memory Confidentiality ● workloads Integrity Protection ● General compute ● HWRNG ●
Trusted Execution Environments Host Tenant TEE Q. “But how do I know that it’s a TEE provides: valid TEE?” Memory Confidentiality ● Integrity Protection ● General compute ● HWRNG ●
Trusted Execution Summary Attestation Host Tenant TEE Q. “But how do I know that it’s a TEE provides: valid TEE?” Memory Confidentiality ● A. Attestation Integrity Protection ● General compute ● HWRNG ●
Trusted Execution Summary Attestation Host Tenant TEE Code + Data (Encrypted) Attestation includes: TEE provides: Diffie-Hellman Public Key Memory Confidentiality ● ● Hardware Root of Trust Integrity Protection ● ● TEE Measurement General compute ● ● HWRNG ●
Trusted Execution Models Process-Based VM-Based Intel SGX (not upstream) AMD SEV ● ● RISC-V Sanctum (no hardware) IBM PEF (no hardware) ● ● Intel MKTME (no attestation¹) ● Not a TEE: TrustZone, TPM 1. Attestation is discussed here: https://patents.google.com/patent/US20190042463A1/en?oq=20190042463
Trusted Execution: Process-Based PROS CONS Access to system APIs from Keep Unfiltered system API calls from Keep ● ● Application redesign required ● Untested security boundary ● Fantastic for malware ● Lock-in ●
Trusted Execution: Virtual Machine-Based PROS CONS Strengthening of existing boundary Hardware emulation ● ● Run application on existing stacks Heavy weight for microservices ● ● Bidirectional isolation CPU architecture lock-in ● ● Limits malware Duplicated kernel pages ● ● Host-provided BIOS ●
Introducing Enarx
The Enarx 5-bullet overview Uses TEEs (SGX, SEV, etc.) for confidential workloads ●
The Enarx 5-bullet overview Uses TEEs (SGX, SEV, etc.) for confidential workloads ● Easy development and deployment using Wasm ●
The Enarx 5-bullet overview Uses TEEs (SGX, SEV, etc.) for confidential workloads ● Easy development and deployment using Wasm ● Strong security design principles ●
The Enarx 5-bullet overview Uses TEEs (SGX, SEV, etc.) for confidential workloads ● Easy development and deployment using Wasm ● Strong security design principles ● Cloud-native → Openshift, kubernetes ●
The Enarx 5-bullet overview Uses TEEs (SGX, SEV, etc.) for confidential workloads ● Easy development and deployment using Wasm ● Strong security design principles ● Cloud-native → Openshift, kubernetes ● Open source: project , not production-ready (yet) ●
Enarx Where do we want to be?
What’s the full picture? “Server” “Client” Attestation Host handshake CPU + firmware Tenant Workload Enarx Keep delivery Workload runs (encrypted) 27
Enarx Architecture Application Language Bindings (libc, etc.) WASI W3C standards WebAssembly Process-Based VM-Based SGX SEV Keep Keep Sanctum PEF MKTME
Enarx Architecture Application Language Bindings (libc, etc.) WASI W3C standards WebAssembly Process-Based VM-Based SGX SEV Keep Keep Intel AMD
Breaking things down with SGX Application Process-Based SGX Keep
Breaking things down with SGX Application Process-Based Keep SGX
Breaking things down with SGX Application Process-Based Keep SGX
CONFIDENTIAL Designator SGX demo
Breaking things down with SEV Application VM-Based SEV Keep
Breaking things down with SEV Application VM-Based Keep SEV
Breaking things down with SEV Application VM-Based Keep SEV
CONFIDENTIAL Designator SEV demo
Where we’d like to be Application Process-Based VM-Based Keep Keep SGX SEV
Where we’d like to be Application Process-Based VM-Based Keep Keep SGX SEV
Where we’d like to be Same binary Application Application Process-Based VM-Based Keep Keep SGX SEV
Where we’d like to be Where we are Same binary Application Application Process-Based VM-Based Keep Keep SGX SEV
CONFIDENTIAL Designator
CONFIDENTIAL Designator
Layers - process-based Keep Application WASI Trusted via Enarx Keep Measurement WASM (JIT) Enarx Shim Loader Silicon architecture-dependent Silicon architecture-dependent Distrusted Kernel Root of Trust CPU (Intel)
Layers (now) - process-based Keep Application Enarx Shim Loader Kernel CPU (Intel)
Layers - VM-based Keep Application WASI Trusted via Enarx Keep Measurement WASM (JIT) Enarx Shim Loader (VMM) Silicon architecture-dependent Silicon architecture-dependent Distrusted Kernel Root of Trust CPU (AMD)
Layers (now) - process-based Keep Application Enarx Shim Loader (VMM) Kernel CPU (AMD)
Where we’d like to be Where we are Same binary ELF static-PIE binary ELF static-PIE binary Enarx Enarx Shim Shim Loader Loader (VMM) Kernel Kernel CPU (Intel) CPU (AMD)
Where we’d like to be next One binary Wasm binary WASI WASM (JIT) Enarx Enarx Shim Shim Loader Loader (VMM) Kernel Kernel CPU (Intel) CPU (AMD)
We are an open project ● Code ✓ GitHub ● Wiki ✓ GitHub ● Design ✓ GitHub ● Issues & PRs ✓ GitHub ● Chat ✓ Rocket.Chat (Thank you!) ● CI/CD resources ✓ Packet.io (Thank you!) ● Stand-ups ✓ Open to all ● Diversity ✓ Contributor Covenant CofC 50
We Need Your Help! Website: https://enarx.io Daily stand-ups open to all! Check the website wiki for details. Code: https://github.com/enarx License: Apache 2.0 Language: Rust 51
We Need Your Help! Website: https://enarx.io Daily stand-ups open to all! Check the website wiki for details. Code: https://github.com/enarx License: Apache 2.0 Language: Rust 52
Questions? https://enarx.io
Recommend
More recommend