cpsa-3.6.8: tst/reflect_dh.scm
(herald reflect
(algebra diffie-hellman))
;; A simple protocol vulnerable to a reflection attack
(defprotocol reflect diffie-hellman
(defrole init
(vars (a b akey))
(trace
(send (enc b (invk a)))
(recv (enc a (invk b)))))
(defrole resp
(vars (a b akey))
(trace
(recv (enc b (invk a)))
(send (enc a (invk b))))))
;; Expect two shapes
(defskeleton reflect
(vars (a b akey))
(defstrand resp 2 (a a) (b b))
(non-orig (invk a) (invk b)))
(defskeleton reflect
(vars (a b akey))
(defstrand init 2 (a a) (b b))
(non-orig (invk a) (invk b)))