Patent ID: 7136484

Claim:
A method by which a first device and a second device compute a cryptographic key that is used to encrypt and decrypt messages exchanged between the first device and the second device, said method comprising the steps of: the first device generates a private key q comprising at least one secret integer; the first device computes a public key u as a function of g, h, and q, where g is an element of a monoid (G,*), (Y,Z) is a commuting pair of subsets of G, and h is an endomorphism or an antiendomorphism on G; the first device sends u to the second device; the second device generates a private key w comprising at least one secret integer; the second device computes a public key v as a function of g, h, and w; the second device sends v to the first device; the first device computes K A as a function of v and q; and the second device computes K B as a function of u and w, whereby K A =K B as a result of a commuting property associated with the commuting pair, and K A =K B is used as a cryptographic key to encrypt and decrypt messages exchanged between the first device and the second device, wherein: q is a secret triple (c, y, n) comprising integers c and n, and an element y in Y; w is a secret triple (d, z, s) comprising integers d and s, and an element z in Z; u=h c (y*g n *y −1 ); v=h d (z*g s *z −1 ); K A =y*h c (v n )*y −1 ; and K B =z*h d (u s )*z −1 .