IP Library Granted Patent US 12,050,579
Granted Patent B2
US 12,050,579 · App. 18/149,085 · Granted Jul 30, 2024

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
G06F16/2255G06F3/0604G06F3/064G06F3/0644G06F3/0659G06F3/0673G06F21/10G06F21/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 12,050,579
App. No.
18/149,085
Granted
Jul 30, 2024
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 (44)

1. A computer-implemented method executed by data processing hardware that causes the data processing hardware to perform operations comprising:

executing a query for a data block;

retrieving a value associated with the data block from an oblivious hash table using a corresponding key;

extracting un-queried key value pairs from the oblivious hash table associated with un-queried data blocks; and

executing a shuffle routine on the extracted un-queried key value pairs from the oblivious hash table to generate an output array containing the un-queried key value pairs.

2. The method of claim 1 , wherein the data block is associated with a corresponding memory level (l i ) of a logarithmic number of memory levels (l i ) of memory.

3. The method of claim 2 , wherein each memory level (l i ) comprises physical memory (RAM i ) residing on memory hardware of a distributed system in communication with the data processing hardware.

4. The method of claim 2 , wherein the logarithmic number of memory levels (l i ) of memory are sequentially ordered in increasing size, each respective memory level (l i ) having a storage capacity equal to a joint capacity of all preceding smaller memory levels (l i ).

5. The method of claim 2 , wherein the operations further comprise:

determining that the corresponding memory level (l i ) associated with the data block is not a lowest memory level (l l ); and

in response to determining that the corresponding memory level (l i ) associated with the data block is not the lowest memory level (l l ), moving the data block to the lowest memory level (l l ) after executing the query.

6. The method of claim 5 , wherein the operations further comprise, after moving the data block to the lowest memory level (l l ), updating, a memory-level map to indicate that the corresponding memory level (l i ) associated with the data block now includes the lowest memory level (l l ).

7. The method of claim 2 , wherein the operations further comprise storing a memory-level map mapping the data block to a corresponding query memory level (l q ).

8. The method of claim 1 , wherein executing the shuffle routine comprises:

merging one or more input arrays of the data block into a new array, each input array of the one or more input arrays having a capacity less than a threshold capacity; and

shuffling the new array obliviously.

9. The method of claim 1 , wherein executing the query for the data block comprises a read operation or a write operation on the data block.

10. The method of claim 1 , wherein the operations further comprise:

executing a new query for a new data block;

determining that the new data block is stored locally on a client device; and

in response to determining that the new data block is stored locally on a client device, retrieving the new data block from the client device.

11. A system comprising:

data processing hardware; and

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

executing a query for a data block;

retrieving a value associated with the data block from an oblivious hash table using a corresponding key;

extracting un-queried key value pairs from the oblivious hash table associated with un-queried data blocks; and

executing a shuffle routine on the extracted un-queried key value pairs from the oblivious hash table to generate an output array containing the un-queried key value pairs.

12. The system of claim 11 , wherein the data block is associated with a corresponding memory level (l i ) of a logarithmic number of memory levels (l i ) of memory.

13. The system of claim 12 , wherein each memory level (l i ) comprises physical memory (RAM i ) residing on memory hardware of a distributed system in communication with the data processing hardware.

14. The system of claim 12 , wherein the logarithmic number of memory levels (l i ) of memory are sequentially ordered in increasing size, each respective memory level (l i ) having a storage capacity equal to a joint capacity of all preceding smaller memory levels (l i ).

15. The system of claim 12 , wherein the operations further comprise:

determining that the corresponding memory level (l i ) associated with the data block is not a lowest memory level (l l ); and

in response to determining that the corresponding memory level (l i ) associated with the data block is not the lowest memory level (l l ), moving the data block to the lowest memory level (l l ) after executing the query.

16. The system of claim 15 , wherein the operations further comprise, after moving the data block to the lowest memory level (l l ), updating, a memory-level map to indicate that the corresponding memory level (l i ) associated with the data block now includes the lowest memory level (l l ).

17. The system of claim 12 , wherein the operations further comprise storing a memory-level map mapping the data block to a corresponding query memory level (l q ).

18. The system of claim 11 , wherein executing the shuffle routine comprises:

merging one or more input arrays of the data block into a new array, each input array of the one or more input arrays having a capacity less than a threshold capacity; and

shuffling the new array obliviously.

19. The system of claim 11 , wherein executing the query for the data block comprises a read operation or a write operation on the data block.

20. The system of claim 11 , wherein the operations further comprise:

executing a new query for a new data block;

determining that the new data block is stored locally on a client device; and

in response to determining that the new data block is stored locally on a client device, retrieving the new data block from the client device.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2022
From: YEO, KEVIN; PATEL, SARVAR; PERSIANO, GIUSEPPE; RAYKOVA, MARIANA
To: GOOGLE INC.
Reel/Frame 062248/0667 →
CHANGE OF NAME Recorded Dec 31, 2022
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 062254/0357 →
Continuity (4)
Continuation 17313597 · May 6, 2021
Continuation 16365224 · Mar 26, 2019
Provisional Application 62653762 · Apr 6, 2018
Related Publication 20230137882A1 · May 4, 2023