Public key cryptography - Diffie-Hellman Key Exchange (full version)