cpsa-3.3.0: tst/dh_mim.tst
(herald "Diffie-Hellman protocol, man-in-the-middle attack"
(algebra diffie-hellman))
(comment "CPSA 3.2.2")
(comment "All input read from dh_mim.scm")
(defprotocol dh_mim diffie-hellman
(defrole init
(vars (x expn) (h base) (n text))
(trace (send (exp (gen) x)) (recv h) (send (enc n (exp h x))))
(uniq-gen x))
(defrole resp
(vars (y expn) (h base) (n text))
(trace (recv h) (send (exp (gen) y)) (recv (enc n (exp h y))))
(uniq-gen y)
(ind-zero-in (y h)))
(comment "Diffie-hellman key exchange followed by an encryption"))
(defskeleton dh_mim
(vars (n text) (hx hy base) (x y expn))
(defstrand init 3 (n n) (h hy) (x x))
(defstrand resp 3 (n n) (h hx) (y y))
(precedes ((0 2) (1 2)))
(ind-zero-in (y hx))
(pen-non-orig x y)
(uniq-gen x y)
(uniq-orig n)
(comment "Agreement on the encrypted text only")
(traces ((send (exp (gen) x)) (recv hy) (send (enc n (exp hy x))))
((recv hx) (send (exp (gen) y)) (recv (enc n (exp hx y)))))
(label 0)
(unrealized (1 2))
(origs (n (0 2)))
(comment "2 in cohort - 2 not yet seen"))
(defskeleton dh_mim
(vars (n text) (hy base) (y x expn))
(defstrand init 3 (n n) (h (exp hy y)) (x x))
(defstrand resp 3 (n n) (h (exp hy x)) (y y))
(precedes ((0 0) (1 0)) ((0 2) (1 2)) ((1 1) (0 1)))
(ind-zero-in (y (exp hy x)))
(pen-non-orig y x)
(uniq-gen y x)
(uniq-orig n)
(operation encryption-test (displaced 2 0 init 3) (enc n (exp hx y-0))
(1 2))
(traces
((send (exp (gen) x)) (recv (exp hy y))
(send (enc n (exp hy (mul y x)))))
((recv (exp hy x)) (send (exp (gen) y))
(recv (enc n (exp hy (mul y x))))))
(label 1)
(parent 0)
(unrealized (0 1) (1 0))
(origs (n (0 2)))
(comment "1 in cohort - 1 not yet seen"))
(defskeleton dh_mim
(vars (n text) (hx hy base) (x y expn))
(defstrand init 3 (n n) (h hy) (x x))
(defstrand resp 3 (n n) (h hx) (y y))
(deflistener (exp hx y))
(precedes ((0 2) (1 2)) ((1 1) (2 0)) ((2 1) (1 2)))
(ind-zero-in (y hx))
(pen-non-orig x y)
(uniq-gen x y)
(uniq-orig n)
(operation encryption-test (added-listener (exp hx y))
(enc n (exp hx y)) (1 2))
(traces ((send (exp (gen) x)) (recv hy) (send (enc n (exp hy x))))
((recv hx) (send (exp (gen) y)) (recv (enc n (exp hx y))))
((recv (exp hx y)) (send (exp hx y))))
(label 2)
(parent 0)
(unrealized (1 2) (2 0))
(comment "1 in cohort - 1 not yet seen"))
(defskeleton dh_mim
(vars (n text) (y x expn) (x-0 expr))
(defstrand init 3 (n n) (h (exp (gen) (mul y x-0))) (x x))
(defstrand resp 3 (n n) (h (exp (gen) (mul x x-0))) (y y))
(precedes ((0 0) (1 0)) ((0 2) (1 2)) ((1 1) (0 1)))
(ind-zero-in (y (exp (gen) (mul x x-0))))
(pen-non-orig y x)
(uniq-gen y x)
(uniq-orig n)
(operation nonce-test (algebra-contracted (hy (exp (gen) x-0)))
(exp (gen) (mul x x-0)) (1 0) (exp (gen) x))
(traces
((send (exp (gen) x)) (recv (exp (gen) (mul y x-0)))
(send (enc n (exp (gen) (mul y x x-0)))))
((recv (exp (gen) (mul x x-0))) (send (exp (gen) y))
(recv (enc n (exp (gen) (mul y x x-0))))))
(label 3)
(parent 1)
(unrealized)
(shape)
(maps
((0 1)
((n n) (hx (exp (gen) (mul x x-0))) (hy (exp (gen) (mul y x-0)))
(x x) (y y))))
(origs (n (0 2))))
(defskeleton dh_mim
(vars (n text) (hy base) (x y expn) (y-0 expr))
(defstrand init 3 (n n) (h hy) (x x))
(defstrand resp 3 (n n) (h (exp (gen) y-0)) (y y))
(deflistener (exp (gen) (mul y y-0)))
(precedes ((0 2) (1 2)) ((1 1) (2 0)) ((2 1) (1 2)))
(ind-zero-in (y (exp (gen) y-0)))
(pen-non-orig x y)
(uniq-gen x y)
(uniq-orig n)
(operation nonce-test (algebra-contracted (hx (exp (gen) y-0)))
(exp (gen) (mul y y-0)) (2 0) (exp (gen) y))
(traces ((send (exp (gen) x)) (recv hy) (send (enc n (exp hy x))))
((recv (exp (gen) y-0)) (send (exp (gen) y))
(recv (enc n (exp (gen) (mul y y-0)))))
((recv (exp (gen) (mul y y-0))) (send (exp (gen) (mul y y-0)))))
(label 4)
(parent 2)
(unrealized (1 2))
(comment "2 in cohort - 2 not yet seen"))
(defskeleton dh_mim
(vars (n text) (x y expn) (y-0 expr))
(defstrand init 3 (n n) (h (exp (gen) (mul (rec x) y y-0))) (x x))
(defstrand resp 3 (n n) (h (exp (gen) y-0)) (y y))
(deflistener (exp (gen) (mul y y-0)))
(precedes ((0 2) (1 2)) ((1 1) (0 1)) ((1 1) (2 0)) ((2 1) (1 2)))
(ind-zero-in (y (exp (gen) y-0)))
(pen-non-orig x y)
(uniq-gen x y)
(uniq-orig n)
(operation nonce-test
(contracted (hy (exp (gen) (mul (rec x) y y-0)))) n (1 2)
(enc n (exp (gen) (mul y y-0))))
(traces
((send (exp (gen) x)) (recv (exp (gen) (mul (rec x) y y-0)))
(send (enc n (exp (gen) (mul y y-0)))))
((recv (exp (gen) y-0)) (send (exp (gen) y))
(recv (enc n (exp (gen) (mul y y-0)))))
((recv (exp (gen) (mul y y-0))) (send (exp (gen) (mul y y-0)))))
(label 5)
(parent 4)
(unrealized (0 1))
(comment "1 in cohort - 1 not yet seen"))
(defskeleton dh_mim
(vars (n text) (hy base) (x y expn) (y-0 expr))
(defstrand init 3 (n n) (h hy) (x x))
(defstrand resp 3 (n n) (h (exp (gen) y-0)) (y y))
(deflistener (exp (gen) (mul y y-0)))
(deflistener (exp hy x))
(precedes ((0 0) (3 0)) ((0 2) (1 2)) ((1 1) (2 0)) ((2 1) (1 2))
((3 1) (1 2)))
(ind-zero-in (y (exp (gen) y-0)))
(pen-non-orig x y)
(uniq-gen x y)
(uniq-orig n)
(operation nonce-test (added-listener (exp hy x)) n (1 2)
(enc n (exp hy x)))
(traces ((send (exp (gen) x)) (recv hy) (send (enc n (exp hy x))))
((recv (exp (gen) y-0)) (send (exp (gen) y))
(recv (enc n (exp (gen) (mul y y-0)))))
((recv (exp (gen) (mul y y-0))) (send (exp (gen) (mul y y-0))))
((recv (exp hy x)) (send (exp hy x))))
(label 6)
(parent 4)
(unrealized (3 0))
(comment "1 in cohort - 1 not yet seen"))
(defskeleton dh_mim
(vars (n text) (y x expn) (y-0 expr))
(defstrand init 3 (n n) (h (exp (gen) (mul y y-0))) (x x))
(defstrand resp 3 (n n) (h (exp (gen) (mul x y-0))) (y y))
(deflistener (exp (gen) (mul y x y-0)))
(precedes ((0 0) (1 0)) ((0 2) (1 2)) ((1 1) (0 1)) ((1 1) (2 0))
((2 1) (1 2)))
(ind-zero-in (y (exp (gen) (mul x y-0))))
(pen-non-orig y x)
(uniq-gen y x)
(uniq-orig n)
(operation nonce-test
(algebra-contracted (x-0 x) (y-1 (mul x y-0)) (y-2 y-0))
(exp (gen) (mul y y-0)) (0 1))
(traces
((send (exp (gen) x)) (recv (exp (gen) (mul y y-0)))
(send (enc n (exp (gen) (mul y x y-0)))))
((recv (exp (gen) (mul x y-0))) (send (exp (gen) y))
(recv (enc n (exp (gen) (mul y x y-0)))))
((recv (exp (gen) (mul y x y-0))) (send (exp (gen) (mul y x y-0)))))
(label 7)
(parent 5)
(unrealized (2 0))
(comment "1 in cohort - 1 not yet seen"))
(defskeleton dh_mim
(vars (n text) (x y expn) (y-0 x-0 expr))
(defstrand init 3 (n n) (h (exp (gen) x-0)) (x x))
(defstrand resp 3 (n n) (h (exp (gen) y-0)) (y y))
(deflistener (exp (gen) (mul y y-0)))
(deflistener (exp (gen) (mul x x-0)))
(precedes ((0 0) (3 0)) ((0 2) (1 2)) ((1 1) (2 0)) ((2 1) (1 2))
((3 1) (1 2)))
(ind-zero-in (y (exp (gen) y-0)))
(pen-non-orig x y)
(uniq-gen x y)
(uniq-orig n)
(operation nonce-test (algebra-contracted (hy (exp (gen) x-0)))
(exp (gen) (mul x x-0)) (3 0) (exp (gen) x))
(traces
((send (exp (gen) x)) (recv (exp (gen) x-0))
(send (enc n (exp (gen) (mul x x-0)))))
((recv (exp (gen) y-0)) (send (exp (gen) y))
(recv (enc n (exp (gen) (mul y y-0)))))
((recv (exp (gen) (mul y y-0))) (send (exp (gen) (mul y y-0))))
((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0)))))
(label 8)
(parent 6)
(unrealized)
(comment "1 in cohort - 1 not yet seen"))
(defskeleton dh_mim
(vars (n text) (y x expn) (y-0 expr))
(defstrand init 3 (n n) (h (exp (gen) (mul y (rec x) y-0))) (x x))
(defstrand resp 3 (n n) (h (exp (gen) y-0)) (y y))
(deflistener (exp (gen) (mul y y-0)))
(precedes ((0 0) (1 0)) ((0 2) (1 2)) ((1 1) (0 1)) ((1 1) (2 0))
((2 1) (1 2)))
(ind-zero-in (y (exp (gen) y-0)))
(pen-non-orig y x)
(uniq-gen y x)
(uniq-orig n)
(operation nonce-test
(algebra-contracted (x-0 x) (y-1 (mul (rec x) y-0)) (y-2 y-0))
(exp (gen) (mul y y-0)) (2 0))
(traces
((send (exp (gen) x)) (recv (exp (gen) (mul y (rec x) y-0)))
(send (enc n (exp (gen) (mul y y-0)))))
((recv (exp (gen) y-0)) (send (exp (gen) y))
(recv (enc n (exp (gen) (mul y y-0)))))
((recv (exp (gen) (mul y y-0))) (send (exp (gen) (mul y y-0)))))
(label 9)
(parent 7)
(seen 7)
(unrealized (0 1))
(comment "1 in cohort - 0 not yet seen"))
(defskeleton dh_mim
(vars (n text) (x y expn) (y-0 x-0 expr))
(defstrand init 3 (n n) (h (exp (gen) x-0)) (x x))
(defstrand resp 3 (n n) (h (exp (gen) y-0)) (y y))
(deflistener (exp (gen) (mul x x-0)))
(precedes ((0 0) (2 0)) ((0 2) (1 2)) ((2 1) (1 2)))
(ind-zero-in (y (exp (gen) y-0)))
(pen-non-orig x y)
(uniq-gen x y)
(uniq-orig n)
(operation generalization deleted (2 0))
(traces
((send (exp (gen) x)) (recv (exp (gen) x-0))
(send (enc n (exp (gen) (mul x x-0)))))
((recv (exp (gen) y-0)) (send (exp (gen) y))
(recv (enc n (exp (gen) (mul y y-0)))))
((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0)))))
(label 10)
(parent 8)
(unrealized)
(comment "1 in cohort - 1 not yet seen"))
(defskeleton dh_mim
(vars (n text) (x y expn) (y-0 x-0 expr))
(defstrand init 3 (n n) (h (exp (gen) x-0)) (x x))
(defstrand resp 3 (n n) (h (exp (gen) y-0)) (y y))
(precedes ((0 2) (1 2)))
(ind-zero-in (y (exp (gen) y-0)))
(pen-non-orig x y)
(uniq-gen x y)
(uniq-orig n)
(operation generalization deleted (2 0))
(traces
((send (exp (gen) x)) (recv (exp (gen) x-0))
(send (enc n (exp (gen) (mul x x-0)))))
((recv (exp (gen) y-0)) (send (exp (gen) y))
(recv (enc n (exp (gen) (mul y y-0))))))
(label 11)
(parent 10)
(unrealized)
(shape)
(maps
((0 1)
((n n) (hx (exp (gen) y-0)) (hy (exp (gen) x-0)) (x x) (y y))))
(origs (n (0 2))))
(comment "Nothing left to do")