Patent ID: 8782420

Claim:
A computer-implemented method for determining whether a first computing device has the correct version of a software program, the method comprising: computing a private secret value based on at least one initial setup value; computing a public value based on the private secret value and at least one initial setup value, wherein the at least one initial setup value comprises a base generator value or a prime element value, wherein a binary representation of the base generator value is comprised of more bits than a first threshold number and has less than a second threshold number of 1 bits; sending the public value to the second computing device; receiving a second public value from the second computing device; computing a shared secret based on the second public value received from the second computing device and the private secret value; receiving an encrypted message from the second computing device, wherein the encrypted message comprises an original message encrypted based on a shared secret computed by the second computing device; decrypting the encrypted message using the shared secret; determining whether the message was decrypted correctly; and if the message was decrypted correctly, causing communications between the first computing device and the second computing device to continue because the first computing device and the second computing device have the same version of the software program, wherein the message is decrypted correctly if (i) the decrypted message matches the original message and (ii) the shared secret computed based on the second public value received from the second computing device is equal to the shared secret computed by the second computing device; or if the message was not decrypted correctly, causing communications between the first computing device and the second computing device to terminate because the first computing device and the second computing device do not have the same version of the software program.