controlling data flow with a policy based programming
play

Controlling Data Flow with a Policy-Based Programming Language for - PowerPoint PPT Presentation

Controlling Data Flow with a Policy-Based Programming Language for the Web Thierry Sans Iliano Cervesato Soha Hussein Privacy from the users perspective 85GA7 Privacy from the users perspective 85GA7 Privacy from the users


  1. Controlling Data Flow with a Policy-Based Programming Language for the Web Thierry Sans Iliano Cervesato Soha Hussein

  2. Privacy from the user’s perspective 85GA7

  3. Privacy from the user’s perspective 85GA7

  4. Privacy from the user’s perspective 85GA7

  5. Privacy from the user’s perspective 85GA7

  6. Privacy from the user’s perspective 85GA7

  7. Privacy from the user’s perspective 85GA7

  8. Privacy from the user’s perspective 85GA7

  9. Privacy from the user’s perspective Should I use this app? How does this app use my data? 85GA7

  10. Privacy from the user’s perspective Should I use this app? How does this app use my data? 85GA7

  11. Privacy from the user’s perspective Should I use this app? How does this app use my data? App’s Privacy Policy 85GA7

  12. Privacy from the user’s perspective Should I use this app? How does this app use my data? User’s Privacy App’s Privacy Policy Expectations 85GA7

  13. Privacy from the user’s perspective Should I use this app? How does this app use my data? User’s Privacy App’s Privacy Policy Expectations 85GA7

  14. Privacy from the web developer’s perspective

  15. Privacy from the web developer’s perspective How to write my privacy policy?

  16. Privacy from the web developer’s perspective How to write my privacy policy?

  17. Can we generate a privacy policy automatically?

  18. Can we generate a privacy policy automatically? Based on the privacy policies of third party service providers ...

  19. Can we generate a privacy policy automatically? Based on the privacy policies of … and based on how the program third party service providers ... combines these services ...

  20. Can we generate a privacy policy automatically? Based on the privacy policies of … and based on how the program third party service providers ... combines these services ... … can we infer how user’s data will be used? *

  21. Can we generate a privacy policy automatically? Based on the privacy policies of … and based on how the program third party service providers ... combines these services ... … can we infer how user’s data will be used? * * no adversary model, third parties are trustworthy

  22. Two solutions

  23. Two solutions Solution 1 : Analyze the programs and infer the data flow ➡ Static analysis, abstract interpretation

  24. Two solutions Solution 1 : Analyze the programs and infer the data flow ➡ Static analysis, abstract interpretation Solution 2 : Design a new programming language ➡ Qwel (Qatar Web Programming Language) with data flow

  25. Qwel : lambda calculus + primitives for remote procedure call + . . . Fragment of the language syntax Types τ :: = unit | τ × τ ʹ″ | τ → τ ’ | τ ⇒ τ ’ Expressions e :: = x | λ x: τ .e | (e 1 e 2 ) | ⟨ e 1 ,e 2 ⟩ | fst e | snd e | () | w/u | publish x: τ .e | call e 1 with e 2

  26. Qwel : lambda calculus + primitives for remote procedure call + . . . Fragment of the language syntax Types τ :: = unit | τ × τ ʹ″ | τ → τ ’ | τ ⇒ τ ’ Expressions e :: = x | λ x: τ .e | (e 1 e 2 ) | ⟨ e 1 ,e 2 ⟩ | fst e | snd e | () | w/u | publish x: τ .e | call e 1 with e 2 Typing Σ | Γ ⊢ w e : τ “e has type τ at w w.r.t. Σ and Γ ” Γ ::= · | Γ , x : τ Σ ::= · | Σ , w/u : τ ⇒ τ

  27. Programming with Qwel

  28. Programming with Qwel @w 1 publish x : τ . e

  29. Programming with Qwel @w 1 w 1 / u 1 publish x : τ . e

  30. Programming with Qwel @w 0 @w 1 w 1 / u 1 call w1/u1 with input publish x : τ . e

  31. Programming with Qwel @w 0 @w 1 input w 1 / u 1 call w1/u1 with input publish x : τ . e

  32. w 0 / u 0 w 1 / u 1 w 2 / u 2 w 3 / u 3 w 4 / u 4 w 5 / u 5 Services Data Flow

  33. publish x : unit. let x ʹ″ = call w 2 /u 2 with x in call w 3 /u 3 with x ʹ″ w 0 / u 0 end w 1 / u 1 w 2 / u 2 w 3 / u 3 w 4 / u 4 w 5 / u 5 Services Data Flow

  34. publish x : unit. let x ʹ″ = call w 2 /u 2 with x in call w 3 /u 3 with x ʹ″ w 0 / u 0 end w 1 / u 1 w 2 / u 2 w 3 / u 3 w 4 / u 4 w 5 / u 5 Services Data Flow publish x : unit let x ʹ″ = call w 1 /u 1 with x x ʹ″ʹ″ = call w 4 /u 4 with x ʹ″ x ʹ″ʹ″ʹ″ = call w 5 /u 5 with x ʹ″ in ⟨ x ʹ″ʹ″ , x ʹ″ʹ″ʹ″ ⟩ end

  35. λ input:unit.(call w 0 /u 0 with input) publish x : unit. let x ʹ″ = call w 2 /u 2 with x in call w 3 /u 3 with x ʹ″ w 0 / u 0 end w 1 / u 1 w 2 / u 2 w 3 / u 3 w 4 / u 4 w 5 / u 5 Services Data Flow publish x : unit let x ʹ″ = call w 1 /u 1 with x x ʹ″ʹ″ = call w 4 /u 4 with x ʹ″ x ʹ″ʹ″ʹ″ = call w 5 /u 5 with x ʹ″ in ⟨ x ʹ″ʹ″ , x ʹ″ʹ″ʹ″ ⟩ end

  36. λ input:unit.(call w 0 /u 0 with input) w 0 / u 0 w 1 / u 1 w 2 / u 2 w 3 / u 3 w 4 / u 4 w 5 / u 5

  37. Where is input going to? λ input:unit.(call w 0 /u 0 with input) How will it be used? w 0 / u 0 w 1 / u 1 w 2 / u 2 w 3 / u 3 w 4 / u 4 w 5 / u 5

  38. Where is input going to? λ input:unit.(call w 0 /u 0 with input) How will it be used? w 0 / u 0 w 1 / u 1 w 2 / u 2 w 3 / u 3 w 4 / u 4 w 5 / u 5

  39. Where is input going to? λ input:unit.(call w 0 /u 0 with input) How will it be used? w 0 / u 0 w 1 / u 1 w 2 / u 2 w 3 / u 3 w 4 / u 4 w 5 / u 5 Can we get a symbolic expression that represents how input is used? ➡ The data flow of input

  40. w 0 / u 0 w 1 / u 1 w 2 / u 2 w 3 / u 3 w 4 / u 4 w 5 / u 5

  41. w 0 / u 0 w 1 / u 1 w 2 / u 2 w 3 / u 3 w 4 / u 4 w 5 / u 5 no flow

  42. w 0 / u 0 w 1 / u 1 w 2 / u 2 w 3 / u 3 w 4 / u 4 w 5 / u 5

  43. w 0 / u 0 w 1 / u 1 w 2 / u 2 w 3 / u 3 w 4 / u 4 w 5 / u 5 service flow

  44. w 0 / u 0 w 1 / u 1 w 2 / u 2 w 3 / u 3 w 4 / u 4 w 5 / u 5

  45. sequential flow w 0 / u 0 w 1 / u 1 w 2 / u 2 w 3 / u 3 w 4 / u 4 w 5 / u 5

  46. w 0 / u 0 w 1 / u 1 w 2 / u 2 w 3 / u 3 w 4 / u 4 w 5 / u 5

  47. w 0 / u 0 w 1 / u 1 w 2 / u 2 w 3 / u 3 w 4 / u 4 w 5 / u 5 parallel flow

  48. Qwel with Flow Fragment of the language syntax Types τ :: = unit | τ × τ ʹ″ | τ { μ } → τ ’ | τ { μ } ⇒ τ ’ Expressions e :: = x | λ x: τ .e | (e 1 e 2 ) | ⟨ e 1 ,e 2 ⟩ | fst e | snd e | () | w/u | publish x: τ .e | call e 1 with e 2 Flow μ :: = • | w ≻ μ | μ ; μ ʹ″ | μ ∥ μ ʹ″

  49. Qwel with Flow Fragment of the language syntax Types τ :: = unit | τ × τ ʹ″ | τ { μ } → τ ’ | τ { μ } ⇒ τ ’ Expressions e :: = x | λ x: τ .e | (e 1 e 2 ) | ⟨ e 1 ,e 2 ⟩ | fst e | snd e | () | w/u | publish x: τ .e | call e 1 with e 2 Flow μ :: = • | w ≻ μ | μ ; μ ʹ″ | μ ∥ μ ʹ″ no

  50. Qwel with Flow Fragment of the language syntax Types τ :: = unit | τ × τ ʹ″ | τ { μ } → τ ’ | τ { μ } ⇒ τ ’ Expressions e :: = x | λ x: τ .e | (e 1 e 2 ) | ⟨ e 1 ,e 2 ⟩ | fst e | snd e | () | w/u | publish x: τ .e | call e 1 with e 2 Flow μ :: = • | w ≻ μ | μ ; μ ʹ″ | μ ∥ μ ʹ″ service no

  51. Qwel with Flow Fragment of the language syntax Types τ :: = unit | τ × τ ʹ″ | τ { μ } → τ ’ | τ { μ } ⇒ τ ’ Expressions e :: = x | λ x: τ .e | (e 1 e 2 ) | ⟨ e 1 ,e 2 ⟩ | fst e | snd e | () | w/u | publish x: τ .e | call e 1 with e 2 Flow μ :: = • | w ≻ μ | μ ; μ ʹ″ | μ ∥ μ ʹ″ composition service no

  52. Qwel with Flow Fragment of the language syntax Types τ :: = unit | τ × τ ʹ″ | τ { μ } → τ ’ | τ { μ } ⇒ τ ’ Expressions e :: = x | λ x: τ .e | (e 1 e 2 ) | ⟨ e 1 ,e 2 ⟩ | fst e | snd e | () | w/u | publish x: τ .e | call e 1 with e 2 Flow μ :: = • | w ≻ μ | μ ; μ ʹ″ | μ ∥ μ ʹ″ parallel composition service no

  53. Qwel with Flow Fragment of the language syntax Types τ :: = unit | τ × τ ʹ″ | τ { μ } → τ ’ | τ { μ } ⇒ τ ’ Expressions e :: = x | λ x: τ .e | (e 1 e 2 ) | ⟨ e 1 ,e 2 ⟩ | fst e | snd e | () | w/u | publish x: τ .e | call e 1 with e 2 Flow μ :: = • | w ≻ μ | μ ; μ ʹ″ | μ ∥ μ ʹ″ parallel composition service no Typing Σ | Γ ⊢ w e : τ “e has type τ at w w.r.t. Σ and Γ ” Γ ::= · | Γ , x : τ { μ } Σ ::= · | Σ , w/u : τ { μ } ⇒ τ

  54. No Flow and Service flow publish x : unit. call w 2 /u 2 with x w 0 / u 0 w 1 / u 1 w 2/ u 2 publish x : unit. x publish x : unit. call w 1 /u 1 with x

  55. No Flow and Service flow publish x : unit. call w 2 /u 2 with x w 0 / u 0 w 1 / u 1 w 2/ u 2 : unit {w 2 ≻ •} ⇒ unit publish x : unit. x publish x : unit. call w 1 /u 1 with x

  56. No Flow and Service flow publish x : unit. call w 2 /u 2 with x w 0 / u 0 w 1 / u 1 w 2/ u 2 : unit {w 2 ≻ •} ⇒ unit publish x : unit. x : unit {w 0 ≻ (w 1 ≻ (w 2 ≻ •))} ⇒ unit publish x : unit. call w 1 /u 1 with x

  57. No Flow and Service flow : unit {w 1 ≻ (w 2 ≻ •)} ⇒ unit publish x : unit. call w 2 /u 2 with x w 0 / u 0 w 1 / u 1 w 2/ u 2 : unit {w 2 ≻ •} ⇒ unit publish x : unit. x : unit {w 0 ≻ (w 1 ≻ (w 2 ≻ •))} ⇒ unit publish x : unit. call w 1 /u 1 with x

Recommend


More recommend