32
Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK Alexander Senier Sound Static Analysis for Security Workshop Gaithersburg, MD, June 27 th , 2018

Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

Reimplement? Reuse? Both!Trustworthy Systems with Genode and SPARK

Alexander SenierSound Static Analysis for Security Workshop

Gaithersburg, MD, June 27th, 2018

Page 2: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 2

AboutComponolit

Page 3: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 3

What is SPARK?Language and toolset

■ Programming language and tool set

■ Different levels of assurance

■ Adapt at your discretion

Page 4: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 4

What is SPARK?Stone level

■ No side-effects in functions

■ No parameter aliasing

■ No pointers

■ Fewer dangerous constructs

Page 5: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 5

What is SPARK?Higher assurance

■ Bronze level: Correct initialization and data flow

■ Silver level: Absence of runtime errors

■ Gold level: Proof key (integrity) properties

■ Platinum level: Functional correctness

Page 6: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 6

What is SPARK?You may know this: Jet engines

■ fsdfsd

© T

ony

His

get

t

Page 7: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 7

What is SPARK?And this: Vermont Lunar CubeSat

Page 8: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 8

What is SPARK?And this: Tokeneer

Page 9: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 9

What is SPARK?And this: Muen Separation Kernel

© William Christen

Page 10: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 10

What is SPARK?But how about this?

SPARKfor the Web!

Page 11: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 11

Demo #1Plain Web application

© K

ars

ten

Wür

th

Page 12: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 12

Web applicationSecurity

■ No authentication – bad idea!

■ Options

▪ Passwords

▪ Client certificates

▪ Authentication tokens

© K

ars

ten

Wür

th

Page 13: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 13

Web applicationToken-based authentication

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

© K

ars

ten

Wür

th

{ "alg": "HS256", "typ": "JWT"}

{ "sub": "1234567890", "name": "John Doe", "iat": 1516239022}

Client

WebService

AuthenticationProvider

(2)Authentication

Response

(3)ServiceRequest

(1)Authentication

Request

(4)Response

Page 14: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 14

Token-based authenticationThe monolithic approach

© K

ars

ten

Wür

th

■ A lot to trust!

■ How likely is no critical bug within decades?

■ Millions of lines of code

■ Formally verifying all those components? Good luck!

HTTP Server

Python

Services(systemd, cron, ssh,

syslog, dbus, ...)

Linux

Libc... Libc...

TCP/IP Drivers ...

Web App JWT

Page 15: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 15

We still want trustworthy authentication for our wind turbine!

Alternatives?

Page 16: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 16

InterludeThe Genode OS Framework*

■ Recursive system structure

▪ Root: Microkernel

▪ Parent: Responsibility + control

▪ Isolation is default

▪ Strict communication policy

■ Everything is a user-process

▪ Application

▪ File systems

▪ Drivers, Network stacks

■ Hierarchical System Architecture

*) https://genode.org

Page 17: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 17

InterludeMinimal Trusted Computing Base

■ Trusted Computing Base (TCB)

▪ Software required for security

▪ Parents in tree

▪ Services used

■ TCB reduction

▪ Application-specific

▪ Example: File system

■ Sessions

■ Per-application TCB

Page 18: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 18

Architecture for Trustworthy SystemsStrategy #1: Policy Objects

■ Can’t reimplement everything

■ Solution: software reuse

▪ Untrusted software (gray)

▪ Policy object (green)

▪ Client software (orange)

■ Policy object

▪ Establishes assumptions of client

▪ Sanitizes

▪ Enforces additional policies

■ Policy objects

Network

Stack

Web

browser

Protocol validator

(e.g. TLS)

Page 19: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 19

Architecture for Trustworthy SystemsStrategy #2: Trusted Wrappers

■ Untrusted software (gray)

▪ E.g. disk, file system, cloud

■ Trusted wrapper

▪ Mandatory encryption

■ Client software (orange)

▪ No direct interaction with untrusted components

▪ Minimal attack surface

■ Trusted wrapper

Network

Stack

Web

Browser

VPN

Component

Page 20: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 20

Architecture for Trustworthy SystemsStrategy #3: Transient components

■ Untrusted software

▪ E.g. Media decoder

▪ No chance to get this right!

■ Transient component

▪ Temporarily instantiate untrusted software for single file/stream

▪ Expose only simple interfaces (e.g. PCM audio)

▪ Cleanup on completion

■ Transient component

Network Audio PlayerDecoder

read-only simple

Controller

Page 21: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 21

Let’s put it together.

Page 22: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 22

Token-based authenticationFirst component-based attempt

© K

ars

ten

Wür

th

Microkernel & Core

init,timer

Virtual Box

(Linux+

Web Server)

JWTValidator Nic

TCP/IP,libc, ...

Nic Session

Page 23: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 23

Token-based authenticationSecond component-based attempt

© K

ars

ten

Wür

th

Microkernel & Core

init,timer

Virtual Box

(Linux+

Web Server)

JWTValidator Nic

Nic Session

Terminal Session

Downlink

TCP/IP,libc, ...

Uplink

TCP/IP,libc, ...

Page 24: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 24

Demo #2Minimal JWT Validator

© K

ars

ten

Wür

th

© G

ust

avo

Que

pón

Page 25: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 25

Component-based architectureDisclaimer

■ Never show your authentication tokens in presentations ;-)

■ Proof-of-Concept

▪ No TLS in this demo!

▪ Only symmetric crypto for validating JWTs for now (HMAC-SHA256)

▪ Only “stone” level right now (proving absence of runtime errors TBD)

■ Not a solution for availability!

Page 26: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 26

Component-based architectureTrusted computing base

■ The TLS validator has 3618 SLOC*:

▪ Ada: 2836 (78.39%)

▪ Cpp: 782 (21.61%)

■ The overall Trusted Computing Base is ~37000 SLOC*:

▪ Components: validator, microkernel, core, init, dynamic linker, RTC driver

▪ cpp: 33318 (91.27%)

▪ ada: 2836 (7.77%)

▪ asm: 352 (0.96%)

*) generated using 'SLOCCount' by David A. Wheeler.

Page 27: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 27

Component-based architectureBut, performance?

fdd

Page 28: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 28

Performance EvaluationSetup

■ Client

▪ Intel Core i5-M520, 2.4 GHz

▪ Intel 82577LM GiB Ethernet

▪ Debian 9.4, x86_64

▪ Lighttpd 1.4.45-1

■ ab (Apache Benchmark)

▪ version 2.4.25-3+deb9u4

▪ 6 concurrent requests

▪ 1000 requests1k, 10k, 100k, 1M

■ Evaluation Setup

1. Internet

2. Local webserver

3. Local webserver through passthrough JWT validator

4. Local webserver through real JWT validator

Page 29: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 29

Performance EvaluationResults

Internet Local Passthrough Validated0.01

0.1

1

10

100

1k 10k 100k 1M

Local Passthrough Validated0

0.5

1

1.5

2

2.5

1k 10k 100k 1M

Mean latency between request [ms]

Page 30: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 30

Component-based architectureReimplement? Reuse? Both!

■ Component-based systems and program verification fit together very well!

■ Confidentiality & integrity

▪ No need to verify large code bases

▪ Reuse of large parts of the architecture

▪ Minimal trusted computing base

▪ Performance: Promising, but needs evaluation in realistic setup

Page 31: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 31

Component-based architectureWhat else?

■ Everything you saw is open source – try it!

■ JWX library for parsing JWTs (and more)

▪ https://github.com/Componolit/jwx

■ Demo

▪ examples/authproxy.adb (in JWT repository)

■ Libsparkcrypto

▪ https://github.com/Componolit/libsparkcrypto

■ Genode OS Framework

▪ https://github.com/genodelabs/genode

■ SPARK

▪ https://www.adacore.com/download

Page 32: Reimplement? Reuse? Both! · Reimplement? Reuse? Both! Trustworthy Systems with Genode and SPARK. Alexander Senier. Sound Static Analysis for Security Workshop. Gaithersburg, MD,

06/27/2018 32

Questions?

Alexander SenierManaging Director

[email protected]

@Componolit · componolit.com · github.com/Componolit