IP Library Granted Patent US 11,544,353
Granted Patent B2
US 11,544,353 · App. 17/313,597 · Granted Jan 3, 2023

Oblivious RAM with logarithmic overhead

Inventors: Kevin Yeo (Mountain View, CA); Sarvar Patel (Montville, NJ); Giuseppe Persiano (New York, NY); Mariana Raykova (Mountain View, CA)
Assignee: Google LLC
G06F21/10G06F3/064G06F3/0604G06F3/0644G06F3/0659G06F3/0673G06F16/2255G06F21/78H04L67/10
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,544,353
App. No.
17/313,597
Granted
Jan 3, 2023
Kind
B2
Abstract

A method includes executing an instruction to execute a query for a data block, the data block associated with a corresponding memory level of a logarithmic number of memory levels (l i ) of memory, each memory level (l i ) including physical memory (RAM i ) residing on memory hardware of a distributed system. The method also includes retrieving a value associated with the data block from an oblivious hash table using a corresponding key, and extracting un-queried key value pairs from the oblivious hash table associated with un-queried data blocks after executing a threshold number of queries for data blocks. The method also includes a multi-array shuffle routine on the extracted key value pairs from the oblivious hash table to generate an output array containing the un-queried key value pairs.

Claims (46)

1. A computer-implemented method when executed by data processing hardware of a client device causes the data processing hardware to perform operations comprising:

executing an instruction to execute a query (q) for a data block (B) residing on memory hardware of a distributed system in communication with the data processing hardware or on memory hardware of the client device;

determining whether the data block (B) is stored locally on the memory hardware of the client device; and

when the data block (B) is stored locally on the memory hardware of the client device:

retrieving the data block (B) from the memory hardware of the client device; and

issuing one or more fake queries to the distributed system for retrieving a corresponding dummy block (D) to conceal the retrieval of the data block (B) from the memory hardware of the client device.

2. The method of claim 1 , wherein the operations further comprise, after issuing the one or more fake queries to the distributed system:

receiving the corresponding dummy block (D) from the distributed system; and

discarding the corresponding dummy block (D).

3. The method of claim 1 , wherein the operations further comprise, when the data block (B) is stored on the memory hardware of the distributed system:

retrieving a value (v) associated with the data block (B) from an oblivious hash table using a corresponding key (k);

extracting un-queried key value pairs (k, v) from the oblivious hash table associated with un-queried data blocks after executing a threshold number of queries (q) for data blocks; and

generating an output array that contains the un-queried key value pairs (k, v).

4. The method of claim 3 , wherein generating the output array comprises executing a multi-array shuffle routine on the extracted un-queried key value pairs (k, v) from the oblivious hash table.

5. The method of claim 4 , wherein executing the multi-array shuffle routine comprises:

merging one or more input arrays of data blocks (B) each having a capacity less than a threshold capacity into a new array; and

shuffling the new array obliviously.

6. The method of claim 3 , wherein the data block (B) is associated with a corresponding memory level (l i ) of a logarithmic number of memory levels (l i ) of memory, each memory level (l i ) comprising physical memory (RAM i ) residing on a storage abstraction of the distributed system.

7. The method of claim 6 , wherein the logarithmic number of memory levels (l i ) comprise a logarithmic number of memory levels (l i ) of increasing size where each memory level (l i ) has a storage capacity equal to the joint capacity of all preceding smaller memory levels (l i ).

8. The method of claim 7 , wherein the operations further comprise, when the corresponding memory level (l i ) associated with the data block (B) is not a lowest memory level (l l ), moving the data block (B) to the lowest memory level (l l ) after executing the instruction to execute the query (q).

9. The method of claim 1 , wherein the instruction to execute the query (q) for the data block (B) comprises an operation including a read or write operation on the data block and an address indicating a memory location for the data block (B).

10. The method of claim 9 , wherein the instruction to execute the query (q) for the data block (B) further comprises data when the operation includes the write operation.

11. A system comprising:

data processing hardware of a client device; and

memory hardware in communication with the data processing hardware and storing instructions, that when executed by the data processing hardware, cause the data processing hardware to perform operations comprising:

executing an instruction to execute a query (q) for a data block (B) residing on memory hardware of a distributed system in communication with the data processing hardware or on the memory hardware of the client device;

determining whether the data block (B) is stored locally on the memory hardware of the client device; and

when the data block (B) is stored locally on the memory hardware of the client device:

retrieving the data block (B) from the memory hardware of the client device; and

issuing one or more fake queries to the distributed system for retrieving a corresponding dummy block (D) to conceal the retrieval of the data block (B) from the memory hardware of the client device.

12. The system of claim 11 , wherein the operations further comprise, after issuing the one or more fake queries to the distributed system:

receiving the dummy block (D) from the distributed system; and

discarding the received dummy block (D).

13. The system of claim 11 , wherein the operations further comprise, when the data block (B) is stored on the memory hardware of the distributed system:

retrieving a value (v) associated with the data block (B) from an oblivious hash table using a corresponding key (k);

extracting un-queried key value pairs (k, v) from the oblivious hash table associated with un-queried data blocks after executing a threshold number of queries (q) for data blocks; and

generating an output array that contains the un-queried key value pairs (k, v).

14. The system of claim 13 , wherein generating the output array comprises executing a multi-array shuffle routine on the extracted un-queried key value pairs (k, v) from the oblivious hash table.

15. The system of claim 14 , wherein executing the multi-array shuffle routine comprises:

merging one or more input arrays of data blocks (B) each having a capacity less than a threshold capacity into a new array; and

shuffling the new array obliviously.

16. The system of claim 13 , wherein the data block (B) is associated with a corresponding memory level (l i ) of a logarithmic number of memory levels (l i ) of memory, each memory level (l i ) comprising physical memory (RAM i ) residing on a storage abstraction of the distributed system.

17. The system of claim 16 , wherein the logarithmic number of memory levels (l i ) comprise a logarithmic number of memory levels (l i ) of increasing size where each memory level (l i ) has a storage capacity equal to the joint capacity of all preceding smaller memory levels (l i ).

18. The system of claim 17 , wherein the operations further comprise, when the corresponding memory level (l i ) associated with the data block (B) is not a lowest memory level (l l ), moving the data block (B) to the lowest memory level (l l ) after executing the instruction to execute the query (q).

19. The system of claim 11 , wherein the instruction to execute the query (q) for the data block (B) comprises an operation including a read or write operation on the data block and an address indicating a memory location for the data block (B).

20. The system of claim 19 , wherein the instruction to execute the query (q) for the data block (B) further comprises data when the operation includes the write operation.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 6, 2021
From: YEO, KEVIN; PATEL, SARVAR; PERSIANO, GIUSEPPE; RAYKOVA, MARIANA
To: GOOGLE INC.
Reel/Frame 056160/0659 →
CHANGE OF NAME Recorded May 6, 2021
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 056167/0634 →
Continuity (3)
Continuation 16365224 · Mar 26, 2019
Provisional Application 62653762 · Apr 6, 2018
Related Publication 20210279301A1 · Sep 9, 2021