Verification of security protocols: from confidentiality to privacy
Stéphanie Delaune
LSV, CNRS & ENS Cachan, Université Paris Saclay, France
Monday, June 27th, 2016
- S. Delaune (LSV)
Verification of security protocols 27th June 2016 1 / 72
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 27th, 2016 S. Delaune (LSV) Verification of security protocols 27th June 2016 1
Verification of security protocols 27th June 2016 1 / 72
Verification of security protocols 27th June 2016 2 / 72
Verification of security protocols 27th June 2016 3 / 72
Verification of security protocols 27th June 2016 4 / 72
Verification of security protocols 27th June 2016 5 / 72
Verification of security protocols 27th June 2016 6 / 72
Verification of security protocols 27th June 2016 6 / 72
Verification of security protocols 27th June 2016 6 / 72
encryption decryption
Verification of security protocols 27th June 2016 7 / 72
encryption decryption
Verification of security protocols 27th June 2016 7 / 72
Verification of security protocols 27th June 2016 8 / 72
Verification of security protocols 27th June 2016 9 / 72
encryption decryption public key private key
Verification of security protocols 27th June 2016 10 / 72
encryption decryption public key private key
Verification of security protocols 27th June 2016 10 / 72
signature verification private key public key
Verification of security protocols 27th June 2016 11 / 72
Verification of security protocols 27th June 2016 12 / 72
Verification of security protocols 27th June 2016 12 / 72
Verification of security protocols 27th June 2016 12 / 72
Verification of security protocols 27th June 2016 12 / 72
Verification of security protocols 27th June 2016 13 / 72
Verification of security protocols 27th June 2016 13 / 72
Verification of security protocols 27th June 2016 14 / 72
Verification of security protocols 27th June 2016 15 / 72
Verification of security protocols 27th June 2016 15 / 72
Verification of security protocols 27th June 2016 15 / 72
1 a logical flaw that allows a man in the middle attacker to downgrade
2 breaking encryption via factorisation of such a key can be easily done.
Verification of security protocols 27th June 2016 16 / 72
Verification of security protocols 27th June 2016 17 / 72
Verification of security protocols 27th June 2016 17 / 72
Verification of security protocols 27th June 2016 18 / 72
get_challenge
Verification of security protocols 27th June 2016 18 / 72
get_challenge NP , KP NP
Verification of security protocols 27th June 2016 18 / 72
get_challenge NP , KP NP NR , KR {NR , NP , KR }KE , MACKM ({NR , NP , KR }KE )
Verification of security protocols 27th June 2016 18 / 72
get_challenge NP , KP NP NR , KR {NR , NP , KR }KE , MACKM ({NR , NP , KR }KE ) {NP , NR , KP }KE , MACKM ({NP , NR , KP }KE )
Verification of security protocols 27th June 2016 18 / 72
get_challenge NP , KP NP NR , KR {NR , NP , KR }KE , MACKM ({NR , NP , KR }KE ) {NP , NR , KP }KE , MACKM ({NP , NR , KP }KE ) Kseed = f(KP , KR ) Kseed = f(KP , KR )
Verification of security protocols 27th June 2016 18 / 72
Verification of security protocols 27th June 2016 19 / 72
Verification of security protocols 27th June 2016 19 / 72
1 Modelling cryptographic protocols and their security properties 2 Designing verification algorithms
Verification of security protocols 27th June 2016 19 / 72
Verification of security protocols 27th June 2016 20 / 72
Verification of security protocols 27th June 2016 21 / 72
Verification of security protocols 27th June 2016 21 / 72
Verification of security protocols 27th June 2016 22 / 72
Verification of security protocols 27th June 2016 22 / 72
Verification of security protocols 27th June 2016 23 / 72
Verification of security protocols 27th June 2016 23 / 72
Verification of security protocols 27th June 2016 23 / 72
Verification of security protocols 27th June 2016 24 / 72
Verification of security protocols 27th June 2016 24 / 72
Verification of security protocols 27th June 2016 25 / 72
1 symmetric encryption: senc(·, ·), sdec(·, ·)
Verification of security protocols 27th June 2016 25 / 72
1 symmetric encryption: senc(·, ·), sdec(·, ·)
2 asymmetric encryption: aenc(·, ·), adec(·, ·), pk(·)
Verification of security protocols 27th June 2016 25 / 72
1 symmetric encryption: senc(·, ·), sdec(·, ·)
2 asymmetric encryption: aenc(·, ·), adec(·, ·), pk(·)
3 signature: ok, sign(·, ·), check(·, ·), getmsg(·)
Verification of security protocols 27th June 2016 25 / 72
1 symmetric encryption: senc(·, ·), sdec(·, ·)
2 asymmetric encryption: aenc(·, ·), adec(·, ·), pk(·)
3 signature: ok, sign(·, ·), check(·, ·), getmsg(·)
Verification of security protocols 27th June 2016 25 / 72
Verification of security protocols 27th June 2016 26 / 72
Verification of security protocols 27th June 2016 26 / 72
Verification of security protocols 27th June 2016 26 / 72
Verification of security protocols 27th June 2016 26 / 72
Verification of security protocols 27th June 2016 26 / 72
Verification of security protocols 27th June 2016 26 / 72
Verification of security protocols 27th June 2016 26 / 72
Verification of security protocols 27th June 2016 27 / 72
Verification of security protocols 27th June 2016 27 / 72
Verification of security protocols 27th June 2016 28 / 72
Verification of security protocols 27th June 2016 28 / 72
Verification of security protocols 27th June 2016 29 / 72
Verification of security protocols 27th June 2016 29 / 72
Verification of security protocols 27th June 2016 29 / 72
Verification of security protocols 27th June 2016 29 / 72
Verification of security protocols 27th June 2016 29 / 72
Verification of security protocols 27th June 2016 29 / 72
Verification of security protocols 27th June 2016 30 / 72
Verification of security protocols 27th June 2016 30 / 72
Verification of security protocols 27th June 2016 31 / 72
Verification of security protocols 27th June 2016 32 / 72
Verification of security protocols 27th June 2016 32 / 72
Verification of security protocols 27th June 2016 33 / 72
1 Is k deducible from φ? 2 What about s?
Verification of security protocols 27th June 2016 33 / 72
1 Is k deducible from φ? Yes, using R1 = getmsg(adec(w4, w3)) 2 What about s?
Verification of security protocols 27th June 2016 33 / 72
1 Is k deducible from φ? Yes, using R1 = getmsg(adec(w4, w3)) 2 What about s? Yes, using R2 = sdec(w5, R1).
Verification of security protocols 27th June 2016 33 / 72
1 saturation of φ with its deducible subterms in one-step: φ+ 2 does there exist R such that Rφ+=s
Verification of security protocols 27th June 2016 34 / 72
1 saturation of φ with its deducible subterms in one-step: φ+ 2 does there exist R such that Rφ+=s
Verification of security protocols 27th June 2016 34 / 72
Verification of security protocols 27th June 2016 35 / 72
Verification of security protocols 27th June 2016 35 / 72
Verification of security protocols 27th June 2016 35 / 72
Verification of security protocols 27th June 2016 35 / 72
Verification of security protocols 27th June 2016 36 / 72
Verification of security protocols 27th June 2016 37 / 72
1 A symbolic exploration of all the possible traces
2 A decision procedure for deciding whether a constraint system has a
Verification of security protocols 27th June 2016 37 / 72
Verification of security protocols 27th June 2016 38 / 72
Verification of security protocols 27th June 2016 38 / 72
Verification of security protocols 27th June 2016 39 / 72
Verification of security protocols 27th June 2016 39 / 72
Verification of security protocols 27th June 2016 39 / 72
Verification of security protocols 27th June 2016 39 / 72
Verification of security protocols 27th June 2016 40 / 72
Verification of security protocols 27th June 2016 40 / 72
Verification of security protocols 27th June 2016 41 / 72
Verification of security protocols 27th June 2016 42 / 72
Verification of security protocols 27th June 2016 42 / 72
Verification of security protocols 27th June 2016 43 / 72
Verification of security protocols 27th June 2016 43 / 72
Verification of security protocols 27th June 2016 44 / 72
Verification of security protocols 27th June 2016 44 / 72
Verification of security protocols 27th June 2016 44 / 72
Verification of security protocols 27th June 2016 45 / 72
Verification of security protocols 27th June 2016 45 / 72
Verification of security protocols 27th June 2016 45 / 72
Verification of security protocols 27th June 2016 45 / 72
C = T0
?
⊢ u1 T0, v1
?
⊢ u2 . . . T0, v1, . . . , vn
?
⊢ s
Verification of security protocols 27th June 2016 46 / 72
Verification of security protocols 27th June 2016 47 / 72
1 disequality tests (protocol with else branches) 2 more primitives: asymmetric encryption, blind signature, exclusive-or,
Verification of security protocols 27th June 2016 47 / 72
Verification of security protocols 27th June 2016 48 / 72
Verification of security protocols 27th June 2016 49 / 72
Verification of security protocols 27th June 2016 50 / 72
Verification of security protocols 27th June 2016 51 / 72
Verification of security protocols 27th June 2016 51 / 72
Verification of security protocols 27th June 2016 52 / 72
Verification of security protocols 27th June 2016 52 / 72
Verification of security protocols 27th June 2016 52 / 72
Verification of security protocols 27th June 2016 52 / 72
Verification of security protocols 27th June 2016 52 / 72
Verification of security protocols 27th June 2016 53 / 72
1 saturation of φ/ψ with their deducible subterms φ+/ψ+ 2 does there exist a test R1
Verification of security protocols 27th June 2016 53 / 72
Verification of security protocols 27th June 2016 54 / 72
Verification of security protocols 27th June 2016 54 / 72
Verification of security protocols 27th June 2016 54 / 72
Verification of security protocols 27th June 2016 54 / 72
Verification of security protocols 27th June 2016 54 / 72
Verification of security protocols 27th June 2016 54 / 72
Verification of security protocols 27th June 2016 55 / 72
Verification of security protocols 27th June 2016 55 / 72
Verification of security protocols 27th June 2016 56 / 72
Verification of security protocols 27th June 2016 56 / 72
1 A symbolic exploration of all the possible traces
2 A decision procedure for deciding (symbolic) equivalence between sets
Verification of security protocols 27th June 2016 57 / 72
get_challenge NP , KP NP NR , KR {NR , NP , KR }KE , MACKM ({NR , NP , KR }KE )
Verification of security protocols 27th June 2016 58 / 72
get_challenge NP , KP NP NR , KR {NR , NP , KR }KE , MACKM ({NR , NP , KR }KE ) If MAC check fails mac_error
Verification of security protocols 27th June 2016 58 / 72
get_challenge NP , KP NP NR , KR {NR , NP , KR }KE , MACKM ({NR , NP , KR }KE ) If MAC check succeeds If nonce check fails nonce_error
Verification of security protocols 27th June 2016 58 / 72
Verification of security protocols 27th June 2016 59 / 72
Verification of security protocols 27th June 2016 59 / 72
Verification of security protocols 27th June 2016 59 / 72
Verification of security protocols 27th June 2016 59 / 72
Verification of security protocols 27th June 2016 59 / 72
Verification of security protocols 27th June 2016 59 / 72
Verification of security protocols 27th June 2016 59 / 72
Verification of security protocols 27th June 2016 59 / 72
Verification of security protocols 27th June 2016 59 / 72
Verification of security protocols 27th June 2016 59 / 72
Verification of security protocols 27th June 2016 59 / 72
Verification of security protocols 27th June 2016 59 / 72
Verification of security protocols 27th June 2016 60 / 72
Verification of security protocols 27th June 2016 60 / 72
Verification of security protocols 27th June 2016 60 / 72
Verification of security protocols 27th June 2016 61 / 72
Verification of security protocols 27th June 2016 61 / 72
Verification of security protocols 27th June 2016 62 / 72
M(zE)
Verification of security protocols 27th June 2016 62 / 72
M(zE)
Verification of security protocols 27th June 2016 62 / 72
M(zE)
Verification of security protocols 27th June 2016 62 / 72
M(zE)
Verification of security protocols 27th June 2016 62 / 72
Verification of security protocols 27th June 2016 63 / 72
get_challenge NP , KP NP NR , KR M = {NR , NP , KR }KE , MACKM ({NR , NP , KR }KE )
Verification of security protocols 27th June 2016 63 / 72
E ,K ′ M)
get_challenge N′
P , K′ P
N′
P
M = {NR , NP , KR }KE , MACKM ({NR , NP , KR }KE )
Verification of security protocols 27th June 2016 63 / 72
E ,K ′ M)
get_challenge N′
P , K′ P
N′
P
M = {NR , NP , KR }KE , MACKM ({NR , NP , KR }KE ) mac_error
Verification of security protocols 27th June 2016 63 / 72
E ,K ′ M)
get_challenge N′
P , K′ P
N′
P
M = {NR , NP , KR }KE , MACKM ({NR , NP , KR }KE ) nonce_error
Verification of security protocols 27th June 2016 63 / 72
Verification of security protocols 27th June 2016 64 / 72
1 soundness: If all leaves of the tree are labeled with (⊥, ⊥) or
2 completeness: if Σ0 ≈s Σ′
Verification of security protocols 27th June 2016 65 / 72
Verification of security protocols 27th June 2016 66 / 72
Verification of security protocols 27th June 2016 67 / 72
Verification of security protocols 27th June 2016 68 / 72
1 compression: we impose a simple strategy on the exploration of the
2 reduction: we avoid exploring some redundant traces taking into
Verification of security protocols 27th June 2016 68 / 72
Verification of security protocols 27th June 2016 69 / 72
Maximum number of parallel processes verifiable in 20 hours.
Verification of security protocols 27th June 2016 69 / 72
1 the algebraic properties of the primitives are abstracted away
2 only the specification is analysed and not the implementation
3 not all scenario are checked
Verification of security protocols 27th June 2016 70 / 72
Verification of security protocols 27th June 2016 71 / 72
Verification of security protocols 27th June 2016 71 / 72
Verification of security protocols 27th June 2016 72 / 72