------------------------------------------------------------------------------ Mohamed G. Gouda Network Protocol Security CS 395T MT2 Solution ------------------------------------------------------------------------------ 1. This protocol is based on dr=0 and dl < k. process p const k : integer, dl : integer var sk : integer, x : integer s : 0 .. k-1, m : integer begin true -> x := any; m := MD.(x|s|sk); send data(x,s,m) to q; s := s+1 mod k; if s=0 -> sk := MD.(sk) [] s!=0 -> skip fi end process q const k : integer, /k.q=k.p dl : integer /dl.q=dl.p < k.p var sk, tk : integer, /init. sk.q=sk.p x : integer, exp, s : 0 .. k-1, /init. exp.q=s.p=0 m : integer begin rcv data(x,s,m) from p -> if exp>s -> tk := MD.(sk) [] exp<=s -> tk := sk fi; if m!= MD.(x|s|tk) -> skip /not fresh [] m = MD.(x|s|tk) -> /fresh sk := tk; exp := s+1 mod k; if exp=0 -> sk := MD.(sk) [] exp!=0 -> skip fi fi end ------------------------------------------------------------------------------- 2. C -> ac : C1, S ac -> C : I.C1> C -> S : I.S, C2, m C <- S : sk, n C -> S : sk -------------------------------------------------------------------------------