(a) Describe the concept of zero knowledge proofs. Give a practical example.
(b) Explain how a one way hash function works.
(c) What are message authentication codes?
(d) Describe how the Diffie-Hellman key exchange may be used to establish a session key. Why will a passive observer be unable to establish the session key despite observing all communications?