with Enarx Trusting untrusted systems

53
Towards a Safe and Secure Smart World Trusting untrusted systems with Enarx Mike Bursell Office of the CTO, Red Hat axel simon Office of the CTO, Red Hat https://enarx.io

Transcript of with Enarx Trusting untrusted systems

Page 1: with Enarx Trusting untrusted systems

Towards a Safe and Secure Smart World

Trusting untrusted systems with Enarx

Mike BursellOffice of the CTO, Red Hat

axel simonOffice of the CTO, Red Hat

https://enarx.io

Page 2: with Enarx Trusting untrusted systems

The Problem

Page 3: with Enarx Trusting untrusted systems

The Need for Confidentiality and Integrity● IoT● Smart transport● Smart energy● Edge

● Routers● Pumping stations● Wind farms● Bus stops● Pico-cells● Drones● Smart meters

Page 4: with Enarx Trusting untrusted systems

Virtualization Stack

Page 5: with Enarx Trusting untrusted systems

Container Stack

Page 6: with Enarx Trusting untrusted systems

https://xkcd.com/2166/

Page 7: with Enarx Trusting untrusted systems

ConfidentialComputingConsortium

Page 8: with Enarx Trusting untrusted systems

Confidential Computing Consortium

Linux Foundation project

Premier members

Page 9: with Enarx Trusting untrusted systems

Confidential Computing Consortium

Linux Foundation project

Premier members

General members

Page 10: with Enarx Trusting untrusted systems

Enarx: the Plan

Page 11: with Enarx Trusting untrusted systems

Enarx: the Principles

Don’t trust the hostDon’t trust the host ownerDon’t trust the host operatorAll hardware cryptographically verifiedAll software audited and cryptographically verified

Page 12: with Enarx Trusting untrusted systems

Trusted Execution Environments

TEE

TEE is a protected area within the host, for execution of sensitive workloads

Host

Page 13: with Enarx Trusting untrusted systems

TEE provides:● Memory Confidentiality● Integrity Protection● General compute● HWRNG

Trusted Execution Environments

TEE

TEE is a protected area within the host, for execution of sensitive workloads

Host

Page 14: with Enarx Trusting untrusted systems

How does Enarx use a TEE?

14

Enarx Keep

App + runtime

Host

Page 15: with Enarx Trusting untrusted systems

Open hybrid cloud and Enarx

15

Enarx

Page 16: with Enarx Trusting untrusted systems

Step 1: on premises

TrustedSemi-trustedUntrusted

Internal Internet

Internal dev

Page 17: with Enarx Trusting untrusted systems

Step 1: on premises

TrustedSemi-trustedUntrusted

Internal Internet

Internal dev

Owned host

Page 18: with Enarx Trusting untrusted systems

Step 2: private cloud

Orchestrator

Image repository

TrustedSemi-trustedUntrusted

Internal Internet

Internal dev

Owned host

Page 19: with Enarx Trusting untrusted systems

Workload

Step 2: private cloud

Orchestrator

Workload

Workload

Image repository

TrustedSemi-trustedUntrusted

Internal Internet

Internal dev

Owned host

Page 20: with Enarx Trusting untrusted systems

Workload

Step 2: private cloud

Orchestrator

Workload

Workload

Image repository CheckVendor Image

repository

TrustedSemi-trustedUntrusted

Internal Internet

Internal dev

Owned host

Page 21: with Enarx Trusting untrusted systems

Workload

Step 3: public cloud

Orchestrator

Workload

Workload

Image repositoryVendor Image

repository

TrustedSemi-trustedUntrusted

Internal Internet

Internal dev

CSP host

Page 22: with Enarx Trusting untrusted systems

Workload

Step 4: hybrid cloud

Workload

Workload

Image repositoryVendor Image

repository

TrustedSemi-trustedUntrusted

Internal Internet

Internal dev Orchestrator

Check

Workload

Workload

Workload

CSP hostOwned host

Page 23: with Enarx Trusting untrusted systems

Workload

Step 5: hybrid multicloud

Workload

Workload

Image repositoryVendor Image

repository

TrustedSemi-trustedUntrusted

Internal Internet

Internal dev Orchestrator

Check

Workload

Workload

Workload

Workload

Workload

Workload

CSP host

CSP host

Owned host

Page 24: with Enarx Trusting untrusted systems

How does Enarx fit here?

24

Enarx Keep

App + runtime

Untrusted host

Page 25: with Enarx Trusting untrusted systems

Workload

Step 6: Enarx hybrid multicloud

Workload

Workload

Image repositoryVendor Image

repository

TrustedSemi-trustedUntrusted

Internal Internet

Internal dev Orchestrator

Check

Workload

Workload

Workload

Workload

Workload

Workload

CSP host

CSP host

Owned host

Enarx Keep

Page 26: with Enarx Trusting untrusted systems

New options for workloads with Enarx

Page 27: with Enarx Trusting untrusted systems

Mix and match for different workload types & Enarx

Image repositoryVendor Image

repository

TrustedSemi-trustedUntrusted

Internal Internet

Internal dev Orchestrator

Check

Sensitive workload

CSP host

Owned host ? CSP host

Page 28: with Enarx Trusting untrusted systems

Mix and match for different workload types & Enarx

Image repositoryVendor Image

repository

Internal Internet

Internal dev Orchestrator

Check

CSP host

Owned host

Sensitive workload

CSP host

TrustedSemi-trustedUntrusted

Page 29: with Enarx Trusting untrusted systems

Mix and match for different workload types & Enarx

Image repositoryVendor Image

repository

Internal Internet

Internal dev Orchestrator

Check

CSP host

Owned host

Sensitive workload

Sensitive workload

CSP host

TrustedSemi-trustedUntrusted

Enarx Keep

Page 30: with Enarx Trusting untrusted systems

Standard workload

Mix and match for different workload types & Enarx

Sensitive workload

Image repositoryVendor Image

repository

Internal Internet

Internal dev Orchestrator

Check

Sensitive workload

CSP host

Owned host ? CSP host

TrustedSemi-trustedUntrusted

Enarx Keep

Page 31: with Enarx Trusting untrusted systems

Standard workload

Mix and match for different workload types & Enarx

Sensitive workload

Standard workload

Image repositoryVendor Image

repository

Internal Internet

Internal dev Orchestrator

Check

WorkloadSensitive workload

CSP host

Owned host CSP host

TrustedSemi-trustedUntrusted

Enarx Keep

Page 32: with Enarx Trusting untrusted systems

On which technology do I build my application?

Page 33: with Enarx Trusting untrusted systems

Introducing Enarx

Page 34: with Enarx Trusting untrusted systems

Enarx is a Development Deployment Framework

Choose Your Language / Tools

Compile to WebAssembly

Develop Application

Choose Host

Instance Configuration

Page 35: with Enarx Trusting untrusted systems

Enarx is a Development Deployment Framework(Example components)

Choose Your Language / Tools

Compile to WebAssembly

Develop Application

Choose Host

Instance Configuration

Dev tooling

IBM Cloud, Azure, AWS, ...Openshift

Page 36: with Enarx Trusting untrusted systems

Enarx Project Principles

1. We don’t trust the host owner2. We don’t trust the host software3. We don’t trust the host users4. We don’t trust the host hardware

a. … with the exception of CPU + firmware

Page 37: with Enarx Trusting untrusted systems

Enarx Design Principles

1. Minimal Trusted Computing Base2. Minimum trust relationships3. Deployment-time portability4. Network stack outside TCB5. Security at rest, in transit and in use6. Auditability 7. Open source8. Open standards 9. Memory safety

10. No backdoors

Page 38: with Enarx Trusting untrusted systems

38

Enarx architectural componentsHost Client

Enarx runtime

Enarx host agent

Enarx client agent

Keep

Page 39: with Enarx Trusting untrusted systems

39

Enarx architectural components

Enarx runtime

Enarx host agent

Enarx client agent

Enarx Keep - trustedMeasured and attestedWebAssembly+WASI runtimeInside a TEE instance

Enarx host agent - untrustedActs a proxy between Enarx client agent and:

● CPU/firmware● Enarx Keep

Enarx client agent - trustedWorks with orchestration/CLI Manages attestationApplies policyEncrypts and transports workload

Page 40: with Enarx Trusting untrusted systems

40

Enarx architectural componentsHost Client

Orchestrator(e.g. Openshift/k8s,

Openstack)

Enarx runtime

Application

CPU + firmware

Enarx host agent

Enarx client agent

CLIKeep

Page 41: with Enarx Trusting untrusted systems

Enarx Keep Architecture

VM-BasedKeep

Process-BasedKeep

SGX

Sanctum

SEV

PEF

WebAssembly

WASI

Language Bindings (libc, etc.)

W3Cstandards

Application

MKTME

Page 42: with Enarx Trusting untrusted systems

Enarx: the Fit

Don’t trust the hostDon’t trust the host ownerDon’t trust the host operatorAll hardware cryptographically verifiedAll software audited and cryptographically verified

Well suited to microservicesWell suited to sensitive data or algorithmsEasy development integrationSimple deploymentStandards based: WebAssembly (WASM)

Page 43: with Enarx Trusting untrusted systems

The vision● IoT● Smart transport● Smart energy● Edge

● Routers● Pumping stations● Wind farms● Bus stops● Pico-cells● Drones● Smart meters

Allow sensitive applications to be:● Written using existing tools● Deployed simply● Take advantage of audited, open

source infrastructural components● Executed transparently on different

hardware● Run anywhere!

Page 44: with Enarx Trusting untrusted systems

We Need Your Help!

44

Website: https://enarx.io

Code: https://github.com/enarx

Gitter: https://gitter.im/enarx/

Master plan: https://github.com/enarx/enarx/issues/1

License: Apache 2.0

Language: Rust

Daily stand-ups open to all! Check the website wiki for details.

Page 45: with Enarx Trusting untrusted systems

Questions?

https://enarx.io

Page 46: with Enarx Trusting untrusted systems

46

Enarx architectural components

Attestation

Code + Data(Encrypted)

Host Client

Orchestrator(e.g. Openshift/k8s,

Openstack)

Enarx runtime

Application

CPU + firmware

Enarx host agent

Enarx client agent

CLIKeep

Client/ host agent

comms

6

2, 4

1, 5

1, 5

3,7

Page 47: with Enarx Trusting untrusted systems

Enarx attestation process diagram

Client Host

CLI / Orchestrator

Enarx client agent

Enarx host agent CPU/firmware Enarx Keep

1. Request workload placement

Page 48: with Enarx Trusting untrusted systems

Enarx attestation process diagram

Client Host

CLI / Orchestrator

Enarx client agent

Enarx host agent CPU/firmware Enarx Keep

1. Request workload placement

2. Request Keep

Page 49: with Enarx Trusting untrusted systems

Enarx attestation process diagram

Client Host

CLI / Orchestrator

Enarx client agent

Enarx host agent CPU/firmware Enarx Keep

1. Request workload placement

2. Request Keep

3. Create Keep, load Enarx runtime

Page 50: with Enarx Trusting untrusted systems

Enarx attestation process diagram

Client Host

CLI / Orchestrator

Enarx client agent

Enarx host agent CPU/firmware Enarx Keep

1. Request workload placement

2. Request Keep

3. Create Keep, load Enarx runtime

4. Measurement of Keep + Enarx runtime

Page 51: with Enarx Trusting untrusted systems

Enarx attestation process diagram

Client Host

CLI / Orchestrator

Enarx client agent

Enarx host agent CPU/firmware Enarx Keep

1. Request workload placement

2. Request Keep

3. Create Keep, load Enarx runtime

4. Measurement of Keep + Enarx runtime

5. OK/not-OK

Page 52: with Enarx Trusting untrusted systems

Enarx attestation process diagram

Client Host

CLI / Orchestrator

Enarx client agent

Enarx host agent CPU/firmware Enarx Keep

1. Request workload placement

2. Request Keep

3. Create Keep, load Enarx runtime

4. Measurement of Keep + Enarx runtime

5. OK/not-OK

6. Code + Data (encrypted)

Page 53: with Enarx Trusting untrusted systems

Enarx attestation process diagram

Client Host

CLI / Orchestrator

Enarx client agent

Enarx host agent CPU/firmware Enarx Keep

1. Request workload placement

2. Request Keep

3. Create Keep, load Enarx runtime

4. Measurement of Keep + Enarx runtime

5. OK/not-OK

6. Code + Data (encrypted)

7. Load Code + Data into Keep