Patent ID: 8707042

Claim:
A method comprising: sharing a set of polynomials by a first computing system with a second computing system over an insecure communication channel, wherein the set of polynomials comprises 1) a prime integer that defines a size of a finite field, wherein the prime integer has a value that is one greater than two raised to a power of at least eight, 2) an irreducible polynomial that is not a primitive polynomial and 3) a generator polynomial, the generator polynomial comprising a polynomial degree less than a polynomial degree of the irreducible polynomial, the set of polynomials being over the finite field, wherein the finite field comprises a number of elements based on the prime integer that is compatible with double precision integer arithmetic; operating on the set of polynomials to create a first resultant polynomial, by the first computing system, by raising the generator polynomial to a power of a first random exponent, modulo the irreducible polynomial that is not a primitive polynomial, and sending the first resultant polynomial to the second computing system; receiving a second resultant polynomial from the second computing system, the second computing system having operated on the set of polynomials to create the second resultant polynomial by raising the generator polynomial to a power of a second random exponent, modulo the irreducible polynomial; computing a first shared cipher key, by the first computing system, by raising the second resultant polynomial to the power of the first random exponent, modulo the irreducible polynomial, wherein the second computing system is to compute a second shared cipher key by raising the first resultant polynomial to the power of the second random exponent, modulo the irreducible polynomial, wherein the second shared cipher key is the same as the first shared cipher key.