cpsa-3.3.0: tst/mtic.tst
(herald "MTI C(0) protocol" (algebra diffie-hellman))
(comment "CPSA 3.2.2")
(comment "All input read from mtic.scm")
(defprotocol mtic diffie-hellman
(defrole init
(vars (a b name) (h2 h3 base) (x expn))
(trace (send (enc (exp (gen) x) a (pubk b)))
(recv (enc h2 (exp h2 x) h3 b (pubk a)))
(send (enc (exp h3 x) (pubk b))))
(uniq-gen x)
(comment "X should be assumed to be freshly chosen per role"))
(defrole resp
(vars (b a name) (h1 base) (y z expn))
(trace (recv (enc h1 a (pubk b)))
(send (enc (exp (gen) y) (exp h1 y) (exp (gen) z) b (pubk a)))
(recv (enc (exp h1 z) (pubk b))))
(uniq-gen y z)
(ind-zero-in (y h1) (z h1))
(comment "Y and Z should be assumed to be freshly chosen per role"))
(comment
"Needham-Schroeder-Lowe DH challenge/responses in place of nonces"))
(defskeleton mtic
(vars (a b name) (h2 h3 base) (x expn))
(defstrand init 3 (a a) (b b) (h2 h2) (h3 h3) (x x))
(non-orig (privk a) (privk b))
(uniq-gen x)
(comment "Initiator point-of-view")
(traces
((send (enc (exp (gen) x) a (pubk b)))
(recv (enc h2 (exp h2 x) h3 b (pubk a)))
(send (enc (exp h3 x) (pubk b)))))
(label 0)
(unrealized (0 1))
(origs)
(comment "1 in cohort - 1 not yet seen"))
(defskeleton mtic
(vars (a b name) (h3 base) (x expr) (x-0 expn))
(defstrand init 3 (a a) (b b) (h2 (exp (gen) (rec x))) (h3 h3)
(x x-0))
(non-orig (privk a) (privk b))
(uniq-gen x-0)
(operation nonce-test (displaced 1 0 init 1)
(exp (gen) (mul (rec x) x-1)) (0 1)
(enc (exp (gen) x-1) a (pubk b)))
(traces
((send (enc (exp (gen) x-0) a (pubk b)))
(recv
(enc (exp (gen) (rec x)) (exp (gen) (mul (rec x) x-0)) h3 b
(pubk a))) (send (enc (exp h3 x-0) (pubk b)))))
(label 1)
(parent 0)
(seen 1)
(unrealized (0 1))
(origs)
(comment "1 in cohort - 0 not yet seen"))
(comment "Nothing left to do")
(defprotocol mtic diffie-hellman
(defrole init
(vars (a b name) (h2 h3 base) (x expn))
(trace (send (enc (exp (gen) x) a (pubk b)))
(recv (enc h2 (exp h2 x) h3 b (pubk a)))
(send (enc (exp h3 x) (pubk b))))
(uniq-gen x)
(comment "X should be assumed to be freshly chosen per role"))
(defrole resp
(vars (b a name) (h1 base) (y z expn))
(trace (recv (enc h1 a (pubk b)))
(send (enc (exp (gen) y) (exp h1 y) (exp (gen) z) b (pubk a)))
(recv (enc (exp h1 z) (pubk b))))
(uniq-gen y z)
(ind-zero-in (y h1) (z h1))
(comment "Y and Z should be assumed to be freshly chosen per role"))
(comment
"Needham-Schroeder-Lowe DH challenge/responses in place of nonces"))
(defskeleton mtic
(vars (a b name) (h1 base) (y z expn))
(defstrand resp 3 (b b) (a a) (h1 h1) (y y) (z z))
(ind-zero-in (y h1) (z h1))
(non-orig (privk a))
(uniq-gen y z)
(comment "Responder point-of-view")
(traces
((recv (enc h1 a (pubk b)))
(send (enc (exp (gen) y) (exp h1 y) (exp (gen) z) b (pubk a)))
(recv (enc (exp h1 z) (pubk b)))))
(label 2)
(unrealized (0 2))
(origs)
(comment "1 in cohort - 1 not yet seen"))
(defskeleton mtic
(vars (a b name) (z y x expn))
(defstrand resp 3 (b b) (a a) (h1 (exp (gen) x)) (y y) (z z))
(defstrand init 3 (a a) (b b) (h2 (exp (gen) y)) (h3 (exp (gen) z))
(x x))
(precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))
(ind-zero-in (y (exp (gen) x)) (z (exp (gen) x)))
(non-orig (privk a))
(uniq-gen z y x)
(operation nonce-test (added-strand init 3) (exp (gen) (mul z x))
(0 2)
(enc (exp (gen) y) (exp (gen) (mul y x)) (exp (gen) z) b (pubk a)))
(traces
((recv (enc (exp (gen) x) a (pubk b)))
(send
(enc (exp (gen) y) (exp (gen) (mul y x)) (exp (gen) z) b
(pubk a))) (recv (enc (exp (gen) (mul z x)) (pubk b))))
((send (enc (exp (gen) x) a (pubk b)))
(recv
(enc (exp (gen) y) (exp (gen) (mul y x)) (exp (gen) z) b
(pubk a))) (send (enc (exp (gen) (mul z x)) (pubk b)))))
(label 3)
(parent 2)
(unrealized)
(shape)
(maps ((0) ((a a) (b b) (h1 (exp (gen) x)) (y y) (z z))))
(origs))
(comment "Nothing left to do")