A method for authenticating previous interaction of a client with a server, comprising: when accessing the server by the client for a first time, then: requesting, by the client, an identity key associated with the server; receiving, at the client, the requested identity key; generating, by the client, a master key corresponding to the server; creating, by the client, one or more seeds by utilizing an encryption function of the identity key and the master key; utilizing, by the client, the one or more seeds to create an asymmetric public and private key pair corresponding to the server; providing, by the client, the created asymmetric public key to the server for storing the asymmetric public key at the server; storing the asymmetric public and private key pair at the client; and when accessing the server by the client again, then authenticating previous interaction with the server by: requesting, by the client, the server for a proof of knowledge of the asymmetric public key; receiving, at the client, the requested proof of knowledge of the asymmetric public key from the server; and determining, by the client, whether the client has previously accessed the server by comparing the received proof of knowledge of the asymmetric public key with the asymmetric public key of the stored public and private key pair. when accessing the server by the client for a first time, then: requesting, by the client, an identity key associated with the server; receiving, at the client, the requested identity key; generating, by the client, a master key corresponding to the server; creating, by the client, one or more seeds by utilizing an encryption function of the identity key and the master key; utilizing, by the client, the one or more seeds to create an asymmetric public and private key pair corresponding to the server; providing, by the client, the created asymmetric public key to the server for storing the asymmetric public key at the server; storing the asymmetric public and private key pair at the client; and when accessing the server by the client again, then authenticating previous interaction with the server by: requesting, by the client, the server for a proof of knowledge of the asymmetric public key; receiving, at the client, the requested proof of knowledge of the asymmetric public key from the server; and determining, by the client, whether the client has previously accessed the server by comparing the received proof of knowledge of the asymmetric public key with the asymmetric public key of the stored public and private key pair. requesting, by the client, an identity key associated with the server; receiving, at the client, the requested identity key; generating, by the client, a master key corresponding to the server; creating, by the client, one or more seeds by utilizing an encryption function of the identity key and the master key; utilizing, by the client, the one or more seeds to create an asymmetric public and private key pair corresponding to the server; providing, by the client, the created asymmetric public key to the server for storing the asymmetric public key at the server; storing the asymmetric public and private key pair at the client; and when accessing the server by the client again, then authenticating previous interaction with the server by: requesting, by the client, the server for a proof of knowledge of the asymmetric public key; receiving, at the client, the requested proof of knowledge of the asymmetric public key from the server; and determining, by the client, whether the client has previously accessed the server by comparing the received proof of knowledge of the asymmetric public key with the asymmetric public key of the stored public and private key pair. requesting, by the client, the server for a proof of knowledge of the asymmetric public key; receiving, at the client, the requested proof of knowledge of the asymmetric public key from the server; and determining, by the client, whether the client has previously accessed the server by comparing the received proof of knowledge of the asymmetric public key with the asymmetric public key of the stored public and private key pair.