A system comprising a server coupled to a network used for communication with a client , the server comprising: a memory storing data; and a controller , coupled to the memory and the network , wherein the memory stores an encrypted data which includes a first data which is an encrypted original data that is encrypted by a first secret key and a first random number , and a first hashed value calculated by a first homomorphic function value of the first random number , the first random number being generated by compressing a concatenation of the first secret key and a pseudo-random number generated using the first secret key , wherein the controller receives via the network from the client an encrypted query which includes a second data , which is a keyword encrypted by a second secret key and a second random number , and a second homomorphic function value of the second random number , and wherein the controller is configured to: calculate a third homomorphic function value based on the first random number and the second random number , and process the third homomorphic function value using the second homomorphic function value to generate a fourth homomorphic function value , convert the fourth homomorphic function value to the first data , generate a second hashed value from the first data , and determine whether said first data is correlated with said second data based on the first hashed value and the second hashed value , and wherein each time the second secret key is used once for encrypting, a value of the second secret key is updated to a new second secret key . a memory storing data; and a controller , coupled to the memory and the network , wherein the memory stores an encrypted data which includes a first data which is an encrypted original data that is encrypted by a first secret key and a first random number , and a first hashed value calculated by a first homomorphic function value of the first random number , the first random number being generated by compressing a concatenation of the first secret key and a pseudo-random number generated using the first secret key , wherein the controller receives via the network from the client an encrypted query which includes a second data , which is a keyword encrypted by a second secret key and a second random number , and a second homomorphic function value of the second random number , and wherein the controller is configured to: calculate a third homomorphic function value based on the first random number and the second random number , and process the third homomorphic function value using the second homomorphic function value to generate a fourth homomorphic function value , convert the fourth homomorphic function value to the first data , generate a second hashed value from the first data , and determine whether said first data is correlated with said second data based on the first hashed value and the second hashed value , and wherein each time the second secret key is used once for encrypting, a value of the second secret key is updated to a new second secret key . calculate a third homomorphic function value based on the first random number and the second random number , and process the third homomorphic function value using the second homomorphic function value to generate a fourth homomorphic function value , convert the fourth homomorphic function value to the first data , generate a second hashed value from the first data , and determine whether said first data is correlated with said second data based on the first hashed value and the second hashed value , and wherein each time the second secret key is used once for encrypting, a value of the second secret key is updated to a new second secret key . <EOS>