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.