1. A method of providing secure communications between a local device and a remote device comprising: the local device receiving a nonce from a third party wherein the nonce from the third party is derived from a private key of the local device and a private key of the remote device; the local device receiving an encrypted key from the third party, wherein the encrypted key from the third party is derived from the private key of the remote device; generating a session key using the nonce, the encrypted key from the third party, and an embedded secret of the local device and using the generated session key to symmetrically encrypt and decrypt communications between the local device and the remote device.