Patent ID: 7649999

Claim:
A transmitter comprising: a memory including a first submonoid, the first submonoid being produced by: selecting a first monoid; selecting a second monoid; selecting a function, the function being a monoid homomorphism that maps the first monoid to the second monoid; selecting a group; selecting an action of the group on the first monoid; and determining a semi-direct product of the first monoid and the group to produce a third monoid; selecting a first and second submonoid of the third monoid, the pair of the first and second submonoids satisfying a criterion, the first submonoid being defined by a first set of generators, the criterion satisfying a property determined by the function, a structure of the first and second monoids, and the action; and a processor; wherein the processor is effective to select a plurality of generators of the first set of generators to produce a private key, the processor is effective to apply the second component of an identity on a non-group component of a first generator of the private key to produce a result, wherein the identity comprises a first component, the first component being an identity of the second monoid, and the identity comprises a second component, the second component being an identity of the group; the processor is effective to apply the function to the result to produce a first modified result; the processor is effective to multiply the first component of the identity by the modified result to produce a first further modified result; the processor is effective to multiply the second component of the identity with a group component of the first generator to produce a first still further modified result; and the processor is effective to combine the first further modified result with the first still further modified result to produce a first public key; the processor is effective to: a. apply a group component of the first public key on a non-group component of a second generator of the private key to produce a second result; b. apply the function to the second result to produce a second modified result; c. multiply a non-group component of the first public key by the second modified result to produce a second further modified result; d. multiply the group component of the first public key with a group component of the second generator of the private key to produce second still further modified result; and e. combine the first further modified result with the second still further modified result to produce a second public key.