------------------------------------------------------------------------------ Mohamed G. Gouda Network Protocol Security CS 395T Midterm 1 (1.5 hours) ------------------------------------------------------------------------------ 1. [8 points] The following protocol can be used for securely transmitting data messages from a process p to a process q overcoming eavesdropping, message forging, message replay, and message loss. The correctness of this protocol is based on the assumption that the protocol starts executing at a state where nc.p=nc.q and ready.p=true. Modify process p in this protocol to ensure that the protocol performs correctly starting from any state. process p const T : integer, /round-trip delay between p and q r : integer, /max. value for the shared key sk : 0..r-1, /shared key between p and q var t : integer, /text of current data msg nc : integer, /nonce of current data msg, init. nc.p=nc.q nc' : integer, /nonce of next data msg c : integer, /received ack ready : boolean /initially true begin ready --> ready := false; t := any; nc' := NNC; send data(NCR(sk, t|nc|nc')) to q [] rcv ack(c) from q --> if nc' = c --> ready := true; nc := nc' [] nc' <> c --> skip fi [] timeout ~ready ^ T time units have passed since first action is executed last --> send data(NCR(sk, t|nc|nc')) to q end process q const r : integer, /max. value for the shared key sk : 0..r-1 /shared key between p and q var t : integer, /text of received data msg nc : integer, /nonce of next data msg, init. nc.p=nc.q h : integer, /received data c,c' : integer /received nonces begin rcv data(h) from p --> (t, c, c') := DCR(sk, h); if nc = c --> /deliver t nc := c'; send ack(nc) to q [] nc <> c --> send ack(nc) to q fi end ------------------------------------------------------------------------------- 2. [7 points] Describe an algorithm for optimal dispersing of a chain set under the assumption that each certificate occurs in at most 3 chains in the set. ------------------------------------------------------------------------------