Generating a session key from a known shared master key is known in the art. However, previous approaches have a number of limitations. For example, storing a large number of keys for session communication has an impact over the performance of a system and may also make the system vulnerable if the security of the system is jeopardized. Another way of creating a session key is by using one-way hash functions. However, generating a session key using a one-way hash function requires complex mathematical operations that come at the expense of computation time. Yet another method of creating a session key known in the art is by exchanging a random signal between each of the communicating users and then using the exchanged random signals to form the new key. However, this method creates overhead, as both parties or communicators are required to compute random numbers for generating the key. Accordingly, there is a need for a method and system of generating a session key so that both the computing time and the memory requirement can be reduced.