practical mostly static information flow control
play

Practical Mostly-Static Information Flow Control Andrew Myers MIT - PowerPoint PPT Presentation

Practical Mostly-Static Information Flow Control Andrew Myers MIT Lab for Computer Science Privacy Old problem (secrecy, confidentiality) : prevent programs from leaking data Untrusted, downloaded code: more important Standard


  1. Practical Mostly-Static Information Flow Control Andrew Myers MIT Lab for Computer Science

  2. Privacy • Old problem (secrecy, confidentiality) : prevent programs from leaking data • Untrusted, downloaded code: more important • Standard security mechanisms not effective ( e.g. , access control) A B C Andrew Myers Practical Mostly-Static Information Flow Control 2

  3. Privacy with Mutual Distrust Bob Tax Data Final Tax Form WebTax Proprietary Database Preparer Andrew Myers Practical Mostly-Static Information Flow Control 3

  4. Static Information Flow • Denning & Denning ’77 • Programs must follow rules • Annotations added for tractability • Static analysis = type checking • Security property composes A + B = A B Andrew Myers Practical Mostly-Static Information Flow Control 4

  5. Jif Language • Jif = Java + information flow annotations (Java Information Flow) • More practical than previous work – Real language: supports Java features – Convenience: automatic label inference – Genericity: label polymorphism – Decentralized declassification mechanism – Run-time label checking Andrew Myers Practical Mostly-Static Information Flow Control 5

  6. Architecture • Source to source translator (mostly erasure) • Modification to the PolyJ compiler (Java + parametric polymorphism) Jif Java Program Java source compiler compiler Label Class file Label Class file annotations (Bytecode) annotations (Bytecode) Andrew Myers Practical Mostly-Static Information Flow Control 6

  7. Jif Features • Labeled types • Convenience: automatic label inference • Genericity: label polymorphism • Static, decentralized declassification • Safe run-time label checking (first-class labels) • First-class principals • Object-oriented features – Subtyping rules – Inheritance – Constructors – Method constraints • Exceptions • Arrays • Described by formal inference rules Andrew Myers Practical Mostly-Static Information Flow Control 7

  8. Labeled Types • Variables, expressions have labeled type T { L } • Labels express privacy constraints • L 2 is at least as restrictive as L 1 : L 1 ⊑ L 2 • Assignment rule (simplified) v : T { L v } ∈ A A ⊢ E : L e L e ⊑ L v A ⊢ v = E : L e Andrew Myers Practical Mostly-Static Information Flow Control 8

  9. Decentralized Label Model • Label is a set of policies • Each policy is owner : reader 1 , reader 2 , ... – owner (principal) – set of readers (principals) { Bob : Bob, Preparer ; Preparer : Preparer } • Every owner’s policy is obeyed • Relation ⊑ is pre-order w/lattice properties [ML98] Andrew Myers Practical Mostly-Static Information Flow Control 9

  10. Implicit Label Polymorphism • Method signatures contain labeled types float {Bob: Bob} cos (float {Bob: Bob} x) { float {Bob: Bob} y = x – 2*PI*(int)(x/(2*PI)); return 1 - y*y/2 + ...; } • Omitted argument labels: implicit label polymorphism float{x} cos (float x) { float y = x – 2*PI*(int)(x/(2*PI)); return 1 - y*y/2 + ...; } Andrew Myers Practical Mostly-Static Information Flow Control 10

  11. Explicit Parameterization class Cell[label L] { private Object{L} y; public void store{L} ( Object{L} x ) { y = x; } public Object{L} fetch ( ) { return y; } } Cell[{Bob: Amy}] • Straightforward analogy with type parameterization • Allows generic collection classes • Parameters not represented at run time Andrew Myers Practical Mostly-Static Information Flow Control 11

  12. Declassification • A principal can rewrite its part of the label {O1: R1, R2; O2: R2} O2 {O1: R1, R2} {O1: R1, R2; O2: R2, R3} • Other owners’ policies still respected • Must know authority of running process • Potentially dangerous: explicit operation declassify( E , L ) Andrew Myers Practical Mostly-Static Information Flow Control 12

  13. Static Authority • Authority of code is tracked statically class C authority(root) { ... } • Authority propagated dynamically: void m(principal p, int {root:} x) where caller(p) { actsFor(p, root) { int{} y = declassify(x, {}) // checked statically } else { // can’t declassify x here } } Andrew Myers Practical Mostly-Static Information Flow Control 13

  14. Implicit Flows and Exceptions • Implicit flow: information { b } ⊑ { x } x = b; transferred through control structure x = false; if (b) { • Static program counter x = true; label ( pc ) that expression } label always includes x = false; • Fine-grained exception try { handling: pc transfers via if (b) throw new Foo (); exceptions, break , } catch (Foo f) { continue x = true; } Andrew Myers Practical Mostly-Static Information Flow Control 14

  15. Methods and Implicit Flows begin-label = pc class Cell[label L] { private Object{L} y; public void store{L} ( Object{L} x ) { y = x; } public Object{L} fetch ( ) { return y; } } implicit begin-label • Begin-label constrains calling pc : pc ⊑ {L} • Prevents implicit flow into method • Omitted begin-label: implicit parameter, prevents mutation Andrew Myers Practical Mostly-Static Information Flow Control 15

  16. Run-time Labels • Labels may be first-class values, label other values: final label a = ...; int{*a} b; • Run-time label treated statically like label parameter: unknown fixed label • Exists at run time ( Jif.lang.Label ) • int{*a} is dependent type Andrew Myers Practical Mostly-Static Information Flow Control 16

  17. Run-time Label Discrimination • switch label statement tests a run-time label dynamically: final label a = ... ; int{*a} b; int { C: D } x; switch label(b) { case ( int { C: D } b2 ) x = b2; else throw new BadLabelCast(); } tests a ⊑ { C : D } at run time Andrew Myers Practical Mostly-Static Information Flow Control 17

  18. Run-time Labels and Implicit Flows final label{b} a = b ? new label {L1} : new label {L2}; int{*a} dummy; switch label(dummy) { x = b; case ({L1}) : x = true; case ({L2}) : x = false; } • Proper check is { b } ⊑ { x } • In case clause, pc augmented with label of label a (which is {b} ) • Therefore: x = true results in proper check Andrew Myers Practical Mostly-Static Information Flow Control 18

  19. Implementation • Translates to efficient Java, mostly by erasure – Labeled types become unlabeled types – Label parameters erased • First-class label, principal values remain • switch label , actsFor translated simply Andrew Myers Practical Mostly-Static Information Flow Control 19

  20. Is it Practical yet? • Addresses limitations of earlier approaches to checking information flow statically – allows run-time checking – infers annotations – limited declassification mechanism – genericity: implicit & explicit polymorphism • Greater expressiveness and convenience • Only small programs so far • Can reuse existing Java code • Only sequential programs, no timing channels Andrew Myers Practical Mostly-Static Information Flow Control 20

  21. Related Work Denning, Denning. CACM 1977 Palsberg, Ørbæk. ISSA 1995 Volpano, Smith, Irvine. JCS 1996 Myers, Liskov. SOSP 1997, IEEE S&P 1998 Heintze, Riecke. POPL 1998 Smith, Volpano. POPL 1998 Abadi, Banerjee, Heintze, Riecke. POPL 1999 Andrew Myers Practical Mostly-Static Information Flow Control 21

  22. Conclusions • Most practical language yet for static enforcement of privacy • Promising; more experience needed to understand limitations • Why not 20 years ago? Andrew Myers Practical Mostly-Static Information Flow Control 22

  23. Inheritance/Subtyping C 2 • Subclass signature (1) constrained by superclass signature (2) C 1 • Argument, begin-label a : { a 2 } ⊑ { a 1 } • Return value, exception r : { r 1 } ⊑ { r 2 } • Class authority (set of principals) can only increase with inheritance : A 1 ⊇ A 2 Andrew Myers Practical Mostly-Static Information Flow Control 23

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend