Patent ID: 7505585

Claim:
A method of generating a cryptographic key in a computing device between a first user and a second user, comprising the steps of: a) selecting, between the first user and the second user, an elliptic curve; b) selecting, between the first user and the second user, a point P on the elliptic curve; c) selecting, by the first user, integers r a and w a ; d) selecting, by the second user, integers r b and w b ; e) generating, by the first user, points R a =r a P and W a =w a P; f) generating, by the second user, points R b =r b P and W b =w b P; g) transmitting R a and W a from the first user to the second user; h) transmitting R b and W b from the second user to the first user; i) generating, by the first user, c a , where c a is a user-definable function of w a , r a , W b , and R b ; j) generating, by the second user, c b , where c b is a user-definable function of w b , r b , W a , and R a , and where the user-definable functions of step (i) and step (j) are equivalent after accounting for differing subscripts; k) generating, by the first user, g a , where g a is a user-definable function of w a , r a , W b , and R b ; l) generating, by the second user, g b , where g b is a user-definable function of w b , r b , W a , and R a , and where the user-definable functions of step (k) and step (l) are equivalent after accounting for differing subscripts; m) generating, by the first user, a binary expansion of c a and a binary expansion of g a , where the binary expansions have its number of nonzero columns minimized; n) generating, by the second user, a binary expansion of c b and a binary expansion of g b , where the binary expansions have its number of nonzero columns minimized; o) generating, by the first user, a point K by computing c a W b +g a R a via twin multiplication using a double-add-subtract method with the binary expansions of c a and g a generated in step (m); p) generating, by the second user, the point K by computing c b W a +g b R a via twin multiplication using the double-add-subtract method with the binary expansions of c b and g b generated in step (n); q) deriving the cryptographic key from the point K by the first user and the second user in a same user-definable manner; and r) encrypting a user-definable message with a user-definable encryption method using the cryptographic key as an encryption key.