PanORAMa: Oblivious RAM with Logarithmic Overhead Sarvar Patel, - - PowerPoint PPT Presentation

panorama oblivious ram with logarithmic overhead
SMART_READER_LITE
LIVE PREVIEW

PanORAMa: Oblivious RAM with Logarithmic Overhead Sarvar Patel, - - PowerPoint PPT Presentation

PanORAMa: Oblivious RAM with Logarithmic Overhead Sarvar Patel, Giuseppe Persiano, Mariana Raykova, Kevin Yeo Most frequently used file Bob knows what files I am accessing Bandwidth is expensive Retrieve the whole database Oblivious RAM


slide-1
SLIDE 1

PanORAMa: Oblivious RAM with Logarithmic Overhead

Sarvar Patel, Giuseppe Persiano, Mariana Raykova, Kevin Yeo

slide-2
SLIDE 2
slide-3
SLIDE 3
slide-4
SLIDE 4
slide-5
SLIDE 5

Bob knows what files I am accessing Most frequently used file

slide-6
SLIDE 6

Bandwidth is expensive Retrieve the whole database

slide-7
SLIDE 7

Oblivious RAM [GO’96]

polylogarithmic overhead (amortized)

ORAM

Access pattern hiding

slide-8
SLIDE 8

How Efficient Can an ORAM Construction be?

slide-9
SLIDE 9

ORAM Lower Bound

slide-10
SLIDE 10

ORAM Lower Bound

  • Goldreich-Ostrovsky’96

○ Lower bound O(logC N) blocks for database of N blocks and client memory of C blocks

slide-11
SLIDE 11

ORAM Lower Bound

  • Goldreich-Ostrovsky’96

○ Lower bound O(logC N) blocks for database of N blocks and client memory of C blocks ○ Caveats: ■ Server only moves and retrieves blocks (does not do any computation) ■ Constructions with statistical security ■ Constructions that work for any block size ■ The client can have oracle access to a private random function

slide-12
SLIDE 12

ORAM Lower Bound

  • Goldreich-Ostrovsky’96

○ Lower bound Ω(logC N) blocks for database of N blocks and client memory of C blocks ○ Caveats: ■ Server only moves and retrieves blocks (does not do any computation) ■ Constructions with statistical security ■ Constructions that work for any block size ■ The client can have oracle access to a private random function

  • Boyle-Naor’16

○ Formalized the “balls and bins” model ○ Evidence for the hardness of extending the lower bound beyond the ball and bins model ■ Reduction from sorting circuits to ORAM

slide-13
SLIDE 13

ORAM Lower Bound

  • Goldreich-Ostrovsky’96

○ Lower bound Ω(logC N) blocks for database of N blocks and client memory of C blocks ○ Caveats: ■ Server only moves and retrieves blocks (does not do any computation) ■ Constructions with statistical security ■ Constructions that work for any block size ■ The client can have oracle access to a private random function

  • Boyle-Naor’16

○ Formalized the “balls and bins” model ○ Evidence for the hardness of extending the lower bound beyond the ball and bins model ■ Reduction from sorting circuits to ORAM

  • Larsen-Nielsen’18

○ Lower bound extended to computational online ORAM model (only block uploads/downloads)

slide-14
SLIDE 14

PanORAMa:

slide-15
SLIDE 15
  • New Oblivious RAM Construction

○ Improved asymptotic communication ■ O(log N . log log N) blocks ○ Block size Ω(log N) ○ Can be instantiated in the balls and bins model ○ Follows the hierarchical paradigm

PanORAMa:

slide-16
SLIDE 16

PanORAMa:

  • New Oblivious RAM Construction

○ Improved asymptotic communication ■ O(log N . log log N) blocks ○ Block size Ω(log N) ○ Can be instantiated in the balls and bins model ○ Follows the hierarchical paradigm

  • New Oblivious Hash Table Construction

○ Obliviousness for non-repeating queries ○ Efficient initialization from random array ○ Amortized query communication complexity ■ O(log N + poly(log log ƛ))

slide-17
SLIDE 17

PanORAMa:

  • New Oblivious RAM Construction

○ Improved asymptotic communication ■ O(log N . log log N) blocks ○ Block size Ω(log N) ○ Can be instantiated in the balls and bins model ○ Follows the hierarchical paradigm

  • New Oblivious Hash Table Construction

○ Obliviousness for non-repeating queries ○ Efficient initialization from random array ○ Amortized query communication complexity ■ O(log N + poly(log log ƛ))

  • New Multi-Array Shuffle Algorithm

○ Efficient shuffle for input with entropy ○ Shuffle multiple sorted arrays ■ O(N log log ƛ + N log N log ƛ) ■ Not too many very small arrays

slide-18
SLIDE 18

Construction Paradigms

  • Hierarchical ORAMs

○ Worst case ≠ Average case ○ Computation assumption beyond encryption in most cases

  • Tree ORAMs

○ Worst case = Average case ○ Encryption - the only computational assumption

slide-19
SLIDE 19

Construction Paradigms

  • Hierarchical ORAMs

○ Worst case ≠ Average case ○ Computation assumption beyond encryption in most cases

Shuffled items Accessed once Shuffle Accessed item

  • Tree ORAMs

○ Worst case = Average case ○ Encryption - the only computational assumption

slide-20
SLIDE 20

Construction Paradigms

  • Hierarchical ORAMs

○ Worst case ≠ Average case ○ Computation assumption beyond encryption in most cases

  • Tree ORAMs

○ Worst case = Average case ○ Encryption - the only computational assumption

PMAP = {item, path}{all items} Lookup path Stored recursively

slide-21
SLIDE 21

Construction Paradigms

  • Hierarchical ORAMs

○ Worst case ≠ Average case ○ Computation assumption beyond encryption in most cases

  • Tree ORAMs

○ Worst case = Average case ○ Encryption - the only computational assumption

slide-22
SLIDE 22

Timeline and Complexity

GO’96

Square Root ORAM Hierarchical ORAM: O(log3 N)

PR’10

Cuckoo Hashing Security issue

GM’11

Binary tree per level Only Comp. assump.: Encryption; O(log3 N)

DMN’11

Fixed Cuckoo Hash approach O(log3 N)

SCSL’11

First Tree ORAM: O(log3 N) Eviction: two nodes per level

KLO’11

Cuckoo Hash + level partition Best Complexity: Balls & Bins, Any block size: O(log2 N / log log N)

SDSFRYD’13

Homomorphic encryption Onion-ORAM: O(1) blocks of size Ω(log6 N)

GGHJRW’13

Deterministic Eviction Schedule: O(log3 N/ log log N)

WCS’15

Circuit ORAM, matches Path ORAM for circuit complexity in MPC

DDFRSW’15

Path ORAM: evict on a path O(log2 N) blocks of size Ω(log N) O(log N) blocks of size Ω(log2 N)

CGLS’17

Unified framework for all hierarchical ORAM

MZ’14

Offline ORAM: O(log n log log n)

slide-23
SLIDE 23

The Hierarchical ORAM Paradigm

slide-24
SLIDE 24

Hierarchical Construction

Level i has capacity for all items assigned to levels 1 to i at any moment (2i items) log N Level 1 log N - 1 2 i

slide-25
SLIDE 25

Hierarchical Construction: Search

log N Level 1 log N - 1 2 i Linear scan

slide-26
SLIDE 26

Hierarchical Construction: Search

log N Level 1 log N - 1 2 i Linear scan Look up searched item Look up searched item Item found ✔

slide-27
SLIDE 27

Hierarchical Construction: Search

log N Level 1 log N - 1 2 i Linear scan Look up searched item Look up searched item Item found ✔ Look up random item

slide-28
SLIDE 28

Hierarchical Construction: Search

log N Level 1 log N - 1 2 i Linear scan Look up searched item Look up searched item Item found ✔ Look up random item Move Item

slide-29
SLIDE 29

Hierarchical Construction

log N Level 1 log N - 1 2 i Deterministic schedule shuffle: Shuffle all items residing in level 1 to i and place them in level i, obliviously!

slide-30
SLIDE 30

Oblivious Hash Table [CGLS’17]

Instantiate each level with

  • blivious hash table (OHT)
  • Access pattern hiding for

non-repeating queries log N Level 1 log N - 1 2 i Efficiency costs:

  • Query cost
  • Oblivious initialization

○ During shuffle

slide-31
SLIDE 31

Existing Oblivious Hash Table Constructions

slide-32
SLIDE 32

Existing Oblivious Hash Table Constructions

PRF(item) log n

GO’96:

  • Use pseudo-random function to match items

to level buckets

  • Query: retrieve item bucket O(log n)
  • Oblivious initializations: several oblivious

sorts O(n log n)

slide-33
SLIDE 33

Existing Oblivious Hash Table Constructions

PRF(item) log n

GO’96:

  • Use pseudo-random function to match items

to level buckets

  • Query: retrieve item bucket O(log n)
  • Oblivious initializations: several oblivious

sorts O(n log n) T1 T2

Cuckoo Hash: h1(item) or h2(item)

GM’11:

  • Cuckoo hash table
  • Query: O(1)
  • Oblivious initialization: oblivious sort O(n log n)
slide-34
SLIDE 34

Existing Oblivious Hash Table Constructions

log N Cuckoo hash tables

KLO’12:

  • Level size n: log n Cuckoo hash tables;

each shuffle creates a new one

  • Query all Cuckoo tables: O(log n)
  • Oblivious initialization: log n oblivious

sorts on n/log n items per n queries: O(log n)

slide-35
SLIDE 35

Oblivious Two Tier Hash Table [CGLS’17]

slide-36
SLIDE 36

Oblivious Two Tier Hash Table [CGLS’17]

Use PRF1 to assign items into bins log n : number of bins B = n/logε ƛ

Tier 1

slide-37
SLIDE 37

Oblivious Two Tier Hash Table [CGLS’17]

Use PRF1 to assign items into bins log n Z=logε ƛ Overflow buffer

  • f size 288.Be-Z/6

: number of bins B = n/logε ƛ

Tier 1

slide-38
SLIDE 38

Oblivious Two Tier Hash Table [CGLS’17]

Use PRF1 to assign items into bins log n Z=logε ƛ Overflow buffer

  • f size 288.Be-Z/6

: number of bins B = n/logε ƛ Use PRF2 to assign items into bins

Tier 1 Tier 2

Insert in Tier 2 table

I n i t i a l i z a t i

  • n

: O b l i v i

  • u

s s

  • r

t ! I n i t i a l i z a t i

  • n

: O b l i v i

  • u

s s

  • r

t !

slide-39
SLIDE 39

Oblivious Two Tier Hash Table [CGLS’17]

Tier 1 Tier 2 Retrieve bin PRF1(query) If not found, Retrieve bin PRF2(query) else, Retrieve random bin. Amortized complexity: O(log

2

N / log log N)

slide-40
SLIDE 40

PanORAMa Overview

  • Leverage entropy reuse to shuffle

more efficiently

slide-41
SLIDE 41

PanORAMa Hierarchical Construction

log N Level 1 log N - 1 2 i

slide-42
SLIDE 42

PanORAMa Hierarchical Construction

OHT Extract: extract unqueried items from each level in shuffled order log N Level 1 log N - 1 2 i

slide-43
SLIDE 43

PanORAMa Hierarchical Construction

OHT Extract: extract unqueried items from each level in shuffled order log N Level 1 log N - 1 2 i Multi-array shuffle: shuffle together all randomly permuted input arrays

slide-44
SLIDE 44

PanORAMa Hierarchical Construction

OHT Extract: extract unqueried items from each level in shuffled order log N Level 1 log N - 1 2 i Multi-array shuffle: shuffle together all randomly permuted input arrays OHT Build: build an OHT from the permuted array

No Oblivious Sorting

  • n a whole large level!
slide-45
SLIDE 45

Oblivious Hash Table

  • Oblivious initialization in o(n log n)

leveraging input entropy

slide-46
SLIDE 46

Oblivious Hash Table

  • Definition. Oblivious Hash Table (OHT):

○ OHT.Init - permutes input ○ OHT.Build - builds OHT from permuted input ○ OHT.Lookup - execute a query ○ OHT.Extract - extracts an array that contains unqueried item in random order

  • Security.

○ Access hiding: non-repeating query sequences ○ Extract output indistinguishable from random permutation

slide-47
SLIDE 47

Oblivious Hash Table

  • Definition. Oblivious Hash Table (OHT):

○ OHT.Init - permutes input ○ OHT.Build - builds OHT from permuted input ○ OHT.Lookup - execute a query ○ OHT.Extract - extracts an array that contains unqueried item in random order

  • Security.

○ Access hiding: non-repeating query sequences ○ Extract output indistinguishable from random permutation

  • Oblivious bin = mini OHT

○ OHT that is instantiated on small input size O(polylog N) ○ We can use oblivious sorting without hurting efficiency

slide-48
SLIDE 48

Oblivious Bin

  • Oblivious Cuckoo Bin
  • “Dynamic” Bin

T1 T1

  • Cuckoo hash
  • Oblivious sort to build and extract

○ Add n dummies in Build ○ Extract n items in Extract

  • Items need to be added continuously in

non-amortized manner

  • Smallest ORAM level
  • Size: O(log7 n)
  • Use existing oblivious ram constructions,

e.g. Goodrich, Mitzenmacher [GM’11] stash

slide-49
SLIDE 49

Oblivious Hash Table

slide-50
SLIDE 50

Oblivious Hash Table

cutoff: (1-ε)logc ƛ log n Distribute items into B = n / logc ƛ bins using a PRF

slide-51
SLIDE 51

Oblivious Hash Table

cutoff: (1-ε)logc ƛ Sample new loads from binomial dist. of (1-𝛆)n item in B bins log n Distribute items into B = n / logc ƛ bins using a PRF Oblivious resampling of bucket loads: Pr[new load > cutoff] < negl(ƛ) & Pr[#items < new load] < negl(ƛ)

slide-52
SLIDE 52

Oblivious Hash Table

cutoff: (1-ε)logc ƛ Sample new loads from binomial dist. of (1-𝛆)n item in B bins log n Distribute items into B = n / logc ƛ bins using a PRF Obliviously move items above new loads to overflow buffer Oblivious resampling of bucket loads: Pr[new load > cutoff] < negl(ƛ) & Pr[#items < new load] < negl(ƛ)

slide-53
SLIDE 53

Oblivious Hash Table

cutoff: (1-ε)logc ƛ Sample new loads from binomial dist. of (1-𝛆)n item in B bins log n Distribute items into B = n / logc ƛ bins using a PRF Obliviously move items above new loads to overflow buffer Oblivious resampling of bucket loads: Pr[new load > cutoff] < negl(ƛ) & Pr[#items < new load] < negl(ƛ) Smallest level: N / log N

slide-54
SLIDE 54

Oblivious Hash Table: Create Oblivious Bins

OBin OBin OBin

OBin

OBin

OBin

OBin

Items from Cuckoo stash are

  • (encrypted) indexed with

their source bucket

  • merged with items used

to instantiate the last level

slide-55
SLIDE 55

Oblivious Hash Table: Query

OBin OBin OBin

OBin

OBin

OBin

OBin.Lookup(query)

OBin

slide-56
SLIDE 56

Oblivious Hash Table: Query

OBin OBin OBin

OBin

OBin

OBin

OBin.Lookup(query) If not found, OHT[PRF2(query)].Lookup(query) If found, OBin[random].Lookup(rand) If not found, OHT[PRF1(query)].Lookup(query) If found, OBin[random].Lookup(rand)

OBin

slide-57
SLIDE 57

Oblivious Hash Table: Extract

Move items with origin in the Cuckoo stashes back to their corresponding levels

slide-58
SLIDE 58

Oblivious Hash Table: Extract

OBin.Extract OBin.Extract OBin.Extract OBin.Extract

slide-59
SLIDE 59

Oblivious Hash Table: Extract

OBin.Extract OBin.Extract OBin.Extract OBin.Extract

OHT.Extract: append outputs of OBin.Extract

  • Items already randomly distributed

across OHT bins

slide-60
SLIDE 60

Oblivious Hash Table

Amortized Communication Complexity

  • ver N accesses for OHT on N items:
  • OCuckooBin: O(log N + (log log ƛ))
slide-61
SLIDE 61

Oblivious Multi-Array Shuffle

  • Random shuffle in o(n log n) leveraging

input entropy: independently sorted input arrays

slide-62
SLIDE 62

PanORAMa Hierarchical Construction

OHT Extract: extract unqueried items from each level in shuffled order log N Level 1 log N - 1 2 i Multi-array shuffle: shuffle together all randomly permuted input arrays OHT Build: build an OHT from the permuted array

slide-63
SLIDE 63

Oblivious Multi-Array Shuffle

A1 AL D A1 , …, ALare randomly permuted ⇒ it suffices to choose a random function Assign: [n]→ [L]

slide-64
SLIDE 64

Oblivious Multi-Array Shuffle

A1 AL D Any subarray in D is assigned approximately proportional fractions from A1, …, AL under a random Assign A2

slide-65
SLIDE 65

Oblivious Multi-Array Shuffle

A1 AL D b, Enc(Assign(b)) Obliviously Sample

slide-66
SLIDE 66

Oblivious Multi-Array Shuffle

A1 AL D Binin

1

Binin

2

Binin

m’-1

Binin

m’

b, Enc(Assign(b))

slide-67
SLIDE 67

Oblivious Multi-Array Shuffle

A1 AL D Binin

1

Binin

2

Binin

m’-1

Binin

m’

Binout

1

Binout

2

Binout

m-1

Binout

m

b, Enc(Assign(b)) m’ ≈ (1- ε) m

slide-68
SLIDE 68

Bin Shuffle

Binin

i

Binout

i

For each j in [L], Binin

i contains more elements from Aj

than the number of elements from Aj assigned to Binout

i

slide-69
SLIDE 69

Bin Shuffle

Binin

i

Binout

i

Add dummies with each array index

slide-70
SLIDE 70

Bin Shuffle

Binin

i

Binout

i

Add dummies with each array index A1 A2 AL-1 AL Oblivious Sort by input array index

slide-71
SLIDE 71

Bin Shuffle

Binin

i

Binout

i

Add dummies with each array index Oblivious Sort by input array index A1 A2 AL-1 AL Moving: real items which will be place in Binout

i

Overflow: real or dummy items which will be returned as overflow Unused: dummy which will be discarded

slide-72
SLIDE 72

Bin Shuffle

Binin

i

Binout

i

Add dummies with each array index Oblivious Sort by input array index A1 A2 AL-1 AL Moving: real items which will be place in Binout

i

Overflow: real or dummy items which will be returned as overflow Unused: dummy which will be discarded A1 A2 AL Moving Leftover1 LeftoverL Overflow Unused

slide-73
SLIDE 73

Bin Shuffle

Binin

i

Binout

i

A1 A2 AL Moving

slide-74
SLIDE 74

Bin Shuffle

Binin

i

Binout

i

A1 A2 AL Moving A1 A2 AL Obliviously Sort according to Assign(b) Pairs: (b, Assign(b))

slide-75
SLIDE 75

Bin Shuffle

Binin

i

Binout

i

A1 A2 AL Moving A1 A2 AL Obliviously Sort according to Assign(b) Pairs: (b, Assign(b)) Match pairs from Binout

i

with content from Binin

i

slide-76
SLIDE 76

Bin Shuffle

Binin

i

Binout

i

(b, Assign(b) = 1) (b’’, Assign(b’’) = L) (b’’’, Assign(b’’’) = L) (b’, Assign(b’) = 2)

slide-77
SLIDE 77

Oblivious Multi-Array Shuffle

Binin

i

Binout

i

(b, Assign(b) = 1) (b’’, Assign(b’’) = L) (b’’’, Assign(b’’’) = L) (b’, Assign(b’) = 2) (b1, Assign(b1)) (b2, Assign(b2)) (bm-1, Assign(bm-1)) (bm, Assign(bm))

Sort by the value b

slide-78
SLIDE 78

Bin Shuffle

(b1, Assign(b1)) (b2, Assign(b2)) (bm-1, Assign(bm-1)) (bm, Assign(bm))

Assign to positions bi in D non-obliviously

D

b1 b2 bm-1 bm

slide-79
SLIDE 79

Oblivious Multi-Array Shuffle

Binin

1

Binin

2

Binin

m’

Binout

1

Binout

2

Binout

m’

A1 A2 AL Bin Shuffle

slide-80
SLIDE 80

Oblivious Multi-Array Shuffle

Binin

1

Binin

2

Binin

m’

Binout

1

Binout

2

Binout

m’

Binout

m

Binout

m’+1

A1 A2 AL

Total Leftover1 Total LeftoverL

Recurse Bin Shuffle

slide-81
SLIDE 81

Ball and Bins Model

  • We can instantiate the PanORAMa construction in the model where GO’96 proved O(log N) lower

bound

○ Server does no computation on the data ⇒ satisfy “balls and bins” requirement ○ GO’96 allows client to oracle access to private random function ⇒ replace PRF

  • PanORAMa complexity: O(log N . log log N)
slide-82
SLIDE 82

Follow-up Work

slide-83
SLIDE 83

ORAM with Logarithmic Complexity

  • OptORAMa: Optimal Oblivious RAM [AKLNPS18] (eprint 2018/892)

○ Communication complexity: O(log N) ○ Oblivious compaction: O(N)

slide-84
SLIDE 84

Overview

  • PanORAMa: new ORAM construction with

improved asymptotic complexity ○

O(log N . log log N) for block size Ω(log N)

  • New Efficient Building Blocks

○ Oblivious Hash Table ○ Oblivious Multi-Array Shuffle

slide-85
SLIDE 85

Thanks!

Questions?