Clermont Ferrand 02/02/2017
1
Complexity of automatic verification of cryptographic protocols - - PowerPoint PPT Presentation
Complexity of automatic verification of cryptographic protocols Clermont Ferrand 02/02/2017 Vincent Cheval Equipe Pesto, INRIA, Nancy 1 Cryptographic protocols Communication on public network Cryptographic protocols: Concurrent programs
1
/ 29
2
Cryptographic protocols:
/ 29 3
The protocol: Honest participants
/ 29
Intruder Controls the network
3
The protocol: Honest participants
/ 29
Intruder Controls the network
3
The protocol: Honest participants Security properties
/ 29
4
/ 29
5
/ 29
6
/ 29
7
/ 29
8
Concrete attacks on:
These attacks are the consequence of a bad design and not of a:
/ 29
9
Cryptographic model Symbolic model
/ 29
9
Cryptographic model Symbolic model
Messages
/ 29
9
Cryptographic model Symbolic model
Messages
Cryptographic primitives
/ 29
9
Cryptographic model Symbolic model
Messages
Cryptographic primitives
/ 29
9
Cryptographic model Symbolic model
Messages
Cryptographic primitives
/ 29
9
Cryptographic model Symbolic model
Messages
Cryptographic primitives
Attacker
/ 29
9
Cryptographic model Symbolic model
Messages
Cryptographic primitives
Attacker
Proofs
/ 29
9
Cryptographic model Symbolic model
Messages
Cryptographic primitives
Attacker
Proofs
Security guarantees
/ 29
10
Nonces: Variables: Functions symbols: enc, dec, h i, , . . .
/ 29
10
Nonces: Variables: Functions symbols: enc, dec, h i, , . . .
/ 29
10
Nonces: Variables: Functions symbols: enc, dec, h i, , . . .
/ 29
10
Nonces: Variables: Functions symbols: enc, dec, h i, , . . .
Subterm convergent
Monadic convergent
/ 29
11
Passeport Reader
Knows ke Knows ke
/ 29
11
Passeport Reader
Freshly generated by Passport
Knows ke Knows ke
/ 29
11
Passeport Reader
Freshly generated by Passport
Knows ke Knows ke Reader expects a nonce and returns it
/ 29
11
Passeport Reader
Freshly generated by Passport
Knows ke Knows ke Reader expects a nonce and returns it Freshly generated by Reader
/ 29
11
Passeport Reader
Knows ke Knows ke
1: 2: 3:
/ 29
12
Passeport Reader
Knows ke Knows ke
1: 2: 3:
/ 29 13
/ 29 14
Passeport Reader
Knows ke Knows ke
/ 29 15
A trace = one execution of the process
Set of private names The process Substitution representing the knowledge of the attacker
/ 29 16
/ 29 16
/ 29 16
/ 29 16
/ 29 16
in(c, M)
/ 29 16
in(c, M)
Cannot contain private names
/ 29 16
in(c, M)
Cannot contain private names Can contain variables from the frame, i.e.w1
/ 29 16
in(c, M)
Cannot contain private names Can contain variables from the frame, i.e.w1
/ 29 16
in(c, M)
Cannot contain private names Can contain variables from the frame, i.e.w1
/ 29 16
in(c, M)
Cannot contain private names Can contain variables from the frame, i.e.w1
/ 29 16
in(c, M)
The sequence of label with the set and the frame represents a trace.
{ke, nT }
{nT /w1}
/ 29 17
/ 29
18
Equivalence properties Trace properties
for electronic voting
Tools : Avispa, ProVerif, Scyther, CSP/FdR… Tools : ProVerif, AkiSs, SPEC, APTE
/ 29
19
Situation 1 Situation 2
/ 29
19
Situation 1 Situation 2
/ 29
19
Situation 1 Situation 2 Two protocols are in equivalence if for all traces of one of the protocol, we can find an equivalent trace in the other protocol
/ 29
19
Situation 1 Situation 2 Two protocols are in equivalence if for all traces of one of the protocol, we can find an equivalent trace in the other protocol Knowledges of the attacker obtain in two traces with similar actions
/ 29
20
/ 29
21
/ 29
22
Applied Pi Calculus Static equivalence Trace equivalence Observational equivalence Diff equivalence Positive, finite, subterm convergent P complete [AC’04] Decidable ? CoNP complete Finite, subterm convergent P complete [AC’04] Decidable ? ? Finite, monadic convergent P hard ? ? ?
/ 29
23
Applied Pi Calculus Static equivalence Trace equivalence Observational equivalence Diff equivalence Positive, finite, subterm convergent P complete [AC’04] Decidable [CK’17] coNEXP hard CoNP complete Finite, subterm convergent P complete [AC’04] Decidable [CK’17] coNEXP hard coNEXP hard ? Finite, monadic convergent P hard coNEXP hard coNEXP hard ? Pure Pi Calculus Static equivalence Trace equivalence Observational equivalence Positive, finite LOGSPACE coΣ2 complete PSPACE easy coΣ4 hard Finite LOGSPACE coΣ2 complete PSPACE easy coΣ4 hard
/ 29
24
Applied Pi Calculus Static equivalence Trace equivalence Observational equivalence Diff equivalence Positive, finite, subterm convergent PTIME complete [AC’04] Decidable [CK’17] coNEXP easy ? coNEXP hard coNEXP complete ? CoNP complete Finite, subterm convergent PTIME complete [AC’04] Decidable [CK’17] coNEXP hard coNEXP complete ? coNEXP hard coNEXP complete ? coNP complete ? Finite, monadic convergent PTIME hard coNEXP hard coNEXP hard ? Pure Pi Calculus Static equivalence Trace equivalence Observational equivalence Positive, finite LOGSPACE coΣ2 complete PSPACE easy coΣ4 hard Finite LOGSPACE coΣ2 complete PSPACE easy coΣ4 hard
/ 29
25
No else branche, no cryptographic primitive
/ 29
26
c3 c1 c2
/ 29
26
c3 c1 c2
/ 29
26
c3 c1 c2
Enforces that inputs are booleans !
/ 29
26
c3 c1 c2
/ 29
27
c1 c2 c3 c4 c5 c6
/ 29
27
inp
P(x)
in(c1, x) in(c2, y)
in(c3, x)
in(c4, x) in(c5, y)
t ( c3 , b3 ) in(c6, x)
c1 c2 c3 c4 c5 c6
/ 29
27
Enforces that inputs are booleans !
inp
P(x)
in(c1, x) in(c2, y)
in(c3, x)
in(c4, x) in(c5, y)
t ( c3 , b3 ) in(c6, x)
c1 c2 c3 c4 c5 c6
/ 29
27
Enforces that inputs are booleans !
inp
P(x)
in(c1, x) in(c2, y)
in(c3, x)
in(c4, x) in(c5, y)
t ( c3 , b3 ) in(c6, x)
c1 c2 c3 c4 c5 c6
/ 29
28
How to express universality in pi-calculus ?
/ 29
28
How to express universality in pi-calculus ?
def
/ 29
28
How to express universality in pi-calculus ?
def
/ 29
29
A
def
= in(c, ~ x). test ← ^ ~ x. B
def
= in(c, ~ x). test ← ^ ~ x. Guess(~ y).
(v ← '(~ x, ~ y). out(c, v) + out(c, 1))
/ 29
29
The processes can only output if the inputs are booleans
A
def
= in(c, ~ x). test ← ^ ~ x. B
def
= in(c, ~ x). test ← ^ ~ x. Guess(~ y).
(v ← '(~ x, ~ y). out(c, v) + out(c, 1))
/ 29
29
The processes can only output if the inputs are booleans Whatever the boolean input, the process B can always output 0 or 1
A
def
= in(c, ~ x). test ← ^ ~ x. B
def
= in(c, ~ x). test ← ^ ~ x. Guess(~ y).
(v ← '(~ x, ~ y). out(c, v) + out(c, 1))
/ 29
29
The processes can only output if the inputs are booleans Whatever the boolean input, the process B can always output 0 or 1
A
def
= in(c, ~ x). test ← ^ ~ x. B
def
= in(c, ~ x). test ← ^ ~ x. Guess(~ y).
(v ← '(~ x, ~ y). out(c, v) + out(c, 1))
If holds then A can never output 0 when is input
∀~ y.'(~ x0, ~ y) = 1