Method and system for search pattern oblivious dynamic symmetric searchable encryption
AssigneeRobert Bosch GmbH
InventorsAttila Yavuz, Jorge Guajardo Merchan, Thang Hoang
Life of this patent
Estimating the term…
Abstract
An oblivious encrypted search and update method includes transmitting encrypted search queries and encrypted file update requests from a trusted client to at least two different untrusted servers, receiving encrypted search entries and encrypted file entries from the untrusted servers, and decrypting the encrypted search entries and encrypted file entries with the trusted client. The trusted client re-encrypts the decrypted entries and transmits re-encrypted entries that were received from a first untrusted server to a second untrusted server and vice versa to provide obliviousness for encrypted keyword searches and encrypted file updates from the trusted client.
Claims10
A method for searching and updating encrypted data comprising:
- generating, with a trusted client, a first encrypted search query for a first keyword and a first encrypted file update request for a first encrypted file;
- generating, with the trusted client, a second encrypted search query for a second keyword that is different than the first keyword and a second encrypted file update request for a second encrypted file that is different than the first encrypted file;
- transmitting, with the trusted client, the first encrypted search query and the first encrypted file update request to a first untrusted server;
- transmitting, with the trusted client, the second encrypted search query and the second encrypted file update request to a second untrusted server, the second untrusted server being different than the first untrusted server;
- receiving, with the trusted client, a first encrypted search entry corresponding to the first encrypted search query and a first encrypted file entry corresponding to the first encrypted file update request from the first untrusted server;
- receiving, with the trusted client, a second encrypted search entry corresponding to the second encrypted search query and a second encrypted file entry corresponding to the second encrypted file update request from the second untrusted server;
- decrypting, with the trusted client, the first encrypted search entry and the first encrypted file entry using a plurality of cryptographic keys associated with the first untrusted server to generate a first decrypted search entry and a first decrypted file entry;
- decrypting, with the trusted client, the second encrypted search entry and the second encrypted file entry using a plurality of cryptographic keys associated with the second untrusted server to generate a second decrypted search entry and a second decrypted file entry;
- generating, with the trusted client, a first re-encrypted search entry corresponding to the first keyword based on the first decrypted search entry and a first re-encrypted file entry corresponding to a first file identifier based on the first decrypted file entry using the plurality of cryptographic keys associated with the second untrusted server;
- generating, with the trusted client, a second re-encrypted search entry corresponding to the second keyword based on the second decrypted search entry and a second re-encrypted file entry corresponding to a second file identifier based on the second decrypted file entry using the plurality of cryptographic keys associated with the first untrusted server;
- transmitting, with the trusted client, the second re-encrypted search entry and the second re-encrypted file entry to the first untrusted server to update a first encrypted search index stored in the first untrusted server;
- and
- transmitting, with the trusted client, the first re-encrypted search entry and the first re-encrypted file entry to the second untrusted server to update a second encrypted search index stored in the second untrusted server.
A trusted client computing device configured to search and update encrypted data comprising:
- a memory configured to store an index;
- a network interface device configured to transmit data to and receive data from a first untrusted server and a second untrusted server;
- and
- a processor operatively connected to the memory and the network interface, the processor being configured to:
- generate a first encrypted search query for a first keyword based on an entry in the index stored in the memory corresponding to the first keyword and a first encrypted file update request for a first encrypted file based on an entry in the index stored in the memory corresponding to the first encrypted file;
- generate a second encrypted search query for a second keyword based on an entry in the index stored in the memory corresponding to the second keyword, the second keyword being different than the first keyword, and a second encrypted file update request for a second encrypted file based on an entry in the index stored in the memory corresponding to the second encrypted file, the second encrypted file being different than the first encrypted file;
- transmit the first encrypted search query and the first encrypted file update request to the first untrusted server;
- transmit the second encrypted search query and the second encrypted file update request to the second untrusted server, the second untrusted server being different than the first untrusted server;
- receive a first encrypted search entry corresponding to the first encrypted search query and a first encrypted file entry corresponding to the first encrypted file update request from the first untrusted server;
- receive a second encrypted search entry corresponding to the second encrypted search query and a second encrypted file entry corresponding to the second encrypted file update request from the second untrusted server;
- decrypt the first encrypted search entry and the first encrypted file entry using a plurality of cryptographic keys associated with the first untrusted server to generate a first decrypted search entry and a first decrypted file entry;
- decrypt the second encrypted search entry and the second encrypted file entry using a plurality of cryptographic keys associated with the second untrusted server to generate a second decrypted search entry and a second decrypted file entry;
- generate a first re-encrypted search entry corresponding to the first keyword based on the first decrypted search entry and a first re-encrypted file entry corresponding to a first file identifier based on the first decrypted file entry using the plurality of cryptographic keys associated with the second untrusted server;
- generate a second re-encrypted search entry corresponding to the second keyword based on the second decrypted search entry and a second re-encrypted file entry corresponding to a second file identifier based on the second decrypted file entry using the plurality of cryptographic keys associated with the first untrusted server;
- transmit the second re-encrypted search entry and the second re-encrypted file entry to the first untrusted server to update a first encrypted search index stored in the first untrusted server;
- and
- transmit the first re-encrypted search entry and the first re-encrypted file entry to the second untrusted server to update a second encrypted search index stored in the second untrusted server.
Dependencies are inferred from the claim text.