A method for generating an escrow session key SK 1 and a private session key SK 2 for encoding digital communications between a device i and an another device j, the method comprising: generating, by a secure server, a master secret key, MSK and global system parameters, GSP for an Identity Based Cryptography, IBC scheme, whereby the MSK and GSP are utilized together with a requesting device's identity to generate an IBC private key IBC-K for the requesting device; encrypting, by the device i, a first element g a with an identity ID j, associated with the another device j, using an Identity Based Encryption, IBE scheme associated with the IBC scheme, where g is a generator of a cyclic multiplicative group G and a is a random number generated by the device i; communicating, by the device i, to the another device j, the encrypted first element, an identity ID i associated with the device i and a session key request such that upon receiving the communication, the another device j is configured to: use the IBE scheme to decrypt the encrypted first element with an IBC private key, IBC-K j, whereby the private key, IBC-K j, is requested and obtained from the secure server; generate a second element g b where g is the generator of the cyclic multiplicative group G and b is a random number generated by the another device j; compute the escrow session key SK 1, using the first element; compute the private session key SK 2, using the first element and the random number b; and communicate the second element and an identity ID j associated with the another device j to the device i, computing, by the device i, the escrow session key SK 1, using the first element, and computing the private session key SK 2, using the second element and the random number a; computing, by the device i, a first combined key SK 11 by obtaining a coproduct of SK 1 and SK 2; generating a key confirmation value using the first combined key SK 11 whereby the key confirmation value is communicated to the another device j, such that upon receiving the key confirmation value, the another device j is configured to: compute a second combined key SK 22 by obtaining a coproduct of SK 1 and SK 2; and verify the received key confirmation value using the second combined key SK 22 and validate the escrow session key SK 1 and the private session key SK 2 if the received key confirmation value is verified. generating, by a secure server, a master secret key, MSK and global system parameters, GSP for an Identity Based Cryptography, IBC scheme, whereby the MSK and GSP are utilized together with a requesting device's identity to generate an IBC private key IBC-K for the requesting device; encrypting, by the device i, a first element g a with an identity ID j, associated with the another device j, using an Identity Based Encryption, IBE scheme associated with the IBC scheme, where g is a generator of a cyclic multiplicative group G and a is a random number generated by the device i; communicating, by the device i, to the another device j, the encrypted first element, an identity ID i associated with the device i and a session key request such that upon receiving the communication, the another device j is configured to: use the IBE scheme to decrypt the encrypted first element with an IBC private key, IBC-K j, whereby the private key, IBC-K j, is requested and obtained from the secure server; generate a second element g b where g is the generator of the cyclic multiplicative group G and b is a random number generated by the another device j; compute the escrow session key SK 1, using the first element; compute the private session key SK 2, using the first element and the random number b; and communicate the second element and an identity ID j associated with the another device j to the device i, use the IBE scheme to decrypt the encrypted first element with an IBC private key, IBC-K j, whereby the private key, IBC-K j, is requested and obtained from the secure server; generate a second element g b where g is the generator of the cyclic multiplicative group G and b is a random number generated by the another device j; compute the escrow session key SK 1, using the first element; compute the private session key SK 2, using the first element and the random number b; and communicate the second element and an identity ID j associated with the another device j to the device i, computing, by the device i, the escrow session key SK 1, using the first element, and computing the private session key SK 2, using the second element and the random number a; computing, by the device i, a first combined key SK 11 by obtaining a coproduct of SK 1 and SK 2; generating a key confirmation value using the first combined key SK 11 whereby the key confirmation value is communicated to the another device j, such that upon receiving the key confirmation value, the another device j is configured to: compute a second combined key SK 22 by obtaining a coproduct of SK 1 and SK 2; and verify the received key confirmation value using the second combined key SK 22 and validate the escrow session key SK 1 and the private session key SK 2 if the received key confirmation value is verified. compute a second combined key SK 22 by obtaining a coproduct of SK 1 and SK 2; and verify the received key confirmation value using the second combined key SK 22 and validate the escrow session key SK 1 and the private session key SK 2 if the received key confirmation value is verified.