information flow tracking
play

Information Flow Tracking Andrei Sabelfeld Chalmers - PowerPoint PPT Presentation

Information Flow Tracking Andrei Sabelfeld Chalmers https://www.cse.chalmers.se/~andrei EWSCS 2019 Language c ::= skip | x:=exp | c;c | if exp then c else c | while exp do c 2 Explicit flows high (secret) l:=h insecure low (public)


  1. Information Flow Tracking Andrei Sabelfeld Chalmers https://www.cse.chalmers.se/~andrei EWSCS 2019

  2. Language c ::= skip | x:=exp | c;c | if exp then c else c | while exp do c 2

  3. Explicit flows high (secret) l:=h insecure low (public) l:=h; l:=0 secure h:=l; l:=h secure 3

  4. Implicit flows implicit flow h:=…; high (secret) from h to l l:=false; if h then l:=true low (public) else skip; out(l) Problem: insecure even when nothing is assigned to l inside the if! 4

  5. Confidentiality • Noninterference [Goguen & Meseguer]: as high input varied, low-level outputs unchanged h 1 h 2 h 1 ’ h 2 ’ l l l’ l’ 5

  6. Confidentiality for sequential programs: noninterference • How do we formalize noninterference in terms of program semantics? m: Vars → Vals command <c,m> ⇓ m’ final memory initial memory 6

  7. Low equivalence • Indistinguishability by attackers m= L m’ ⟺ m| L =m’| L low projection 7

  8. Noninterference • As high input varied, low-level behavior unchanged c is secure if ∀ m 1 ,m 2 . m 1 = L m 2 & <c, m 1 > ⇓ m’ 1 m’ 1 = L m ’ 2 ⟹ & <c, m 2 > ⇓ m’ 2 8

  9. Security type system • Prevents explicit flows: may not use high variables l:=… • Prevents implicit flows; no public side effects when branching on secrets: if e then while e do may not may not assign to low assign to low … … 9

  10. Security structure secret Γ :Vars → {low,high} high:{h,…} • Order: low ⊑ high • Security lattice public – high ⊔ low = high low:{l,…} 10

  11. Security type system: expressions exp : high ∀ x ∈ Vars(exp). Γ (x)=low exp : low 11

  12. Security-type system: commands 1 Atomic commands exp: ℓ ℓ ⊔ pc ⊑ Γ (x) pc ⊢ skip pc ⊢ x:=exp context 12

  13. Security-type system: commands 2 pc ⊢ c 1 pc ⊢ c 2 pc ⊢ c 1 ; c 2 exp: ℓ ℓ ⊔ pc ⊢ c 1 ℓ ⊔ pc ⊢ c 2 implicit flows: pc ⊢ if exp then c 1 else c 2 branches of a high if must exp: ℓ ℓ ⊔ pc ⊢ c be typable in pc ⊢ while exp do c a high context 13

  14. A security-type system: Examples low ⊢ h:=l+4; l:=l-5 pc ⊢ if h then h:=h+7 else skip low ⊢ while l<34 do l:=l+1 pc ⊢ while h<4 do l:=l+1 14

  15. Type Inference: Example 5 : low 3 : low l=0: low [low] ⊢ l:=5 [low] ⊢ l:=3 [low] ⊢ if l=0 then l:=5 else l:=3 [low] ⊢ h:=h+1 [low] ⊢ h:=h+1; if l=0 then l:=5 else l:=3 15

  16. What does the type system guarantee? Soundness theorem: pc ⊢ c ⟹ c is secure 16

  17. Proof • Confinement – high ⊢ c & <c,m> ⇓ m’ ⟹ m = L m’ • Security – pc ⊢ c ⟹ c is secure • Induction on the structure of c 17

  18. Confidentiality: Examples l:=h insecure (direct) untypable l:=h; l:=0 secure untypable h:=l; l:=h secure untypable if h=0 then l:=0 insecure (implicit untypable flow) else l:=1 while h=0 do skip secure (up to typable termination) if h=0 then secure (up to typable sleep(1000) timing) 18

  19. Covert channels: Termination • Covert channels are mechanisms not intended for information transfer Is while h>0 do h:=h+1 secure? • So far, our definition has been termination- insensitive 19

  20. Termination-sensitive noninterference c is secure if ∀ m 1 ,m 2 . m 1 = L m 2 & <c, m 1 > ⇓ m’ 1 ⟹ <c, m 2 > ⇓ m’ 2 & m’ 1 = L m ’ 2 20

  21. Covert channels: Timing (if h then sleep(1000)); l:=1 || sleep(500); l:=0 • Timing-sensitive noninterference 21

  22. Example: M k mod n s = 1; No information flow to low variables, for (i=0; i<w; i++){ but entire key can if (k[i]) be revealed by C = (s*M) mod n; measuring timing else C = s; [Kocher � 96] s = C*C; } 22

  23. Transforming out timing leaks Branching on high causes leaks k[i] C = (s*M) mod n C = s 23

  24. Transforming out timing leaks Cross-copy low slices k[i] C = (s*M) mod n C /= (s*M) mod n C /= s C = s Non-assignment 24

  25. Covert channels: Probabilistic • Possibilistically but not probabilistically secure program: l:=PIN | 9/10 l:=rand(9999) • Probabilistic noninterference 25

  26. Information flow challenge • Attack the system to learn the secret • Type systems to break 1. No restriction 2. Explicit flows 3. Implicit flows 4. Termination 5. Declassification 6. Exceptions 7. Let 8. Procedures http://ifc-challenge.appspot.com/ 9. References 10. Arrays • First to complete: send me an email J 26

  27. References • Language-based information-flow security [Sabelfeld & Myers, IEEE JSAC, 2003] 27

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