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

security protocols formal models and verification
SMART_READER_LITE
LIVE PREVIEW

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,


slide-1
SLIDE 1

Security protocols: formal models and verification

Sergiu Bursuc

School of Computer Science, University of Bristol

Finse Winter School, 7 May 2015

slide-2
SLIDE 2

Security protocols: roles and goals

Roles: P1, . . . , Pn (e.g. clients, servers, devices, things, . . . ) Goals:

◮ Secrecy ◮ Privacy ◮ Authentication ◮ Integrity ◮ Unlinkability ◮ . . .

slide-3
SLIDE 3

Security protocols: building blocks

  • 1. Cryptographic primitives: encryption, signatures,

commitments, hash functions, . . .

  • 2. Network communication
slide-4
SLIDE 4

The attacker

◮ intrusion: network, computers, servers, etc ◮ dishonest execution of the protocol ◮ cryptanalysis

slide-5
SLIDE 5

Formal attacks in practice

  • G. Lowe. Breaking and fixing the Needham-Schroeder

public-key protocol using FDR. [TACAS 1996]

  • A. Armando, R. Carbone, L. Compagna, J. Cuellar, and L. Tobarra
  • Abad. Formal analysis of SAML 2.0 web browser single

sign-on: Breaking the SAML-based single sign-on for google

  • apps. [FMSE 2008]
  • M. Bortolozzo, M. Centenaro, R. Focardi, and G. Steel. Attacking

and fixing PKCS11 security tokens. [ACM CCS 2010]

  • D. Basin, C. Cremers, and S. Meier. Provably repairing the

ISO/IEC 9798 standard for entity authentication. [POST 2012]

slide-6
SLIDE 6

Plan

  • 1. Protocols and attacks
  • 2. Formal specification language
  • 3. Case studies and verification
slide-7
SLIDE 7

Needham-Schroeder symmetric key

Roles: C - client; S - server; T - third party Goals: establish secret Kcs, authorise C, and authenticate S

slide-8
SLIDE 8

Needham-Schroeder symmetric key

Roles: C - client; S - server; T - third party Goals: establish secret Kcs, authorise C, and authenticate S Keys: Kct (shared by C and T) Kst (shared by S and T) Nonces: Nc, Ns

slide-9
SLIDE 9

Needham-Schroeder symmetric key

Roles: C - client; S - server; T - third party Goals: establish secret Kcs, authorise C, and authenticate S Keys: Kct (shared by C and T) Kst (shared by S and T) Nonces: Nc, Ns 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

slide-10
SLIDE 10

Needham-Schroeder symmetric key

Roles: C - client; S - server; T - third party Goals: establish secret Kcs, authorise C, and authenticate S Keys: Kct (shared by C and T) Kst (shared by S and T) Nonces: Nc, Ns 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

slide-11
SLIDE 11

Attack

Roles: C - client; S - server; T - third party Goals: establish secret Kcs, authorise C, and authenticate S Keys: Kct (shared by C and T) Kst (shared by S and T) Nonces: Nc, Ns 1. C→ A : C, S, Nc 1′. A →T : C, A, Nc 2′. T → A : {Nc, Kca, {Kca, C}Kat}Kct 2. A →C : {Nc, Kca, {Kca, C}Kat}Kct 3. C → A : {Kca, C}Kat 4. A →C : {Ns}Kca 5. C→ A : {inc(Ns)}Kca

slide-12
SLIDE 12

Needham-Schroeder symmetric key (v1)

Roles: C - client; S - server; T - third party Goals: establish secret Kcs, authorise C, and authenticate S Keys: Kct (shared by C and T) Kst (shared by S and T) Nonces: Nc, Ns 1. C → T : C, S, Nc 2. T → C : {Nc, S, Kcs, {Kcs, C}Kst}Kct 3. C → S : {Kcs, C}Kst 4. S → C : {Ns}Kcs 5. C → S : {inc(Ns)}Kcs

slide-13
SLIDE 13

Needham-Schroeder symmetric key (v1)

Roles: C - client; S - server; T - third party Goals: establish secret Kcs, authorise C, and authenticate S Keys: Kct (shared by C and T) Kst (shared by S and T) Nonces: Nc, Ns 1. C → T : C, S, Nc 2. T → C : {Nc, S, Kcs, {Kcs, C}Kst}Kct 3. C → S : {Kcs, C}Kst 4. S → C : {Ns}Kcs 5. C → S : {inc(Ns)}Kcs 4′. S → C : {Ns′}Kcs 5′. C → S : {inc(Ns′)}Kcs

slide-14
SLIDE 14

Attack 2

Roles: C - client; S - server; T - third party Goals: establish secret Kcs, authorise C, and authenticate S Keys: Kct (shared by C and T) Kst (shared by S and T) Nonces: Nc, Ns 1. C → T : C, S, Nc 2. T → C : {Nc, S, Kcs, {Kcs, C}Kst}Kct 3. C → S : {Kcs, C}Kst 4. S → C : {Ns}Kcs 5. C → S : {inc(Ns)}Kcs 4′. S → C : {Ns′}Kcs 5′. C → S : {inc(Ns′)}Kcs

slide-15
SLIDE 15

Attack 2

Roles: C - client; S - server; T - third party Goals: establish secret Kcs, authorise C, and authenticate S Keys: Kct (shared by C and T) Kst (shared by S and T) Nonces: Nc, Ns 1. C → T : C, S, Nc 2. T → C : {Nc, S, Kcs, {Kcs, C}Kst}Kct 3. C → S : {Kcs, C}Kst 4. S → C : {Ns}Kcs 5. C → S : {inc(Ns)}Kcs 4′. A →C : {inc(Ns)}Kcs 5′. C→ A : {inc(inc(Ns))}Kcs

slide-16
SLIDE 16

Needham-Schroeder symmetric key (v2)

Roles: C - client; S - server; T - third party Goals: establish secret Kcs, authorise C, and authenticate S Keys: Kct (shared by C and T) Kst (shared by S and T) Nonces: Nc, Ns 1. C → T : C, S, Nc 2. T → C : {Nc, S, Kcs, {Kcs, C}Kst}Kct 3. C → S : {Kcs, C}Kst 4. S → C : {S, Ns}Kcs 5. C → S : {C, inc(Ns)}Kcs

slide-17
SLIDE 17

Needham-Schroeder symmetric key (v2)

Roles: C - client; S - server; T - third party Goals: establish secret Kcs, authorise C, and authenticate S Keys: Kct (shared by C and T) Kst (shared by S and T) Nonces: Nc, Ns 1. C → T : C, S, Nc 2. T → C : {Nc, S, Kcs, {Kcs, C}Kst}Kct 3. C → S : {Kcs, C}Kst 4. S → C : {S, Ns}Kcs 5. C → S : {C, inc(Ns)}Kcs

slide-18
SLIDE 18

Attack 3

Roles: C - client; S - server; T - third party Goals: establish secret Kcs, authorise C, and authenticate S Keys: Kct (shared by C and T) Kst (shared by S and T) Nonces: Nc, Ns 1. C → T : C, S, Nc 2. T → C : {Nc, S, Kcs, {Kcs, C}Kst}Kct 3. C → S : {Kcs, C}Kst 4. S → C : {S, Ns}Kcs 5. C → S : {C, inc(Ns)}Kcs . . . 3. C → S : {Kcs, C}Kst 4. S → C : {S, Ns′}Kcs 5. C → S : {C, inc(Ns′)}Kcs

slide-19
SLIDE 19

Needham-Schroeder symmetric key (v3)

Roles: C - client; S - server; T - third party Goals: establish secret Kcs, authorise C, and authenticate S Keys: Kct (shared by C and T) Kst (shared by S and T) Nonces: Nc, Ns 1. C → S : C 2. S → C : {C, Ns}Kbs 3. C → T : C, S, Nc, {C, Ns}Kbs 4. T → C : {Nc, S, Kcs, {Kcs, Ns, C}Kst}Kct 5. C → S : {Kcs, Ns, C}Kst 6. S → C : {S, Ns}Kcs 7. C → S : {C, inc(Ns)}Kcs

slide-20
SLIDE 20

Needham-Schroeder symmetric key (v3)

Roles: C - client; S - server; T - third party Goals: establish secret Kcs, authorise C, and authenticate S Keys: Kct (shared by C and T) Kst (shared by S and T) Nonces: Nc, Ns 1. C → S : C 2. S → C : {C, Ns}Kbs 3. C → T : C, S, Nc, {C, Ns}Kbs 4. T → C : {Nc, S, Kcs, {Kcs, Ns, C}Kst}Kct 5. C → S : {Kcs, Ns, C}Kst 6. S → C : {S, Ns}Kcs 7. C → S : {C, inc(Ns)}Kcs Notes: i) compromised T; ii) Kerberos

slide-21
SLIDE 21

Formal verification approach

slide-22
SLIDE 22

Formal verification

system S environment E properties P does S satisfy P in E?

slide-23
SLIDE 23

Formal verification

Formalization system S ⇒ M(S) environment E ⇒ M(E) properties P ⇒ M(P) does S satisfy P in E? ⇒ M(S) | =M(E) M(P)?

slide-24
SLIDE 24

Formal verification

Formalization system S ⇒ M(S) environment E ⇒ M(E) properties P ⇒ M(P) does S satisfy P in E? ⇒ M(S) | =M(E) M(P)?                    Verification

slide-25
SLIDE 25

Formal model

◮ Messages as terms ◮ Roles as processes ◮ Security properties as logical formulas

slide-26
SLIDE 26

Messages as terms

Term algebra T (F, N ∪ X) N = a, b, c, k1, k2, . . . X = x, y, z, . . . F = f1, . . . , fk

slide-27
SLIDE 27

Messages as terms

Term algebra T (F, N ∪ X) N = a, b, c, k1, k2, . . . X = x, y, z, . . . F = f1, . . . , fk

◮ N ⊆ T (F, N ∪ X) ◮ X ⊆ T (F, N ∪ X) ◮ t1, . . . , tk ∈ T (F, N ∪ X)

and f ∈ F = ⇒ f (t1, . . . , tk) ∈ T (F, N ∪ X) Examples: enc(a, k),

slide-28
SLIDE 28

Messages as terms

Term algebra T (F, N ∪ X) N = a, b, c, k1, k2, . . . X = x, y, z, . . . F = f1, . . . , fk

◮ N ⊆ T (F, N ∪ X) ◮ X ⊆ T (F, N ∪ X) ◮ t1, . . . , tk ∈ T (F, N ∪ X)

and f ∈ F = ⇒ f (t1, . . . , tk) ∈ T (F, N ∪ X) Examples: enc(a, k), enc(x, k),

slide-29
SLIDE 29

Messages as terms

Term algebra T (F, N ∪ X) N = a, b, c, k1, k2, . . . X = x, y, z, . . . F = f1, . . . , fk

◮ N ⊆ T (F, N ∪ X) ◮ X ⊆ T (F, N ∪ X) ◮ t1, . . . , tk ∈ T (F, N ∪ X)

and f ∈ F = ⇒ f (t1, . . . , tk) ∈ T (F, N ∪ X) Examples: enc(a, k), enc(x, k), enc(enc(x, k1), k2),

slide-30
SLIDE 30

Messages as terms

Term algebra T (F, N ∪ X) N = a, b, c, k1, k2, . . . X = x, y, z, . . . F = f1, . . . , fk

◮ N ⊆ T (F, N ∪ X) ◮ X ⊆ T (F, N ∪ X) ◮ t1, . . . , tk ∈ T (F, N ∪ X)

and f ∈ F = ⇒ f (t1, . . . , tk) ∈ T (F, N ∪ X) Examples: enc(a, k), enc(x, k), enc(enc(x, k1), k2), dec(x, k),

slide-31
SLIDE 31

Messages as terms

Term algebra T (F, N ∪ X) N = a, b, c, k1, k2, . . . X = x, y, z, . . . F = f1, . . . , fk

◮ N ⊆ T (F, N ∪ X) ◮ X ⊆ T (F, N ∪ X) ◮ t1, . . . , tk ∈ T (F, N ∪ X)

and f ∈ F = ⇒ f (t1, . . . , tk) ∈ T (F, N ∪ X) Examples: enc(a, k), enc(x, k), enc(enc(x, k1), k2), dec(x, k), Equational theory: u1 = v1, . . . , un = vn Example: dec(enc(x, y), y) = x

slide-32
SLIDE 32

Messages as terms

Term algebra T (F, N ∪ X) N = a, b, c, k1, k2, . . . X = x, y, z, . . . F = f1, . . . , fk

◮ N ⊆ T (F, N ∪ X) ◮ X ⊆ T (F, N ∪ X) ◮ t1, . . . , tk ∈ T (F, N ∪ X)

and f ∈ F = ⇒ f (t1, . . . , tk) ∈ T (F, N ∪ X) Examples: enc(a, k), enc(x, k), enc(enc(x, k1), k2), dec(x, k), Equational theory: u1 = v1, . . . , un = vn Example: dec(enc(x, y), y) = x Note: both augments and restricts attacker’s power

slide-33
SLIDE 33

Equational theories

Symmetric key encryption: dec(enc(x, y), y) = x

slide-34
SLIDE 34

Equational theories

Symmetric key encryption: dec(enc(x, y), y) = x Public key encryption: dec(enc(x, pub(y)), y) = x

slide-35
SLIDE 35

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)) =

  • k

get(sign(x, y)) = x

slide-36
SLIDE 36

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)) =

  • k

get(sign(x, y)) = x Blind signatures: check(sign(x, y), pub(y)) =

  • k

get(sign(x, y)) = x unblind(sign(blind(x, y), z), y) = sign(x, z) unblind(blind(x, y), y) = x

slide-37
SLIDE 37

Equational theories

Modular exponentiation: exp(exp(x, y), z) = exp(exp(x, z), y)

slide-38
SLIDE 38

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′))

slide-39
SLIDE 39

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(x1, y, z1) ⋆ enc(x2, y, z2) = enc(x1 + x2, y, z1 ⋆ z2)

slide-40
SLIDE 40

Intruder deduction: T ⊢ t

T ⊢ t1 . . . T ⊢ tk T ⊢ f (t1, . . . , tk) T ⊢ u if u =E v T ⊢ v

slide-41
SLIDE 41

Intruder deduction: T ⊢ t

T ⊢ t1 . . . T ⊢ tk T ⊢ f (t1, . . . , tk) T ⊢ u if u =E v T ⊢ v enc(s, k1), enc(k1, k2), sign(k2, k3) ⊢ s?

slide-42
SLIDE 42

Intruder deduction: T ⊢ t

T ⊢ t1 . . . T ⊢ tk T ⊢ f (t1, . . . , tk) T ⊢ u if u =E v T ⊢ v enc(s, k1), enc(k1, k2), sign(k2, k3) ⊢ s? enc(s, enc(s, k1)), enc(enc(s, k1), sign(k1, k2)), k1, k2 ⊢ s?

slide-43
SLIDE 43

Intruder deduction: T ⊢ t

T ⊢ t1 . . . T ⊢ tk T ⊢ f (t1, . . . , tk) T ⊢ u if u =E v T ⊢ v enc(s, k1), enc(k1, k2), sign(k2, k3) ⊢ s? enc(s, enc(s, k1)), enc(enc(s, k1), sign(k1, k2)), k1, k2 ⊢ s? enc(s, enc(s, k1)), enc(enc(s, k1), sign(k1, k2)), k1, k′

2 ⊢ s?

slide-44
SLIDE 44

Intruder deduction and passive security

Intruder knowledge: t1, . . . , tn Intruder power: E Security question: t1, . . . , tn ⊢E s?

slide-45
SLIDE 45

Intruder deduction and passive security

Intruder knowledge: t1, . . . , tn Intruder power: E Security question: t1, . . . , tn ⊢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): C1, C2, S, Nc1, Nc2, enc(Nc1, S, Kc1s, enc(Kc1s, C1, Kst), Kc1t), enc(Nc2, S, Kc2s, enc(Kc2s, C2, Kst), Kc2t), enc(Kc1s, C1, Kst), enc(Kc2s, C2, Kst), enc(Nb1, Kc1s), enc(Nb2, Kc2s), enc(inc(Nb1), Kc1s), enc(inc(Nb2), Kc2s) Security question: does the intruder know Kc1s or Kc2s ?

slide-46
SLIDE 46

Formal verification

Formalization system S ⇒ M(S) environment E ⇒ M(E) properties P ⇒ M(P) does S satisfy P in E? ⇒ M(S) | =M(E) M(P)?                    Verification

◮ Messages as terms ◮ Roles as processes ◮ Security properties as logical formulas

slide-47
SLIDE 47

Process algebra: [Abadi, Fournet 2001] and [Blanchet 2001]

new n; P let x = u in P in(c, u); P

  • ut(c, u); P

P | Q !P if u = v then P else Q

slide-48
SLIDE 48

Process algebra: [Abadi, Fournet 2001] and [Blanchet 2001]

new n; P let x = u in P in(c, u); P

  • ut(c, u); P

P | Q !P if u = v then P else Q new k;

  • ut(c, pub(k)); in(c, x);

let y = dec(x, k) in

  • ut(c, y)
slide-49
SLIDE 49

Process algebra: [Abadi, Fournet 2001] and [Blanchet 2001]

new n; P let x = u in P in(c, u); P

  • ut(c, u); P

P | Q !P if u = v then P else Q new k;

  • ut(c, pub(k)); in(c, x);

let y = dec(x, k) in

  • ut(c, y)

Security : P | = att:k?

slide-50
SLIDE 50

Process algebra: [Abadi, Fournet 2001] and [Blanchet 2001]

new n; P let x = u in P in(c, u); P

  • ut(c, u); P

P | Q !P if u = v then P else Q new k; new s; out(c, enc(s, pub(k)))

  • ut(c, pub(k)); in(c, x);

let y = dec(x, k) in

  • ut(c, y)

Security : P | = att:k? P | = att:s?

slide-51
SLIDE 51

Process algebra: [Abadi, Fournet 2001] and [Blanchet 2001]

new n; P let x = u in P in(c, u); P

  • ut(c, u); P

P | Q !P if u = v then P else Q new k; new s; out(c, enc(s, pub(k)))

  • ut(c, pub(k)); in(c, x);

let y = dec(x, k) in event DEC(y); out(c, y) Security : P | = att:k? P | = att:s event:DEC(s)

slide-52
SLIDE 52

Process algebra: [Abadi, Fournet 2001] and [Blanchet 2001]

new n; P let x = u in P in(c, u); P

  • ut(c, u); P

P | Q !P if u = v then P else Q new k; new s; out(c, enc(s, pub(k)))

  • ut(c, pub(k)); in(c, x);

let y = dec(x, k) in event DEC(y); out(c, y) Security : P | = att:k? P | = att:s event:DEC(s) Tools: ProVerif, Avispa, Scyther, Tamarin, etc

slide-53
SLIDE 53

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

slide-54
SLIDE 54

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)))

  • ut(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)}

slide-55
SLIDE 55

Operational semantics: (N, M, P) (N ′, M′, P′)

(NIL) (N, M, P ∪ {0}) (N, M, P)

slide-56
SLIDE 56

Operational semantics: (N, M, P) (N ′, M′, P′)

(NIL) (N, M, P ∪ {0}) (N, M, P) (BANG) (N, M, P ∪ {!P}) (N, M, P ∪ {P, !P})

slide-57
SLIDE 57

Operational semantics: (N, M, P) (N ′, M′, P′)

(NIL) (N, M, P ∪ {0}) (N, M, P) (BANG) (N, M, P ∪ {!P}) (N, M, P ∪ {P, !P}) (PAR) (N, M, P ∪ {P | Q}) (N, M, P ∪ {P, Q})

slide-58
SLIDE 58

Operational semantics: (N, M, P) (N ′, M′, P′)

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

slide-59
SLIDE 59

Operational semantics: (N, M, P) (N ′, M′, P′)

(COMM) (N, M, P ∪ {out(c, t); P , in(c, x); Q}) (N, M′, P ∪ {P, Q[x → t]})

slide-60
SLIDE 60

Operational semantics: (N, M, P) (N ′, M′, P′)

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

slide-61
SLIDE 61

Operational semantics: (N, M, P) (N ′, M′, P′)

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

slide-62
SLIDE 62

Operational semantics: (N, M, P) (N ′, M′, P′)

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

slide-63
SLIDE 63

Operational semantics: (N, M, P) (N ′, M′, P′)

(IFT) (N, M, P ∪ {if U = V then P else Q}) (N, M, P ∪ {P}) if U =E V

slide-64
SLIDE 64

Operational semantics: (N, M, P) (N ′, M′, P′)

(IFT) (N, M, P ∪ {if U = V then P else Q}) (N, M, P ∪ {P}) if U =E V (IFF) (N, M, P ∪ {if U = V then P else Q}) (N, M, P ∪ {Q}) if U =E V

slide-65
SLIDE 65

Operational semantics: (N, M, P) (N ′, M′, P′)

(IFT) (N, M, P ∪ {if U = V then P else Q}) (N, M, P ∪ {P}) if U =E V (IFF) (N, M, P ∪ {if U = V then P else Q}) (N, M, P ∪ {Q}) if U =E V (LET) (N, M, P ∪ {let x = T in P}) (N, M, P ∪ {P[x → T]})

slide-66
SLIDE 66

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;

  • ut(net, C, S, Nc);

in(net, xT); let = Nc, xkcs, xciph = dec(xT, k(C)) in

  • ut(net, xciph);

in(net, xS); let xNs = dec(xS, xkcs) in

  • ut(net, enc(inc(xNs), xkcs))
slide-67
SLIDE 67

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 Third Party in(net, xC, xS, xNc); new kCS; let yS = enc(kCS, xC, k(xS)) in let yC = enc(xNc, c, yS, k(xC)) in

  • ut(net, yC)
slide-68
SLIDE 68

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 Server(S) in(net, xreq); let xKcs, xC = dec(xreq, k(S) in new Ns;

  • ut(net, enc(Ns, xKcs));

in(net, xresp); if inc(Ns) = dec(xresp, xKcs) then OK

slide-69
SLIDE 69

Formal verification

Formalization system S ⇒ M(S) environment E ⇒ M(E) properties P ⇒ M(P) does S satisfy P in E? ⇒ M(S) | =M(E) M(P)?                    Verification

◮ Messages as terms ◮ Roles as processes ◮ Security properties as logical formulas

slide-70
SLIDE 70

Security properties: secrecy as reachability

(N0, M0, {P0}) ∗ (N, M, P) and M ⊢ t?

slide-71
SLIDE 71

Security properties: secrecy as reachability

(N0, M0, {P0}) ∗ (N, M, P) and M ⊢ t?

  • P0 |

= att : t

slide-72
SLIDE 72

Security properties: secrecy as reachability

(N0, M0, {P0}) ∗ (N, M, P) and M ⊢ t?

  • P0 |

= att : t P0 =    new k; new s; out(c, enc(s, pub(k)))

  • ut(c, pub(k)); in(c, x);

let y = dec(x, k) in out(c, y) P0 | = att : k P0 | = att : s

slide-73
SLIDE 73

Security properties: secrecy as reachability

(N0, M0, {P0}) ∗ (N, M, P) and M ⊢ t?

  • P0 |

= att : t P0 =    new k; new s; out(c, enc(s, pub(k)))

  • ut(c, pub(k)); in(c, x);

let y = dec(x, k) in out(c, y) P0 | = att : k P0 | = att : s (∅, ∅, {P0}) ∗ (N, M, P) and M ⊢ s

◮ N = {k, s} ◮ M = {enc(s, pub(k)), pub(k), s} ◮ P = ∅

slide-74
SLIDE 74

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 5. C → S : {inc(Ns)}Kcs

Demo

slide-75
SLIDE 75

Security properties: privacy as equivalence

Client(C, S1) | T | Server(S1) | Server(S2) vs Client(C, S2) | T | Server(S1) | Server(S2)

slide-76
SLIDE 76

Security properties: privacy as equivalence

new r; !out(c, enc(d, pub(kA), r)) | A | S1 | S2

slide-77
SLIDE 77

Security properties: privacy as equivalence

new r; !out(c, enc(d, pub(kA), r)) | A | S1 | S2 !new r; out(c, enc(d, pub(kA), r))) | A | S1 | S2

slide-78
SLIDE 78

Security properties: privacy as equivalence

new r; !out(c, enc(d, pub(kA), r)) | A | S1 | S2 !new r; out(c, enc(d, pub(kA), r))) | A | S1 | S2 P[d] ∼ P[d′] P[d] ∼ I[d] Examples: electronic voting, weak secrets, bids, reviews, like buttons, etc

slide-79
SLIDE 79

Security properties: unlinkability as equivalence

new r1; new r2;

  • ut(c, enc(s1, pub(kA), r1)) |
  • ut(c, enc(s2, pub(kA), r2)) |

A | S1 | S2 vs new r1; new r2;

  • ut(c, enc(s1, pub(kA), r1)) |
  • ut(c, enc(s1, pub(kA), r2)) |

| A | S1 | S2

slide-80
SLIDE 80

Security properties: unlinkability as equivalence

new r1; new r2;

  • ut(c, enc(s1, pub(kA), r1)) |
  • ut(c, enc(s2, pub(kA), r2)) |

A | S1 | S2 vs new r1; new r2;

  • ut(c, enc(s1, pub(kA), r1)) |
  • ut(c, enc(s1, pub(kA), r2)) |

| A | S1 | S2 P[s1] | P[s2] ∼ P[s1] | P[s1] Examples: RFID tags, location, healthcare, etc

slide-81
SLIDE 81

Security properties: unlinkability as equivalence

new r1; new r2;

  • ut(c, enc(s1, pub(kA), r1)) |
  • ut(c, enc(s2, pub(kA), r2)) |

A | S1 | S2 vs new r1; new r2;

  • ut(c, enc(s1, pub(kA), r1)) |
  • ut(c, enc(s1, pub(kA), r2)) |

| A | S1 | S2 P[s1] | P[s2] ∼ P[s1] | P[s1] Examples: RFID tags, location, healthcare, etc Client(C, S1) | Client(C, S1) | T | Server(S1) | Server(S2) vs Client(C, S1) |Client(C, S2) | T | Server(S1) | Server(S2)

slide-82
SLIDE 82

Static equivalence

Term context: C[ǫ1, . . . , ǫn] applied to t1, . . . , tn gives C[t1, . . . , tn]

slide-83
SLIDE 83

Static equivalence

Term context: C[ǫ1, . . . , ǫn] applied to t1, . . . , tn gives C[t1, . . . , tn] Observations: O(N, M) = {(C1, C2) | (C1, C2) ∩ N = ∅ and C1[M] =E C2[M]}

slide-84
SLIDE 84

Static equivalence

Term context: C[ǫ1, . . . , ǫn] applied to t1, . . . , tn gives C[t1, . . . , tn] Observations: O(N, M) = {(C1, C2) | (C1, C2) ∩ N = ∅ and C1[M] =E C2[M]} Static equivalence: O(N1, M1) = O(N2, M2) ?

slide-85
SLIDE 85

Static equivalence

Term context: C[ǫ1, . . . , ǫn] applied to t1, . . . , tn gives C[t1, . . . , tn] Observations: O(N, M) = {(C1, C2) | (C1, C2) ∩ N = ∅ and C1[M] =E C2[M]} Static equivalence: O(N1, M1) = O(N2, M2) ? M1 = enc(s1, pub(k), r1), enc(s1, pub(k), r2), pub(k) M2 = enc(s1, pub(k), r1), enc(s2, pub(k), r2), pub(k)

◮ N1 = N2 = {r1, r2} ?

slide-86
SLIDE 86

Static equivalence

Term context: C[ǫ1, . . . , ǫn] applied to t1, . . . , tn gives C[t1, . . . , tn] Observations: O(N, M) = {(C1, C2) | (C1, C2) ∩ N = ∅ and C1[M] =E C2[M]} Static equivalence: O(N1, M1) = O(N2, M2) ? M1 = enc(s1, pub(k), r1), enc(s1, pub(k), r2), pub(k) M2 = enc(s1, pub(k), r1), enc(s2, pub(k), r2), pub(k)

◮ N1 = N2 = {r1, r2} ? ◮ N1 = N2 = {s1, s2} ?

slide-87
SLIDE 87

Static equivalence

Term context: C[ǫ1, . . . , ǫn] applied to t1, . . . , tn gives C[t1, . . . , tn] Observations: O(N, M) = {(C1, C2) | (C1, C2) ∩ N = ∅ and C1[M] =E C2[M]} Static equivalence: O(N1, M1) = O(N2, M2) ? M1 = enc(s1, pub(k), r1), enc(s1, pub(k), r2), pub(k) M2 = enc(s1, pub(k), r1), enc(s2, pub(k), r2), pub(k)

◮ N1 = N2 = {r1, r2} ? ◮ N1 = N2 = {s1, s2} ? ◮ N1 = N2 = {r2} ?

slide-88
SLIDE 88

Static equivalence

Term context: C[ǫ1, . . . , ǫn] applied to t1, . . . , tn gives C[t1, . . . , tn] Observations: O(N, M) = {(C1, C2) | (C1, C2) ∩ N = ∅ and C1[M] =E C2[M]} Static equivalence: O(N1, M1) = O(N2, M2) ? M1 = enc(s1, pub(k), r1), enc(s1, pub(k), r2), pub(k) M2 = enc(s1, pub(k), r1), enc(s2, pub(k), r2), pub(k)

◮ N1 = N2 = {r1, r2} ? ◮ N1 = N2 = {s1, s2} ? ◮ N1 = N2 = {r2} ? ◮ N1 = N2 = {r1} ?

slide-89
SLIDE 89

Static equivalence

Term context: C[ǫ1, . . . , ǫn] applied to t1, . . . , tn gives C[t1, . . . , tn] Observations: O(N, M) = {(C1, C2) | (C1, C2) ∩ N = ∅ and C1[M] =E C2[M]} Static equivalence: O(N1, M1) = O(N2, M2) ? M1 = enc(s1, pub(k), r1), enc(s1, pub(k), r2), pub(k) M2 = enc(s1, pub(k), r1), enc(s2, pub(k), r2), pub(k)

◮ N1 = N2 = {r1, r2} ? ◮ N1 = N2 = {s1, s2} ? ◮ N1 = N2 = {r2} ? ◮ N1 = N2 = {r1} ? C1 = enc(s1, ǫ2, r2) and C2 = ǫ3 ◮ N1 = N2 = {s2} ?

slide-90
SLIDE 90

Static equivalence

Term context: C[ǫ1, . . . , ǫn] applied to t1, . . . , tn gives C[t1, . . . , tn] Observations: O(N, M) = {(C1, C2) | (C1, C2) ∩ N = ∅ and C1[M] =E C2[M]} Static equivalence: O(N1, M1) = O(N2, M2) ? M1 = enc(s1, pub(k), r1), enc(s1, pub(k), r2), pub(k) M2 = enc(s1, pub(k), r1), enc(s2, pub(k), r2), pub(k)

◮ N1 = N2 = {r1, r2} ? ◮ N1 = N2 = {s1, s2} ? ◮ N1 = N2 = {r2} ? ◮ N1 = N2 = {r1} ? C1 = enc(s1, ǫ2, r2) and C2 = ǫ3 ◮ N1 = N2 = {s2} ? C1 = enc(s1, ǫ2, r2) and C2 = ǫ3

slide-91
SLIDE 91

Observational equivalence: P1 ∼ P2

(OUT) (N, M, P ∪ {out(c, t); P}) (N, M′, P ∪ {P}) where M′ = M ∪ {t}, if M ⊢ c (IN) (N, M, P ∪ {in(c, x); Q}) (N, M, P ∪ {Q[x → t]}) if M ⊢ c and M ⊢ t

slide-92
SLIDE 92

Observational equivalence: P1 ∼ P2

(OUT) (N, M, P ∪ {out(c, t); P})

  • ut(c,.)

− − − − → (N, M′, P ∪ {P}) where M′ = M ∪ {t}, if M ⊢ c (IN) (N, M, P ∪ {in(c, x); Q})

in(c,C)

− − − − → (N, M, P ∪ {Q[x → t]}) if M ⊢ c and C[M] =E t

slide-93
SLIDE 93

Observational equivalence: P1 ∼ P2

(OUT) (N, M, P ∪ {out(c, t); P})

  • ut(c,.)

− − − − → (N, M′, P ∪ {P}) where M′ = M ∪ {t}, if M ⊢ c (IN) (N, M, P ∪ {in(c, x); Q})

in(c,C)

− − − − → (N, M, P ∪ {Q[x → t]}) if M ⊢ c and C[M] =E t Traces: (N0, M0, {P})

α1...αk

− − − − → (N, M, P)

slide-94
SLIDE 94

Observational equivalence: P1 ∼ P2

(OUT) (N, M, P ∪ {out(c, t); P})

  • ut(c,.)

− − − − → (N, M′, P ∪ {P}) where M′ = M ∪ {t}, if M ⊢ c (IN) (N, M, P ∪ {in(c, x); Q})

in(c,C)

− − − − → (N, M, P ∪ {Q[x → t]}) if M ⊢ c and C[M] =E t Traces: (N0, M0, {P})

α1...αk

− − − − → (N, M, P) Observational equivalence: P ∼ Q iff for every trace (N0, M0, {P1})

α1...αk

− − − − → (N1, M1, P1) there is a trace (N0, M0, {P2})

α1...αk

− − − − → (N2, M2, P2) such that O(N1, M1) = O(N2, M2)

slide-95
SLIDE 95

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 P    Client(C, S1) | T | Server(S1) | Server(S2) vs Client(C, S2) | T | Server(S1) | Server(S2) U    Client(C, S1) | Client(C, S1) | T | Server(S1) | Server(S2) vs Client(C, S1) |Client(C, S2) | T | Server(S1) | Server(S2)

Demo

slide-96
SLIDE 96

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 P    Client(C, S1) | T | Server(S1) | Server(S2) vs Client(C, S2) | T | Server(S1) | Server(S2) U    Client(C, S1) | Client(C, S1) | T | Server(S1) | Server(S2) vs Client(C, S1) |Client(C, S2) | T | Server(S1) | Server(S2)

Demo

slide-97
SLIDE 97

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 P    Client(C, S1) | T | Server(S1) | Server(S2) vs Client(C, S2) | T | Server(S1) | Server(S2) [which is stronger?] U    Client(C, S1) | Client(C, S1) | T | Server(S1) | Server(S2) vs Client(C, S1) |Client(C, S2) | T | Server(S1) | Server(S2)

Demo

slide-98
SLIDE 98

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 P    Client(C, S1) | T | Server(S1) | Server(S2) vs Client(C, S2) | T | Server(S1) | Server(S2) [which is stronger?] U    Client(C, S1) | Client(C, S1) | T | Server(S1) | Server(S2) vs Client(C, S1) |Client(C, S2) | T | Server(S1) | Server(S2)

Demo

slide-99
SLIDE 99

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 P    Client(C, S1) | T | Server(S1) | Server(S2) vs Client(C, S2) | T | Server(S1) | Server(S2) [which is stronger?] U    Client(C, S1) | Client(C, S1) | T | Server(S1) | Server(S2) vs Client(C, S1) |Client(C, S2) | T | Server(S1) | Server(S2)

Demo

slide-100
SLIDE 100

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 P    Client(C, S1) | T | Server(S1) | Server(S2) vs Client(C, S2) | T | Server(S1) | Server(S2) [which is stronger?] U    Client(C, S1) | Client(C, S1) | T | Server(S1) | Server(S2) vs Client(C, S1) |Client(C, S2) | T | Server(S1) | Server(S2)

Demo

slide-101
SLIDE 101

Correspondence assertions: informally

Integrity: does the result a party obtains correspond to reality ? Authorisation: is a party allowed to access a resource ? Authentication: am I really talking to the expected party ? Agreement: did P1 and P2 agree on the same value ?

slide-102
SLIDE 102

Correspondence assertions: events

new n; P let x = u in P in(c, u); P

  • ut(c, u); P

P | Q !P if u = v then P else Q eventE(u1, . . . , un) ; P

slide-103
SLIDE 103

Correspondence assertions: events

new n; P let x = u in P in(c, u); P

  • ut(c, u); P

P | Q !P if u = v then P else Q eventE(u1, . . . , un) ; P new k; new s; out(c, enc(s, pub(k)))

  • ut(c, pub(k)); in(c, x);

let y = dec(x, k) in eventDEC(y); out(c, y)

slide-104
SLIDE 104

Correspondence assertions: formally

(EV) (N, M, L, P ∪ {eventE(t1, . . . , tn); P}) (N, M, L′, P ∪ {P}) where L′ = L ∪ E(t1, . . . , tn)

slide-105
SLIDE 105

Correspondence assertions: formally

(EV) (N, M, L, P ∪ {eventE(t1, . . . , tn); P}) (N, M, L′, P ∪ {P}) where L′ = L ∪ E(t1, . . . , tn) Syntax

◮ Predicates ρ := ev : E(t1, . . . , tn) | u = v | att : t ◮ Formulas Φ := ρ | Φ ∧ Φ | Φ ∨ Φ ◮ Assertions: Φ1 =

⇒ Φ2

slide-106
SLIDE 106

Correspondence assertions: formally

(EV) (N, M, L, P ∪ {eventE(t1, . . . , tn); P}) (N, M, L′, P ∪ {P}) where L′ = L ∪ E(t1, . . . , tn) Syntax

◮ Predicates ρ := ev : E(t1, . . . , tn) | u = v | att : t ◮ Formulas Φ := ρ | Φ ∧ Φ | Φ ∨ Φ ◮ Assertions: Φ1 =

⇒ Φ2 Semantics

◮ (N, M, L, P) |

= ev : E(t1, . . . , tn) when E(t1, . . . , tn) ∈ L

slide-107
SLIDE 107

Correspondence assertions: formally

(EV) (N, M, L, P ∪ {eventE(t1, . . . , tn); P}) (N, M, L′, P ∪ {P}) where L′ = L ∪ E(t1, . . . , tn) Syntax

◮ Predicates ρ := ev : E(t1, . . . , tn) | u = v | att : t ◮ Formulas Φ := ρ | Φ ∧ Φ | Φ ∨ Φ ◮ Assertions: Φ1 =

⇒ Φ2 Semantics

◮ (N, M, L, P) |

= ev : E(t1, . . . , tn) when E(t1, . . . , tn) ∈ L

◮ (N, M, L, P) |

= u = v when u =E v

slide-108
SLIDE 108

Correspondence assertions: formally

(EV) (N, M, L, P ∪ {eventE(t1, . . . , tn); P}) (N, M, L′, P ∪ {P}) where L′ = L ∪ E(t1, . . . , tn) Syntax

◮ Predicates ρ := ev : E(t1, . . . , tn) | u = v | att : t ◮ Formulas Φ := ρ | Φ ∧ Φ | Φ ∨ Φ ◮ Assertions: Φ1 =

⇒ Φ2 Semantics

◮ (N, M, L, P) |

= ev : E(t1, . . . , tn) when E(t1, . . . , tn) ∈ L

◮ (N, M, L, P) |

= u = v when u =E v

◮ (N, M, L, P) |

= att : t when M ⊢ t

slide-109
SLIDE 109

Correspondence assertions: formally

(EV) (N, M, L, P ∪ {eventE(t1, . . . , tn); P}) (N, M, L′, P ∪ {P}) where L′ = L ∪ E(t1, . . . , tn) Syntax

◮ Predicates ρ := ev : E(t1, . . . , tn) | u = v | att : t ◮ Formulas Φ := ρ | Φ ∧ Φ | Φ ∨ Φ ◮ Assertions: Φ1 =

⇒ Φ2 Semantics

◮ (N, M, L, P) |

= ev : E(t1, . . . , tn) when E(t1, . . . , tn) ∈ L

◮ (N, M, L, P) |

= u = v when u =E v

◮ (N, M, L, P) |

= att : t when M ⊢ t

◮ (N, M, L, P) |

= Φ1 ∧ Φ2, Φ1 ∨ Φ2 when . . .

slide-110
SLIDE 110

Correspondence assertions: formally

(EV) (N, M, L, P ∪ {eventE(t1, . . . , tn); P}) (N, M, L′, P ∪ {P}) where L′ = L ∪ E(t1, . . . , tn) Syntax

◮ Predicates ρ := ev : E(t1, . . . , tn) | u = v | att : t ◮ Formulas Φ := ρ | Φ ∧ Φ | Φ ∨ Φ ◮ Assertions: Φ1 =

⇒ Φ2 Semantics

◮ (N, M, L, P) |

= ev : E(t1, . . . , tn) when E(t1, . . . , tn) ∈ L

◮ (N, M, L, P) |

= u = v when u =E v

◮ (N, M, L, P) |

= att : t when M ⊢ t

◮ (N, M, L, P) |

= Φ1 ∧ Φ2, Φ1 ∨ Φ2 when . . .

◮ (N0, M0, L0, {P}) |

= Φ1 = ⇒ Φ2 when for every reachable configuration (N, M, L, P) with (N, M, L, P) | = Φ1σ we have (N, M, L, P) | = Φ2σ

slide-111
SLIDE 111

Examples

Data protection: P0        new k; new s; out(c, enc(s, pub(k)))

  • ut(c, pub(k)); in(c, x);

let y = dec(x, k) in eventDEC(y); out(c, y) P0 | = att : s = ⇒ ev : DEC(s)

slide-112
SLIDE 112

Examples

Agreement: A(xA, xB) B(yB, yA) α1 . . . let zA = tA in . . . αk β1 . . . let zB = tB in . . . βℓ

slide-113
SLIDE 113

Examples

Agreement: A(xA, xB) B(yB, yA) α1 . . . let zA = tA in event AS(xA, xB, zA) . . . αk β1 . . . let zB = tB in event BS(yB, yA, zB) . . . βℓ

slide-114
SLIDE 114

Examples

Agreement: A(xA, xB) B(yB, yA) α1 . . . let zA = tA in event AS(xA, xB, zA) . . . αk β1 . . . let zB = tB in event BS(yB, yA, zB) . . . βℓ (!A | !B) | = ev : BS(x1, x2, x3) = ⇒ ev : AS(x2, x1, x3)

slide-115
SLIDE 115

Examples

Integrity: A(xA, yA) B(xB, yB) C(zA, zB) α1 . . . αk β1 . . . βℓ γ1 . . . γn let zC = t in

  • ut(net, zC)
slide-116
SLIDE 116

Examples

Integrity: A(xA, yA) B(xB, yB) C(zA, zB) event ina(xA, yA) α1 . . . αk event inb(xB, yB) β1 . . . βℓ γ1 . . . γn let zC = t in

  • ut(net, zC)

event outc(zA, zB, zC)

slide-117
SLIDE 117

Examples

Integrity: A(xA, yA) B(xB, yB) C(zA, zB) event ina(xA, yA) α1 . . . αk event inb(xB, yB) β1 . . . βℓ γ1 . . . γn let zC = t in

  • ut(net, zC)

event outc(zA, zB, zC) ( !A | !B | !C ) | = ev : outc(x1, x2, x3) = ⇒ ev : ina(x1, y1) ∧ ev : inb(x2, y2) ∧ x3 = y1 + y2

slide-118
SLIDE 118

Examples

Authorisation and Authentication for Needham-Schroeder.

slide-119
SLIDE 119

Case studies and verification

slide-120
SLIDE 120

Formal authentication 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 5. C → S : {inc(Ns)}Kcs Client(C, S) new Nc; out(net, C, S, Nc); in(net, xT); let = Nc, xKcs, xciph = dec(xT, k(C)) in

  • ut(net, xciph); in(net, xS);

let xNs = dec(xS, xKcs) in event GoodResponse(C, S, Nc, xNs, xKcs)

  • ut(net, enc(inc(xNs), xKcs))
slide-121
SLIDE 121

Formal authentication 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 5. C → S : {inc(Ns)}Kcs Third Party in(net, xC, xS, xNc); event Authorised(xC, xS, xNc); new kCS; let yS = enc(kCS, xC, k(xS)) in let yC = enc(xNc, c, yS, k(xC)) in

  • ut(net, yC)
slide-122
SLIDE 122

Formal authentication 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 5. C → S : {inc(Ns)}Kcs Server(S) in(net, xreq); let xKcs, xC = dec(xreq, k(S) in new Ns; event GrantingAccess(xC, S, Ns, xKcs);

  • ut(net, enc(Ns, xKcs));

in(net, xresp); if inc(Ns) = dec(xresp, xKcs) then event AccessGranted(xC, S, Ns, xKcs)

slide-123
SLIDE 123

Formal authentication in Needham-Schroeder

ev : GoodResponse(C, S, xNc, xNs, xKcs) = ⇒ ev : GrantingAccess(C, S, xNs, xKcs) ev : AccessGranted(C, S, xNs, xKcs) = ⇒ ev : Authorised(C, S, xNc)

slide-124
SLIDE 124

Secure multi-party computation

slide-125
SLIDE 125

Privacy-supporting cloud computing

slide-126
SLIDE 126

Resources

Laboratoire Sp´ ecification et V´ erification Security Protocols Open Repository www.lsv.ens-cachan.fr/spore/ Bruno Blanchet ProVerif: Cryptographic protocol verifier in the formal model http://prosecco.gforge.inria.fr/personal/bblanche/proverif/ Hubert Comon-Lundh and St´ ephanie Delaune Formal Security Proofs. Software Safety and Security, 2012 V´ eronique Cortier and Steve Kremer Formal Models and Techniques for Analyzing Security Protocols: A Tutorial. Foundations and Trends in Programming Languages, 2014.

slide-127
SLIDE 127

Research challenges

Protocols Verification procedures Relation to implementations