PATENT DOCUMENT

Abstract:
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&#39;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&#39;s private key may be iteratively multiplied by the other user&#39;s public key to produce a secret key. Secure communication may then occur between the first and second user using the secret key.

Full Description:
BACKGROUND OF THE INVENTION 
       [0001]    1. Field of the Invention 
         [0002]    The invention relates to cryptography and, more particularly, to a system and method for facilitating cryptographic applications. 
         [0003]    2. Description of the Prior Art 
         [0004]    Key Agreement Protocols 
         [0005]    It is sometimes desirable for individuals to be able to communicate with each other in a way in which third parties are unable to listen to the communication. A simple way for these individuals to communicate is to have the communications themselves proceed in private. For example if party A and party B desire to communicate in a way which will not be heard by party C, A and B can simply meet at a designated location unknown to C. Similarly, A and B can set up a designated communication line between them which excludes C. Such communication lines are expensive and inconvenient especially if A and B are geographically far apart from one another. 
         [0006]    A first approach to facilitating private communications between A and B is to give A and B a secret key that may be used to encrypt and/or decrypt messages sent between A and B. If C does not know what the key is, it may be very difficult for C to both get a hold of a message sent between A and B and try to understand it. However, giving A and B such a key is also cumbersome, expensive and time consuming. Issues to be addressed include secretly transmitting such a key to A and B and generating a new key each time two individuals need to communicate. Also, if C does ascertain the secret key, then all communications between A and B can be decrypted and read by C. 
         [0007]    Another approach for facilitating private communications between A and B is to assign A and B secret mathematical functions ƒ a ,ƒ b  respectively. The functions ƒ a  and ƒ b  are chosen from a set of functions, S, all of whose elements are designed so as to be commutative: applying ƒ a  followed by ƒ b  yields the same result as applying ƒ b  followed by ƒ a  (i.e., given an element x, ƒ a (ƒ b (x))=ƒ b (ƒ a (x))). Assuming the element x is known by both A and B, A can then send ƒ a (x) to B, and B can send ƒ b (x) to A over public channels. The secret key that can be evaluated and shared by both A and B is then, ƒ a (ƒ b (x))=ƒ b (ƒ a (x)). To insure that the system is secure (from an adversary C who knows x and can listen to all communication between A and B) it is necessary that the functions ƒ a  and ƒ b  satisfy the following property: given the value ƒ a (x) (respectively ƒ b (x)) it is computationally difficult to determine the function ƒ a  (respectively ƒ b ). This is called the general Diffie-Hellman key agreement protocol. 
         [0008]    Many specific instances of the general Diffie-Hellman protocol for sending secure communications between A and B are known in the prior art (see Alfred J. Menezes, Paul C. van Oorschot, and Scott A. Vanstone, “Handbook of Applied Cryptography,” CRC Press (1997)). They all differ by their choice of the set of functions. The original Diffie-Hellman key agreement protocol is an example of the above described techniques (see W. Diffie and M. E. Hellman, “New directions in cryptography,” IEEE Transaction on Information Theory, vol. IT 22 (November 1976), pp. 644-654). Using an algorithm like the one first introduced by Diffie-Hellman, parties A and B can obtain a common shared secret by communicating over a public channel. The security of the system, in this instance, rests on the computational difficulty of computing discrete logarithms in the multiplicative group of the finite field. In more general cases the security is based on the notion of a one-way function. A function ƒ from a set X to a set Y is termed one-way if ƒ(x) is easy to compute for all xεX but for essentially all elements y it is computationally difficult to find xεX such that ƒ(x)=y. To date a diverse array of mathematical techniques (including geometric and algebraic ones), have been used to create systems for secure communication whose security is based on one-way functions. 
         [0009]    A problem with some of the prior art algorithms, is that most of them rely on a cost-risk analysis when generating the one-way function. That is, in order to produce a more complex and more difficult to determine secret key, each party would need to spend more time in generating such a key and may need to invest in more expensive devices. With rapidly evolving technologies, implementing the current algorithms in a cryptographically secure manner is becoming difficult. Furthermore, there are instances of resource limited devices where current algorithms are difficult to implement. Thus, there is a need in the art for a system and method which can produce a secure key relatively quickly and without employing expensive devices. 
       SUMMARY OF THE INVENTION 
       [0010]    An aspect of the invention is a method for securing communications from a user. The method comprises selecting a first monoid, selecting a second monoid and selecting a function, the function being a monoid homomorphism that maps the first monoid to the second monoid. The method further comprises 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. The method further comprises selecting a first and second submonoid of the third monoid, a pair of the first and second submonoids satisfying a criterion, the first submonoid being defined by a first set of generators, wherein the criterion satisfies a property determined by the function, a structure of the first and second monoids, and the action. The method still further comprises selecting a plurality of generators of the first set of generators to produce a private key. 
         [0011]    Another aspect of the invention is a method for securing communications from a user. The method comprises receiving 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, 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. The method further comprising selecting a plurality of generators of the first set of generators to produce a private key. The method still further comprising applying 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 method still further comprising applying the function to the result to produce a first modified result, multiplying the first component of the identity by the modified result to produce a first further modified result, multiplying the second component of the identity with a group component of the first generator to produce a first still further modified result, and combining the first further modified result with the first still further modified result to produce a public key. 
         [0012]    Still another aspect of the invention is a method for securing communications among two users. The method comprises selecting a first monoid, selecting a second monoid, and selecting a function, the function being a monoid homomorphism that maps the first monoid to the second monoid. The method further comprising selecting a group, selecting an action of the group on the first monoid, and determining a first semi-direct product of the first monoid and the group to produce a third monoid. The method still further comprising selecting a first and second submonoid of the third monoid, a pair of the first and second submonoids satisfying a criterion, the first submonoid being defined by a first set of generators, the second submonoid being defined by a second set of generators, the criterion satisfying a property determined by the function, a structure of the first and second monoids, and the action. The method further comprising at a first user, receiving the first submonoid, selecting a plurality of generators of the first set of generators to produce a first private key, and applying the second component of an identity on a non-group component of a first generator of the first private key to produce a first 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 method further comprising at the first user applying the function to the first result to produce a first modified result, multiplying the first component of the identity by the modified result to produce a first further modified result, multiplying the second component of the identity with a group component of the first generator of the first private key to produce a first still further modified result, and combining the first further modified result with the first still further modified result to produce a first public key. The method still further comprising at the first user a. applying a group component of the first public key on a non-group component of a second generator of the first private key to produce a second result, b. applying the function to the second result to produce a second modified result, c. multiplying a non-group component of the first public key by the second modified result to produce a second further modified result, d. multiplying 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. combining the first further modified result with the second still further modified result to produce a second public key. The method further comprising at a second user receiving the second submonoid, selecting a plurality of generators of the second set of generators to produce a second private key, applying the second component of the identity on a non-group component of a first generator of the second private key to produce a third result, applying the function to the third result to produce a third modified result, multiplying the first component of the identity by the third modified result to produce a third further modified result, multiplying the second component of the identity with a group component of the first generator of the second private key to produce a third still further modified result, and combining the third further modified result with the third still further modified result to produce a third public key. The method still further comprising at the second user f. applying a group component of the third public key on a non-group component of a second generator of the second private key to produce a fourth result, g. applying the function to the fourth result to produce a fourth modified result, h. multiplying a non-group component of the third public key by the fourth modified result to produce a fourth further modified result, i. multiplying the group component of the third public key with a group component of the second generator of the second private key to produce a fourth still further modified result; and j. combining the fourth further modified result with the fourth still further modified result to produce a fourth public key. 
         [0013]    Yet still another aspect of the invention is 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; 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. The transmitter further comprising 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 further 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 further 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. 
         [0014]    Still another aspect of the invention is a system for securing communications between users. The system comprises a communications center, the communications center effective to select a first monoid, select a second monoid, select a function, the function being a monoid homomorphism that maps the first monoid to the second monoid, select a group, and select an action of the group on the first monoid. The communications center further effective to determine a first semi-direct product of the first monoid and the group to produce a third monoid; and select a first and second submonoid of the third monoid, a pair of the first and second submonoids satisfying a criterion, the first submonoid being defined by a first set of generators, the second submonoid being defined by a second set of generators, the criterion satisfying a property determined by the function, a structure of the first and second monoids, and the action. The system further comprising a first transmitter comprising a memory including the first submonoid and a first processor. The first processor effective to select a plurality of generators of the first set of generators to produce a first private key and apply the second component of an identity on a non-group component of a first generator of the first private key to produce a first 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 first processor further effective to apply the function to the first result to produce a first modified result, multiply the first component of the identity by the modified result to produce a first further modified result, multiply the second component of the identity with a group component of the first generator to produce a first still further modified result and combine the first further modified result with the first still further modified result to produce a first public key. The first processor is further 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 first 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. The system further comprises a second transmitter comprising a memory including the second submonoid and a second processor. The second processor effective to select a plurality of generators of the second set of generators to produce a second private key, apply the second component of the identity on a non-group component of a first generator of the second private key to produce a third result, apply the function to the third result to produce a third modified result, and multiply the first component of the identity by the third modified result to produce a third further modified result. The second processor further effective to multiply the second component of the identity with a group component of the second generator to produce a third still further modified result and combine the third further modified result with the third still further modified result to produce a third public key. The second processor is further effective to f. apply a group component of the third public key on a non-group component of a second generator of the second private key to produce a fourth result, g. apply the function to the fourth result to produce a fourth modified result, h. multiply a non-group component of the first public key by the fourth modified result to produce a fourth further modified result, i. multiply the group component of the third public key with a group component of the second generator of the second private key to produce fourth still further modified result and j. combine the fourth further modified result with the fourth still further modified result to produce a fourth public key. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0015]      FIG. 1  is a system diagram illustrating a Π-Function module in accordance with an embodiment of the invention. 
           [0016]      FIG. 2  is a system diagram illustrating a S-Action module in accordance with an embodiment of the invention. 
           [0017]      FIG. 3  is a system diagram illustrating an E-Function module in accordance with an embodiment of the invention. 
           [0018]      FIG. 4  is a system diagram illustrating the operation of an E-Function iterator module in accordance with an embodiment of the invention. 
           [0019]      FIG. 5  is another system diagram illustrating the operation of an E-Function iterator module in accordance with an embodiment of the invention. 
           [0020]      FIG. 6  is a system diagram illustrating a system for determining a pair of E-commuting monoids in accordance with an embodiment of the invention. 
           [0021]      FIG. 7  is a system diagram illustrating a system for determining a private key in accordance with an embodiment of the invention. 
           [0022]      FIG. 8  is a system diagram illustrating a system for determining a public key in accordance with an embodiment of the invention. 
           [0023]      FIG. 9  is a system diagram illustrating a system for determining a common agreed upon secret key in accordance with an embodiment of the invention. 
           [0024]      FIG. 10  is a flow diagram illustrating a method for determining a common agreed upon secret key and transmitting a message using that secret key in accordance with an embodiment of the invention. 
           [0025]      FIG. 11  is a system diagram illustrating a system for determining a secret key in accordance with an embodiment of the invention. 
       
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
       [0026]    The present invention introduces an algorithmically efficient one-way function. The algorithm is both rapidly computable and computationally hard to reverse. An overview in accordance with the invention is provided in  FIG. 10 . Parties Alice and Bob are each in possesion of a database from which they form their respective private keys (Boxes  101  and  102 ). They then proceed to produce their respective public keys based on their respective private keys by applying an algorithm in accordance with the invention (Boxes  103  and  104 ). Alice and Bob each have access to a respective transmitter and receiver. Alice and Bob use their respective transmitter and receiver to exchange their public keys. By exchanging these public keys they are each in a position to obtain a common agreed upon secret key by letting the received public key act on the respective user&#39;s private keys (Boxes  105  and  106 ). Once the shared secret key has been obtained, Alice can then encrypt a plaintext message, produce an encrypted message (Box  107 ), send the encrypted message (Box  108 ) to Bob, who can then decrypt the encrypted message (Box  109 ) to obtain Alice&#39;s plaintext message (Box  107 ). 
         [0027]    Let M, N denote monoids and let S denote a group which acts on M on the left. Given an element sεS, and an element mεM, we denote the result of s acting on m by  s m. The semidirect product of M and S, M         S is defined to be the monoid whose underlying set is M×S and whose internal binary operation 
         [0000]                :( M×S )×( M×S )→ M×S  
 
         [0000]    is given by 
         [0000]                :(( m   1   ,s   1 ),( m   2   ,s   2 ))→( m   1 · s     1     m   2   s   1   s   2 ).
 
         [0000]    Furthermore, we let N×S denote the direct product. 
         [0028]    An algebraic eraser is specified by a 6-tuple (M         S, N, Π, E, A, B) where M         S and N are as above, A, B are user submonoids of M, Π is an easily computable monoid homomorphism Π:M→N, 
         [0000]    E is a function 
         [0000]        E :( N×S )×( M             S )→ N×S  
 
         [0000]    given by 
         [0000]        E (( n,s ),( m   1   ,s   1 ))=( n Π( s   m   1 ), ss   1 ),
 
         [0000]    and A, B are submonoids of M         S such that for all (a, s a )εA, (b, s b )εB 
         [0000]        E ((Π( a ), s   a ),( b,s   b ))= E ((Π( b ), s   b ),( a,s   a )).
 
         [0000]    Two submonoids satisfying the above identity are termed E-Commuting. 
         [0029]    An action of S on M does not induce an action of S on N, and given knowledge of the elements 
         [0000]      ( n,s ), E (( n,s ),( m   1   ,s   1 ))ε N×S  
 
         [0000]    it is very difficult to obtain the element (m 1 ,s 1 )εM         S. The action of the element sεS has been effectively erased by the algebraic eraser. A benefit lies in the efficiency of the computation of the function Π and the iterative nature of the method and apparatus for the computation of the function E. 
         [0030]    A preferred embodiment of an apparatus to perform an algebraic key agreement protocol based on the algebraic eraser, is depicted in  FIGS. 1 through 11 , and begins with an apparatus to compute the function Π. The Π-Function module  13  is responsive to the data from the Π-Function module library  11 , and the input element mεM from 12. The Π-Function module  13  computes the element Π(m)εN. 
         [0031]    In general a group S is said to act (on the left) on a monoid M provided there is a homomorphism from S to the endomorphisms of M which satisfies certain properties. Given sεS and mεM, the element s maps m to a new element in M, denoted  s m. The required properties are 
         [0000]        s ( m   1   m   2 )= s   m   1   s   m   2   ,    1   m=m,    s     1     s     2     m=   s     1   ( s     2     m ) 
         [0000]    Referring to  FIG. 2 , S-Action module  23  is responsive to the inputs sεS  21  and mεM  22 , and computes the image of m under the action of s yielding  s m as output. 
         [0032]    An apparatus to compute the function E is depicted in  FIG. 3 . The E-Function module  36  is responsive to the inputs (n,s)  31  and (m,s)  34 . Given an ordered list (x,y) of two elements x, y, the first component projection of (x,y) outputs the first component x on the list. Similarly, the second component projection outputs the second component y. The input (n,s),  31 , is sent to the second component projection module,  32  and the input (m 1 ,s 1 ) is likewise sent to a first component projection module,  33 . The resulting elements of S and M of the first and second component modules  32 ,  33  are then forwarded to the S-Action module  23 , yielding the element  s m 1 εM. This resulting element  s m 1  is forwarded to the Π-Function module,  13 , which outputs the element Π( s m 1 ). The E-Function multiplier,  35 , is responsive to the input (n,s),  31 , the element Π( s m 1 )εN, and the result of the input (m 1 ,s 1 ),  34 , being entered into the second component projection module,  32 . The E-Function multiplier outputs the element (nΠ( s m 1 ), ss 1 )εN×S which is also the output of the E-Function module  36 . 
         [0033]    The semi-direct product of M and S, denoted M         S, is defined to be the monoid whose underlying set is the direct product M×S and whose binary operation is given by 
         [0000]      ( m   1   ,s   1 )·( m   2   ,s   2 )=( m   1 · s     1     m   2   ,s   2 ).
 
         [0000]    It is noted that given an element (n,s)εN×S and two elements (m 1 ,s 1 ), (m 2 ,s 2 )εM         S, that 
         [0000]        E (( n,s ),(( m   1   ,s   1 )·( m   2   ,s   2 )))= E ( E (( n,s ),( m   1   ,s   1 )),( m   2   ,s   2 )).
 
         [0000]    Hence computing the E-Function iteratively increases the system&#39;s efficiency and speed. 
         [0034]      FIG. 4  depicts an apparatus which may be used in performing the above computation. An E-Function Iterator module  42  is responsive to the input (n,s),  31 , and to the input          (m 1 ,s 1 ), (m 2 ,s 2 ), . . . , (m k ,s k )         ,  41 , and outputs 
         [0000]      ( n )Π( s   m   1 )Π( ss     1     m   2 ) . . . Π( ss     1      . . . s     k     m   k ), ss   1    . . . s   k ).
 
         [0035]    A more detailed apparatus of the E-Function Iterator module  42 , is depicted in  FIG. 5 , begins with the input (n,s)  31  being sent to the E-Function module  36 . In addition, an input          (m 1 ,s 1 ), (m 2   ,s   2 ), . . . , (m k ,s k )         ,  41 , is sent to the choose t th  component module,  53 , which is a module initialized at the value t=1 and repeatedly incremented by the increment t module,  54 . The t th  component of the input          (m 1 ,s 1 ), (m 2 ,s 2 ), . . . , (m k ,s k )          is precisely (m t ,s t ) which is the output of  53  and sent to the E-Function module  36 . Furthermore the value of t is sent to the decision box  55  which also receives the value of the E-Function (iterated t−1 times up to that point). The decision box  55  determines if t=k, at which point the computation stops, otherwise, the output of decision box  55  becomes input  31  to the E-Function module  36  to be used as the new first component of E together with the incoming entry from choose t th  component module  53 . The final value arrived at is given by 
         [0000]      ( n ·Π( s   m   1 )Π( ss     1     m   2 ) . . . Π( ss     1     1 . . . s     k-1     m   k ), ss   k )=( n ·Π(( s   m   1 )( ss     1     m   2 ) . . . ( ss     1      . . . s     k-1     m   k )), ss   1    . . . s   k ).
 
         [0036]    Recall that two submonoids A, B are said to be E-Commuting provided 
         [0000]        E ((Π( a ), s   a ),( b,s   b ))= E ((Π( b ), s   b ),( a,s   a ))
 
         [0000]    holds for all (a,s a )εA, (b,s b )εB.  FIG. 6  illustrates an apparatus which may be used in choosing a pair of E-Commuting monoids, A, B which may be utilized in the invention. A monoid is specified by a generating set, i.e., a subset of elements of the monoid which have the property that every element of the monoid can be expressed as a product of some of these generators (in some order, with repetitions allowed). The Semidirect Product Producer  60  is responsive to the monoid M and the group S and produces the monoid M         S. The monoid M         S, together with the monoid N and the function Π are sent to the E-Commuting Monoid Producer  63 , whose output is sent to the Pairs of E-Commuting Monoid Library  64 . A Pseudorandom Number Generator  61  produces a random number α, a Chooser  62  then accesses the α th  element of the Pairs of E-Commuting Monoid Library  63  and outputs the pair of E-Commuting monoids A 1 , B 1  which are forwarded to Alice and Bob, respectively. Additionally the pair A 1 , B 1  is forwarded to the User Submonoid Generator Database 65. 
         [0037]    With the apparatuses for computing the S-Action, the functions Π and E specified, and each users submonoid in place, the algebraic eraser key agreement protocol can now be detailed. If the E-commuting monoids A 1 , B 1 , are privately assigned to Alice and Bob, then the invention functions, for example, as a symmetric cryptosystem. If the monoid M         S possesses a large library of pairs of E-Commuting submonoids which are recursively enumerable and whose internal algebraic structure is hidden then the invention can function, for example, as an asymmetric cryptosystem. 
         [0038]      FIG. 7  illustrates a mechanism which may be used in enabling a user to generate a private key. Focusing on Alice (Bob case is analogous) a second Pseudorandom Number Generator  72  responsive to the input α*,  71 , creates a list of integers e 1 , e 2 , . . . , e α * where each e i  is generated in such a way that e i ≦number of generators of (A 1 ). The Sequence Encoder  73  is responsive to the list e 1 , e 2 , . . . , e α * and the User Submonoid Generator database  65 , is responsive to the submonoid A 1 . The Sequence Encoder  73  produces the list of the user generators (m e     1   ,s e     1   ), (m e     1   ,s e     1   ), . . . , (m e     α   *,s e     α   *) out of the generating set of A 1 . The Private Key Generator  74  is responsive to Encoder  73  and produces the user private key 
         [0000]                  M   A           =         ( m   e     1     ,s   e     1   ),( m   e     2     ,s   e     2   ), . . . , ( m   e     α     *,s   e     α   *)           
         [0000]    which is sent to a memory  75 . It should be observed that the product of the elements, denoted (M A ,s A ), 
         [0000]    
       
         
           
             
               
                 
                   
                     ( 
                     
                       
                         M 
                         A 
                       
                       , 
                       
                         s 
                         A 
                       
                     
                     ) 
                   
                   = 
                   
                     
                       
                         ( 
                         
                           
                             m 
                             
                               e 
                               1 
                             
                           
                           , 
                           
                             s 
                             
                               e 
                               1 
                             
                           
                         
                         ) 
                       
                       · 
                       
                         ( 
                         
                           
                             m 
                             
                               e 
                               2 
                             
                           
                           , 
                           
                             s 
                             
                               e 
                               2 
                             
                           
                         
                         ) 
                       
                     
                      
                     
                         
                     
                      
                     … 
                      
                     
                         
                     
                      
                     
                       ( 
                       
                         
                           m 
                           
                             e 
                             
                               α 
                               * 
                             
                           
                         
                         , 
                         
                           s 
                           
                             e 
                             
                               α 
                               * 
                             
                           
                         
                       
                       ) 
                     
                   
                 
               
             
             
               
                 
                   = 
                   
                     ( 
                     
                       
                         
                           ( 
                           
                             m 
                             
                               e 
                               1 
                             
                           
                           ) 
                         
                          
                         
                           ( 
                           
                             m 
                             
                               e 
                               2 
                             
                               
                               
                               
                             
                               s 
                               1 
                             
                           
                           ) 
                         
                          
                         
                             
                         
                          
                         … 
                          
                         
                             
                         
                          
                         
                           ( 
                           
                             m 
                             
                               e 
                               
                                 α 
                                 * 
                               
                             
                               
                               
                               
                             
                               
                                 s 
                                 1 
                               
                                
                               
                                   
                               
                                
                               … 
                                
                               
                                   
                               
                                
                               
                                 s 
                                 
                                   
                                     α 
                                     * 
                                   
                                   - 
                                   1 
                                 
                               
                             
                           
                           ) 
                         
                       
                       , 
                       
                         
                           s 
                           
                             e 
                             1 
                           
                         
                          
                         
                             
                         
                          
                         … 
                          
                         
                             
                         
                          
                         
                           s 
                           
                             e 
                             
                               α 
                               * 
                             
                           
                         
                       
                     
                     ) 
                   
                 
               
             
           
         
       
     
         [0000]    is an element of the submonoid A 1   ⊂ M         S, but need not be computed explicitly for key agreement. 
         [0039]    Now that Alice and Bob have chosen their respective user private keys,  FIG. 8  depicts the apparatus which may be used in computing the user public keys. The E-Function Iterator module  42  is responsive to the input          (m e     1   ,s e     1   ), (m e     2   ,s e     2   ), . . . , (m e     α   *s e     α   *)         ,  81  and the element 
         [0000]      (1 N ,1 S )=(identity N ,identity S )ε N×S,  
 
         [0000]    which is the identity of the monoid N in the first component and the identity of S in the second component. The E-Function Iterator module  42  produces the User Public Key 
         [0000]    
       
         
           
             
               
                 
                   
                     ( 
                     
                       
                         N 
                         A 
                       
                       , 
                       
                         s 
                         A 
                       
                     
                     ) 
                   
                   = 
                   
                     E 
                      
                     
                       ( 
                       
                         
                           ( 
                           
                             
                               1 
                               N 
                             
                             , 
                             
                               1 
                               S 
                             
                           
                           ) 
                         
                         , 
                         
                           ( 
                           
                             
                               M 
                               A 
                             
                             , 
                             
                               s 
                               A 
                             
                           
                           ) 
                         
                       
                       ) 
                     
                   
                 
               
             
             
               
                 
                   = 
                   
                     ( 
                     
                       ( 
                       
                         
                           
                             Π 
                              
                             
                               ( 
                               
                                 m 
                                 
                                   e 
                                   1 
                                 
                               
                               ) 
                             
                           
                            
                           
                             Π 
                              
                             
                               ( 
                               
                                 m 
                                 
                                   e 
                                   2 
                                 
                                   
                                   
                                   
                                 
                                   s 
                                   1 
                                 
                               
                               ) 
                             
                           
                            
                           
                               
                           
                            
                           … 
                            
                           
                               
                           
                            
                           
                             Π 
                              
                             
                               ( 
                               
                                 m 
                                 
                                   e 
                                   
                                     α 
                                     * 
                                   
                                 
                                   
                                   
                                   
                                 
                                   
                                     s 
                                     1 
                                   
                                    
                                   
                                       
                                   
                                    
                                   … 
                                    
                                   
                                       
                                   
                                    
                                   
                                     s 
                                     
                                       
                                         α 
                                         * 
                                       
                                       - 
                                       1 
                                     
                                   
                                 
                               
                               ) 
                             
                           
                         
                         , 
                         
                           
                             s 
                             
                               e 
                               1 
                             
                           
                            
                           
                               
                           
                            
                           … 
                            
                           
                               
                           
                            
                           
                             s 
                             
                               e 
                               
                                 α 
                                 * 
                               
                             
                           
                         
                       
                       ) 
                     
                   
                 
               
             
             
               
                 
                   = 
                   
                     ( 
                     
                       
                         Π 
                          
                         
                           ( 
                           
                             
                               ( 
                               
                                 m 
                                 
                                   e 
                                   1 
                                 
                               
                               ) 
                             
                              
                             
                               ( 
                               
                                 m 
                                 
                                   e 
                                   2 
                                 
                                   
                                   
                                   
                                 
                                   s 
                                   1 
                                 
                               
                               ) 
                             
                              
                             
                                 
                             
                              
                             … 
                              
                             
                                 
                             
                              
                             
                               ( 
                               
                                 m 
                                 
                                   e 
                                   
                                     α 
                                     * 
                                   
                                 
                                   
                                   
                                   
                                 
                                   
                                     s 
                                     1 
                                   
                                    
                                   
                                       
                                   
                                    
                                   … 
                                    
                                   
                                       
                                   
                                    
                                   
                                     s 
                                     
                                       
                                         α 
                                         * 
                                       
                                       - 
                                       1 
                                     
                                   
                                 
                               
                               ) 
                             
                           
                           ) 
                         
                       
                       , 
                       
                         
                           s 
                           
                             e 
                             1 
                           
                         
                          
                         
                             
                         
                          
                         … 
                          
                         
                             
                         
                          
                         
                           s 
                           
                             e 
                             
                               α 
                               * 
                             
                           
                         
                       
                     
                     ) 
                   
                 
               
             
             
               
                 
                   
                     = 
                     
                       ( 
                       
                         
                           Π 
                            
                           
                             ( 
                             
                               M 
                               A 
                             
                             ) 
                           
                         
                         , 
                         
                           s 
                           A 
                         
                       
                       ) 
                     
                   
                   , 
                 
               
             
           
         
       
     
         [0000]    which is sent to memory  83 . 
         [0040]    At this point Alice has the public key (N A ,s A ) and private key &lt;m A &gt;, Bob has public key (N B ,s B ) and private key &lt;m B &gt;, and they are now in a position to utilize the apparatus depicted in  FIG. 9  to obtain a common agreed upon secret key. Alice transmits her public key (N A ,s A ) input  91  via the transmitter/receiver  93 , and likewise Bob transmits his public key (N B ,s B ) input  92  via the transmitter/receiver  94 . The received public keys together with the each users private keys are then forwarded to the respective E-Function Iterator modules  42   a ,  42   b , to yield 
         [0000]      ( N   B Π( s     B     M   A ), s   B   s   A )= E (( N   B   ,s   B ),( M   A   ,s   A ))= E ((Π( m   B ), s   B ),( M   A   ,s   A ))
 
         [0000]      ( N   A Π( s     A     M   B ), s   A   s   B )= E (( N   A   ,s   A ),( M   B   ,s   B ))= E ((Π( M   A ), s   A ),( M   B   ,s   B )).
 
         [0000]    Since (M A ,s A ) and (M B ,s B ) are contained in the submonoids A 1 , B 1  respectively, the original assumptions regarding the structure of the algebraic eraser imply that the above elements of N×S are equal and can serve as the common agreed upon secret key,  97 . 
         [0041]    The above key agreement protocol can be enhanced by combining it with the Diffie-Hellman protocol described in the prior art. One such combination is given as follows. Referring to  FIG. 8 , replace input  82  by the element (K A ,identity S ) (for Alice) and (K B ,identity S ) (for Bob) where K A , K B εN are additional private keys chosen so that they commute. The public keys for Alice and Bob are, E((K A ,identity S ), (M A ,s A )), E((K B ,identity S ), (M B ,s B )), respectively. In this variation of the key agreement protocol, the common agreed upon secret key is given by 
         [0000]        E (( K   A   K   B ·Π( M   B ), s   B ),( M   A   ,s   A ))= E (( K   B   K   A ·Π( M   A ), s   A ),( M   B   ,s   B )).
 
         [0042]    Referring now to  FIG. 11 , there is shown a system  1130  which could be used in accordance with an embodiment of the invention. System  1130  includes a first transmitter/receiver  1102   a  and a second transmitter/receiver  1102   b . Transmitters/receivers  1102   a  and  1102   b  could be, for example, readers and tags in an RF-ID system. Transmitters/receivers  1102  and  1102   b  may, for example, generate information, receive information, or modulate received information to transmit other information. 
         [0043]    Transmitter/receiver  1102   a  includes a memory  1104   a , a processor  1110   a , an action module  1112   a , a Π-Function module  1108   a  an E-function multiplier  1106   a  and an antenna  1114   a . Similarly, transmitter/receiver  1102   b  includes a memory  1104   b , a processor  1110   b , an action module  1112   b , a H-Function module  1108   b , an E-function multiplier  1106   b  and an antenna  1114   b . Action modules  1112   a  and  1112   b  could be, for example, S-action module  23  discussed above. Π-Function modules  1108   a  and  1108   b  could be, for example, Π-Function module  13  discussed above. E-Function multipliers  1106   a  and  1106   b  could be E-Function multipliers  35  as described above. 
         [0044]    Memories  1104   a  and  1104   b  each include monoids N and M, group S and function Π which all could be determined using, for example, the algorithms discussed above. Memory  1104   a  further includes a submonoid A and memory  1104   b  further includes a submonoid B. Submonoids A and B may be determined as discussed above. For example, a semi-direct product of S and M may be determined. A and B may then be E-commuting submonoids of this semi-direct product. Monoids M and N, group S, function Π and submonoids A and B may all be determined by a communications center  1132  in communication with a database  1134 . Communications center  1132  may forward monoids M and N, group S, function Π and sub-monoids A and B to transmitter/receivers  1102   a ,  1102   b  using, for example an antenna  1136 . Alternatively, monoids M and N, group S, function Π and submonoids A and B, may be stored in memories  1104   a ,  1104  of transmitter/receives  1102   a ,  1102   b  respectively, when the respective devices are manufactured. 
         [0045]    In operation, processors  1110   a  and  1110   b  each select generators of monoids A and B, respectively. The selection could be, for example, through the use a pseudo-random number generators  1120   a ,  1120   b . Processor  1110   a  then orders the generators to produce a private key  1118   a  for transmitter/receiver  1102   a.    
         [0046]    Processor  1110   a  then forwards private key  1118   a  and an identity element  122   a  to action module  1112   a , Π-Function module  1108   a  and E-Function multiplier  1106   a  to produce a public key  1122   a  for transmitter/receiver  1102   a . Identity element  1122   a  includes a first component which is the identity of monoid N and a second component which is the identity of group S. The process through action module  1112   a , Π-Function module  1108   a  and E-Function multiplier  1106   a  may be performed iteratively for each generator in private key  1118   a.    
         [0047]    Similarly, processor  1110   b  orders generators of monoid B to produce a private key  1118   b  for transmitter/receiver  1102   b . Processor  1110   b  then forwards private key  1118   b  and an identity element  1122   b  to action module  1112   b , Π-Function module  1108   b  and E-Function multiplier  1106   b  to produce a public key  1122   b  for transmitter/receiver  1102   b . Identity element  1122   b  includes a first component which is the identity monoid N and a second component which is the identity of group S. The process through action module  1112   b , Π-Function module  1108   b  and E-Function multiplier  1106   b  may be performed iteratively for each generator in private key  1118   b.    
         [0048]    Transmitter/receivers  1102   a  and  1102   b  exchange their respective public keys  1122   a ,  1122   b  using antennas  1114   a  and  1114   b  respectively over a communication link  1128 . Once the pub-lic keys  1122   a ,  1122   b  are received, a secret key may be ascertained. Focusing on transmitter/receiver  1102   a , for example, public key  1122   b  from transmitter/receiver  1102   b  is input to action module  1112   a , Π-function module  1108   a  and E-Function multiplier  1106   a  along with private key  1118   a . Action module  1112   a , Π-Function module  1108   a , and E-Function multiplier  1106   a  may operate on these inputs iteratively for each generator in the private key from transmitter/receiver  1102   a , to produce a secret key  1124 . A similar operation is performed at transmitter/receiver  1102   b . The secret key  1124  may be then be used by transmitter/receivers  1102   a  and  1102   b  to communicate securely. 
         [0049]    While the invention has been described and illustrated in connection with preferred embodiments, many variations and modifications as will be evident to those skilled in this art may be made without departing from the spirit and scope of the invention, and the invention is thus not to be limited to the precise details of methodology or construction set forth above as such variations and modification are intended to be included within the scope of the invention. 
       Example 
       [0050]    An instance of the algebraic eraser and its associated key agreement protocol can be obtained in the case where the monoid M is chosen to be the set of L×L matrices whose entries are rational functions with integral coefficients in the variables {t 1 , t 2 , . . . , t κ }, i.e., the entries take 
         [0000]    
       
         
           
             
               
                 C 
                 ij 
               
                
               
                 ( 
                 
                   
                     t 
                     1 
                   
                   , 
                   
                     t 
                     2 
                   
                   , 
                   … 
                    
                   
                       
                   
                   , 
                   
                     t 
                     k 
                   
                 
                 ) 
               
             
             
               
                 D 
                 ij 
               
                
               
                 ( 
                 
                   
                     t 
                     1 
                   
                   , 
                   
                     t 
                     2 
                   
                   , 
                   … 
                    
                   
                       
                   
                   , 
                   
                     t 
                     k 
                   
                 
                 ) 
               
             
           
         
       
     
         [0000]    where 1≦i,j≦κ, and C ij ,D ij  are polynomials. The group S is chosen to be the symmetric group on κ symbols, denoted S κ . The action of the elements of sεS κ  on the set of variables {t 1 , t 2 , . . . , t κ }, given by 
         [0000]        s:t   i             t   s(i) , 
         [0000]    can be extended to an action of the monoid M in a natural manner. Given an element of M, input  22 , (see  FIG. 2 ) of the form 
         [0000]    
       
         
           
             
               [ 
               
                 
                   
                     C 
                     ij 
                   
                    
                   
                     ( 
                     
                       
                         t 
                         1 
                       
                       , 
                       
                         t 
                         2 
                       
                       , 
                       … 
                        
                       
                           
                       
                       , 
                       
                         t 
                         k 
                       
                     
                     ) 
                   
                 
                 
                   
                     D 
                     ij 
                   
                    
                   
                     ( 
                     
                       
                         t 
                         1 
                       
                       , 
                       
                         t 
                         2 
                       
                       , 
                       … 
                        
                       
                           
                       
                       , 
                       
                         t 
                         k 
                       
                     
                     ) 
                   
                 
               
               ] 
             
             
               
                 1 
                 ≤ 
                 i 
               
               , 
               
                 j 
                 ≤ 
                 k 
               
             
           
         
       
     
         [0000]    and an element sεS κ , input  21 , the result of the S κ -Action module  23  is the element of M given by 
         [0000]    
       
         
           
             
               
                 s 
                  
                 
                   [ 
                   
                     
                       
                         C 
                         ij 
                       
                        
                       
                         ( 
                         
                           
                             t 
                             1 
                           
                           , 
                           
                             t 
                             2 
                           
                           , 
                           … 
                            
                           
                               
                           
                           , 
                           
                             t 
                             k 
                           
                         
                         ) 
                       
                     
                     
                       
                         D 
                         ij 
                       
                        
                       
                         ( 
                         
                           
                             t 
                             1 
                           
                           , 
                           
                             t 
                             2 
                           
                           , 
                           … 
                            
                           
                               
                           
                           , 
                           
                             t 
                             k 
                           
                         
                         ) 
                       
                     
                   
                   ] 
                 
               
               
                 
                   1 
                   ≤ 
                   i 
                 
                 , 
                 
                   j 
                   ≤ 
                   k 
                 
               
             
             = 
             
               
                 
                   [ 
                   
                     
                       
                         C 
                         ij 
                       
                        
                       
                         ( 
                         
                           
                             t 
                             
                               s 
                                
                               
                                 ( 
                                 1 
                                 ) 
                               
                             
                           
                           , 
                           
                             t 
                             
                               s 
                                
                               
                                 ( 
                                 2 
                                 ) 
                               
                             
                           
                           , 
                           … 
                            
                           
                               
                           
                           , 
                           
                             t 
                             
                               s 
                                
                               
                                 ( 
                                 k 
                                 ) 
                               
                             
                           
                         
                         ) 
                       
                     
                     
                       
                         D 
                         ij 
                       
                        
                       
                         ( 
                         
                           
                             t 
                             
                               s 
                                
                               
                                 ( 
                                 1 
                                 ) 
                               
                             
                           
                           , 
                           
                             t 
                             
                               s 
                                
                               
                                 ( 
                                 2 
                                 ) 
                               
                             
                           
                           , 
                           … 
                            
                           
                               
                           
                           , 
                           
                             t 
                             
                               s 
                                
                               
                                 ( 
                                 k 
                                 ) 
                               
                             
                           
                         
                         ) 
                       
                     
                   
                   ] 
                 
                 
                   
                     1 
                     ≤ 
                     i 
                   
                   , 
                   
                     j 
                     ≤ 
                     k 
                   
                 
               
               . 
             
           
         
       
     
         [0051]    Having specified the monoid M and the action of a group S on M, we fix a prime p and let the monoid N be the set of L×L matrices whose entries are integers mod p. Then to define the homomorphism Π a set of integers (τ 1 , τ 2 , . . . , τ κ )(mod p), is chosen and is stored in the Π-Function module Library  11 . Given an element of M, Input  12 , the Π-Function module produces the element of N given by 
         [0000]    
       
         
           
             
               
                 [ 
                 
                   
                     
                       
                         C 
                         ij 
                       
                        
                       
                         ( 
                         
                           
                             τ 
                             1 
                           
                           , 
                           
                             τ 
                             2 
                           
                           , 
                           … 
                            
                           
                               
                           
                           , 
                           
                             τ 
                             k 
                           
                         
                         ) 
                       
                     
                      
                     
                         
                     
                      
                     mod 
                      
                     
                         
                     
                      
                     p 
                   
                   
                     
                       
                         D 
                         ij 
                       
                        
                       
                         ( 
                         
                           
                             τ 
                             1 
                           
                           , 
                           
                             τ 
                             2 
                           
                           , 
                           … 
                            
                           
                               
                           
                           , 
                           
                             τ 
                             k 
                           
                         
                         ) 
                       
                     
                      
                     
                         
                     
                      
                     mod 
                      
                     
                         
                     
                      
                     p 
                   
                 
                 ] 
               
               
                 
                   1 
                   ≤ 
                   i 
                 
                 , 
                 
                   j 
                   ≤ 
                   k 
                 
               
             
             . 
           
         
       
     
         [0000]    It is tacitly assumed that 
         [0000]        D   ij (τ 1   ,τ   2 , . . . , τ κ )≢0(mod  p ),
 
         [0000]    which can always be arranged by appropriate selection of (τ 1 , τ 2 , . . . , τ κ ) for the situation at hand. 
         [0052]    With the above choices in place the E-Function  13  takes the form, 
         [0000]    
       
         
           
             
               E 
                
               
                 ( 
                 
                   
                     ( 
                     
                       
                         [ 
                         
                           d 
                           ij 
                         
                         ] 
                       
                       , 
                       s 
                     
                     ) 
                   
                   , 
                   
                     ( 
                     
                       
                         [ 
                         
                           
                             
                               C 
                               ij 
                             
                              
                             
                               ( 
                               
                                 
                                   t 
                                   1 
                                 
                                 , 
                                 
                                   t 
                                   2 
                                 
                                 , 
                                 … 
                                  
                                 
                                     
                                 
                                 , 
                                 
                                   t 
                                   k 
                                 
                               
                               ) 
                             
                           
                           
                             
                               D 
                               ij 
                             
                              
                             
                               ( 
                               
                                 
                                   t 
                                   1 
                                 
                                 , 
                                 
                                   t 
                                   2 
                                 
                                 , 
                                 … 
                                  
                                 
                                     
                                 
                                 , 
                                 
                                   t 
                                   k 
                                 
                               
                               ) 
                             
                           
                         
                         ] 
                       
                       , 
                       
                         s 
                         1 
                       
                     
                     ) 
                   
                 
                 ) 
               
             
             = 
             
               
                 ( 
                 
                   
                     
                       [ 
                       
                         d 
                         ij 
                       
                       ] 
                     
                     · 
                     
                       [ 
                       
                         
                           
                             
                               C 
                               ij 
                             
                              
                             
                               ( 
                               
                                 
                                   τ 
                                   
                                     s 
                                      
                                     
                                       ( 
                                       1 
                                       ) 
                                     
                                   
                                 
                                 , 
                                 
                                   τ 
                                   
                                     s 
                                      
                                     
                                       ( 
                                       2 
                                       ) 
                                     
                                   
                                 
                                 , 
                                 … 
                                  
                                 
                                     
                                 
                                 , 
                                 
                                   τ 
                                   
                                     s 
                                      
                                     
                                       ( 
                                       k 
                                       ) 
                                     
                                   
                                 
                               
                               ) 
                             
                           
                            
                           
                               
                           
                            
                           mod 
                            
                           
                               
                           
                            
                           p 
                         
                         
                           
                             
                               D 
                               ij 
                             
                              
                             
                               ( 
                               
                                 
                                   τ 
                                   
                                     s 
                                      
                                     
                                       ( 
                                       1 
                                       ) 
                                     
                                   
                                 
                                 , 
                                 
                                   τ 
                                   
                                     s 
                                      
                                     
                                       ( 
                                       2 
                                       ) 
                                     
                                   
                                 
                                 , 
                                 … 
                                  
                                 
                                     
                                 
                                 , 
                                 
                                   τ 
                                   
                                     s 
                                      
                                     
                                       ( 
                                       k 
                                       ) 
                                     
                                   
                                 
                               
                               ) 
                             
                           
                            
                           
                               
                           
                            
                           mod 
                            
                           
                               
                           
                            
                           p 
                         
                       
                       ] 
                     
                   
                   , 
                   
                     s 
                      
                     
                         
                     
                      
                     
                       … 
                       
                         
                             
                         
                          
                         1 
                       
                     
                   
                 
                 ) 
               
               . 
             
           
         
       
     
         [0000]    The E-Function Iterator module  42  may be evaluated via the apparatus in  FIG. 5 . 
         [0053]    A method for creating the library of pairs of E-Commuting monoids will now be specified. Each monoid in such a pair will be presented as a list of generators each of which is contained in M         S. A feature of the method is that the internal algebraic structure of the pairs of E-Commuting monoids is difficult to determine from the publicly announced list of generators. Choose two sets X, Y of elements of M, and two sets U, V of elements of where the following properties hold: 
         [0000]    
       
      
       xy=yx  
      
     
         [0000]    
       
      
       uv=vu  
      
     
         [0000]    
       
      
       v 
       x 
       =x  
      
     
         [0000]    
       
      
       u 
       y=y,  
      
     
         [0000]    for all xεX, yεY and uεU, vεV. There are many such choices for the sets X, Y, U, V. In fact, the number of choices also grows exponentially with L. 
         [0054]    One method to specifically choose the sets X, Y, U, V is given as follows. Partition the set {t 1 , t 2 , . . . , t κ } into two disjoint subsets T 1 ,T 2  where T i ={t i     1   , t i     2   , . . . , t i     κ   } for i=1, 2. Correspondingly, there will exist two distinct subgroups U, V of S κ , where an element of U permutes the variables in T 1  and fixes the variables in T 2 , and similarly an element of V permutes the variables in T 2  and fixes the variables in T 1 . Observe that every element uεU commutes with every element vεV. Next choose positive integers l 1  and l 2  such that L=l 1 +l 2 +1. The matrices in X are chosen to be of the form 
         [0000]    
       
         
           
             
               ( 
               
                 
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                   
                     0 
                   
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                 
                 
                   
                     
                         
                     
                   
                   
                   
                   
                     
                         
                     
                   
                   
                     ⋮ 
                   
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                 
                 
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                   
                     0 
                   
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                 
                 
                   
                     0 
                   
                   
                     … 
                   
                   
                     0 
                   
                   
                     1 
                   
                   
                     0 
                   
                   
                     … 
                   
                   
                     0 
                   
                 
                 
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                   
                     0 
                   
                   
                     1 
                   
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                 
                 
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                   
                     ⋮ 
                   
                   
                     
                         
                     
                   
                   
                     ⋱ 
                   
                   
                     
                         
                     
                   
                 
                 
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                   
                     0 
                   
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                   
                     1 
                   
                 
               
               ) 
             
               
           
         
       
     
         [0000]    where            l     1    is an l 1 ×l 1  matrix whose entries are rational functions in the variables T 1 . All nonspecified entries the above matrix are equal to 0. Similarly, the matrices in Y are chosen to be of the form 
         [0000]    
       
         
           
             
               ( 
               
                 
                   
                     1 
                   
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                   
                     0 
                   
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                 
                 
                   
                     
                         
                     
                   
                   
                     ⋱ 
                   
                   
                     
                         
                     
                   
                   
                     ⋮ 
                   
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                 
                 
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                   
                     1 
                   
                   
                     0 
                   
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                 
                 
                   
                     0 
                   
                   
                     … 
                   
                   
                     0 
                   
                   
                     1 
                   
                   
                     0 
                   
                   
                     … 
                   
                   
                     0 
                   
                 
                 
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                   
                     0 
                   
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                 
                 
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                   
                     ⋮ 
                   
                   
                     
                         
                     
                   
                   
                   
                   
                     
                         
                     
                   
                 
                 
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                   
                     0 
                   
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                   
                     
                         
                     
                   
                 
               
               ) 
             
               
           
         
       
     
         [0000]    where            l     2    is an l 2 ×l 2  matrix whose entries are rational functions in the variables T 2 . It is clear that the above choices of matrices commute, and that an element uεU acts trivially on each matrix in Y, and an element vεV acts trivially on each matrix in X. 
         [0055]    With this done choose an invertible element (z,w)εM         S. There are many such choices for (z,w), and in fact, the number of such choices grows exponentially with L. One can now define the submonoids as 
         [0000]        A ={( z,w )·( x,u )·( z,w ) −1   |xεX,uεU},  
 
         [0000]        B ={( z,w )·( y,v )·( z,w ) −1   |yεY,vεV}.  
 
         [0000]    It is readily verifiable that A, B are E-Commuting monoids. Note that the search for (z,w) is more difficult than a standard conjugacy search problem because the conjugated elements are unknown. 
         [0056]    In the key agreement protocol, there are two users, Alice and Bob, each of whom has a public and a private key. The users proceed with a public exchange, after which each is in a position to obtain common agreed upon secret key which can then be used for further cryptographic applications. The key agreement protocol begins in this example with each user, Alice and Bob, being assigned a user submonoid A 1 , and B 1 , respectively, from a pair in the E-Commuting Monoid Library,  63 . Each user, Alice and Bob, proceeds to choose a private key which is the output of a respective Private Key Generator  74 . Each user public key is then computed by directing the user private key, input  81  to the E-Function Iterator module  42 , along with the input  82 . The E-Function Iterator module  42  allows the users to compute their respective public keys in a novel and rapid fashion. The computations involved are 8-bit modular arithmetic operations (addition, subtraction, multiplication, and division) and 8-bit string search and replacement. These computations can be achieved at low cost and high efficiency. 
         [0057]    Finally, the public keys are exchanged via the transmitter/receivers  93 ,  94 . The results of this exchange, along with the users private keys, are sent to the E-Function Iterator module  42   a ,  42   b , which outputs the common agreed upon secret key  97 .