US 12,135,811 B2
Encrypted information retrieval
Eli Simon Fox-Epstein, Los Angeles, CA (US); Kevin Wei Li Yeo, New York City, NY (US); Sarvar Patel, Montville, NJ (US); Raimundo Mirisola, Los Angeles, CA (US); and Craig William Wright, Louisville, CO (US)
Assigned to Google LLC, Mountain View, CA (US)
Appl. No. 18/008,554
Filed by Google LLC, Mountain View, CA (US)
PCT Filed Jun. 14, 2022, PCT No. PCT/US2022/033393
§ 371(c)(1), (2) Date Dec. 6, 2022,
PCT Pub. No. WO2022/266071, PCT Pub. Date Dec. 22, 2022.
Claims priority of provisional application 63/210,755, filed on Jun. 15, 2021.
Prior Publication US 2024/0104234 A1, Mar. 28, 2024
Int. Cl. G06F 21/62 (2013.01)
CPC G06F 21/6218 (2013.01) 20 Claims
OG exemplary drawing
 
1. A method, comprising:
generating a partitioned database in which a database is partitioned into shards each having a shard identifier that logically distinguishes each shard from other shards, and database entries in each shard are partitioned into buckets having a bucket identifier that logically distinguishes each bucket in the shard from other buckets in the shard;
receiving, by a server including one or more processors and from a client device, a batch of client-encrypted queries, wherein the batch of client-encrypted queries includes two or more queries that have each been encrypted by the client device and specify a shard identifier for the client-encrypted query;
processing, by the server, the batch of client-encrypted queries using a set of server-encrypted data stored in a database, wherein each database entry is server-encrypted and is capable of being decrypted by a corresponding decryption key, wherein the processing includes:
grouping, by the server, the client-encrypted queries according to shard identifiers of the client-encrypted queries, wherein each group of client-encrypted queries includes multiple queries;
executing, by the server and for each shard, the multiple queries in the group of client-encrypted queries for the shard together in a batch execution process; and
generating, by the server and for each shard, multiple server-encrypted results to the multiple queries in the group of client-encrypted queries; and
transmitting, by the server, the multiple server-encrypted results for each shard to the client device.