Formalizing and Analyzing the Needham-Schroeder Symmetric-Key Protocol by Rewriting
Monica Nesi Giuseppina Rucci Dipartimento di Informatica Università di L' Aquila (Italy)
ARSPA’05 – p.1
Formalizing and Analyzing the Needham-Schroeder Symmetric-Key - - PowerPoint PPT Presentation
Formalizing and Analyzing the Needham-Schroeder Symmetric-Key Protocol by Rewriting Monica Nesi Giuseppina Rucci Dipartimento di Informatica Universit di L' Aquila (Italy) ARSPA05 p.1 Protocol Verification Aim: formally prove
Monica Nesi Giuseppina Rucci Dipartimento di Informatica Università di L' Aquila (Italy)
ARSPA’05 – p.1
ARSPA’05 – p.2
ARSPA’05 – p.3
ARSPA’05 – p.4
ARSPA’05 – p.5
ARSPA’05 – p.6
ARSPA’05 – p.7
ARSPA’05 – p.8
ARSPA’05 – p.9
ARSPA’05 – p.10
ARSPA’05 – p.11
ARSPA’05 – p.12
ARSPA’05 – p.13
ARSPA’05 – p.14
AB, created in session (i), has been
AB, A}KBS
AB
AB
ARSPA’05 – p.15
ARSPA’05 – p.16
goal(agt(a), agt(b), r(j)) (1) → mesg(agt(a), serv(S), cons(N(agt(a), serv(S), r(j)), cons(agt(a), agt(b))), r(j)) mesg(a2, a3, cons(N(agt(a), serv(S), r(j)), cons(agt(a), agt(b))), r(j)) (2) → mesg(serv(S), agt(a), encr(ltk(agt(a), serv(S)), serv(S), cons(N(agt(a), serv(S), r(j)), cons(agt(b), cons(sk(agt(a), agt(b), r(j)), encr(ltk(agt(b), serv(S)), serv(S), cons(sk(agt(a), agt(b), r(j)), agt(a))))))), r(j))
ARSPA’05 – p.17
mesg(a4, a5, (3) encr(ltk(agt(a), serv(S)), a3, cons(N(agt(a), serv(S), r(j)), cons(agt(b), cons(sk(agt(a), agt(b), r(i1)), encr(ltk(agt(b), serv(S)), a1, cons(sk(agt(a), agt(b), r(i2)), agt(a))))))), r(j)) → mesg(agt(a), agt(b), encr(ltk(agt(b), serv(S)), a1, cons(sk(agt(a), agt(b), r(i2)), agt(a))), r(j))
ARSPA’05 – p.18
mesg(a6, a7, (4) encr(ltk(agt(b), serv(S)), a5, cons(sk(agt(a), agt(b), r(i)), agt(a))), r(j)) → mesg(a7, a6, encr(sk(agt(a), agt(b), r(i)), a7, N(agt(b), agt(a), r(j))), r(j)) mesg(a8, a6, (5) encr(sk(agt(a), agt(b), r(i)), a7, N(agt(b), agt(a), r(j))), r(j)) → mesg(a6, a8, encr(sk(agt(a), agt(b), r(i)), a6, N(agt(b), agt(a), r(j))), r(j))
ARSPA’05 – p.19
mesg(a8, a6, (6) encr(sk(agt(a), agt(b), r(i)), a7, N(agt(b), agt(a), r(j))), r(j)) → cinit(agt(a), agt(b), a7, r(j)) mesg(a10, a6, (7) encr(sk(agt(a), agt(b), r(i)), a9, N(agt(b), agt(a), r(j))), r(j)) → cresp(agt(b), agt(a), a9, r(j))
ARSPA’05 – p.20
cons(x, y) → x (8) cons(x, y) → y (9) encr(sk(agt(0), agt(x), w), y, z) → z (10) encr(sk(agt(x), agt(0), w), y, z) → z (11) encr(sk(agt(s(x1)), agt(x), w), y, z) → z (12) encr(sk(agt(x), agt(s(x1)), w), y, z) → z (13) encr(ltk(agt(0), serv(S)), y, z) → z (14) encr(ltk(agt(s(x1)), serv(S)), y, z) → z (15) mesg(x, y, z, w) → z (16)
ARSPA’05 – p.21
ARSPA’05 – p.22
ARSPA’05 – p.23
ARSPA’05 – p.24
ARSPA’05 – p.25
ARSPA’05 – p.26
ARSPA’05 – p.27
ARSPA’05 – p.28
ARSPA’05 – p.29
ARSPA’05 – p.30
ARSPA’05 – p.31
ARSPA’05 – p.32
ARSPA’05 – p.33
t
∗
→∆ q q ∈ {qf,qagtI} t ⊢A q t1 ⊢A qf t2 ⊢A qf cons(t1,t2) ⊢A qf t1 ⊢A qf t2 ⊢A qf t3 ⊢A qf t4 ⊢A qf mesg(t1,t2,t3,t4) ⊢A qf t1 ⊢A qagtI t2 ⊢A qf t3 ⊢A qf N(t1,t2,t3) ⊢A qf t1 ⊢A qf t2 ⊢A qagtI t3 ⊢A qf encr(t1,t2,t3) ⊢A qf t1 ⊢A qagtI t2 ⊢A qf t3 ⊢A qf sk(t1,t2,t3) ⊢A qf
ARSPA’05 – p.34
ARSPA’05 – p.35
ARSPA’05 – p.36
ARSPA’05 – p.37
Well-formed Expansion:t ∈ E
Failure: E = ∅
Success1:t ∈ E
ARSPA’05 – p.38
Cut:
Success2:
ARSPA’05 – p.39
Split:
ARSPA’05 – p.40
ARSPA’05 – p.41
ARSPA’05 – p.42
tin = cresp(agt(B), agt(A), agt(0), r(s(0))) ∈ L(Aa)
{cresp(agt(B), agt(A), agt(0), r(s(0)))} ⊢ {mesg(a10, a6, encr(sk(agt(A), agt(B), r(i)), agt(0), N(agt(B), agt(A), r(s(0)))), r(s(0)))} ⊢ {mesg(a6, agt(0), encr(sk(agt(A), agt(B), r(i)), a7, N(agt(B), agt(A), r(s(0)))), r(s(0)))} ⊢ {mesg(agt(0), a6, encr(ltk(agt(B), serv(S)), a5, cons(sk(agt(A), agt(B), r(i)), agt(A))), r(s(0)))}
ARSPA’05 – p.43
{cresp(agt(B), agt(A), agt(0), r(s(0)))} ⊢ {mesg(agt(0), a6, encr(ltk(agt(B), serv(S)), a5, cons(sk(agt(A), agt(B), r(i)), agt(A))), r(s(0)))}
t = encr(ltk(agt(B), serv(S)), serv(S), cons(sk(agt(A), agt(B), r(0)), agt(A)))
ARSPA’05 – p.44
t = encr(ltk(agt(B), serv(S)), serv(S), cons(sk(agt(A), agt(B), r(0)), agt(A)))
t ⊢ mesg(x, y, t, w) ⊢ mesg(a4, a5, encr(ltk(agt(A), serv(S)), a3, cons(N(agt(A), serv(S), r(j)), cons(agt(B), cons(sk(agt(A), agt(B), r(i1)), encr(ltk(agt(B), serv(S)), serv(S), cons(sk(agt(A), agt(B), r(0)), agt(A))))))), r(j))
ARSPA’05 – p.45
⊢ mesg(a2, serv(S), cons(N(agt(A), serv(S), r(0)), cons(agt(A), agt(B))), r(0)) ⊢ goal(agt(A), agt(B), r(0)) ⊢ success
ARSPA’05 – p.46
ARSPA’05 – p.47
ARSPA’05 – p.48
ARSPA’05 – p.49