packages feed

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