A system and method for generating a secret key to facilitate secure
communications between users. A first and second and a function between
the two monoids are selected, the function being a monoid homomorphism. A
group and a group action of the group on the first monoid is selected.
Each user is assigned a submonoid of the first monoid so that these
submonoids satisfy a special symmetry property determined by the
function, a structure of the first and second monoids, and the action of
the group. A multiplication of an element in the second monoid and an
element in the first monoid is obtained by combining the group action and
the monoid homomorphism. First and second users choose private keys which
are sequences of elements in their respective submonoids. A first result
is obtained by multiplying an identity element by the first element of
the sequence in a respective submonoid. Starting with the first result,
each element of the user's private key may be iteratively multiplied by
the previous result to produce a public key. Public keys are exchanged
between first and second users. Each user's private key may be
iteratively multiplied by the other user's public key to produce a secret
key. Secure communication may then occur between the first and second
user using the secret key.