security protocols formal models and verification
play

Security protocols: formal models and verification Sergiu Bursuc - PowerPoint PPT Presentation

Security protocols: formal models and verification Sergiu Bursuc School of Computer Science, University of Bristol Finse Winter School, 7 May 2015 Security protocols: roles and goals Roles: P 1 , . . . , P n (e.g. clients, servers, devices,


  1. Messages as terms Term algebra T ( F , N ∪ X ) N = a , b , c , k 1 , k 2 , . . . X = x , y , z , . . . F = f 1 , . . . , f k ◮ N ⊆ T ( F , N ∪ X ) ◮ X ⊆ T ( F , N ∪ X ) ◮ t 1 , . . . , t k ∈ T ( F , N ∪ X ) f ∈ F and = ⇒ f ( t 1 , . . . , t k ) ∈ T ( F , N ∪ X ) Examples: enc( a , k ), enc( x , k ), enc(enc( x , k 1 ) , k 2 ), dec( x , k ) , Equational theory: u 1 = v 1 , . . . , u n = v n Example: dec(enc( x , y ) , y ) = x

  2. Messages as terms Term algebra T ( F , N ∪ X ) N = a , b , c , k 1 , k 2 , . . . X = x , y , z , . . . F = f 1 , . . . , f k ◮ N ⊆ T ( F , N ∪ X ) ◮ X ⊆ T ( F , N ∪ X ) ◮ t 1 , . . . , t k ∈ T ( F , N ∪ X ) f ∈ F and = ⇒ f ( t 1 , . . . , t k ) ∈ T ( F , N ∪ X ) Examples: enc( a , k ), enc( x , k ), enc(enc( x , k 1 ) , k 2 ), dec( x , k ) , Equational theory: u 1 = v 1 , . . . , u n = v n Example: dec(enc( x , y ) , y ) = x Note: both augments and restricts attacker’s power

  3. Equational theories Symmetric key encryption: dec(enc( x , y ) , y ) = x

  4. Equational theories Symmetric key encryption: dec(enc( x , y ) , y ) = x Public key encryption: dec(enc( x , pub( y )) , y ) = x

  5. Equational theories Symmetric key encryption: dec(enc( x , y ) , y ) = x Public key encryption: dec(enc( x , pub( y )) , y ) = x Signatures: check(sign( x , y ) , pub( y )) = ok get(sign( x , y )) = x

  6. Equational theories Symmetric key encryption: dec(enc( x , y ) , y ) = x Public key encryption: dec(enc( x , pub( y )) , y ) = x Signatures: check(sign( x , y ) , pub( y )) = ok get(sign( x , y )) = x Blind signatures: check(sign( x , y ) , pub( y )) = ok get(sign( x , y )) = x unblind(sign(blind( x , y ) , z ) , y ) = sign( x , z ) unblind(blind( x , y ) , y ) = x

  7. Equational theories Modular exponentiation: exp(exp( x , y ) , z ) = exp(exp( x , z ) , y )

  8. Equational theories Modular exponentiation: exp(exp( x , y ) , z ) = exp(exp( x , z ) , y ) Re-randomizable encryption: dec(enc( x , pub( y ) , z ) , y ) = x renc(enc( x , y , z ) , z ′ ) enc( x , y , f ( z , z ′ )) =

  9. Equational theories Modular exponentiation: exp(exp( x , y ) , z ) = exp(exp( x , z ) , y ) Re-randomizable encryption: dec(enc( x , pub( y ) , z ) , y ) = x renc(enc( x , y , z ) , z ′ ) enc( x , y , f ( z , z ′ )) = Homomorphic encryption: dec(enc( x , pub( y ) , z ) , y ) = x enc( x 1 , y , z 1 ) ⋆ enc( x 2 , y , z 2 ) = enc( x 1 + x 2 , y , z 1 ⋆ z 2 )

  10. Intruder deduction: T ⊢ t T ⊢ t 1 . . . T ⊢ t k T ⊢ u if u = E v T ⊢ f ( t 1 , . . . , t k ) T ⊢ v

  11. Intruder deduction: T ⊢ t T ⊢ t 1 . . . T ⊢ t k T ⊢ u if u = E v T ⊢ f ( t 1 , . . . , t k ) T ⊢ v enc( s , k 1 ) , enc( k 1 , k 2 ) , sign( k 2 , k 3 ) ⊢ s ?

  12. Intruder deduction: T ⊢ t T ⊢ t 1 . . . T ⊢ t k T ⊢ u if u = E v T ⊢ f ( t 1 , . . . , t k ) T ⊢ v enc( s , k 1 ) , enc( k 1 , k 2 ) , sign( k 2 , k 3 ) ⊢ s ? enc( s , enc( s , k 1 )) , enc(enc( s , k 1 ) , sign( k 1 , k 2 )) , k 1 , k 2 ⊢ s ?

  13. Intruder deduction: T ⊢ t T ⊢ t 1 . . . T ⊢ t k T ⊢ u if u = E v T ⊢ f ( t 1 , . . . , t k ) T ⊢ v enc( s , k 1 ) , enc( k 1 , k 2 ) , sign( k 2 , k 3 ) ⊢ s ? enc( s , enc( s , k 1 )) , enc(enc( s , k 1 ) , sign( k 1 , k 2 )) , k 1 , k 2 ⊢ s ? enc( s , enc( s , k 1 )) , enc(enc( s , k 1 ) , sign( k 1 , k 2 )) , k 1 , k ′ 2 ⊢ s ?

  14. Intruder deduction and passive security Intruder knowledge: t 1 , . . . , t n Intruder power: E Security question: t 1 , . . . , t n ⊢ E s ?

  15. Intruder deduction and passive security Intruder knowledge: t 1 , . . . , t n Intruder power: E Security question: t 1 , . . . , t n ⊢ E s ? 1 . C → T : C , S , Nc 2 . T → C : enc( � Nc , S , Kcs , enc( � Kcs , C � , Kst ) � , Kct ) 3 . C → S : enc( � Kcs , C � , Kst ) 4 . S → C : enc( Nb , Kcs ) 5 . C → S : enc( inc ( Nb ) , Kcs ) Intruder knowledge (after 2 sessions): C 1 , C 2 , S , Nc 1 , Nc 2 , enc( � Nc 1 , S , Kc 1 s , enc( � Kc 1 s , C 1 � , Kst ) � , Kc 1 t ) , enc( � Nc 2 , S , Kc 2 s , enc( � Kc 2 s , C 2 � , Kst ) � , Kc 2 t ) , enc( � Kc 1 s , C 1 � , Kst ) , enc( � Kc 2 s , C 2 � , Kst ) , enc( Nb 1 , Kc 1 s ) , enc( Nb 2 , Kc 2 s ) , enc( inc ( Nb 1 ) , Kc 1 s ) , enc( inc ( Nb 2 ) , Kc 2 s ) Security question: does the intruder know Kc 1 s or Kc 2 s ?

  16. Formal verification  Formalization       system S ⇒ M ( S )    environment E ⇒ M ( E ) Verification  properties P ⇒ M ( P )         does S satisfy P in E ? ⇒ M ( S ) | = M ( E ) M ( P )? ◮ Messages as terms ◮ Roles as processes ◮ Security properties as logical formulas

  17. Process algebra: [Abadi, Fournet 2001] and [Blanchet 2001] new n ; P let x = u in P in ( c , u ); P out ( c , u ); P P | Q ! P if u = v then P else Q

  18. Process algebra: [Abadi, Fournet 2001] and [Blanchet 2001] new n ; P let x = u in P new k ; in ( c , u ); P out ( c , u ); P out ( c , pub( k )); in ( c , x ); P | Q ! P let y = dec( x , k ) in if u = v then P else Q out ( c , y )

  19. Process algebra: [Abadi, Fournet 2001] and [Blanchet 2001] new n ; P let x = u in P new k ; in ( c , u ); P out ( c , u ); P out ( c , pub( k )); in ( c , x ); P | Q ! P let y = dec( x , k ) in if u = v then P else Q out ( c , y ) P | Security : = att: k ?

  20. Process algebra: [Abadi, Fournet 2001] and [Blanchet 2001] new n ; P let x = u in P new k ; new s ; out ( c , enc( s , pub( k ))) in ( c , u ); P out ( c , u ); P out ( c , pub( k )); in ( c , x ); P | Q ! P let y = dec( x , k ) in if u = v then P else Q out ( c , y ) P | Security : = att: k ? P | = att: s ?

  21. Process algebra: [Abadi, Fournet 2001] and [Blanchet 2001] new n ; P let x = u in P new k ; new s ; out ( c , enc( s , pub( k ))) in ( c , u ); P out ( c , u ); P out ( c , pub( k )); in ( c , x ); P | Q ! P let y = dec( x , k ) in if u = v then P else Q event DEC ( y ); out ( c , y ) P | Security : = att: k ? P | = att: s � event:DEC ( s )

  22. Process algebra: [Abadi, Fournet 2001] and [Blanchet 2001] new n ; P let x = u in P new k ; new s ; out ( c , enc( s , pub( k ))) in ( c , u ); P out ( c , u ); P out ( c , pub( k )); in ( c , x ); P | Q ! P let y = dec( x , k ) in if u = v then P else Q event DEC ( y ); out ( c , y ) Security : P | = att: k ? P | = att: s � event:DEC ( s ) Tools: ProVerif, Avispa, Scyther, Tamarin, etc

  23. Configurations ( N , M , P ) ◮ N - names representing fresh data in an execution ◮ M - terms representing messages sent over the network ◮ P - set of processes that are being executed in parallel

  24. Configurations ( N , M , P ) ◮ N - names representing fresh data in an execution ◮ M - terms representing messages sent over the network ◮ P - set of processes that are being executed in parallel new k ; new s ; out ( c , enc( s , pub( k ))) out ( c , pub( k )); in ( c , x ); let y = dec( x , k ) in out ( c , y ) ◮ N = { k , s } ◮ M = { enc( s , pub( k )) , pub( k ) } ◮ P = { in ( c , x ); let y = dec( x , k ) in out ( c , y ) }

  25. Operational semantics: ( N , M , P ) � ( N ′ , M ′ , P ′ ) ( N , M , P ∪ { 0 } ) � ( N , M , P ) (NIL)

  26. Operational semantics: ( N , M , P ) � ( N ′ , M ′ , P ′ ) ( N , M , P ∪ { 0 } ) � ( N , M , P ) (NIL) ( N , M , P ∪ { ! P } ) � ( N , M , P ∪ { P , ! P } ) (BANG)

  27. Operational semantics: ( N , M , P ) � ( N ′ , M ′ , P ′ ) ( N , M , P ∪ { 0 } ) � ( N , M , P ) (NIL) ( N , M , P ∪ { ! P } ) � ( N , M , P ∪ { P , ! P } ) (BANG) ( N , M , P ∪ { P | Q } ) � ( N , M , P ∪ { P , Q } ) (PAR)

  28. Operational semantics: ( N , M , P ) � ( N ′ , M ′ , P ′ ) ( N , M , P ∪ { 0 } ) � ( N , M , P ) (NIL) ( N , M , P ∪ { ! P } ) � ( N , M , P ∪ { P , ! P } ) (BANG) ( N , M , P ∪ { P | Q } ) � ( N , M , P ∪ { P , Q } ) (PAR) ( N , M , P ∪ { new n ; P } ) � ( N ∪ { n ′ } , M , P ∪ { P } ) (NEW) where n ′ / ∈ N

  29. Operational semantics: ( N , M , P ) � ( N ′ , M ′ , P ′ ) ( N , M , P ∪ { out ( c , t ); P , in ( c , x ); Q } ) (COMM) � ( N , M ′ , P ∪ { P , Q [ x �→ t ] } )

  30. Operational semantics: ( N , M , P ) � ( N ′ , M ′ , P ′ ) ( N , M , P ∪ { out ( c , t ); P , in ( c , x ); Q } ) (COMM) � ( N , M ′ , P ∪ { P , Q [ x �→ t ] } ) where M ′ = M ∪ { t } , if M ⊢ c , and M ′ = M , otherwise

  31. Operational semantics: ( N , M , P ) � ( N ′ , M ′ , P ′ ) ( N , M , P ∪ { out ( c , t ); P , in ( c , x ); Q } ) (COMM) � ( N , M ′ , P ∪ { P , Q [ x �→ t ] } ) where M ′ = M ∪ { t } , if M ⊢ c , and M ′ = M , otherwise ( N , M , P ∪ { out ( c , t ); P } ) � ( N , M ′ , P ∪ { P } ) (OUT) where M ′ = M ∪ { t } , if M ⊢ c

  32. Operational semantics: ( N , M , P ) � ( N ′ , M ′ , P ′ ) ( N , M , P ∪ { out ( c , t ); P , in ( c , x ); Q } ) (COMM) � ( N , M ′ , P ∪ { P , Q [ x �→ t ] } ) where M ′ = M ∪ { t } , if M ⊢ c , and M ′ = M , otherwise ( N , M , P ∪ { out ( c , t ); P } ) � ( N , M ′ , P ∪ { P } ) (OUT) where M ′ = M ∪ { t } , if M ⊢ c ( N , M , P ∪ { in ( c , x ); Q } ) � ( N , M , P ∪ { Q [ x �→ t ] } ) (IN) if M ⊢ c and M ⊢ t

  33. Operational semantics: ( N , M , P ) � ( N ′ , M ′ , P ′ ) ( N , M , P ∪ { if U = V then P else Q } ) � ( N , M , P ∪ { P } ) (IF T ) if U = E V

  34. Operational semantics: ( N , M , P ) � ( N ′ , M ′ , P ′ ) ( N , M , P ∪ { if U = V then P else Q } ) � ( N , M , P ∪ { P } ) (IF T ) if U = E V ( N , M , P ∪ { if U = V then P else Q } ) � ( N , M , P ∪ { Q } ) (IF F ) if U � = E V

  35. Operational semantics: ( N , M , P ) � ( N ′ , M ′ , P ′ ) ( N , M , P ∪ { if U = V then P else Q } ) � ( N , M , P ∪ { P } ) (IF T ) if U = E V ( N , M , P ∪ { if U = V then P else Q } ) � ( N , M , P ∪ { Q } ) (IF F ) if U � = E V ( N , M , P ∪ { let x = T in P } ) � ( N , M , P ∪ { P [ x �→ T ] } ) (LET)

  36. Needham-Schroeder in applied pi-calculus 1 . C → T : C , S , Nc 2 . T → C : { Nc , Kcs , { Kcs , C } Kst } Kct 3 . C → S : { Kcs , C } Kst 4 . S → C : { Ns } Kcs 5 . C → S : { inc ( Ns ) } Kcs Client( C , S ) new Nc ; out ( net , � C , S , Nc � ); in ( net , x T ); let � = Nc , x kcs , x ciph � = dec( x T , k ( C )) in out ( net , x ciph ); in ( net , x S ); let x Ns = dec( x S , x kcs ) in out ( net , enc(inc( x Ns ) , x kcs ))

  37. Needham-Schroeder in applied pi-calculus 1 . C → T : C , S , Nc 2 . T → C : { Nc , Kcs , { Kcs , C } Kst } Kct 3 . C → S : { Kcs , C } Kst 4 . S → C : { Ns } Kcs C → S { inc ( Ns ) } Kcs 5 . : Third Party in ( net , � x C , x S , x Nc � ); new k CS ; let y S = enc( � k CS , x C � , k ( x S )) in let y C = enc( � x Nc , c , y S � , k ( x C )) in out ( net , y C )

  38. Needham-Schroeder in applied pi-calculus 1 . C → T : C , S , Nc 2 . T → C : { Nc , Kcs , { Kcs , C } Kst } Kct 3 . C → S : { Kcs , C } Kst S → C { Ns } Kcs 4 . : 5 . C → S : { inc ( Ns ) } Kcs Server( S ) in ( net , x req ); let � x Kcs , x C � = dec( x req , k ( S ) in new Ns ; out ( net , enc( Ns , x Kcs )); in ( net , x resp ); if inc( Ns ) = dec( x resp , x Kcs ) then OK

  39. Formal verification  Formalization       system S ⇒ M ( S )    environment E ⇒ M ( E ) Verification  properties P ⇒ M ( P )         does S satisfy P in E ? ⇒ M ( S ) | = M ( E ) M ( P )? ◮ Messages as terms ◮ Roles as processes ◮ Security properties as logical formulas

  40. Security properties: secrecy as reachability ( N 0 , M 0 , { P 0 } ) � ∗ ( N , M , P ) and M ⊢ t ? � �� �

  41. Security properties: secrecy as reachability ( N 0 , M 0 , { P 0 } ) � ∗ ( N , M , P ) and M ⊢ t ? � �� � P 0 | = att : t

  42. Security properties: secrecy as reachability ( N 0 , M 0 , { P 0 } ) � ∗ ( N , M , P ) and M ⊢ t ? � �� � P 0 | = att : t  new k ; new s ; out ( c , enc( s , pub( k )))  P 0 = out ( c , pub( k )); in ( c , x );  let y = dec( x , k ) in out ( c , y ) P 0 �| = att : k P 0 | = att : s

  43. Security properties: secrecy as reachability ( N 0 , M 0 , { P 0 } ) � ∗ ( N , M , P ) and M ⊢ t ? � �� � P 0 | = att : t  new k ; new s ; out ( c , enc( s , pub( k )))  P 0 = out ( c , pub( k )); in ( c , x );  let y = dec( x , k ) in out ( c , y ) P 0 �| = att : k P 0 | = att : s ( ∅ , ∅ , { P 0 } ) � ∗ ( N , M , P ) and M ⊢ s ◮ N = { k , s } ◮ M = { enc( s , pub( k )) , pub( k ) , s } ◮ P = ∅

  44. Key secrecy in Needham-Schroeder 1 . C → T : C , S , Nc 2 . T → C : { Nc , Kcs , { Kcs , C } Kst } Kct 3 . C → S : { Kcs , C } Kst 4 . S → C : { Ns } Kcs C → S { inc ( Ns ) } Kcs 5 . : Demo

  45. Security properties: privacy as equivalence Client ( C , S 1 ) | T | Server ( S 1 ) | Server ( S 2 ) vs Client ( C , S 2 ) | T | Server ( S 1 ) | Server ( S 2 )

  46. Security properties: privacy as equivalence new r ; ! out ( c , enc( d , pub( k A ) , r )) | A | S 1 | S 2

  47. Security properties: privacy as equivalence new r ; ! out ( c , enc( d , pub( k A ) , r )) | A | S 1 | S 2 ! new r ; out ( c , enc( d , pub( k A ) , r ))) | A | S 1 | S 2

  48. Security properties: privacy as equivalence new r ; ! out ( c , enc( d , pub( k A ) , r )) | A | S 1 | S 2 ! new r ; out ( c , enc( d , pub( k A ) , r ))) | A | S 1 | S 2 P [ d ] ∼ P [ d ′ ] P [ d ] ∼ I [ d ] Examples: electronic voting, weak secrets, bids, reviews, like buttons, etc

  49. Security properties: unlinkability as equivalence new r 1 ; new r 2 ; new r 1 ; new r 2 ; out ( c , enc( s 1 , pub( k A ) , r 1 )) | out ( c , enc( s 1 , pub( k A ) , r 1 )) | vs out ( c , enc( s 2 , pub( k A ) , r 2 )) | out ( c , enc( s 1 , pub( k A ) , r 2 )) | A | S 1 | S 2 | A | S 1 | S 2

  50. Security properties: unlinkability as equivalence new r 1 ; new r 2 ; new r 1 ; new r 2 ; out ( c , enc( s 1 , pub( k A ) , r 1 )) | out ( c , enc( s 1 , pub( k A ) , r 1 )) | vs out ( c , enc( s 2 , pub( k A ) , r 2 )) | out ( c , enc( s 1 , pub( k A ) , r 2 )) | A | S 1 | S 2 | A | S 1 | S 2 P [ s 1 ] | P [ s 2 ] ∼ P [ s 1 ] | P [ s 1 ] Examples: RFID tags, location, healthcare, etc

  51. Security properties: unlinkability as equivalence new r 1 ; new r 2 ; new r 1 ; new r 2 ; out ( c , enc( s 1 , pub( k A ) , r 1 )) | out ( c , enc( s 1 , pub( k A ) , r 1 )) | vs out ( c , enc( s 2 , pub( k A ) , r 2 )) | out ( c , enc( s 1 , pub( k A ) , r 2 )) | A | S 1 | S 2 | A | S 1 | S 2 P [ s 1 ] | P [ s 2 ] ∼ P [ s 1 ] | P [ s 1 ] Examples: RFID tags, location, healthcare, etc Client ( C , S 1 ) | Client ( C , S 1 ) | T | Server ( S 1 ) | Server ( S 2 ) vs Client ( C , S 1 ) | Client ( C , S 2 ) | T | Server ( S 1 ) | Server ( S 2 )

  52. Static equivalence Term context: C [ ǫ 1 , . . . , ǫ n ] applied to t 1 , . . . , t n gives C [ t 1 , . . . , t n ]

  53. Static equivalence Term context: C [ ǫ 1 , . . . , ǫ n ] applied to t 1 , . . . , t n gives C [ t 1 , . . . , t n ] Observations: O ( N , M ) = { ( C 1 , C 2 ) | ( C 1 , C 2 ) ∩ N = ∅ and C 1 [ M ] = E C 2 [ M ] }

  54. Static equivalence Term context: C [ ǫ 1 , . . . , ǫ n ] applied to t 1 , . . . , t n gives C [ t 1 , . . . , t n ] Observations: O ( N , M ) = { ( C 1 , C 2 ) | ( C 1 , C 2 ) ∩ N = ∅ and C 1 [ M ] = E C 2 [ M ] } Static equivalence: O ( N 1 , M 1 ) = O ( N 2 , M 2 ) ?

  55. Static equivalence Term context: C [ ǫ 1 , . . . , ǫ n ] applied to t 1 , . . . , t n gives C [ t 1 , . . . , t n ] Observations: O ( N , M ) = { ( C 1 , C 2 ) | ( C 1 , C 2 ) ∩ N = ∅ and C 1 [ M ] = E C 2 [ M ] } Static equivalence: O ( N 1 , M 1 ) = O ( N 2 , M 2 ) ? M 1 = enc( s 1 , pub( k ) , r 1 ) , enc( s 1 , pub( k ) , r 2 ) , pub( k ) M 2 = enc( s 1 , pub( k ) , r 1 ) , enc( s 2 , pub( k ) , r 2 ) , pub( k ) ◮ N 1 = N 2 = { r 1 , r 2 } ?

  56. Static equivalence Term context: C [ ǫ 1 , . . . , ǫ n ] applied to t 1 , . . . , t n gives C [ t 1 , . . . , t n ] Observations: O ( N , M ) = { ( C 1 , C 2 ) | ( C 1 , C 2 ) ∩ N = ∅ and C 1 [ M ] = E C 2 [ M ] } Static equivalence: O ( N 1 , M 1 ) = O ( N 2 , M 2 ) ? M 1 = enc( s 1 , pub( k ) , r 1 ) , enc( s 1 , pub( k ) , r 2 ) , pub( k ) M 2 = enc( s 1 , pub( k ) , r 1 ) , enc( s 2 , pub( k ) , r 2 ) , pub( k ) ◮ N 1 = N 2 = { r 1 , r 2 } ? ◮ N 1 = N 2 = { s 1 , s 2 } ?

  57. Static equivalence Term context: C [ ǫ 1 , . . . , ǫ n ] applied to t 1 , . . . , t n gives C [ t 1 , . . . , t n ] Observations: O ( N , M ) = { ( C 1 , C 2 ) | ( C 1 , C 2 ) ∩ N = ∅ and C 1 [ M ] = E C 2 [ M ] } Static equivalence: O ( N 1 , M 1 ) = O ( N 2 , M 2 ) ? M 1 = enc( s 1 , pub( k ) , r 1 ) , enc( s 1 , pub( k ) , r 2 ) , pub( k ) M 2 = enc( s 1 , pub( k ) , r 1 ) , enc( s 2 , pub( k ) , r 2 ) , pub( k ) ◮ N 1 = N 2 = { r 1 , r 2 } ? ◮ N 1 = N 2 = { s 1 , s 2 } ? ◮ N 1 = N 2 = { r 2 } ?

  58. Static equivalence Term context: C [ ǫ 1 , . . . , ǫ n ] applied to t 1 , . . . , t n gives C [ t 1 , . . . , t n ] Observations: O ( N , M ) = { ( C 1 , C 2 ) | ( C 1 , C 2 ) ∩ N = ∅ and C 1 [ M ] = E C 2 [ M ] } Static equivalence: O ( N 1 , M 1 ) = O ( N 2 , M 2 ) ? M 1 = enc( s 1 , pub( k ) , r 1 ) , enc( s 1 , pub( k ) , r 2 ) , pub( k ) M 2 = enc( s 1 , pub( k ) , r 1 ) , enc( s 2 , pub( k ) , r 2 ) , pub( k ) ◮ N 1 = N 2 = { r 1 , r 2 } ? ◮ N 1 = N 2 = { s 1 , s 2 } ? ◮ N 1 = N 2 = { r 2 } ? ◮ N 1 = N 2 = { r 1 } ?

  59. Static equivalence Term context: C [ ǫ 1 , . . . , ǫ n ] applied to t 1 , . . . , t n gives C [ t 1 , . . . , t n ] Observations: O ( N , M ) = { ( C 1 , C 2 ) | ( C 1 , C 2 ) ∩ N = ∅ and C 1 [ M ] = E C 2 [ M ] } Static equivalence: O ( N 1 , M 1 ) = O ( N 2 , M 2 ) ? M 1 = enc( s 1 , pub( k ) , r 1 ) , enc( s 1 , pub( k ) , r 2 ) , pub( k ) M 2 = enc( s 1 , pub( k ) , r 1 ) , enc( s 2 , pub( k ) , r 2 ) , pub( k ) ◮ N 1 = N 2 = { r 1 , r 2 } ? ◮ N 1 = N 2 = { s 1 , s 2 } ? ◮ N 1 = N 2 = { r 2 } ? ◮ N 1 = N 2 = { r 1 } ? C 1 = enc ( s 1 , ǫ 2 , r 2 ) and C 2 = ǫ 3 ◮ N 1 = N 2 = { s 2 } ?

  60. Static equivalence Term context: C [ ǫ 1 , . . . , ǫ n ] applied to t 1 , . . . , t n gives C [ t 1 , . . . , t n ] Observations: O ( N , M ) = { ( C 1 , C 2 ) | ( C 1 , C 2 ) ∩ N = ∅ and C 1 [ M ] = E C 2 [ M ] } Static equivalence: O ( N 1 , M 1 ) = O ( N 2 , M 2 ) ? M 1 = enc( s 1 , pub( k ) , r 1 ) , enc( s 1 , pub( k ) , r 2 ) , pub( k ) M 2 = enc( s 1 , pub( k ) , r 1 ) , enc( s 2 , pub( k ) , r 2 ) , pub( k ) ◮ N 1 = N 2 = { r 1 , r 2 } ? ◮ N 1 = N 2 = { s 1 , s 2 } ? ◮ N 1 = N 2 = { r 2 } ? ◮ N 1 = N 2 = { r 1 } ? C 1 = enc ( s 1 , ǫ 2 , r 2 ) and C 2 = ǫ 3 ◮ N 1 = N 2 = { s 2 } ? C 1 = enc ( s 1 , ǫ 2 , r 2 ) and C 2 = ǫ 3

  61. Observational equivalence: P 1 ∼ P 2 ( N , M , P ∪ { out ( c , t ); P } ) � ( N , M ′ , P ∪ { P } ) (OUT) where M ′ = M ∪ { t } , if M ⊢ c ( N , M , P ∪ { in ( c , x ); Q } ) � ( N , M , P ∪ { Q [ x �→ t ] } ) (IN) if M ⊢ c and M ⊢ t

  62. Observational equivalence: P 1 ∼ P 2 out ( c ,. ) → ( N , M ′ , P ∪ { P } ) ( N , M , P ∪ { out ( c , t ); P } ) − − − − (OUT) where M ′ = M ∪ { t } , if M ⊢ c in ( c , C ) ( N , M , P ∪ { in ( c , x ); Q } ) − − − − → ( N , M , P ∪ { Q [ x �→ t ] } ) (IN) if M ⊢ c and C [ M ] = E t

  63. Observational equivalence: P 1 ∼ P 2 out ( c ,. ) → ( N , M ′ , P ∪ { P } ) ( N , M , P ∪ { out ( c , t ); P } ) − − − − (OUT) where M ′ = M ∪ { t } , if M ⊢ c in ( c , C ) ( N , M , P ∪ { in ( c , x ); Q } ) − − − − → ( N , M , P ∪ { Q [ x �→ t ] } ) (IN) if M ⊢ c and C [ M ] = E t α 1 ...α k Traces: ( N 0 , M 0 , { P } ) − − − − → ( N , M , P )

  64. Observational equivalence: P 1 ∼ P 2 out ( c ,. ) → ( N , M ′ , P ∪ { P } ) ( N , M , P ∪ { out ( c , t ); P } ) − − − − (OUT) where M ′ = M ∪ { t } , if M ⊢ c in ( c , C ) ( N , M , P ∪ { in ( c , x ); Q } ) − − − − → ( N , M , P ∪ { Q [ x �→ t ] } ) (IN) if M ⊢ c and C [ M ] = E t α 1 ...α k Traces: ( N 0 , M 0 , { P } ) − − − − → ( N , M , P ) Observational equivalence: P ∼ Q iff for every trace α 1 ...α k ( N 0 , M 0 , { P 1 } ) − − − − → ( N 1 , M 1 , P 1 ) there is a trace α 1 ...α k ( N 0 , M 0 , { P 2 } ) − − − − → ( N 2 , M 2 , P 2 ) such that O ( N 1 , M 1 ) = O ( N 2 , M 2 )

  65. Privacy and unlinkability with Needham-Schroeder 1 . C → T : C , S , Nc 2 . T → C : { Nc , Kcs , { Kcs , C } Kst } Kct 3 . C → S : { Kcs , C } Kst 4 . S → C : { Ns } Kcs 5 . C → S : { inc ( Ns ) } Kcs  Client ( C , S 1 ) | T | Server ( S 1 ) | Server ( S 2 )  P vs  Client ( C , S 2 ) | T | Server ( S 1 ) | Server ( S 2 )  Client ( C , S 1 ) | Client ( C , S 1 ) | T | Server ( S 1 ) | Server ( S 2 )  U vs  Client ( C , S 1 ) | Client ( C , S 2 ) | T | Server ( S 1 ) | Server ( S 2 ) Demo

  66. Privacy and unlinkability with Needham-Schroeder 1 . C → T : C , { S } Kct , Nc 2 . T → C : { Nc , Kcs , { Kcs , C } Kst } Kct 3 . C → S : { Kcs , C } Kst 4 . S → C : { Ns } Kcs 5 . C → S : { inc ( Ns ) } Kcs  Client ( C , S 1 ) | T | Server ( S 1 ) | Server ( S 2 )  P vs  Client ( C , S 2 ) | T | Server ( S 1 ) | Server ( S 2 )  Client ( C , S 1 ) | Client ( C , S 1 ) | T | Server ( S 1 ) | Server ( S 2 )  U vs  Client ( C , S 1 ) | Client ( C , S 2 ) | T | Server ( S 1 ) | Server ( S 2 ) Demo

  67. Privacy and unlinkability with Needham-Schroeder 1 . C → T : C , { S } Kct , Nc 2 . T → C : { Nc , Kcs , { Kcs , C } Kst } Kct 3 . C → S : { Kcs , C } Kst 4 . S → C : { Ns } Kcs 5 . C → S : { inc ( Ns ) } Kcs  Client ( C , S 1 ) | T | Server ( S 1 ) | Server ( S 2 )  P vs  Client ( C , S 2 ) | T | Server ( S 1 ) | Server ( S 2 ) [which is stronger?]  Client ( C , S 1 ) | Client ( C , S 1 ) | T | Server ( S 1 ) | Server ( S 2 )  U vs  Client ( C , S 1 ) | Client ( C , S 2 ) | T | Server ( S 1 ) | Server ( S 2 ) Demo

  68. Privacy and unlinkability with Needham-Schroeder 1 . C → T : C , { S , Nc } Kct 2 . T → C : { Nc , Kcs , { Kcs , C } Kst } Kct 3 . C → S : { Kcs , C } Kst 4 . S → C : { Ns } Kcs 5 . C → S : { inc ( Ns ) } Kcs  Client ( C , S 1 ) | T | Server ( S 1 ) | Server ( S 2 )  P vs  Client ( C , S 2 ) | T | Server ( S 1 ) | Server ( S 2 ) [which is stronger?]  Client ( C , S 1 ) | Client ( C , S 1 ) | T | Server ( S 1 ) | Server ( S 2 )  U vs  Client ( C , S 1 ) | Client ( C , S 2 ) | T | Server ( S 1 ) | Server ( S 2 ) Demo

  69. Privacy and unlinkability with Needham-Schroeder 1 . C → T : C , { C , S , Nc } Kct 2 . T → C : { Nc , Kcs , { Kcs , C } Kst } Kct 3 . C → S : { Kcs , C } Kst 4 . S → C : { Ns } Kcs 5 . C → S : { inc ( Ns ) } Kcs  Client ( C , S 1 ) | T | Server ( S 1 ) | Server ( S 2 )  P vs  Client ( C , S 2 ) | T | Server ( S 1 ) | Server ( S 2 ) [which is stronger?]  Client ( C , S 1 ) | Client ( C , S 1 ) | T | Server ( S 1 ) | Server ( S 2 )  U vs  Client ( C , S 1 ) | Client ( C , S 2 ) | T | Server ( S 1 ) | Server ( S 2 ) Demo

  70. Privacy and unlinkability with Needham-Schroeder 1 . C → T : C ?? , { C , S , Nc } Kct 2 . T → C : { Nc , Kcs , { Kcs , C } Kst } Kct 3 . C → S : { Kcs , C } Kst 4 . S → C : { Ns } Kcs 5 . C → S : { inc ( Ns ) } Kcs  Client ( C , S 1 ) | T | Server ( S 1 ) | Server ( S 2 )  P vs  Client ( C , S 2 ) | T | Server ( S 1 ) | Server ( S 2 ) [which is stronger?]  Client ( C , S 1 ) | Client ( C , S 1 ) | T | Server ( S 1 ) | Server ( S 2 )  U vs  Client ( C , S 1 ) | Client ( C , S 2 ) | T | Server ( S 1 ) | Server ( S 2 ) Demo

Recommend


More recommend