Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
EFFICIENTLY QUERYING DATABASES WHILE PROVIDING DIFFERENTIAL PRIVACY
Document Type and Number:
WIPO Patent Application WO/2019/104140
Kind Code:
A1
Abstract:
Technologies are provided for efficiently querying a database using a plurality of oblivious random-access memories (ORAMs) while providing differential privacy. Subsets of a set of database records can be stored in a plurality of ORAMs. The subsets of database records in the separate ORAMs can be concurrently accessed (for example, by a database query server). When a database query is received, a number of database records that match the query can be identified for each of the ORAMs. A differential privacy constraint can be used to determine an additional number of database records to be retrieved from each ORAM. The differential privacy constraint can specify an upper bound on the number of records to be retrieved from each ORAM to prevent (or reduce the risk of) information leakage. Once all of the identified records are retrieved from the plurality of ORAMs, the additional records can be discarded.

Inventors:
KOBLINER YAACOV (US)
KELLARIS GEORGIOS (CA)
KOLLIOS GEORGE (US)
Application Number:
PCT/US2018/062207
Publication Date:
May 31, 2019
Filing Date:
November 21, 2018
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
KOBLINER YAACOV NISSIM (IL)
KELLARIS GEORGIOS (GR)
KOLLIOS GEORGE (US)
International Classes:
G06F3/06; G06F12/10; G06F21/60
Foreign References:
US20150039903A12015-02-05
US20160098355A12016-04-07
US20170212679A12017-07-27
Other References:
DACHMAN-SOLED ET AL.: "Oblivious network RAM and leveraging parallelism to achieve obliviousness", IN: INTERNATIONAL CONFERENCE ON THE THEORY AND APPLICATION OF CRYPTOLOGY AND INFORMATION SECURITY, 12 January 2017 (2017-01-12), XP061022156, Retrieved from the Internet
DAUTRICH JR ET AL.: "Burst ORAM: Minimizing ORAM Response Times for Bursty Access Patterns", IN: PROCEEDINGS OF THE 23RD USENIX SECURITY SYMPOSIUM, 22 August 2014 (2014-08-22), pages 1 - 17, XP055615945, Retrieved from the Internet
Attorney, Agent or Firm:
LUNSFORD, John, M. (LLPOne World Trade Center, Suite 1600,121 SW Salmon Stree, Portland OR, US)
Download PDF:
Claims:
CLAIMS

WHAT IS CLAIMED IS:

1. A system comprising:

a plurality of oblivious random-access memories (ORAMs); and

a database query server, wherein the query server performs operations, the operations comprising:

storing separate database record subsets of a set of database records in the plurality of ORAMs,

receiving a database query from a client,

determining a number of the database records to be retrieved from the plurality of ORAMs that satisfies a differential privacy constraint,

using the plurality of ORAMs to concurrently retrieve the determined number of database records from the separate database record subsets stored in the plurality of ORAMs, wherein the retrieved database records comprises one or more database records that match the received query and an additional one or more database records, and

returning the one or more database records that match the received query to the client.

2. The system according to claim 1, wherein:

the determining the number of the database records to be retrieved from the plurality of ORAMs that satisfies the differential privacy constraint comprises, for each ORAM in the plurality of ORAMs:

determining a number of database records to retrieve from the ORAM that satisfies the differential privacy constraint; and

the concurrently retrieving the determined number of database records from the separate database record subsets stored in the plurality of ORAMs comprises, for each ORAM in the plurality of ORAMs:

retrieving database records from the ORAM, wherein the retrieved records comprise one or more database records that match the database query and an additional one or more database records, such that the combined number of the one or more matching database records and the one or more additional database records is equal to the determined number of database records to retrieve from the ORAM that satisfies the differential privacy constraint.

3. The system according to any of preceding claims 1-2, wherein the determining the number of the database records to be retrieved from the plurality of ORAMs that satisfies the differential privacy constraint comprises:

determining a number of database records in the set of database records that match the database query; and

using the number of database records that match the database query, determining a number of database records to be retrieved from each of the plurality of ORAMs to satisfy the differential privacy constraint.

4. The system according to any of preceding claims 1-3, wherein the operations further comprise:

receiving multiple database queries from the client; and

batching the multiple database queries, wherein the batching comprises:

determining a union of database records that match one or more of the multiple database queries,

using the union of records to determine the number of the database records to be retrieved from the plurality of ORAMs that satisfies the differential privacy constraint, using the plurality of ORAMs to concurrently retrieve the determined number of database records from the separate database record subsets stored in the plurality of ORAMs, wherein the retrieved database records comprises one or more database records in the union of records and an additional one or more database records, and

returning the union of records to the client.

5. The system according to any of preceding claims 1-4, wherein:

the plurality of ORAMs are executing on multiple servers; and

the database query server is configured to communicate with the plurality of ORAMs via a computer network.

6. The system according to any of preceding claims 1-5, wherein the differential privacy constraint is an approximate differential privacy constraint.

7. The system according to any of preceding claims 1-6, wherein determining the number of the database records to be retrieved from the plurality of ORAMs that satisfies the differential privacy constraint comprises determining a maximum number of records to be retrieved from a given ORAM of the plurality of ORAMS.

8. The system according to preceding claim 7, wherein the maximum number of records to be retrieved from the given ORAM is bounded by the equation:

wherein m is a total number of database records in the set of database records, k0 is a total number of the database records that match the database query, Xt has a value of 1 if a given

is less than a specified constraint value.

9. A computer-implemented method, comprising:

storing separate database record subsets of a set of database records in a plurality of oblivious random-access memories (ORAMs);

receiving a database query;

responsive to receiving the database query, determining a number of the database records to be retrieved from the plurality of ORAMs that satisfies a differential privacy constraint;

concurrently retrieving the determined number of database records from the separate database record subsets stored in the plurality of ORAMs, wherein the retrieved database records comprise one or more database records that match the received query and an additional one or more database records; and

returning the one or more database records that match the received query.

10. The method according to preceding claim 9, wherein: the determining the number of the database records to be retrieved from the plurality of ORAMs that satisfies the differential privacy constraint comprises, for each ORAM in the plurality of ORAMs determining a number of database records to retrieve from the ORAM that satisfies the differential privacy constraint; and

the concurrently retrieving the determined number of database records from the separate database record subsets stored in the plurality of ORAMs comprises, for each ORAM in the plurality of ORAMs retrieving database records from the ORAM, wherein the retrieved records comprise one or more database records that match the database query and an additional one or more database records, such that the combined number of the one or more matching database records and the one or more additional database records is equal to the determined number of database records to retrieve from the ORAM that satisfies the differential privacy constraint.

11. The method according to any of preceding claims 9-10, wherein the determining the number of the database records to be retrieved from the plurality of ORAMs that satisfies the differential privacy constraint comprises:

determining a number of database records in the set of database records that match the database query; and

using the number of database records that match the database query, determining a number of database records to be retrieved from each of the plurality of ORAMs to satisfy the differential privacy constraint.

12. The method according to any of preceding claims 9-11, wherein the additional one or more database records comprise database records that do not match the database query.

13. The method according to any of preceding claims 9-12, wherein the concurrently retrieving the determined number of database records from the separate database record subsets stored in the plurality of ORAMs comprises accessing the plurality of ORAMs via a computer network.

14. The method according to any of preceding claims 9-13, wherein the differential privacy constraint is a concentrated differential privacy constraint.

15. The method according to any of preceding claims 9-14, wherein determining the number of the database records to be retrieved from the plurality of ORAMs that satisfies the differential privacy constraint comprises determining a maximum number of records to be retrieved from each of the plurality of ORAMS.

Description:
EFFICIENTLY QUERYING DATABASES WHILE PROVIDING DIFFERENTIAL PRIVACY

RELATED APPLICATIONS

[0001] This application claims priority under 35 U.S.C. § 119(e) of U.S. Provisional Patent Application No. 62/589,468 filed November 21, 2017, entitled EFFICIENTLY QUERYING DATABASES WHILE PROVIDING DIFFERENTIAL PRIVACY, which is incorporated by reference herein in its entirety by reference.

FIELD

[0002] This application is directed towards systems, methods and devices employing various combinations of techniques related to differential privacy (DP) and oblivious RAM (ORAM) to efficiently query a database without compromising the security of the database or records stored in the database.

PARTIES TO JOINT RESEARCH AGREEMENT

[0003] (1) Yaacov Nissim Kobliner, Professor of Computer Science at Georgetown University; (2) George Kollios, Professor of Computer Science at Boston University; and (3) Georgios Kellaris, Data Privacy Expert with TandemLaunch, Inc.

BACKGROUND

[0004] There is an interest in protecting against attacks to steal or replicate sensitive data by malicious parties. In some instances, data may be stored in databases, across social media sites, privately, etc. Often, however, databases are the preferred target. In these attacks, malicious parties may attempt to calculate the data content and structure of a database by monitoring answers to numerous encrypted queries in an attempt to re-construct the distribution of database records. These attacks are commonly known as“re-construction” attacks.

[0005] For example, by manipulating the“access pattern leakage” of a database (the returned query results), a malicious party could in principle deduce that the same encrypted record is returned by separate queries, thus providing insight into the content and structure of the database. Relatedly, the“volume pattern leakage” (which refers to the size of the result set for a query) has been shown to also potentially reconstruct (or partially reconstruct) a database. Other related attacks exist, such as re-construction link attacks that are usually directed towards social media sites in an effort to uncover user (and user-linked) information.

SUMMARY

[0006] In order to overcome of the vulnerabilities inherent to database information, the concept of differential privacy (DP) was developed, which in essence attempts to provide data privacy even in the presence of a malicious party by mathematically minimizing any single individual’s data having an effect on the outcome of the malicious party’s queries. Additionally, the concept of oblivious RAM (ORAM) has been introduced in concert with differential privacy to produce a powerful defense against re-construction attacks known as DP-ORAM. Oblivious RAM (ORAM) allows a client to conceal their access pattern to the database (or other remote storage) by continuously shuffling and re-encrypting data as they are accessed. Thus, in an ORAM protocol a malicious party can observe the physical storage locations accessed, but the ORAM algorithm ensures that the malicious party has a negligible probability of learning anything about the true (logical) access pattern. A drawback of the current DP-ORAM strategy is that current implementations of ORAM are not practically efficient as the ORAM protocol requires serial invocation (once for each record retrieved). This can create an undesirable processing overhead. Thus, it would be extremely valuable to reduce DP-ORAM latency.

[0007] In an example embodiment, a system comprises a plurality of oblivious random-access memories (ORAMs); and a database query server, wherein the query server performs operations, the operations comprising: storing separate database record subsets of a set of database records in the plurality of ORAMs, receiving a database query from a client, determining a number of the database records to be retrieved from the plurality of ORAMs that satisfies a differential privacy constraint, using the plurality of ORAMs to concurrently retrieve the determined number of database records from the separate database record subsets stored in the plurality of ORAMs, wherein the retrieved database records comprises one or more database records that match the received query and an additional one or more database records, and returning the one or more database records that match the received query to the client.

[0008] In a different or further embodiment, a computer-implemented method comprises: storing separate database record subsets of a set of database records in a plurality of ORAMs; receiving a database query; responsive to receiving the database query, determining a number of the database records to be retrieved from the plurality of ORAMs that satisfies a differential privacy constraint; concurrently retrieving the determined number of database records from the separate database record subsets stored in the plurality of ORAMs, wherein the retrieved database records comprise one or more database records that match the received query and an additional one or more database records; and returning the one or more database records that match the received query.

[0009] In a different or further embodiment, a non-transitory computer-readable medium stores executable instructions that, when executed by a computer, cause the computer to perform operations, the operations comprising: storing separate database record subsets of a set of database records in a plurality of ORAMs; receiving a database query; determining a number of the database records to be retrieved from the plurality of ORAMs that satisfies a differential privacy constraint; using the plurality of ORAMs to concurrently retrieve the determined number of database records from the separate database record subsets stored in the plurality of ORAMs, wherein the retrieved database records comprise one or more database records that match the received database query and an additional one or more database records, and returning the one or more database records that match the received database query.

[0010] These contributions can contribute towards making DP-ORAM systems applicable in real- life applications.

[0011] Further aspects of the invention will be brought out in the following portions of the specification, wherein the detailed description is for the purpose of fully disclosing preferred embodiments of the invention without placing limitations thereon.

BRIEF DESCRIPTION OF THE DRAWINGS

[0012] FIG. 1 is a system diagram depicting an example system comprising a database query server configured to access a plurality of oblivious random-access memories (ORAMs).

[0013] FIG. 2 is a system diagram depicting an example system comprising a database query server configured to populate a plurality of ORAMs. [0014] FIG. 3 is a flowchart of an example method for efficiently processing a database query while maintaining differential privacy.

[0015] FIG. 4 is a flowchart of an example method for retrieving data from a plurality of ORAMs while maintaining differential privacy.

[0016] FIG. 5 is a flowchart of another example method for retrieving data from a plurality of ORAMs while maintaining differential privacy.

[0017] FIG. 6 is a diagram depicting a generalized example of a suitable computing environment in which the described innovations may be implemented.

DETAILED DESCRIPTION

[0018] Previous DP-ORAM technologies make use of a single ORAM storing a complete set of data items. Such technologies may be impractical for some applications, since all data access operations required for a given query must be handled by the single ORAM. Latency of the ORAM access operations can be reduced by distributing the set of data items across multiple, independent ORAMs and accessing the multiple ORAMs concurrently. However, accessing multiple ORAMs may introduce a privacy vulnerability. For example, if a malicious party can observe the ORAM access operations, the malicious party may be able to use patterns of ORAM access operations for particular queries to learn which ORAMs store particular records. The malicious party could systematically develop queries to isolate access to a particular ORAM and learn information specific to the records stored on that ORAM.

[0019] At least some of the embodiments of the technologies described herein solve these problems by using a differential privacy constraint to obfuscate the number of matching records retrieved from each ORAM for a given query. For example, subsets of a set of database records can be stored in a plurality of ORAMs such that a subset of database records is stored in each ORAM. When a database query is received, a number of database records that match the query can be identified for each of the ORAMs. A differential privacy constraint can then be used to determine an additional number of database records to be retrieved from each ORAM. Once all of the identified records are retrieved from the plurality of ORAMs, the additional records can be discarded. Thus, in at least some cases, ORAM access latency can be reduced by accessing the plurality of ORAMs concurrently (or in parallel), while the risk of information leakage from the ORAM access operations is reduced or eliminated by obfuscating the actual number of matching records retrieved from each ORAM.

[0020] In a different or further embodiment, a differential privacy index can be used to identify records to be retrieved from each ORAM for a given query. The differential privacy index can identify records to be retrieved from the plurality of ORAMs for the given query. The identified records can include the records that match the query, as well as a number of additional records. The number of additional records specified for each ORAM can be determined using the differential privacy constraint.

[0021] In a different or further embodiment, a separate differential privacy index can be created for each ORAM. The differential privacy index for a given ORAM can be created based on the subset of database records stored in the given ORAM. The differential privacy index for the given ORAM can identify any database records stored in the given ORAM’s subset of database records which match a given query, along with a number of additional records to be retrieved from the ORAM for the given query. The number of additional records can be determined using the differential privacy constraint.

[0022] In at least some embodiments, the differential privacy constraint defines an upper bound on the total number of records to be retrieved from each ORAM. This can be advantageous in some scenarios to provide security against information leakage, while still providing acceptable query latency. For example, it may be possible to obfuscate the number of matching records retrieved from each ORAM by always returning all (or an arbitrarily large number of) records stored on each ORAM. However, for many applications this approach does not provide acceptable communication efficiency or query latency. By specifying an upper bound on the number of records to be retrieved from each ORAM, the differential privacy constraint can define a balance between security and communication efficiency. In at least some embodiments, the differential privacy constraint defines an upper bound that provides acceptable security against information leakage while also enforcing a minimum acceptable error in query accuracy.

[0023] FIG. 1 is a system diagram depicting an example system 100 comprising a database query server 110 configured to access a plurality of oblivious random-access memories (ORAMs) 133- 135. [0024] An ORAM allows data to be accessed in a memory of a computing device without leaking any information about a memory access pattern (or guaranteeing that any information leakage will be below a specified security risk threshold). An ORAM can comprise one or more hardware and/or software components configured to interface with a physical random-access memory of a computing device. An ORAM can scramble memory address locations so that any two sequences of memory access operations are indistinguishable to a malicious party. Various ORAM

implementations exist. Example ORAM implementations include, but are not limited to, Path- ORAM, TP-ORAM, TaORAM, Square Root ORAM, Hierarchical ORAM, Binary-Tree ORAM, and Interleave Buffer Shuffle Square Root ORAM. Use of an ORAM to obfuscate memory access can incur communication and/or storage overhead. The Path ORAM, TP-ORAM, and TaORAM protocols have communication and storage overheads of O(logn) and 0(n), respectively.

[0025] Each of the plurality of ORAMs 133-135 contains a subset of database records from a set of database records (not shown). For example, the ORAM 133 stores database records subset 143, ORAM 135 stores database records subset 145, etc. While two ORAMs are depicted in FIG. 1, this is not intended to be limiting. Other numbers of ORAMs are possible. In at least some

embodiments, the number of ORAMs can be based on a specified minimum latency requirement.

[0026] The database record subsets may be, but are not necessarily, similar in size. Various techniques may be used to distribute the database records across the plurality of ORAMs 133-135. For example, a random distribution may be used to assign database records to various ORAMs of the plurality of ORAMs 133-135. In a particular embodiment, each record in the set of database records is processed using a hash function. For a given database record, the result of the hash function is modulated by the number of ORAMs in the plurality of ORAMs 133-135 and the result of the modulation identifies the ORAM in which the given database record is to be stored.

[0027] The database query server 110 is configured to process database queries, at least in part, by retrieving database records from the database records subsets 143-145 stored in the plurality of ORAMs 133-135. The database query server 110 is configured to access the plurality of ORAMs 133-135 concurrently. For example, the database query server 110 can be configured to use multiple threads and/or processes to access the plurality of ORAMs 133-135 concurrently (or in parallel). [0028] When retrieving records from the plurality of ORAMs 133-135, the database query server 110 uses a differential privacy constraint 115 to prevent (or reduce the risk of) information leakage based on the database query server’s access operations. For a given database query, the differential privacy constraint 115 can be used to determine a number of database records to be retrieved from the plurality of ORAMs 133-135. The database query server 110 can determine the records in the set of database records that match a given database query. The database query server 110 can then identify ORAMs, of the plurality of ORAMs 133-135, in which the matching database records are stored. Using the differential privacy constraint 115, the database query server 110 can then determine a number of additional records to be retrieved from each of the plurality of ORAMs 133- 135 in order to prevent (or reduce) information leakage. For example, for a given query, the differential privacy constraint 115 can specify a minimum and/or maximum number of records to be retrieved from each ORAM. In at least some scenarios, the differential privacy constraint 115 is used to specify a number of records to be retrieved from each ORAM, such that a same (or similar) number of records is retrieved from each ORAM in the plurality of ORAMs 133-135. For example, all of the records retrieved from one ORAM may match the given database query, while for another ORAM some of the retrieved records may match the given database query while other retrieved records do not, and for yet another ORAM none of the retrieved records may match the given database query.

[0029] Various differential privacy techniques can be used to define the differential privacy constraint 115. Example differential privacy techniques include, but are not limited to, pure differential privacy, approximate differential privacy, concentrated differential privacy, zero concentrated differential privacy, and Renyi differential privacy.

[0030] In at least some embodiments, the database query server 110 comprises a differential privacy index 113. The differential privacy index 113 can be constructed using the differential privacy constraint 115. The differential privacy index 113 can identify, for a given query, which memory locations in the plurality of ORAMs 133-135 should be accessed in order to retrieve the database records that match the given query and also satisfy the differential privacy constraint 115.

[0031] In FIG. 1, the database query server 110 is configured to receive a database query 153. The database query 153 can be received, for example, from a client (not shown). The client can comprise one or more hardware and/or software components of a separate computing device. In such an embodiment, the database query 153 can be received via one or more wired and/or wireless communication channels (such as a computer network connection, etc.). Alternatively, the client and the database query server 110 can be part of a same computing device. For example, the client and the database query server 110 can comprise separate software and/or hardware components that are separated by a logical and/or physical security boundary in order to prevent the client from exercising direct control over the database query server 110.

[0032] The database query server 110 uses the differential privacy constraint 115 to determine a number of the database records to be retrieved from the plurality of ORAMs 133-135 that satisfies the differential privacy constraint 115. The database query server 110 concurrently transmits access operations 163-165 to the plurality of ORAMs 133-135 to retrieve the determined number of database records from the separate database records subsets 143-145 stored in the plurality of ORAMs 133-135. The retrieved database records comprise one or more database records that match the query 153 and an additional one or more database records. For example, the database records 173 retrieved from the ORAM 133 comprise one or more records that match the database query 153 and one or more additional records. The database records 175 retrieved from the ORAM 135 also comprise one or more records that match the database query 153 and one or more additional records.

[0033] The additional records can comprise records that do not match the database query 153. Additionally or alternatively, the additional records can comprise one or more copies of matching records. The returned records can be encrypted so that the return of multiple copies of matching records cannot be detected by an observer. Additionally or alternatively, the additional records can comprise dummy records that do not contain useful data, but instead are stored in the plurality of ORAMs 133-135 for the purpose of satisfying the differential privacy constraint 115. In at least some embodiments, the type of the additional record that is retrieved from the plurality of ORAMs 133-135 can be specified by the client.

[0034] The database query server 110 returns the one or more database records 155 that match the query 153 to the client. For example, the database query server 110 can be configured to receive the records 173-175 from the plurality of ORAMs 133-135, discard the one or more additional records, and return the remaining one or more matching records 155 to the client. Alternatively, the database query server 110 can be configured to transmit the one or more matching records and the one or more additional records to the client. In such an embodiment, the client can be configured to discard the one or more additional records. For example, in a scenario where the one or more additional records include encrypted copies of the one or more matching records, the client can decrypt the records and discard any redundant copies of matching records.

[0035] In at least some scenarios, a received query requests an aggregate operation based on database records that match a given predicate (e.g., requesting a count of (or average age of) people for which a given condition is true, etc.). In such a scenario, the database server 110 can retrieve the database records from the plurality of ORAMs 133-135 that match the query predicate, along with a number of additional records in order to satisfy the differential privacy constraint 115. The database query server 110 can then compute the requested aggregate operation based on the retrieved records. In at least some embodiments, the one or more additional records are included in the aggregate operation. For example, the differential privacy constraint 115 can include an accuracy value that restricts an amount by which the retrieved additional records can skew the accuracy of the aggregate operation. In such an embodiment, a total number of records to be retrieved from the plurality of ORAMs 133-135 can be determined that satisfies the accuracy value and also keeps the risk of information leakage below an acceptable threshold.

[0036] The database query server 110 can be configured to use separate threads and/or processes to concurrently access the plurality of ORAMs 133-135. In at least some embodiments, the database query server 110 and the plurality of ORAMs 133-135 can be part of a same computing device. In such an embodiment, the separate threads and/or processes can be used to access the plurality of ORAMs 133-135 directly. Alternatively, the database query server 110 and the plurality of ORAMs 133-135 can be distributed across multiple computing devices. For example, at least some of the plurality of ORAMs 133-135 can be executing on separate servers. In such an embodiment, the database query server 110 can be configured to use the separate threads and/or processes to communicate with the at least some of the plurality of ORAMs 133-135 via one or more computer networks.

[0037] In at least some embodiments, the database query server 110 is configured to batch multiple database queries received from a client. Batching the multiple database queries can comprise determining a union of database records that match one or more of the multiple database queries and using the union of records to determine a number of database records to be retrieved from the plurality of the ORAMs 133-135 that satisfies the differential privacy constraint 115. For example, two or more of the multiple queries may match overlapping ranges of database records. Thus, a union of the database records that match the multiple database queries may represent a smaller total number of database records that would be retrieved if each of the multiple database queries were executed separately. In at least some cases, this can also reduce the number of additional records that must be retrieved from each ORAM to satisfy the differential privacy constraint 115. For example, processing each query separately may require more additional records to be retrieved from the ORAMs 133-135 than is required to obfuscate the union of the database records when processing the queries as a batch. Thus, in at least some scenarios, batching database queries can improve the efficiency of the communication between the database query server 110 and the plurality of ORAMs 133-135 by reducing the overall number of database records that must be retrieved from the plurality of ORAMs.

[0038] FIG. 2 is a system diagram depicting the example system 100 comprising the database query server 110 configured to populate the plurality of ORAMs 133-135. The database query server 110 can be configured to retrieve a database record set 222 from a datastore 220 and to store subsets 243-245 of the database racket set 222 in the plurality of ORAMs 133-135. The datastore 220 can be part of a database system (such as a relational database management system, etc.).

Additionally or alternatively, the datastore 220 can comprise one or more computer readable media. The database records that 222 can represent all or part of the data stored in a database. For example, the database record set 222 can comprise a plurality of records from one or more database tables.

[0039] The database query server 110 can distribute the records in the database record set 222 evenly across the plurality of ORAMs 133-135 such that a same, or similar, number of database records is stored in each of the database record subsets 243-245. In at least some embodiments, the database query server 110 can be configured to distribute the database records randomly amongst the plurality of ORAMs 133-135. The database query server 110 can encrypt the database records before storing them in the plurality of ORAMs 133-135. The encrypted database records can be stored in a randomized order so that a malicious party observing the storage operations cannot determine which database records were stored in which of the plurality of ORAMs 133-135.

[0040] In at least some embodiments, after storing the database records in the plurality of ORAMs 133-135, the database query server 110 can generate the differential privacy index 113 using the differential privacy constraint 115. The differential privacy index 113 can be used to identify records in the plurality of ORAMs 133-135 that should be retrieved in response to receipt of a database query in order to satisfy the differential privacy constraint 115. For example, for a given database query the differential privacy index 113 can identify database records to be retrieved from each of the ORAMs 133-135. A database record can be retrieved, for example, by an ORAM identifier for the ORAM where the database record is stored and a memory location identifier (such as a memory address) that can be used by the ORAM to retrieve the database record. In some embodiments, a single differential privacy index 113 is created for the entire database record set 222.

[0041] Alternatively, a separate differential privacy index can be created for each of the database record subsets 243-245. In such an embodiment, the separate differential privacy indices can be accessed concurrently; whereas, in an embodiment with a single differential privacy index, the differential privacy index look up operations must be completed before concurrent data access operations can commence. However, use of a single differential privacy index may improve communication efficiency since the determination of the number of records to be retrieved from each ORAM can be based on a consolidated view of the entire record set 222 instead of the isolated views of the record subsets 243-245 stored in the separate ORAMs 133-135.

[0042] The differential privacy index 113 can be constructed using a differential privacy sanitizer (not shown). For a given collection of database queries, the differential privacy sanitizer can construct the differential privacy index 113 such that all queries in the collection of database queries can be answered with a given accuracy, while also satisfying the privacy restrictions defined in the differential privacy constraint 115.

[0043] For example, if two database record sets D e X n and D 2 e X n over a domain X are considered to be neighboring (denoted D 1 ~D 2 ) if they differ in exactly one database record, then a randomized algorithm A can be considered to be ( e , 5)-differentially private if, for all D 1 ~D 2 e X n , and for all subsets O in the output space of A ,

Pr [A ^ e O] < exp(e) Pr[A(£> 2 ) e 0] + < 5, wherein, the probability (Pr) over the randomness of the algorithm A. [0044] For a collection of database queries Q, a (e, d, a, b) -differentially private sanitizer for Q can be defined as a pair of algorithms (A, B), such that:

[0045] A is (e, 5)-differentially private, and

[0046] Given an input database record set D = d n ) e X n , A produces a data structure DS (such as differential privacy index 113) such that, with probability 1— /?, for all database queries

[0047] Here, a represents a maximum allowed deviation in accuracy between the correct response for query q and the result of algorithm B (such as a maximum number of additional records to be retrieved from the ORAMs when processing q). b represents a risk of potential information leakage. The values e , d , a , and/or b can be specified in the differential privacy constraint 115. In at least some embodiments, an implementation of the algorithm A can be specified in the differential privacy constraint as well.

[0048] In the example given above, the query q represents a predicate wherein q(di) produces a value of 1 if database record d t matches the predicate, and produces a value of 0 otherwise. Thus, the aggregator q(di) represents a count of the records in D that match the predicate. The algorithm B produces a count of the records retrieved from one or more of the ORAMs 133-135 for q using DS. In an embodiment where a single differential privacy index is desired, D represents the full database record set 222, A is used to produce a single differential privacy index (DS) for the full record set 222. In an embodiment where a separate index is produced for each ORAM, A is used to produce a differential privacy index for each record subset 243-245. In such an

embodiment, B can be executed for each ORAM’s differential privacy index.

[0049] The database records stored in the plurality of ORAMs 133-135 can be stored in an encrypted format. In at least some embodiments, the storage process can enforce a uniform record length for the database records. This may be advantageous in some scenarios, as the uniform record length can obfuscate the actual length of the data stored in each record. However, in some scenarios, using such a fixed-length record strategy can waste storage space. For example, when the encrypted records are required to be the same length, each record must be at least as long as the longest record. In scenarios where there is a high degree of variability in record length, making each record as long as the longest record may consume a large amount of storage space. [0050] This can be addressed by storing the database records in the plurality of ORAMs 133-135 with variable record lengths. For example, separate ORAMs, of the plurality of ORAMs 133-135, can be designated to store records with different lengths. For example, if record lengths are defined in blocks (with a maximum record length designated as L blocks), then the plurality of ORAMs 133-135 can be associated with different block lengths. In a particular embodiment, l different record lengths are defined, where l = 0(log 2 L). This results in record lengths of 2 L for i =

0 The embodiment where l = 0(log 2 L ) results in a maximum factor 2 increase in storage volume. It is possible to choose a basis other than 2. For example, the number of record lengths can be chosen based on a distribution of record lengths of the database records.

[0051] The database records can be padded up to the closest defined record length and stored in an ORAM associated with that record length. After padding the records, the records can be encrypted. In at least some embodiments, an ORAM can be created for each defined record length.

Additionally or alternatively, multiple ORAMs can be associated with certain record lengths. For example, if a distribution of records across the defined record lengths is not uniform, additional ORAMs may be needed for certain record lengths to create a uniform distribution of the database records across the ORAMs.

[0052] FIG. 3 is a flowchart of an example method 300 for efficiently processing a database query while maintaining differential privacy. Any of the example systems described herein can be used to perform the example method 300. For example, system 100 can be used to perform all or part of the example method 300.

[0053] At 310, separate database record subsets of a set of database records are stored in a plurality of ORAMs. For example, the database query server 110 can store record subsets 243-245 of the database record set 222 in the plurality of ORAMs 133-135. The database record subsets can be defined such that a same or similar number of database records is stored in each of the plurality of ORAMs.

[0054] Subsequent to storing the database record subsets in the plurality of ORAMs, a database query can be received. For example, the database query can be database query 153 received by the database query server 110. The query can comprise a request for one or more of the database records in the set of database records that match search criteria (such as one or more predicates) defined in the query. Additionally or alternatively, the query can comprise a request for an aggregate value based on the database records that match the search criteria.

[0055] At 320, responsive to receiving the database query, a number of the database records to be retrieved from the plurality of ORAMs that will satisfy differential privacy constraint is

determined. For example, the database query server 110 can identify database records to be retrieved from the plurality of ORAMs 133-135 that will satisfy the differential privacy constraint 115. In at least some embodiments, a data structure created using a differential privacy sanitizer (such as the differential privacy index 113) can be used to identify the records to be retrieved. A number of records stored in the plurality of ORAMs that match the received database query can be determined. The differential privacy constraint can be used to determine an additional number of database records to be retrieved from each of the plurality of ORAMs in order to prevent (or reduce the risk of) information leakage resulting from ORAM access operations.

[0056] In at least some embodiments, determining the number of database records to be retrieved from the plurality of ORAMs that satisfies the differential privacy constraint comprises determining the maximum number of records to be retrieved from a given ORAM of the plurality of ORAMs. For example, a maximum number of records to be retrieved from each of the plurality of ORAMs can be determined such that a number of database records retrieved from each ORAM is equalized. In some scenarios this may mean a greater number of additional records are retrieved from some ORAMs while a smaller number of additional records are retrieved from other ORAMs. For example, for an ORAM containing a larger number of records that match the given query, fewer or no additional records may be retrieved; whereas for an ORAM containing a smaller number records that match the given query, more additional records may be retrieved. For an ORAM containing no matching records, all retrieved records may be classified as additional records.

[0057] At 330, the determined number of database records are concurrently retrieved from the separate database record sets stored in the plurality of ORAMs. The retrieved database records comprise one or more database records that match the received query and an additional one or more database records. For example, the database query server 110 can concurrently retrieve database records 173-175 from the plurality of ORAMs 133-135. The concurrent retrieval can involve the use of multiple threads and/or processes. A thread (or child process) can be spawned for each of the plurality of ORAMs. For example, the database query server 110 can spawn a separate thread (or child process) for each of the plurality of ORAMs 133-135. The separate threads (or child processes) can then be used to retrieve identified database records from the corresponding ORAMs. Each of the separate threads (or processes) can operate independently to retrieve identified database records from a separate ORAM. For example, one thread can be used to perform database record access operations 163 to retrieve the database records 173 from the ORAM 133, while another thread can be used to concurrently perform database record access operations 165 to retrieve the database records 175 from the ORAM 135.

[0058] A computing system can be said to be concurrent if it can support two or more actions in progress at a same time, whereas the computing system can be said to be parallel if it can support two or more actions executing simultaneously. Thus, two threads (or processes) are concurrent if they are in progress at a given time, even if they are not executing simultaneously. In a computing environment comprising multiple processor cores, the separate threads (or processes) may execute simultaneously, and thus be parallel, at least part of the time.

[0059] After the database records are retrieved from the plurality of ORAMs, one or more database records that match the received query can be returned. For example, the database query server 110 can return the matching records 155 in response to the database query 153. In at least some embodiments, the database query is received from a separate client computing device. In such an embodiment, the one or more database records that match the received query can be returned to the client computing device.

[0060] In some embodiments, the additional database records retrieved from the plurality of ORAMs are discarded and only the matching database records are returned. Alternatively, all database records retrieved from the plurality of ORAMs, including the additional records, can be returned. In such an embodiment, a downstream process or computing device can be configured to filter the additional records out of the query results.

[0061] FIG. 4 is a flowchart of an example method 400 for retrieving data from a plurality of ORAMs while maintaining differential privacy. Any of the example systems described herein can be used to perform the example method 400. For example, the example system 100 can be used to perform all or part of the example method 400. [0062] At 410, for each ORAM in the plurality of ORAMs, a number of database records to retrieve from the ORAM is determined that satisfies a differential privacy constraint. For a given ORAM, the number of database records stored in the ORAM that match the database query can be determined. A number of additional database records to be retrieved from the ORAM in order to satisfy the differential privacy constraint can then be determined using the number of matching records. For example, the database query server 110 can be configured to use a differential privacy sanitizer to generate a separate differential privacy index for each of the plurality of ORAMs 133 - 135. For a given ORAM, of the plurality of ORAMs 133-135, the corresponding differential privacy index can be used to identify database records stored in the ORAM (including matching records and additional records) to be retrieved from the ORAM in response to the query.

[0063] In at least some embodiments, a maximum number of records to be retrieved from each ORAM is determined. For example, let = 1 if a database record i that matches a database query q is in a given ORAM, and 0 otherwise. If the database records are randomly assigned to the plurality of ORAMs, then Pr = 1] = Vm (he., the probability that a given record matching the query is in the given ORAM is 1 in m), where m is the number of ORAMs. If k 0 total database records match the database query q , then a maximum number of records to be retrieved from the given ORAM in order to answer q can be bounded as follows:

[0064] Here, (1 + y) represents the maximum number of database records to be retrieved from less than a specified constraint value b. Thus, the value of y can be computed as The constraint value of b

can be specified in the differential privacy constraint. Additionally or alternatively, the value g can be specified in the differential privacy constraint.

[0065] The operations to determine the maximum number of database records to be retrieved can be repeated for each ORAM in the plurality of ORAMs. [0066] At 420, for each ORAM in the plurality of ORAMs, database records are retrieved from the ORAM. The records retrieved from a given ORAM comprise one or more database records that match the database query and an additional one or more database records, such that a combined number of the one or more matching database records and the one or more additional database records is equal to the determined number of database records to retrieved from the given ORAM that satisfies the differential privacy constraint. Database records can be retrieved from the plurality of ORAMs concurrently using multiple threads and/or processes. For example, the database query server 110 can use separate threads and/or processes to retrieve database records from separate ORAMs. A given thread (or process) can be used to retrieve records from a given ORAM that match the database query, and to retrieve a number of additional records such that the total number of records retrieved from the given ORAM satisfies the differential privacy constraint. In at least some embodiments, the additional records retrieved comprise database records that do not match the database query. Additionally or alternatively, the additional records can include additional copies of records that match the database query. The records can be returned in an encrypted format so that the presence of duplicate records is not detectable.

[0067] FIG. 5 is a flowchart of another example method 500 for retrieving data from a plurality of ORAMs while maintaining differential privacy. Any of the example systems described herein can be used to perform the example method 500. For example, the example system 100 can be used to perform all or part of the example method 500.

[0068] At 510, a number of database records in a set of database records that match a given database query is determined. For example, the database query server 110 can determine a number of database records in the database record set 222 that match the given database query (e.g., database query 153). In at least some embodiments, the number of database records that match the given database query can be determined using a data structure created using a differential privacy sanitizer (such as the differential privacy index 113). Additionally or alternatively, the set of database records (e.g., database record set 222) can be used to identify database records that match the given query.

[0069] At 520, the number of database records that match the database query is used to determine a number of database records to be retrieved from each of the plurality of ORAMs to satisfy a differential privacy constraint. For example, the database query server 110 can use the number of database records that match the database query to determine a total number of database records to retrieve from each of the plurality of ORAMs 133-135 to satisfy the differential privacy constraint 115.

[0070] In at least some embodiments, the total number of database records to be retrieved can be defined as a noisy number of records k 0 that is defined as a function of the number of database records that match the database query k 0 and a specified value e. The value e can be specified as part of the differential privacy constraint. The value e can be a same e that is used to define a

(e, d, a, b) -differentially private sanitizer as described above.

[0071] In at least some scenarios, k 0 can be defined differently for different types of database queries. For example, for a collection of range queries Q r (where each query returns a collection of database records within a specified range), k Q may be defined as k Q = k Q + log 1 5 ^/ e , where N represents the number of queries in Q r . For a collection of point queries Q p (where each query returns a collection of one or more database records that agree with a specific value (for example by using a key, a unique record identifier, etc.)), k Q may be defined as k Q = k Q + \og^/ e , where N represents the number of queries in Q p . For a collection of attribute queries Q a (where each query searches over one or more record attributes), k 0 may be defined as k 0 = k 0 + e, where k is the number of attributes searched. These definitions of k 0 are provided as examples and are not intended to be limiting. Other definitions of k 0 are possible.

[0072] Once the noisy number of records k 0 is determined, a number of database records to be retrieved from each ORAM can be determined. For example, an upper bound of (1 + y) database records can be retrieved from each ORAM, where m is the number of ORAMs. This can ensure that a same or similar number of database records is retrieved from each ORAM y can be defined as as described above. In at least some embodiments, b , y, and/or e can be specified as part of the differential privacy constraint.

[0073] FIG. 6 depicts a generalized example of a suitable computing environment 600 in which the described innovations may be implemented. The computing environment 600 is not intended to suggest any limitation as to scope of use or functionality, as the innovations may be implemented in diverse general-purpose or special-purpose computing systems. For example, the computing environment 600 can be any of a variety of computing devices (e.g., desktop computer, laptop computer, server computer, tablet computer, etc.).

[0074] With reference to FIG. 6, the computing environment 600 includes one or more processing units 610, 615 and memory 620, 625. In FIG. 6, this basic configuration 630 is included within a dashed line. The processing units 610, 615 execute computer-executable instructions. A processing unit can be a general-purpose central processing unit (CPU), processor in an

application-specific integrated circuit (ASIC) or any other type of processor. In a multi-processing system, multiple processing units execute computer-executable instructions to increase processing power. For example, FIG. 6 shows a central processing unit 610 as well as a graphics processing unit or co-processing unit 615. The tangible memory 620, 625 may be volatile memory (e.g., registers, cache, RAM), non-volatile memory (e.g., ROM, EEPROM, flash memory, etc.), or some combination of the two, accessible by the processing unit(s). The memory 620, 625 stores software 680 implementing one or more innovations described herein, in the form of computer-executable instructions suitable for execution by the processing unit(s).

[0075] In at least some embodiments, the memory 620 and/or the memory 625 can be an ORAM as described herein.

[0076] A computing system may have additional features. For example, the computing

environment 600 includes storage 640, one or more input devices 650, one or more output devices 660, and one or more communication connections 670. An interconnection mechanism (not shown) such as a bus, controller, or network interconnects the components of the computing environment 600. Typically, operating system software (not shown) provides an operating environment for other software executing in the computing environment 600, and coordinates activities of the components of the computing environment 600.

[0077] In at least some embodiments, the computing environment 600 can be used as a computing device, database query server, and/or client as described herein.

[0078] The tangible storage 640 may be removable or non-removable, and includes magnetic disks, magnetic tapes or cassettes, CD-ROMs, DVDs, or any other medium which can be used to store information in a non-transitory way and which can be accessed within the computing environment 600. The storage 640 stores instructions for the software 680 implementing one or more innovations described herein. In at least some embodiments, the tangible storage 640 can comprise all or part of a datastore as described herein.

[0079] The input device(s) 650 may be a touch input device such as a keyboard, mouse, pen, or trackball, a voice input device, a scanning device, or another device that provides input to the computing environment 600. The output device(s) 660 may be a display, printer, speaker, CD- writer, or another device that provides output from the computing environment 600.

[0080] The communication connection(s) 670 enable communication over a communication medium to another computing entity. The communication medium conveys information such as computer-executable instructions, audio or video input or output, or other data in a modulated data signal. A modulated data signal is a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media can use an electrical, optical, RF, or other carrier. In at least some embodiments, the communication connection(s) can be used to access one or more ORAMs as described herein.

[0081] Although the operations of some of the disclosed methods are described in a particular, sequential order for convenient presentation, it should be understood that this manner of description encompasses rearrangement, unless a particular ordering is required by specific language set forth below. For example, operations described sequentially may in some cases be rearranged or performed concurrently. Moreover, for the sake of simplicity, the attached figures may not show the various ways in which the disclosed methods can be used in conjunction with other methods.

[0082] Any of the disclosed methods can be implemented as computer-executable instructions stored on one or more computer-readable storage media (e.g., one or more optical media discs, volatile memory components (such as DRAM or SRAM), or non-volatile memory components (such as flash memory or hard drives)) and executed on a computer (e.g., any commercially available computer, including smart phones or other mobile devices that include computing hardware). The term computer-readable storage media does not include communication connections, such as signals and carrier waves. Any of the computer-executable instructions for implementing the disclosed techniques as well as any data created and used during implementation of the disclosed embodiments can be stored on one or more computer-readable storage media. The computer-executable instructions can be part of, for example, a dedicated software application or a software application that is accessed or downloaded via a web browser or other software application (such as a remote computing application). Such software can be executed, for example, on a single local computer (e.g., any suitable commercially available computer) or in a network environment (e.g., via the Internet, a wide-area network, a local-area network, a client-server network (such as a cloud computing network), or other such network) using one or more network computers.

[0083] For clarity, only certain selected aspects of the software-based implementations are described. Other details that are well known in the art are omitted. For example, it should be understood that the disclosed technology is not limited to any specific computer language or program. For instance, the disclosed technology can be implemented by software written in C, C++, Java, assembly language, or any other suitable programming language. Likewise, the disclosed technology is not limited to any particular computer or type of hardware. Certain details of suitable computers and hardware are well known and need not be set forth in detail in this disclosure.

[0084] It should also be well understood that any functionality described herein can be performed, at least in part, by one or more hardware logic components, instead of software. For example, and without limitation, illustrative types of hardware logic components that can be used include Field- programmable Gate Arrays (FPGAs), Program-specific Integrated Circuits (ASICs), Program- specific Standard Products (ASSPs), System-on-a-chip systems (SOCs), Complex Programmable Logic Devices (CPLDs), etc.

[0085] Furthermore, any of the software-based embodiments (comprising, for example, computer- executable instructions for causing a computer to perform any of the disclosed methods) can be uploaded, downloaded, or remotely accessed through a suitable communication means. Such suitable communication means include, for example, the Internet, the World Wide Web, an intranet, software applications, cable (including fiber optic cable), magnetic communications, electromagnetic communications (including RF, microwave, and infrared communications), electronic communications, or other such communication means.

[0086] The disclosed methods, apparatus, and systems should not be construed as limiting in any way. Instead, the present disclosure is directed toward all novel and nonobvious features and aspects of the various disclosed embodiments, alone and in various combinations and

subcombinations with one another. The disclosed methods, apparatus, and systems are not limited to any specific aspect or feature or combination thereof, nor do the disclosed embodiments require that any one or more specific advantages be present or problems be solved.

[0087] Example embodiments include the following:

[0088] 1. A system comprising: a plurality of oblivious random-access memories (ORAMs); and a database query server, wherein the query server performs operations, the operations comprising: storing separate database record subsets of a set of database records in the plurality of ORAMs, receiving a database query from a client, determining a number of the database records to be retrieved from the plurality of ORAMs that satisfies a differential privacy constraint, using the plurality of ORAMs to concurrently retrieve the determined number of database records from the separate database record subsets stored in the plurality of ORAMs, wherein the retrieved database records comprises one or more database records that match the received query and an additional one or more database records, and returning the one or more database records that match the received query to the client.

[0089] 2. The system according to preceding paragraph 1, wherein: the determining the number of the database records to be retrieved from the plurality of ORAMs that satisfies the differential privacy constraint comprises, for each ORAM in the plurality of ORAMs: determining a number of database records to retrieve from the ORAM that satisfies the differential privacy constraint; and the concurrently retrieving the determined number of database records from the separate database record subsets stored in the plurality of ORAMs comprises, for each ORAM in the plurality of ORAMs: retrieving database records from the ORAM, wherein the retrieved records comprise one or more database records that match the database query and an additional one or more database records, such that the combined number of the one or more matching database records and the one or more additional database records is equal to the determined number of database records to retrieve from the ORAM that satisfies the differential privacy constraint.

[0090] 3. The system according to any of preceding paragraphs 1 -2, wherein the determining the number of the database records to be retrieved from the plurality of ORAMs that satisfies the differential privacy constraint comprises: determining a number of database records in the set of database records that match the database query; and using the number of database records that match the database query, determining a number of database records to be retrieved from each of the plurality of ORAMs to satisfy the differential privacy constraint.

[0091] 4. The system according to any of preceding paragraphs 1-3, wherein the operations further comprise: receiving multiple database queries from the client; and batching the multiple database queries, wherein the batching comprises: determining a union of database records that match one or more of the multiple database queries, using the union of records to determine the number of the database records to be retrieved from the plurality of ORAMs that satisfies the differential privacy constraint, using the plurality of ORAMs to concurrently retrieve the determined number of database records from the separate database record subsets stored in the plurality of ORAMs, wherein the retrieved database records comprises one or more database records in the union of records and an additional one or more database records, and returning the union of records to the client.

[0092] 5. The system according to any of preceding paragraphs 1-4, wherein: the plurality of ORAMs are executing on multiple servers; and the database query server is configured to communicate with the plurality of ORAMs via a computer network.

[0093] 6. The system according to any of preceding paragraphs 1-5, wherein the differential privacy constraint is an approximate differential privacy constraint.

[0094] 7. The system according to any of preceding paragraphs 1-6, wherein determining the number of the database records to be retrieved from the plurality of ORAMs that satisfies the differential privacy constraint comprises determining a maximum number of records to be retrieved from a given ORAM of the plurality of ORAMS.

[0095] 8. The system according to the preceding paragraph 7, wherein the maximum number of records to be retrieved from the given ORAM is bounded by the equation:

wherein m is a total number of database records in the set of database records, k 0 is a total number of the database records that match the database query, X t has a value of 1 if a given database record i is stored in the given ORAM, and a value g is determined such that exp ) is less than a specified constraint value.

[0096] 9. A computer-implemented method, comprising: storing separate database record subsets of a set of database records in a plurality of oblivious random-access memories (ORAMs); receiving a database query; responsive to receiving the database query, determining a number of the database records to be retrieved from the plurality of ORAMs that satisfies a differential privacy constraint; concurrently retrieving the determined number of database records from the separate database record subsets stored in the plurality of ORAMs, wherein the retrieved database records comprise one or more database records that match the received query and an additional one or more database records; and returning the one or more database records that match the received query.

[0097] 10. The method according to the preceding paragraph 9, wherein: the determining the number of the database records to be retrieved from the plurality of ORAMs that satisfies the differential privacy constraint comprises, for each ORAM in the plurality of ORAMs determining a number of database records to retrieve from the ORAM that satisfies the differential privacy constraint; and the concurrently retrieving the determined number of database records from the separate database record subsets stored in the plurality of ORAMs comprises, for each ORAM in the plurality of ORAMs retrieving database records from the ORAM, wherein the retrieved records comprise one or more database records that match the database query and an additional one or more database records, such that the combined number of the one or more matching database records and the one or more additional database records is equal to the determined number of database records to retrieve from the ORAM that satisfies the differential privacy constraint.

[0098] 11. The method according to any of preceding paragraphs 9-10, wherein the determining the number of the database records to be retrieved from the plurality of ORAMs that satisfies the differential privacy constraint comprises: determining a number of database records in the set of database records that match the database query; and using the number of database records that match the database query, determining a number of database records to be retrieved from each of the plurality of ORAMs to satisfy the differential privacy constraint. [0099] 12. The method according to any of preceding paragraphs 9-11, wherein the additional one or more database records comprise database records that do not match the database query.

[00100] 13. The method according to any of preceding paragraphs 9-12, wherein the concurrently retrieving the determined number of database records from the separate database record subsets stored in the plurality of ORAMs comprises accessing the plurality of ORAMs via a computer network.

[00101] 14. The method according to any of preceding paragraphs 9-13, wherein the differential privacy constraint is a concentrated differential privacy constraint.

[00102] 15. The method according to any of preceding paragraphs 9-14, wherein determining the number of the database records to be retrieved from the plurality of ORAMs that satisfies the differential privacy constraint comprises determining a maximum number of records to be retrieved from each of the plurality of ORAMS.

[00103] 16. A non-transitory computer-readable medium storing executable instructions that, when executed by a computer, cause the computer to perform operations, the operations comprising: storing separate database record subsets of a set of database records in a plurality of oblivious random-access memories (ORAMs); receiving a database query; determining a number of the database records to be retrieved from the plurality of ORAMs that satisfies a differential privacy constraint; using the plurality of ORAMs to concurrently retrieve the determined number of database records from the separate database record subsets stored in the plurality of ORAMs, wherein the retrieved database records comprise one or more database records that match the received database query and an additional one or more database records, and returning the one or more database records that match the received database query.

[00104] 17. The computer-readable medium according to the preceding paragraph 16, wherein: the determining the number of the database records to be retrieved from the plurality of ORAMs that satisfies the differential privacy constraint comprises, for each ORAM in the plurality of ORAMs determining a number of database records to retrieve from the ORAM that satisfies the differential privacy constraint; and the concurrently retrieving the determined number of database records from the separate database record subsets stored in the plurality of ORAMs comprises, for each ORAM in the plurality of ORAMs: retrieving database records from the ORAM, wherein the retrieved records comprise one or more database records that match the database query and an additional one or more database records, such that the combined number of the one or more matching database records and the one or more additional database records is equal to the determined number of database records to retrieve from the ORAM that satisfies the differential privacy constraint.

[00105] 18. The computer-readable medium according to any of preceding paragraphs

16-17, wherein the determining the number of the database records to be retrieved from the plurality of ORAMs that satisfies the differential privacy constraint comprises: determining a number of database records in the set of database records that match the database query; and using the number of database records that match the database query, determining a number of database records to be retrieved from each of the plurality of ORAMs to satisfy the differential privacy constraint.

[00106] 19. The computer-readable medium according to any of preceding paragraphs

16-18, wherein determining the number of the database records to be retrieved from the plurality of ORAMs that satisfies the differential privacy constraint comprises determining a maximum number of records to be retrieved from each of the plurality of ORAMS.

[00107] 20. The computer-readable medium according to the preceding paragraph 19, wherein the maximum number of records to be retrieved from each of the plurality of ORAMs is determined such that a number of database records retrieved from each ORAM is equalized.

[00108] In view of the many possible embodiments to which the principles of the disclosed invention may be applied, it should be recognized that the illustrated embodiments are only examples of the invention and should not be taken as limiting the scope of the invention. We therefore claim as our invention all that comes within the scope of these claims.