The key exchange protocol involves a trusted party (Trent) and a group of
users. Let Alice and Bob be two users of the group.
Trent chooses a random and secret symmetric matrix
over the finite field
, where p is a prime number.
is required when a new user is to be added to the key sharing group.
For example:

New users Alice and Bob want to join the key exchanging group. Trent chooses public identifiers for each of them; i.e., k-element vectors:
.
For example:

Trent then computes their private keys:

Using
as described above:

Each will use their private key to compute shared keys with other participants of the group.
Now Alice and Bob wish to communicate with one another. Alice has Bob's identifier
and her private key
.
She computes the shared key
, where
denotes matrix transpose. Bob does the same, using his private key and her identifier, giving the same result:

They will each generate their shared key as follows:
