scyther-proof-0.10.0.0: data/examples/classic/BrandsChaum_iterated.spthy
theory BrandsChaum_iterated
begin
text{*
The same model of the Brands Chaum distance bounding protocol as in BrandsChaum.spthy
except that now two challenges are exchanged.
*}
protocol BrandsChaum
{
1. P -> : P, {m1, m2}k
-> V : P, c
21. P <- V : a1
31. P -> : h(a1, m1)
-> V : b1
22. P <- V : a2
32. P -> : h(a2, m2)
-> V : b2
4. P -> : m1, m2, m3, k, {a1, h(a1, m1), a2, h(a2, m2)}sk(P)
-> V : m1, m2, m3, k, {a1, b1, a2, b2}sk(P)
5. V : c -> {m1, m2}k
61. V : b1 -> h(a1, m1)
62. V : b2 -> h(a2, m2)
}
property (of BrandsChaum) prover_recent:
premises
"role(0) = V"
"step(0, V_62)"
"uncompromised(P#0)"
injectively imply a thread 1 such that
"role(1) = P &
P#0 = P#1 &
m1#0 = m1#1 & m2#0 = m2#1 &
k#0 = k#1 &
a1#0 = a1#1 & a2#0 = a2#1 &
St(1, P_1) <
St(0, V_21) < St(1, P_31) < St(0, V_31) <
St(0, V_22) < St(1, P_32) < St(0, V_32)
"
end