packages feed

cpsa-3.6.8: tst/iadh_umx.scm

(herald "IADH: unified model (UM), criss-cross variant" (bound 20) (limit 2000) (algebra diffie-hellman))

(defprotocol iadh-umx diffie-hellman
  (defrole participant1
    (vars (l e rndx) (lp ep expt) (self peer name) (key n data))
    (trace
     (recv (enc "cert" (exp (gen) l) self (privk self)))
     (recv (enc "cert" (exp (gen) lp) peer (privk peer)))
     (send (exp (gen) e))
     (recv (exp (gen) ep))
     (send key))
    (fn-of (foo ((hash (exp (gen) (mul lp e)) (exp (gen) (mul l ep))) key)))
    (uniq-gen e)
    (neq (ep (one))))
  (defrole participant2
    (vars (l e rndx) (lp ep expt) (self peer name) (key n data))
    (trace
     (recv (enc "cert" (exp (gen) l) self (privk self)))
     (recv (enc "cert" (exp (gen) lp) peer (privk peer)))
     (send (exp (gen) e))
     (recv (exp (gen) ep))
     (send key))
    (fn-of (foo ((hash (exp (gen) (mul l ep)) (exp (gen) (mul lp e))) key)))
    (uniq-gen e)
    (neq (ep (one))))
  (defrole ltx-gen
    (vars (self name) (l rndx))
    (trace
     (send (enc "cert" (exp (gen) l) self (privk self)))
     (send l))
    (uniq-gen l)
    (fn-of ("principal-of" (l self))))
  )

;; Implicit authentication: participants will agree on the resulting key
;; foo(key).  Therefore they should agree on the names A and B.
 (defskeleton iadh-umx
  (vars (key data) (eA lA eB lB rndx) (A B C D name))
  (defstrand participant1 5 (key key) (e eA) (l lA) (self A) (peer C))
  (defstrand participant2 5 (key key) (e eB) (l lB) (self B) (peer D))
  (non-orig lA lB)
  (neq (eA eB))
  (non-orig (privk C) (privk D) (privk A) (privk B))
)

 ;; Security:
(defskeleton iadh-umx
  (vars (e1 e2 l rndx) (lp expt) (A B name))
  (defstrand participant1 5 (e e1) (l l) (ep e2) (lp lp) (self A) (peer B))
  (defstrand participant2 3 (e e2))
  (deflistener (hash (exp (gen) (mul lp e2)) (exp (gen) (mul e1 l))))
  (non-orig (privk A) (privk B))
)