Patent ID: 7545932

Claim:
A method of calculating a session key shared by a first and a second device, the first device having knowledge of an identity corresponding to itself and an identity corresponding to the second device, and an agreed key common to both devices, the second device having knowledge of an identity corresponding to itself and an identity corresponding to the first device, and an agreed key common to both devices, the method comprising the steps of: at the first device: choosing a first ephemeral private key; calculating a first ephemeral public key; sending the first ephemeral public key to the second device; at the second device: receiving the first ephemeral public key; choosing a second ephemeral private key; calculating a second ephemeral public key; calculating an ephemeral shared key from the first ephemeral public key and the second ephemeral private key; calculating a first value from the second ephemeral public key, the ephemeral shared key, the agreed key, and the identity corresponding to itself; sending the second ephemeral public key and the first value to the first device; at the first device: receiving the second ephemeral public key and the first value from the second device; calculating the ephemeral shared key from the second ephemeral public key and the first ephemeral private key; verifying the first value; calculating a second value from the first ephemeral public key, the ephemeral shared key, the agreed key, and the identity corresponding to itself; sending the second value to the second device; calculating a session key as a function of the ephemeral shared key; and at the second device: receiving the second value; verifying the second value; and calculating the session key as a function of the ephemeral shared key.