verification of security protocols from confidentiality
play

Verification of security protocols: from confidentiality to privacy - PowerPoint PPT Presentation

Verification of security protocols: from confidentiality to privacy Stphanie Delaune LSV, CNRS & ENS Cachan, Universit Paris Saclay, France Monday, June 26th, 2017 Research at IRISA (Rennes) 800 members (among which about 400


  1. Messages as terms Terms are built over a set of names N , and a signature F . t ::= name n n | application of symbol f ∈ F f ( t 1 , . . . , t k ) Example: representation of { a , n } k senc ◮ Names: n , k , a ◮ constructors: senc, pair, pair k a n

  2. Messages as terms Terms are built over a set of names N , and a signature F . t ::= name n n | application of symbol f ∈ F f ( t 1 , . . . , t k ) Example: representation of { a , n } k senc ◮ Names: n , k , a ◮ constructors: senc, pair, pair k ◮ destructors: sdec, proj 1 , proj 2 . a n The term algebra is equipped with an equational theory E. sdec ( senc ( x , y ) , y ) = x proj 1 ( pair ( x , y )) = x proj 2 ( pair ( x , y )) = y Example: sdec ( senc ( s , k ) , k ) = E s .

  3. Semantics Semantics → : Comm out ( c , u ) . P | in ( c , x ) . Q → P | Q { u / x } Then if u = v then P else Q → P when u = E v Else if u = v then P else Q → Q when u � = E v

  4. Semantics Semantics → : Comm out ( c , u ) . P | in ( c , x ) . Q → P | Q { u / x } Then if u = v then P else Q → P when u = E v Else if u = v then P else Q → Q when u � = E v closed by ◮ structural equivalence ( ≡ ): P | Q ≡ Q | P , P | 0 ≡ P , . . . ◮ application of evaluation contexts: P → P ′ P → P ′ P | Q → P ′ | Q new n . P → new n . P ′

  5. Going back to the Denning Sacco protocol (1/3) A → B : aenc ( sign ( k , priv ( A )) , pub ( B )) B → A : senc ( s , k ) What symbols and equations do we need to model this protocol?

  6. Going back to the Denning Sacco protocol (1/3) A → B : aenc ( sign ( k , priv ( A )) , pub ( B )) B → A : senc ( s , k ) What symbols and equations do we need to model this protocol? 1. symmetric encryption: senc and sdec sdec ( senc ( x , y ) , y ) = x

  7. Going back to the Denning Sacco protocol (1/3) A → B : aenc ( sign ( k , priv ( A )) , pub ( B )) B → A : senc ( s , k ) What symbols and equations do we need to model this protocol? 1. symmetric encryption: senc and sdec sdec ( senc ( x , y ) , y ) = x 2. asymmetric encryption: aenc, adec, and pk adec ( aenc ( x , pk ( y )) , y ) = x

  8. Going back to the Denning Sacco protocol (1/3) A → B : aenc ( sign ( k , priv ( A )) , pub ( B )) B → A : senc ( s , k ) What symbols and equations do we need to model this protocol? 1. symmetric encryption: senc and sdec sdec ( senc ( x , y ) , y ) = x 2. asymmetric encryption: aenc, adec, and pk adec ( aenc ( x , pk ( y )) , y ) = x 3. signature: ok, sign, check, getmsg, and pk check ( sign ( x , y ) , pk ( y )) = ok and getmsg ( sign ( x , y )) = x

  9. Going back to the Denning Sacco protocol (1/3) A → B : aenc ( sign ( k , priv ( A )) , pub ( B )) B → A : senc ( s , k ) What symbols and equations do we need to model this protocol? 1. symmetric encryption: senc and sdec sdec ( senc ( x , y ) , y ) = x 2. asymmetric encryption: aenc, adec, and pk adec ( aenc ( x , pk ( y )) , y ) = x 3. signature: ok, sign, check, getmsg, and pk check ( sign ( x , y ) , pk ( y )) = ok and getmsg ( sign ( x , y )) = x The two terms involved in a normal execution are: aenc ( sign ( k , ska ) , pk ( skb )) , and senc ( s , k )

  10. Going back to the Denning Sacco protocol (2/3) A → B : aenc ( sign ( k , priv ( A )) , pub ( B )) B → A : senc ( s , k )

  11. Going back to the Denning Sacco protocol (2/3) A → B : aenc ( sign ( k , priv ( A )) , pub ( B )) B → A : senc ( s , k ) Alice and Bob as processes: P A ( sk a , pk b ) = new k . out ( c , aenc ( sign ( k , sk a ) , pk b )) . in ( c , x a ) . . . .

  12. Going back to the Denning Sacco protocol (2/3) A → B : aenc ( sign ( k , priv ( A )) , pub ( B )) B → A : senc ( s , k ) Alice and Bob as processes: P A ( sk a , pk b ) = new k . out ( c , aenc ( sign ( k , sk a ) , pk b )) . in ( c , x a ) . . . . P B ( sk b , pk a ) = in ( c , x b ) . if check ( adec ( x b , sk b ) , pk a ) = ok then new s . out ( c , senc ( s , getmsg ( adec ( x b , sk b ))))

  13. Going back to the Denning Sacco protocol (3/3) P A ( sk a , pk b ) = P B ( sk b , pk a ) = new k . in ( c , x b ) . out ( c , aenc ( sign ( k , sk a ) , pk b )) . if check ( adec ( x b , sk b ) , pk a ) = ok then in ( c , x a ) . . . . new s . out ( c , senc ( s , getmsg ( adec ( x b , sk b ))))

  14. Going back to the Denning Sacco protocol (3/3) P A ( sk a , pk b ) = P B ( sk b , pk a ) = new k . in ( c , x b ) . out ( c , aenc ( sign ( k , sk a ) , pk b )) . if check ( adec ( x b , sk b ) , pk a ) = ok then in ( c , x a ) . . . . new s . out ( c , senc ( s , getmsg ( adec ( x b , sk b )))) We consider the following scenario: � � P DS = new sk a , sk b . P A ( sk a , pk ( sk b )) | P B ( sk b , pk ( sk a ) � → new sk a , sk b , k . in ( c , x a ) . . . . | if check ( adec ( aenc ( sign ( k , sk a ) , pk b ) , sk b ) , pk a ) = ok then � new s . out ( c , senc ( s , getmsg ( adec ( aenc ( sign ( k , sk a ) , pk b ) , sk b ))))

  15. Going back to the Denning Sacco protocol (3/3) P A ( sk a , pk b ) = P B ( sk b , pk a ) = new k . in ( c , x b ) . out ( c , aenc ( sign ( k , sk a ) , pk b )) . if check ( adec ( x b , sk b ) , pk a ) = ok then in ( c , x a ) . . . . new s . out ( c , senc ( s , getmsg ( adec ( x b , sk b )))) We consider the following scenario: � � P DS = new sk a , sk b . P A ( sk a , pk ( sk b )) | P B ( sk b , pk ( sk a ) � → new sk a , sk b , k . in ( c , x a ) . . . . | if check ( adec ( aenc ( sign ( k , sk a ) , pk b ) , sk b ) , pk a ) = ok then � new s . out ( c , senc ( s , getmsg ( adec ( aenc ( sign ( k , sk a ) , pk b ) , sk b )))) → new sk a , sk b , k . � in ( c , x a ) . . . . � new s . out ( c , senc ( s , getmsg ( adec ( aenc ( sign ( k , sk a ) , pk b ) , sk b ))))

  16. Going back to the Denning Sacco protocol (3/3) P A ( sk a , pk b ) = P B ( sk b , pk a ) = new k . in ( c , x b ) . out ( c , aenc ( sign ( k , sk a ) , pk b )) . if check ( adec ( x b , sk b ) , pk a ) = ok then in ( c , x a ) . . . . new s . out ( c , senc ( s , getmsg ( adec ( x b , sk b )))) We consider the following scenario: � � P DS = new sk a , sk b . P A ( sk a , pk ( sk b )) | P B ( sk b , pk ( sk a ) � → new sk a , sk b , k . in ( c , x a ) . . . . | if check ( adec ( aenc ( sign ( k , sk a ) , pk b ) , sk b ) , pk a ) = ok then � new s . out ( c , senc ( s , getmsg ( adec ( aenc ( sign ( k , sk a ) , pk b ) , sk b )))) → new sk a , sk b , k . � in ( c , x a ) . . . . � new s . out ( c , senc ( s , getmsg ( adec ( aenc ( sign ( k , sk a ) , pk b ) , sk b )))) − → this derivation represents a normal execution between two honest participants

  17. Security properties - confidentiality Confidentiality for process P w.r.t. secret s For all processes A such that A | P → ∗ Q , we have that Q is not of the form C [ out ( c , s ) . Q ′ ] with c public.

  18. Security properties - confidentiality Confidentiality for process P w.r.t. secret s For all processes A such that A | P → ∗ Q , we have that Q is not of the form C [ out ( c , s ) . Q ′ ] with c public. Some difficulties: ◮ we have to consider all the possible executions in presence of an arbitrary adversary (modelled as a process) ◮ we have to consider realistic initial configurations ◮ an unbounded number of agents, ◮ replications to model an unbounded number of sessions, ◮ reveal public keys and private keys to model dishonest agents, ◮ honest agents may initiate a session with a dishonest agent, . . .

  19. Going back to the Denning Sacco protocol A → B : aenc ( sign ( k , priv ( A )) , pub ( B )) B → A : senc ( s , k ) The aforementioned attack 1 . A → C : aenc ( sign ( k , priv ( A )) , pub ( C )) 2 . C ( A ) → B : aenc ( sign ( k , priv ( A )) , pub ( B )) 3 . B → A : senc ( s , k ) The “minimal” initial configuration to retrieve the attack is: � � new sk a , sk b . P A ( sk a , pk ( sk c )) | P B ( sk b , pk ( sk a ) | out ( c , pk ( skb ))

  20. Going back to the Denning Sacco protocol A → B : aenc ( sign ( k , priv ( A )) , pub ( B )) B → A : senc ( s , k ) The aforementioned attack 1 . A → C : aenc ( sign ( k , priv ( A )) , pub ( C )) 2 . C ( A ) → B : aenc ( sign ( k , priv ( A )) , pub ( B )) 3 . B → A : senc ( s , k ) The “minimal” initial configuration to retrieve the attack is: � � new sk a , sk b . P A ( sk a , pk ( sk c )) | P B ( sk b , pk ( sk a ) | out ( c , pk ( skb )) Exercise: Exhibit the process A (the behaviour of the attacker) that witnesses the aforementioned attack, i.e. such that: A | P DS → ∗ C [ out ( c , s ) . Q ′ ]

  21. Part II Designing verification algorithms ( confidentiality )

  22. Warm-up

  23. The deduction problem: is u deducible from φ ? We consider a signature F and an equational theory E. Input: A sequence φ of ground terms ( i.e. messages) and a term s (the secret) φ = { w 1 ⊲ m 1 , . . . , w n ⊲ m n } Output: Can the attacker learn s from φ ? In other words, does there exist a term (called recipe) R built using public symbols and w 1 , . . . , w n such that R φ = E s ?

  24. The deduction problem: is u deducible from φ ? We consider a signature F and an equational theory E. Input: A sequence φ of ground terms ( i.e. messages) and a term s (the secret) φ = { w 1 ⊲ m 1 , . . . , w n ⊲ m n } Output: Can the attacker learn s from φ ? In other words, does there exist a term (called recipe) R built using public symbols and w 1 , . . . , w n such that R φ = E s ? Exercise: Let φ = { w 1 ⊲ pk ( ska ); w 2 ⊲ pk ( skb ); w 3 ⊲ skc ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc )); w 5 ⊲ senc ( s , k ) } . 1. Is k deducible from φ ? 2. What about s ?

  25. The deduction problem: is u deducible from φ ? We consider a signature F and an equational theory E. Input: A sequence φ of ground terms ( i.e. messages) and a term s (the secret) φ = { w 1 ⊲ m 1 , . . . , w n ⊲ m n } Output: Can the attacker learn s from φ ? In other words, does there exist a term (called recipe) R built using public symbols and w 1 , . . . , w n such that R φ = E s ? Exercise: Let φ = { w 1 ⊲ pk ( ska ); w 2 ⊲ pk ( skb ); w 3 ⊲ skc ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc )); w 5 ⊲ senc ( s , k ) } . 1. Is k deducible from φ ? Yes, using R 1 = getmsg ( adec ( w 4 , w 3 )) 2. What about s ?

  26. The deduction problem: is u deducible from φ ? We consider a signature F and an equational theory E. Input: A sequence φ of ground terms ( i.e. messages) and a term s (the secret) φ = { w 1 ⊲ m 1 , . . . , w n ⊲ m n } Output: Can the attacker learn s from φ ? In other words, does there exist a term (called recipe) R built using public symbols and w 1 , . . . , w n such that R φ = E s ? Exercise: Let φ = { w 1 ⊲ pk ( ska ); w 2 ⊲ pk ( skb ); w 3 ⊲ skc ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc )); w 5 ⊲ senc ( s , k ) } . 1. Is k deducible from φ ? Yes, using R 1 = getmsg ( adec ( w 4 , w 3 )) 2. What about s ? Yes, using R 2 = sdec ( w 5 , R 1 ) .

  27. The deduction problem Proposition The deduction problem is decidable in PTIME for the equational theory modelling the DS protocol (and for many others) Algorithm 1. saturation of φ with its deducible subterms in one-step: φ + 2. does there exist R such that R φ + = s (syntaxic equality)

  28. The deduction problem Proposition The deduction problem is decidable in PTIME for the equational theory modelling the DS protocol (and for many others) Algorithm 1. saturation of φ with its deducible subterms in one-step: φ + 2. does there exist R such that R φ + = s (syntaxic equality) Going back to the previous example: ◮ φ = { w 1 ⊲ pk ( ska ); w 2 ⊲ pk ( skb ); w 3 ⊲ skc ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc )); w 5 ⊲ senc ( s , k ) } . ◮ φ + = φ ⊎ { w 6 ⊲ sign ( k , ska ); w 7 ⊲ k ; w 8 ⊲ s } .

  29. The deduction problem Proposition The deduction problem is decidable in PTIME for the equational theory modelling the DS protocol (and for many others) Algorithm 1. saturation of φ with its deducible subterms in one-step: φ + 2. does there exist R such that R φ + = s (syntaxic equality) Going back to the previous example: ◮ φ = { w 1 ⊲ pk ( ska ); w 2 ⊲ pk ( skb ); w 3 ⊲ skc ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc )); w 5 ⊲ senc ( s , k ) } . ◮ φ + = φ ⊎ { w 6 ⊲ sign ( k , ska ); w 7 ⊲ k ; w 8 ⊲ s } . − → Therefore k and s are deducible from φ !

  30. Soundness, completeness, and termination Soundness If the algorithm returns Yes then u is indeed deducible from φ . − → easy to prove

  31. Soundness, completeness, and termination Soundness If the algorithm returns Yes then u is indeed deducible from φ . − → easy to prove Termination The set of subterms is finite and polynomial, and one-step deducibility can be checked in polynomial time. − → easy to prove for the deduction rules under study

  32. Soundness, completeness, and termination Soundness If the algorithm returns Yes then u is indeed deducible from φ . − → easy to prove Termination The set of subterms is finite and polynomial, and one-step deducibility can be checked in polynomial time. − → easy to prove for the deduction rules under study Completeness If u is deducible from φ , then the algorithm returns Yes. − → this relies on a locality property Locality lemma Let φ be a frame and u be a deducible subterm of φ . There exists a recipe R witnessing this fact which satisfies the locality property: for any R ′ subterm of R , we have that R ′ φ ↓ is a subterm of φ .

  33. Caution ! One should never underestimate the attacker ! The attacker can listen to the communication but also: ◮ intercept the messages that are sent by the participants, ◮ build new messages according to his deduction capabilities, and ◮ send messages on the communication network. − → this is the co-called active attacker

  34. State of the art in a nutshell (active attacker) for analysing confidentiality properties Unbounded number of sessions ◮ undecidable in general [Even & Goldreich, 83; Durgin et al , 99] ◮ decidable for restricted classes [Lowe, 99; Rammanujam & Suresh, 03; . . . ] − → ProVerif: A tool that does not correspond to any decidability result but works well in practice. [Blanchet, 01]

  35. State of the art in a nutshell (active attacker) for analysing confidentiality properties Unbounded number of sessions ◮ undecidable in general [Even & Goldreich, 83; Durgin et al , 99] ◮ decidable for restricted classes [Lowe, 99; Rammanujam & Suresh, 03; . . . ] − → ProVerif: A tool that does not correspond to any decidability result but works well in practice. [Blanchet, 01] Bounded number of sessions ◮ a decidability result (NP-complete) [Rusinowitch & Turuani, 01; Millen & Shmatikov, 01] − → Avantssar: a platform that implements two such decision procedures [Armando et al. , 05]

  36. Confidentiality using the constraint solving approach − → active attacker, only for a bounded number of sessions [Comon, Cortier & Zalinescu, 10]

  37. Confidentiality using the constraint solving approach − → active attacker, only for a bounded number of sessions [Comon, Cortier & Zalinescu, 10] Two main steps: 1. A symbolic exploration of all the possible traces The infinite number of possible execution traces are represented by a finite set of constraint systems 2. A decision procedure for deciding whether a constraint system has a solution or not.

  38. Step 1: confidentiality via constraint solving We consider a finite sequence of actions: in ( u 1 ); out ( v 1 ); in ( u 2 ); . . . out ( v n ) − → u i and v i may contain variables We build the following constraint system C :  ? φ 0 ⊢ u 1     ?   φ 0 , w 1 ⊲ v 1 ⊢ u 2 C = ...    ?    φ 0 , w 1 ⊲ v 1 , . . . , w n ⊲ v n ⊢ s

  39. Step 1: confidentiality via constraint solving We consider a finite sequence of actions: in ( u 1 ); out ( v 1 ); in ( u 2 ); . . . out ( v n ) − → u i and v i may contain variables We build the following constraint system C :  ? φ 0 ⊢ u 1     ?   φ 0 , w 1 ⊲ v 1 ⊢ u 2 C = ...    ?    φ 0 , w 1 ⊲ v 1 , . . . , w n ⊲ v n ⊢ s A solution of a constraint system C is a substitution σ such that for ? ⊢ u ∈ C , we have that: every constraint w 1 ⊲ v 1 , . . . , w n ⊲ v n u σ is deducible from w 1 ⊲ v 1 σ, . . . , w n ⊲ v n σ .

  40. Going back to the Denning Sacco protocol A → B : aenc ( sign ( k , priv ( A )) , pub ( B )) B → A senc ( s , k ) : One possible interleaving: out ( aenc ( sign ( k , ska ) , pk ( skc ))) in ( aenc ( sign ( x , ska ) , pk ( skb ))); out ( senc ( s , x ))

  41. Going back to the Denning Sacco protocol A → B : aenc ( sign ( k , priv ( A )) , pub ( B )) B → A senc ( s , k ) : One possible interleaving: out ( aenc ( sign ( k , ska ) , pk ( skc ))) in ( aenc ( sign ( x , ska ) , pk ( skb ))); out ( senc ( s , x )) The associated constraint system is: ? ⊢ aenc ( sign ( x , ska ) , pk ( skb )) φ 0 ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc )) ? φ 0 ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc )); w 5 ⊲ senc ( s , x ) ⊢ s with φ 0 = { w 1 ⊲ pk ( ska ) , w 2 ⊲ pk ( skb ); w 3 ⊲ skc } .

  42. Going back to the Denning Sacco protocol A → B : aenc ( sign ( k , priv ( A )) , pub ( B )) B → A senc ( s , k ) : One possible interleaving: out ( aenc ( sign ( k , ska ) , pk ( skc ))) in ( aenc ( sign ( x , ska ) , pk ( skb ))); out ( senc ( s , x )) The associated constraint system is: ? ⊢ aenc ( sign ( x , ska ) , pk ( skb )) φ 0 ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc )) ? φ 0 ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc )); w 5 ⊲ senc ( s , x ) ⊢ s with φ 0 = { w 1 ⊲ pk ( ska ) , w 2 ⊲ pk ( skb ); w 3 ⊲ skc } . Question: Does C admit a solution?

  43. Going back to the Denning Sacco protocol A → B : aenc ( sign ( k , priv ( A )) , pub ( B )) B → A senc ( s , k ) : One possible interleaving: out ( aenc ( sign ( k , ska ) , pk ( skc ))) in ( aenc ( sign ( x , ska ) , pk ( skb ))); out ( senc ( s , x )) The associated constraint system is: ? ⊢ aenc ( sign ( x , ska ) , pk ( skb )) φ 0 ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc )) ? φ 0 ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc )); w 5 ⊲ senc ( s , x ) ⊢ s with φ 0 = { w 1 ⊲ pk ( ska ) , w 2 ⊲ pk ( skb ); w 3 ⊲ skc } . Question: Does C admit a solution? Yes: x → k . ◮ R 1 = aenc ( adec ( w 4 , w 3 ) , w 2 ) solve the first constraint, ◮ R 2 = sdec ( w 5 , getmsg ( adec ( w 4 , w 3 ) , w 1 )) solve the second constraint

  44. The general case: is the constraint system C satisfiable? Main idea: simplify them until reaching ⊥ or solved forms Constraint system in solved form ?  ⊢ x 0 φ 0     ?   φ 0 ; φ 1 ⊢ x 1 C = ...    ?   φ 0 ; φ 1 ; . . . ; φ n ⊢ x n  Question: Is there a solution to such a system ?

  45. The general case: is the constraint system C satisfiable? Main idea: simplify them until reaching ⊥ or solved forms Constraint system in solved form ?  ⊢ x 0 φ 0     ?   φ 0 ; φ 1 ⊢ x 1 C = ...    ?   φ 0 ; φ 1 ; . . . ; φ n ⊢ x n  Question: Is there a solution to such a system ? Of course, yes ! The substitution σ = { x 0 �→ u 0 , . . . , x n �→ u 0 } with u 0 in φ 0 is such a solution.

  46. Step 2: simplification rules − → these rules deal with pairs and symmetric encryption only

  47. Step 2: simplification rules − → these rules deal with pairs and symmetric encryption only ? ? ? R f : C ∧ φ ⊢ f ( u 1 , u 2 ) � C ∧ φ ⊢ u 1 ∧ φ ⊢ u 2 f ∈ {�� , senc }

  48. Step 2: simplification rules − → these rules deal with pairs and symmetric encryption only ? ? ? R f : C ∧ φ ⊢ f ( u 1 , u 2 ) � C ∧ φ ⊢ u 1 ∧ φ ⊢ u 2 f ∈ {�� , senc } ? C ∧ φ ⊢ u ⊥ if vars ( φ ∪ { u } ) = ∅ and φ �⊢ u R fail : �

  49. Step 2: simplification rules − → these rules deal with pairs and symmetric encryption only ? ? ? R f : C ∧ φ ⊢ f ( u 1 , u 2 ) � C ∧ φ ⊢ u 1 ∧ φ ⊢ u 2 f ∈ {�� , senc } ? C ∧ φ ⊢ u ⊥ if vars ( φ ∪ { u } ) = ∅ and φ �⊢ u R fail : � ? ? R unif : C ∧ φ ⊢ u C σ ∧ φσ ⊢ u σ � σ if σ = mgu ( t 1 , t 2 ) where t 1 , t 2 ∈ st ( φ ) ∪ { u }

  50. Step 2: simplification rules − → these rules deal with pairs and symmetric encryption only ? ? ? R f : C ∧ φ ⊢ f ( u 1 , u 2 ) � C ∧ φ ⊢ u 1 ∧ φ ⊢ u 2 f ∈ {�� , senc } ? C ∧ φ ⊢ u ⊥ if vars ( φ ∪ { u } ) = ∅ and φ �⊢ u R fail : � ? ? R unif : C ∧ φ ⊢ u C σ ∧ φσ ⊢ u σ � σ if σ = mgu ( t 1 , t 2 ) where t 1 , t 2 ∈ st ( φ ) ∪ { u } ? C ∧ φ ⊢ u C R ax : � if u is deducible from φ ∪ { x | φ ′ ? ⊢ x ∈ C , φ ′ � φ }

  51. Applying rule R f ? ? ? C ∧ φ ⊢ f ( u 1 , u 2 ) � C ∧ φ ⊢ u 1 ∧ φ ⊢ u 2 R f : Example: ? ⊢ aenc ( sign ( x , ska ) , pk ( skb )) φ 0 ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc ))

  52. Applying rule R f ? ? ? C ∧ φ ⊢ f ( u 1 , u 2 ) � C ∧ φ ⊢ u 1 ∧ φ ⊢ u 2 R f : Example: ? ⊢ aenc ( sign ( x , ska ) , pk ( skb )) φ 0 ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc ))  ? φ 0 ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc )) ⊢ sign ( x , ska )  � ? φ 0 ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc )) ⊢ pk ( skb ) 

  53. Applying rule R unif ? ? R unif : C ∧ φ ⊢ u C σ ∧ φσ ⊢ u σ � σ if σ = mgu ( t 1 , t 2 ) where t 1 , t 2 ∈ st ( φ ) ∪ { u } Example:  ? φ 0 ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc )) ⊢ sign ( x , ska )  ? φ 0 ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc )) ⊢ pk ( skb ) 

  54. Applying rule R unif ? ? R unif : C ∧ φ ⊢ u C σ ∧ φσ ⊢ u σ � σ if σ = mgu ( t 1 , t 2 ) where t 1 , t 2 ∈ st ( φ ) ∪ { u } Example:  ? φ 0 ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc )) ⊢ sign ( x , ska )  ? φ 0 ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc )) ⊢ pk ( skb )   ? ⊢ φ 0 ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc )) sign ( k , ska )  � ? φ 0 ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc )) ⊢ pk ( skb ) 

  55. Applying rule R ax ? R ax : C ∧ φ ⊢ u C if u deducible from � φ ∪ { x | φ ′ ? ⊢ x ∈ C , φ ′ � φ } Example: (assuming that skc and pk ( skb ) are in φ 0 )  ? φ 0 ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc )) ⊢ sign ( k , ska )  ? φ 0 ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc )) ⊢ pk ( skb ) 

  56. Applying rule R ax ? R ax : C ∧ φ ⊢ u C if u deducible from � φ ∪ { x | φ ′ ? ⊢ x ∈ C , φ ′ � φ } Example: (assuming that skc and pk ( skb ) are in φ 0 )  ? φ 0 ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc )) ⊢ sign ( k , ska )  ? φ 0 ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc )) ⊢ pk ( skb )  � ? � ⊢ φ 0 ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc )) sign ( k , ska )

  57. Applying rule R ax ? R ax : C ∧ φ ⊢ u C if u deducible from � φ ∪ { x | φ ′ ? ⊢ x ∈ C , φ ′ � φ } Example: (assuming that skc and pk ( skb ) are in φ 0 )  ? φ 0 ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc )) ⊢ sign ( k , ska )  ? φ 0 ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc )) ⊢ pk ( skb )  � ? � ⊢ φ 0 ; w 4 ⊲ aenc ( sign ( k , ska ) , pk ( skc )) sign ( k , ska ) ∅ � (empty constraint system)

  58. Results on the simplification rules ? ? ? C ∧ φ ⊢ f ( u 1 , u 2 ) � C ∧ φ ⊢ u 1 ∧ φ ⊢ u 2 f ∈ {�� , senc } R f : ? C ∧ φ ⊢ u ⊥ if vars ( φ ∪ { u } ) = ∅ and φ �⊢ u R fail : � ? ? R unif : C ∧ φ ⊢ u � σ C σ ∧ φσ ⊢ u σ if σ = mgu ( t 1 , t 2 ) where t 1 , t 2 ∈ st ( φ ) ∪ { u } ? C ∧ φ ⊢ u C R ax : � if u is deducible from φ ∪ { x | φ ′ ? ⊢ x ∈ C , φ ′ � φ } Given a (well-formed) constraint system C :

  59. Results on the simplification rules ? ? ? C ∧ φ ⊢ f ( u 1 , u 2 ) � C ∧ φ ⊢ u 1 ∧ φ ⊢ u 2 f ∈ {�� , senc } R f : ? C ∧ φ ⊢ u ⊥ if vars ( φ ∪ { u } ) = ∅ and φ �⊢ u R fail : � ? ? R unif : C ∧ φ ⊢ u � σ C σ ∧ φσ ⊢ u σ if σ = mgu ( t 1 , t 2 ) where t 1 , t 2 ∈ st ( φ ) ∪ { u } ? C ∧ φ ⊢ u C R ax : � if u is deducible from φ ∪ { x | φ ′ ? ⊢ x ∈ C , φ ′ � φ } Given a (well-formed) constraint system C : Soundness σ C ′ and θ solution of C ′ then σθ is a solution of C . If C � ∗ − → easy to show

  60. Results on the simplification rules ? ? ? C ∧ φ ⊢ f ( u 1 , u 2 ) � C ∧ φ ⊢ u 1 ∧ φ ⊢ u 2 f ∈ {�� , senc } R f : ? C ∧ φ ⊢ u ⊥ if vars ( φ ∪ { u } ) = ∅ and φ �⊢ u R fail : � ? ? R unif : C ∧ φ ⊢ u � σ C σ ∧ φσ ⊢ u σ if σ = mgu ( t 1 , t 2 ) where t 1 , t 2 ∈ st ( φ ) ∪ { u } ? C ∧ φ ⊢ u C R ax : � if u is deducible from φ ∪ { x | φ ′ ? ⊢ x ∈ C , φ ′ � φ } Given a (well-formed) constraint system C : Termination There is no infinite chain C � σ 1 C 1 . . . � σ n C n .

Recommend


More recommend