CRASH/SAFE Benjamin C. Pierce March 11, 2011 Present-day - - PowerPoint PPT Presentation

crash safe
SMART_READER_LITE
LIVE PREVIEW

CRASH/SAFE Benjamin C. Pierce March 11, 2011 Present-day - - PowerPoint PPT Presentation

CRASH/SAFE Benjamin C. Pierce March 11, 2011 Present-day compuCng plaForms are distressingly insecure! One culprit: legacy requirements complex instrucCon


slide-1
SLIDE 1

CRASH/SAFE ¡

Benjamin ¡C. ¡Pierce ¡ March ¡11, ¡2011 ¡

slide-2
SLIDE 2

Present-­‑day ¡compuCng ¡plaForms ¡ ¡ are ¡distressingly ¡insecure! ¡

slide-3
SLIDE 3

One ¡culprit: ¡legacy ¡requirements ¡

complex ¡instrucCon ¡sets ¡ complex, ¡monolithic ¡operaCng ¡systems ¡ insecure, ¡low-­‑level ¡programming ¡languages ¡

Patch? ¡

Reboot! ¡

slide-4
SLIDE 4

CRASH ¡

Clean-­‑Slate ¡Design ¡ ¡

  • f ¡Resilient, ¡AdapCve, ¡Secure ¡Hosts ¡
slide-5
SLIDE 5

Consul-ng ¡ University ¡of ¡Pennsylvania ¡ BAE ¡Systems ¡

SAFE ¡Team ¡

5 ¡

Northeastern ¡ Harvard ¡

Bryan ¡Loyall ¡ Greg ¡Sullivan ¡ Howard ¡Reubenstein ¡ Basil ¡Krikeles ¡ Greg ¡Frazier ¡ Jothy ¡Rosenberg ¡ André ¡DeHon ¡ Tom ¡Knight ¡ Benjamin ¡Pierce ¡ Olin ¡Shivers ¡ Jonathan ¡Smith ¡ Greg ¡Morrise[ ¡ Also: ¡Tim ¡Anderson, ¡Chris ¡White, ¡… ¡ Also: ¡Ben ¡Karel, ¡Benoit ¡ Montagu ¡ Also: ¡Gregory ¡Malecha ¡

slide-6
SLIDE 6

Core ¡Principles ¡

  • Fine-grained compartmentalization: supported by hardware, with runtime

intents & security interlocks, without compromising performance

  • Tagged data for compartmentalization and intent
  • Programmable Rulesets
  • Hardware Tag Management Unit for complete mediation on cycle-by-

cycle basis. Checking performed in parallel to mainline for high performance.

  • Radical Co-design for pervasive verification: define clean semantics and
  • mit complicating features to make verification tractable
  • Prevention-in-Depth: radical decomposition of systems into mutually

suspicious components with separated privileges.

slide-7
SLIDE 7

Topic ¡Areas ¡

  • 1. Tagged ¡Processor ¡Architectures ¡
  • 2. “Zero-­‑Kernel” ¡OperaCng ¡Systems ¡
  • 1. Strong ¡compartmentalizaCon ¡
  • 2. Mutual ¡suspicion ¡
  • 3. Programming ¡Languages ¡
  • 1. Tempest ¡– ¡low-­‑level ¡systems ¡programming ¡(C-­‑like) ¡
  • 2. Breeze ¡– ¡high-­‑level ¡applicaCons ¡programming ¡(ML/

Haskell-­‑like) ¡ ¡

  • 4. System-­‑wide ¡applicaCon ¡of ¡Formal ¡Methods ¡
  • 1. Design ¡for ¡verifiability ¡
slide-8
SLIDE 8

HARDWARE ¡

slide-9
SLIDE 9
slide-10
SLIDE 10
  • Process ¡tags ¡in ¡parallel ¡with ¡

datapath ¡

– No ¡impact ¡on ¡cycle ¡Cme ¡

  • Leverage ¡exisCng ¡

speculaCon/in-­‑order ¡ excepCon ¡and ¡reCrement ¡ hardware ¡

  • Implement ¡with ¡fast, ¡small ¡

Tag ¡Management ¡Unit ¡

– Similar ¡in ¡size/complexity ¡to ¡ TLB ¡

11/2/2010 ¡ 10 ¡ CRASH ¡SAFE ¡

slide-11
SLIDE 11

A ¡taste ¡of ¡µBreeze ¡

slide-12
SLIDE 12

µBreeze ¡overview ¡

  • Straw-­‑man ¡design ¡– ¡just ¡to ¡gain ¡experience ¡
  • An ¡untyped, ¡CBV ¡lambda-­‑calculus ¡with ¡

– informaCon-­‑flow ¡tracking ¡a ¡la ¡JIF/JFlow ¡

  • every ¡value ¡is ¡tagged ¡with ¡a ¡label ¡specifying ¡who ¡may ¡

read ¡(eliminate) ¡it ¡

– communicaCon ¡channels ¡(elided ¡for ¡today) ¡and ¡ threads ¡(soon) ¡

slide-13
SLIDE 13

Syntax ¡

slide-14
SLIDE 14

EvaluaCon ¡

current ¡authority ¡ current ¡PC ¡label ¡ current ¡environment ¡ (binding ¡variables ¡to ¡ their ¡values) ¡ current ¡store ¡ expression ¡being ¡evaluated ¡ new ¡store ¡ result ¡ (atom ¡= ¡value+label) ¡

slide-15
SLIDE 15

Labels ¡

[E: ¡{Benjamin: ¡Simon, ¡Steve}, ¡I: ¡…] ¡ ¡

confiden+ality ¡part ¡ integrity ¡part ¡

  • wner ¡

readers ¡

slide-16
SLIDE 16

Labels ¡

[E: ¡{Benjamin: ¡Simon, ¡Steve; ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡Stephanie: ¡Simon, ¡John, ¡Mary}, ¡I: ¡…] ¡ ¡

  • wner ¡

readers ¡

  • wner ¡

readers ¡

Decentralized ¡Label ¡Model ¡(Liskov/Myers) ¡ MulCple ¡owners, ¡each ¡asserCng ¡a ¡constraint ¡on ¡who ¡may ¡read ¡

slide-17
SLIDE 17

Authority ¡

slide-18
SLIDE 18

Values ¡and ¡Atoms ¡

slide-19
SLIDE 19

EvaluaCon ¡

slide-20
SLIDE 20

EvaluaCon ¡

slide-21
SLIDE 21

Example ¡

val bool = auth BOOL in let label private = [ E: BOOL:BOOL | * & I: * : {} ] in let label public = [ E: * : * & I: * : {} ] in { true = (\t f. t) \/ private ; false = (\t f. f) \/ private ; ifthen = (\b t f. let label L = [ E: BOOL : * | {} & I: * : * ] in (b t f) /\ L) \/ public } \/ public