A system for encrypting a communication between a first source computer and a second destination computer, wherein said source and destination computers are each provided respectively with first and second private distributed keys, each associated with a first and second unique private key identifier, said system further comprising:
- i) a key storage server provided with said first and second private distributed keys, each associated with said first and second unique private key identifiers:
- ii) means associated with said source computer for sending a first request to said key storage server for a session key;
- iii) means associated with said key storage server for identifying said source computer and locating its associated first private distributed key;
- iv) means associated with said key storage server for generating a unique session key for the session in question, identified by a unique session identifier;
- v) means associated with said key storage server for encrypting the session key with said source computer's first private distributed key and sending it, with a session identifier, to said source computer,
- vi) means associated with said source computer for using said source computers first private distributed key to decrypt the session key and using the session key to encrypt said communication, which is sent to the destination computer along with said session identifier,
- vii) means associated with said destination computer for receiving the encrypted communication and session identifier and sending a second request to said key storage server for the session key associated with said session identifier;
- viii) means associated with said key storage server for determining from the session identifier whether it has the corresponding session key, and whether it has said destination computer's second private distributed key, and if said key storage server determines from the session identifier that it has the corresponding session key, and has said destination computer's second private distributed key, said key storage server encrypting the session key with said destination computer's private distributed key and communicating it to said destination computer;
- ix) means associated with said destination computer for then decrypting the session key using its private distributed key and decrypting said communication using the decrypted session key.