Key exchange algorithm that allows two devices to establish a shared secret over an unsecure network.