packages feed

cpsa-4.4.1: tst/dh_group_sig.scm

(herald "Signed group DH exchange (improved version)" (algebra diffie-hellman)
	(limit 100)
	;(limit 20000) (bound 25)
	)

;;; This is not a very convincing protocol in my mind.  -- JDG

(defprotocol dh_sig diffie-hellman
  (defrole group-init
    (vars (alpha rndx) (group text) (group-dist chan))
    (trace
     (send group-dist (cat "Group id" group (exp (gen) alpha))))
    (uniq-gen alpha)
    (conf group-dist))
  (defrole init
    (vars (x rndx) (y expt) (g base) (group text) (a b name) (group-dist chan))
    (trace
     (recv group-dist (cat "Group id" group g))
     (send (enc (exp g x) (privk a)))
     (recv (enc a  (exp g y) (exp g x) (privk b)))
     (send (enc "final" b (exp g y) (exp g x) (privk a))))
    (uniq-gen x)
    (auth group-dist))
  (defrole resp
    (vars (y rndx) (x expt) (g base) (group text) (a b name) (group-dist chan))
    (trace
     (recv group-dist (cat "Group id" group g))
     (recv (enc (exp g x) (privk a)))
     (send (enc a (exp g y) (exp g x) (privk b)))
     (recv (enc "final" b (exp g y) (exp g x) (privk a))))
    (uniq-gen y)
    (auth group-dist))
)

(defskeleton dh_sig
  (vars (a b name))
  (defstrand init 4 (a a) (b b))
  (non-orig (privk b) (privk a))
)

(defskeleton dh_sig
  (vars (a b name))
  (defstrand resp 4 (a a) (b b))
  (non-orig (privk a) (privk b))
)

(defprotocol dh_sig2 diffie-hellman
  (defrole group-init
    (vars (alpha rndx) (group text) (group-dist chan))
    (trace
     (send group-dist (cat "Group id" group (exp (gen) alpha))))
    (uniq-gen alpha)
    (conf group-dist))
  (defrole init
    (vars (x rndx) (y expt) (g base) (n group text) (a b name) (group-dist chan))
    (trace
     (recv group-dist (cat "Group id" group g))
     (send (enc (exp g x) (privk a)))
     (recv (enc a (exp g y) (exp g x) (privk b)))
     (send (enc n b (exp g (mul x y))))
     (recv n))
    (uniq-gen x n)
    (auth group-dist))
  (defrole resp
    (vars (y rndx) (x expt) (g base) (n group text) (a b name) (group-dist chan))
    (trace
     (recv group-dist (cat "Group id" group g))
     (recv (enc (exp g x) (privk a)))
     (send (enc a (exp g y) (exp g x) (privk b)))
     (recv (enc n b (exp g (mul x y))))
     (send n))
    (uniq-gen y)
    (auth group-dist))
)

(defskeleton dh_sig2
  (vars (a b name))
  (defstrand init 5 (a a) (b b))
  (non-orig (privk b) (privk a))
)

(defskeleton dh_sig2
  (vars (a b name))
  (defstrand resp 5 (a a) (b b))
  (non-orig (privk a) (privk b))
)