A method for verification of search results in an encrypted search process comprising: generating, with a client computing device, an encrypted keyword based on a plaintext keyword using a first cryptographic key stored in a memory of the client computing device; receiving, with the client computing device a search query for an encrypted keyword and checking, with the client computing device, that the encrypted keyword is included in a local search index stored in the memory, wherein the local search index stores a record of all keywords that are stored in at least one of one or more encrypted files stored in a server computing device; transmitting, with the client computing device, a search query including the encrypted keyword to the server computing device through a data network, if the encrypted keyword is included in the local search index; receiving, with the client computing device, a response to the search query and a first plurality of hash values from at least one hash tree from the server computing device through the data network, the first plurality of hash values corresponding to a plurality of nodes in the at least one hash tree corresponding to siblings of nodes in a path from a leaf node corresponding to the response to the query to a root node of the at least one hash tree; generating, with the client computing device, a first message authentication code based on the response to the search query using a second cryptographic key stored in the memory of the client computing device; generating, with the client computing device, a first regenerated root node hash value using the first MAC, the first plurality of hash values, and a predetermined hash function; generating, with an output device in the client computing device, an output message indicating that the response from the server computing device is invalid in response to the first regenerated root node hash value not matching a predetermined first root node hash value stored in the memory of the client computing device; decrypting, with the client computing device, an encrypted file identifier included in the response to the search query to generate a plaintext file identifier using the first cryptographic key stored in the memory of the client computing device only in response to the root node hash value matching the predetermined first root node hash value stored in the memory of the client computing device; and generating, with the output device in the client computing device, another output message including the plaintext file identifier only in response to the root node hash value matching the predetermined first root node hash value stored in the memory of the client computing device. generating, with a client computing device, an encrypted keyword based on a plaintext keyword using a first cryptographic key stored in a memory of the client computing device; receiving, with the client computing device a search query for an encrypted keyword and checking, with the client computing device, that the encrypted keyword is included in a local search index stored in the memory, wherein the local search index stores a record of all keywords that are stored in at least one of one or more encrypted files stored in a server computing device; transmitting, with the client computing device, a search query including the encrypted keyword to the server computing device through a data network, if the encrypted keyword is included in the local search index; receiving, with the client computing device, a response to the search query and a first plurality of hash values from at least one hash tree from the server computing device through the data network, the first plurality of hash values corresponding to a plurality of nodes in the at least one hash tree corresponding to siblings of nodes in a path from a leaf node corresponding to the response to the query to a root node of the at least one hash tree; generating, with the client computing device, a first message authentication code based on the response to the search query using a second cryptographic key stored in the memory of the client computing device; generating, with the client computing device, a first regenerated root node hash value using the first MAC, the first plurality of hash values, and a predetermined hash function; generating, with an output device in the client computing device, an output message indicating that the response from the server computing device is invalid in response to the first regenerated root node hash value not matching a predetermined first root node hash value stored in the memory of the client computing device; decrypting, with the client computing device, an encrypted file identifier included in the response to the search query to generate a plaintext file identifier using the first cryptographic key stored in the memory of the client computing device only in response to the root node hash value matching the predetermined first root node hash value stored in the memory of the client computing device; and generating, with the output device in the client computing device, another output message including the plaintext file identifier only in response to the root node hash value matching the predetermined first root node hash value stored in the memory of the client computing device.