. Collaborators: Arash Afshar / Zhangxiang Hu / Payman Mohassel .. - - PowerPoint PPT Presentation

collaborators arash afshar zhangxiang hu payman mohassel
SMART_READER_LITE
LIVE PREVIEW

. Collaborators: Arash Afshar / Zhangxiang Hu / Payman Mohassel .. - - PowerPoint PPT Presentation

Secure Computation with Sublinear Cost Mike Rosulek . Collaborators: Arash Afshar / Zhangxiang Hu / Payman Mohassel .. .. .. .. .. .. .. . . . . . . f x y f x y Examples: Run proprietary classifier x on private data y Evaluate


slide-1
SLIDE 1

.

.

Secure Computation with Sublinear Cost

Mike Rosulek

Collaborators: Arash Afshar / Zhangxiang Hu / Payman Mohassel

. .. .. .. .. .. .. .. .

slide-2
SLIDE 2

.

.

Secure 2-party computation

. . x . y . f x y . f x y . Examples: Run proprietary classifier x on private data y Evaluate statistics on combined medical records x & y . .. .. .. .. .. .. .. .

slide-3
SLIDE 3

.

.

Secure 2-party computation

. . x . y . f x y . f x y . Examples: Run proprietary classifier x on private data y Evaluate statistics on combined medical records x & y . .. .. .. .. .. .. .. .

slide-4
SLIDE 4

.

.

Secure 2-party computation

. . x . y . f(x, y) . f(x, y) . Examples: Run proprietary classifier x on private data y Evaluate statistics on combined medical records x & y . .. .. .. .. .. .. .. .

slide-5
SLIDE 5

.

.

Secure 2-party computation

. . . x . y . f(x, y) . f x y . Examples: Run proprietary classifier x on private data y Evaluate statistics on combined medical records x & y . .. .. .. .. .. .. .. .

slide-6
SLIDE 6

.

.

Secure 2-party computation

. . . x . y . f(x, y) . f x y . Examples:

▶ Run proprietary classifier x on private data y ▶ Evaluate statistics on combined medical records x & y ▶ · · ·

. . .. .. .. .. .. .. .. .

slide-7
SLIDE 7

.

.

Fundamental Limits

. . . . y .

protocol never touches these

.

f x y doesn’t depend on these bits of y

. y . . x . f x y Example: y genetic database x DNA markers f x y diagnosis in general, security demands that all of the data is touched . . .. .. .. .. .. .. .. .

slide-8
SLIDE 8

.

.

Fundamental Limits

. . . . y .

protocol never touches these

.

f x y doesn’t depend on these bits of y

. y . x . f(x, y) Example: y genetic database x DNA markers f x y diagnosis in general, security demands that all of the data is touched . . .. .. .. .. .. .. .. .

slide-9
SLIDE 9

.

.

Fundamental Limits

. . . y .

protocol never touches these

.

f(x, y) doesn’t depend on these bits of y

. y . x . f(x, y) Example:

▶ y = genetic database ▶ x = DNA markers ▶ f(x, y) = diagnosis

in general, security demands that all of the data is touched . . .. .. .. .. .. .. .. .

slide-10
SLIDE 10

.

.

Fundamental Limits

. . . y .

protocol never touches these

.

f(x, y) doesn’t depend on these bits of y

. y . x . f(x, y) Example:

▶ y = genetic database ▶ x = DNA markers ▶ f(x, y) = diagnosis

⇒ in general, security demands that all of the data is touched

. . .. .. .. .. .. .. .. .

slide-11
SLIDE 11

.

.

Limits of Standard Techniques

. .

“to securely evaluate f, first express f as a boolean circuit, then ...”

. . .. .. .. .. .. .. .. .

slide-12
SLIDE 12

.

.

Limits of Standard Techniques

.

“to securely evaluate f, first express f as a boolean circuit, then ...”

. . .. .. .. .. .. .. .. .

slide-13
SLIDE 13

.

.

Limits of Standard Techniques

.

“to securely evaluate f, first express f as a boolean circuit, then ...”

. . .. .. .. .. .. .. .. .

slide-14
SLIDE 14

.

.

Limits of Standard Techniques

. .

“to securely evaluate f, first express f as a boolean circuit, then ...”

. . .. .. .. .. .. .. .. .

slide-15
SLIDE 15

.

.

What We’re Up Against

1:

Security requires protocol cost at least linear in size of in- puts (in general!)

2:

General-purpose 2PC scales with size of circuit representa- tion, which is always at least linear in input size. . . .. .. .. .. .. .. .. .

slide-16
SLIDE 16

.

.

What We’re Up Against

1:

Security requires protocol cost at least linear in size of in- puts (in general!)

2:

General-purpose 2PC scales with size of circuit representa- tion, which is always at least linear in input size. . .. .. .. .. .. .. .. .

slide-17
SLIDE 17

.

.

In this talk:

1:

Instead of circuits, use a representation that can actually be sublinear in size.

2:

Protocol must “touch every bit”, but amortize this cost across many executions. . . .. .. .. .. .. .. .. .

slide-18
SLIDE 18

.

.

In this talk:

1:

Instead of circuits, use a representation that can actually be sublinear in size.

2:

Protocol must “touch every bit”, but amortize this cost across many executions. . . .. .. .. .. .. .. .. .

slide-19
SLIDE 19

.

.

RAM programs

. . cpu .

small internal state

. memory .

read,

.

M

.

read,

.

M

.

write, , x

.

  • k

.

M x

RAM program need not touch every bit of memory. . . .. .. .. .. .. .. .. .

slide-20
SLIDE 20

.

.

RAM programs

. . cpu .

small internal state

. memory .

read, ℓ1

.

M[ℓ1]

.

read,

.

M

.

write, , x

.

  • k

.

M x

RAM program need not touch every bit of memory. . . .. .. .. .. .. .. .. .

slide-21
SLIDE 21

.

.

RAM programs

. . cpu .

small internal state

. memory .

read, ℓ1

.

M[ℓ1]

.

read, ℓ2

.

M[ℓ2]

.

write, , x

.

  • k

.

M x

RAM program need not touch every bit of memory. . . .. .. .. .. .. .. .. .

slide-22
SLIDE 22

.

.

RAM programs

. . cpu .

small internal state

. memory .

read, ℓ1

.

M[ℓ1]

.

read, ℓ2

.

M[ℓ2]

.

write, ℓ3, x

.

  • k

.

M[ℓ3] ← x

RAM program need not touch every bit of memory. . . .. .. .. .. .. .. .. .

slide-23
SLIDE 23

.

.

RAM programs

. . cpu .

small internal state

. memory .

read, ℓ1

.

M[ℓ1]

.

read, ℓ2

.

M[ℓ2]

.

write, ℓ3, x

.

  • k

.

M[ℓ3] ← x

RAM program need not touch every bit of memory. . . .. .. .. .. .. .. .. .

slide-24
SLIDE 24

.

.

Idea: securely evaluate RAM

. . memory . . . cpu .

CPU state

.

CPU state

.

new state, read

.

new state, M

.

new state

Basic outline:

▶ Imagine both parties’ inputs stored in large memory

Imagine they could evaluate CPU-next-instruction function Use (traditional) 2PC protocol to realize CPU-next-instruction Cost = (size of next-instruction function) (number of instructions) . . .. .. .. .. .. .. .. .

slide-25
SLIDE 25

.

.

Idea: securely evaluate RAM

. . memory . . cpu .

CPU state

.

CPU state

.

new state, read

.

new state, M

.

new state

Basic outline:

▶ Imagine both parties’ inputs stored in large memory ▶ Imagine they could evaluate CPU-next-instruction function

Use (traditional) 2PC protocol to realize CPU-next-instruction Cost = (size of next-instruction function) (number of instructions) . . .. .. .. .. .. .. .. .

slide-26
SLIDE 26

.

.

Idea: securely evaluate RAM

. . memory . . cpu .

CPU state

.

CPU state

.

new state, read ℓ

.

new state, M

.

new state

Basic outline:

▶ Imagine both parties’ inputs stored in large memory ▶ Imagine they could evaluate CPU-next-instruction function

Use (traditional) 2PC protocol to realize CPU-next-instruction Cost = (size of next-instruction function) (number of instructions) . . .. .. .. .. .. .. .. .

slide-27
SLIDE 27

.

.

Idea: securely evaluate RAM

. . memory . . cpu .

CPU state

.

CPU state

.

new state, read

.

new state, M[ℓ]

.

new state

Basic outline:

▶ Imagine both parties’ inputs stored in large memory ▶ Imagine they could evaluate CPU-next-instruction function

Use (traditional) 2PC protocol to realize CPU-next-instruction Cost = (size of next-instruction function) (number of instructions) . . .. .. .. .. .. .. .. .

slide-28
SLIDE 28

.

.

Idea: securely evaluate RAM

. . memory . . cpu .

CPU state

.

CPU state

.

new state, read

.

new state, M

.

new state

Basic outline:

▶ Imagine both parties’ inputs stored in large memory ▶ Imagine they could evaluate CPU-next-instruction function ▶ Use (traditional) 2PC protocol to realize CPU-next-instruction

Cost = (size of next-instruction function) (number of instructions) . . .. .. .. .. .. .. .. .

slide-29
SLIDE 29

.

.

Idea: securely evaluate RAM

. . memory . . . cpu .

CPU state

.

CPU state

.

new state, read

.

new state, M

.

new state

Basic outline:

▶ Imagine both parties’ inputs stored in large memory ▶ Imagine they could evaluate CPU-next-instruction function ▶ Use (traditional) 2PC protocol to realize CPU-next-instruction

Cost = (size of next-instruction function) (number of instructions) . . .. .. .. .. .. .. .. .

slide-30
SLIDE 30

.

.

Idea: securely evaluate RAM

. . memory . . . cpu .

CPU state

.

CPU state

.

new state, read

.

new state, M

.

new state

Basic outline:

▶ Imagine both parties’ inputs stored in large memory ▶ Imagine they could evaluate CPU-next-instruction function ▶ Use (traditional) 2PC protocol to realize CPU-next-instruction

Cost = (size of next-instruction function) × (number of instructions) . . .. .. .. .. .. .. .. .

slide-31
SLIDE 31

.

.

What can go wrong?

. memory . . cpu . E cpu .

CPU state

.

CPU state

.

new state

.

share of state

.

share of state

.

share of new state

.

share of new state

.

read

.

M

Internal state is public Secret-share the state! Calvin sees all of the memory Encrypt the memory, augment CPU-next-instruction with encryption/decryption. Memory access pattern (read , write , ) public! ??? Calvin must learn these so he knows what to do! . . .. .. .. .. .. .. .. .

slide-32
SLIDE 32

.

.

What can go wrong?

. memory . . cpu . E cpu .

CPU state

.

CPU state

.

new state

.

share of state

.

share of state

.

share of new state

.

share of new state

.

read

.

M

Internal state is public Secret-share the state! Calvin sees all of the memory Encrypt the memory, augment CPU-next-instruction with encryption/decryption. Memory access pattern (read , write , ) public! ??? Calvin must learn these so he knows what to do! . . .. .. .. .. .. .. .. .

slide-33
SLIDE 33

.

.

What can go wrong?

. memory . . cpu . E cpu .

CPU state

.

CPU state

.

new state

.

share of state

.

share of state

.

share of new state

.

share of new state

.

read

.

M

Internal state is public

⇒ Secret-share the state! ✓

Calvin sees all of the memory Encrypt the memory, augment CPU-next-instruction with encryption/decryption. Memory access pattern (read , write , ) public! ??? Calvin must learn these so he knows what to do! . . .. .. .. .. .. .. .. .

slide-34
SLIDE 34

.

.

What can go wrong?

. memory . . cpu . E cpu .

CPU state

.

CPU state

.

new state

.

share of state

.

share of state

.

share of new state

.

share of new state

.

read

.

M

Internal state is public

⇒ Secret-share the state! ✓

Calvin sees all of the memory Encrypt the memory, augment CPU-next-instruction with encryption/decryption. Memory access pattern (read , write , ) public! ??? Calvin must learn these so he knows what to do! . . .. .. .. .. .. .. .. .

slide-35
SLIDE 35

.

.

What can go wrong?

. memory . . . cpu . E(cpu) .

CPU state

.

CPU state

.

new state

.

share of state

.

share of state

.

share of new state

.

share of new state

.

read

.

M

Internal state is public

⇒ Secret-share the state! ✓

Calvin sees all of the memory

⇒ Encrypt the memory, augment CPU-next-instruction with

encryption/decryption. ✓ Memory access pattern (read , write , ) public! ??? Calvin must learn these so he knows what to do! . . .. .. .. .. .. .. .. .

slide-36
SLIDE 36

.

.

What can go wrong?

. memory . . . cpu . E(cpu) .

CPU state

.

CPU state

.

new state

.

share of state

.

share of state

.

share of new state

.

share of new state

.

read ℓ

.

M

Internal state is public

⇒ Secret-share the state! ✓

Calvin sees all of the memory

⇒ Encrypt the memory, augment CPU-next-instruction with

encryption/decryption. ✓ Memory access pattern (read ℓ1, write ℓ2, . . .) public! ??? Calvin must learn these so he knows what to do! . . .. .. .. .. .. .. .. .

slide-37
SLIDE 37

.

.

What can go wrong?

. memory . . . cpu . E(cpu) .

CPU state

.

CPU state

.

new state

.

share of state

.

share of state

.

share of new state

.

share of new state

.

read ℓ

.

M[ℓ]

Internal state is public

⇒ Secret-share the state! ✓

Calvin sees all of the memory

⇒ Encrypt the memory, augment CPU-next-instruction with

encryption/decryption. ✓ Memory access pattern (read ℓ1, write ℓ2, . . .) public! ??? Calvin must learn these so he knows what to do! . . .. .. .. .. .. .. .. .

slide-38
SLIDE 38

.

.

Oblivious RAM

Oblivious RAM (ORAM) = memory access pattern leaks nothing about inputs/outputs/state [GoldreichOstrosvky96]

▶ Can convert any RAM program to ORAM, polylog overhead in runtime

& memory [ShiChanStefanovLi11, .....] . memory . .

  • bliv cpu

.

RAM-2PC paradigm [GKKKMRV12]

. . “Use traditional 2PC to repeatedly evaluate next-instruction circuit of an

  • blivious RAM program.”

. . .. .. .. .. .. .. .. .

slide-39
SLIDE 39

.

.

Oblivious RAM

Oblivious RAM (ORAM) = memory access pattern leaks nothing about inputs/outputs/state [GoldreichOstrosvky96]

▶ Can convert any RAM program to ORAM, polylog overhead in runtime

& memory [ShiChanStefanovLi11, .....] . memory . .

  • bliv cpu

.

RAM-2PC paradigm [GKKKMRV12]

. . “Use traditional 2PC to repeatedly evaluate next-instruction circuit of an

  • blivious RAM program.”

. .. .. .. .. .. .. .. .

slide-40
SLIDE 40

.

.

Wait, what?

If original RAM program is sublinear, ORAM version is sublinear too!

  • nly after memory is initialized into proper data structure!

. . memory . . .

  • bliv cpu

. ORAM encode .

  • bliv cpu

.

touch every bit

.

sublinear

. . .. .. .. .. .. .. .. .

slide-41
SLIDE 41

.

.

Wait, what?

If original RAM program is sublinear, ORAM version is sublinear too!

. . . only after memory is initialized into proper data structure!

. . memory . . .

  • bliv cpu

. ORAM encode .

  • bliv cpu

.

touch every bit

.

sublinear

. . .. .. .. .. .. .. .. .

slide-42
SLIDE 42

.

.

Wait, what?

If original RAM program is sublinear, ORAM version is sublinear too!

. . . only after memory is initialized into proper data structure!

. . memory . . .

  • bliv cpu

. ORAM encode .

  • bliv cpu

.

touch every bit

.

sublinear

. . .. .. .. .. .. .. .. .

slide-43
SLIDE 43

.

.

Wait, what?

If original RAM program is sublinear, ORAM version is sublinear too!

. . . only after memory is initialized into proper data structure!

. . memory . . .

  • bliv cpu

. ORAM encode .

  • bliv cpu

.

  

.

touch every bit

.

  

.

sublinear

. . .. .. .. .. .. .. .. .

slide-44
SLIDE 44

.

.

Amortizing

ORAM memory can be reused indefinitely . . memory . ORAM encode .

  • bliv cpu

.

  • bliv cpu

.

· · ·

.

  

.

touch every bit

.

{

.

sublinear

.

{

.

sublinear

. . .. .. .. .. .. .. .. .

slide-45
SLIDE 45

.

.

Summarizing

.

RAM-2PC paradigm [GKKKMRV12]

. . “Use traditional 2PC to repeatedly evaluate next-instruction circuit of an

  • blivious RAM program.”

▶ Expensive O(N) initialization phase ▶ Subsequent computations cost

O(T), where T = ORAM running time.

▶ [GKKKMRV12]: semi-honest security ▶ [AfsharHuMohasselR15]: malicious security ▶ [HuMohasselR15]: malicious security, one-sided privacy

. . .. .. .. .. .. .. .. .

slide-46
SLIDE 46

.

.

Garbled circuit framework [Yao86]

. . . A A . B B . C C . D D . E E . F F . G G . H H . I I .

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 1 1 1 0

.

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 1 1 1 1

.

A B E A B E A B E A B E

.

A B F A B F A B F A B F

.

C D G C D G C D G C D G

.

F G H F G H F G H F G H

.

E H I E H I E H I E H I

.

EncA

B

E EncA

B

E EncA

B

E EncA

B

E

.

EncA

B

F EncA

B

F EncA

B

F EncA

B

F

.

EncC

D

G EncC

D

G EncC

D

G EncC

D

G

.

EncF

G

H EncF

G

H EncF

G

H EncF

G

H

.

EncE

H

I EncE

H

I EncE

H

I EncE

H

I

Garbling a circuit: Pick random labels W W on each wire “Encrypt” truth table of each gate Garbled circuit all encrypted gates Garbled encoding

  • ne label per wire

Garbled evaluation: Only one ciphertext per gate is decryptable Result of decryption = value on outgoing wire . . .. .. .. .. .. .. .. .

slide-47
SLIDE 47

.

.

Garbled circuit framework [Yao86]

. . . A A . B B . C C . D D . E E . F F . G G . H H . I I .

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 1 1 1 0

.

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 1 1 1 1

.

A B E A B E A B E A B E

.

A B F A B F A B F A B F

.

C D G C D G C D G C D G

.

F G H F G H F G H F G H

.

E H I E H I E H I E H I

.

EncA

B

E EncA

B

E EncA

B

E EncA

B

E

.

EncA

B

F EncA

B

F EncA

B

F EncA

B

F

.

EncC

D

G EncC

D

G EncC

D

G EncC

D

G

.

EncF

G

H EncF

G

H EncF

G

H EncF

G

H

.

EncE

H

I EncE

H

I EncE

H

I EncE

H

I

Garbling a circuit: Pick random labels W W on each wire “Encrypt” truth table of each gate Garbled circuit all encrypted gates Garbled encoding

  • ne label per wire

Garbled evaluation: Only one ciphertext per gate is decryptable Result of decryption = value on outgoing wire . . .. .. .. .. .. .. .. .

slide-48
SLIDE 48

.

.

Garbled circuit framework [Yao86]

. . A0, A1 . B0, B1 . C0, C1 . D0, D1 . E0, E1 . F0, F1 . G0, G1 . H0, H1 . I0, I1 .

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 1 1 1 0

.

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 1 1 1 1

.

A B E A B E A B E A B E

.

A B F A B F A B F A B F

.

C D G C D G C D G C D G

.

F G H F G H F G H F G H

.

E H I E H I E H I E H I

.

EncA

B

E EncA

B

E EncA

B

E EncA

B

E

.

EncA

B

F EncA

B

F EncA

B

F EncA

B

F

.

EncC

D

G EncC

D

G EncC

D

G EncC

D

G

.

EncF

G

H EncF

G

H EncF

G

H EncF

G

H

.

EncE

H

I EncE

H

I EncE

H

I EncE

H

I

Garbling a circuit:

▶ Pick random labels W0, W1 on each wire

“Encrypt” truth table of each gate Garbled circuit all encrypted gates Garbled encoding

  • ne label per wire

Garbled evaluation: Only one ciphertext per gate is decryptable Result of decryption = value on outgoing wire . . .. .. .. .. .. .. .. .

slide-49
SLIDE 49

.

.

Garbled circuit framework [Yao86]

. . A0, A1 . B0, B1 . C0, C1 . D0, D1 . E0, E1 . F0, F1 . G0, G1 . H0, H1 . I0, I1 .

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 1 1 1 0

.

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 1 1 1 1

.

A0 B0 E0 A0 B1 E1 A1 B0 E0 A1 B1 E0

.

A0 B0 F0 A0 B1 F1 A1 B0 F1 A1 B1 F0

.

C0 D0 G0 C0 D1 G1 C1 D0 G0 C1 D1 G0

.

F0 G0 H0 F0 G1 H1 F1 G0 H0 F1 G1 H0

.

E0 H0 I0 E0 H1 I1 E1 H0 I1 E1 H1 I1

.

EncA

B

E EncA

B

E EncA

B

E EncA

B

E

.

EncA

B

F EncA

B

F EncA

B

F EncA

B

F

.

EncC

D

G EncC

D

G EncC

D

G EncC

D

G

.

EncF

G

H EncF

G

H EncF

G

H EncF

G

H

.

EncE

H

I EncE

H

I EncE

H

I EncE

H

I

Garbling a circuit:

▶ Pick random labels W0, W1 on each wire

“Encrypt” truth table of each gate Garbled circuit all encrypted gates Garbled encoding

  • ne label per wire

Garbled evaluation: Only one ciphertext per gate is decryptable Result of decryption = value on outgoing wire . . .. .. .. .. .. .. .. .

slide-50
SLIDE 50

.

.

Garbled circuit framework [Yao86]

. . A0, A1 . B0, B1 . C0, C1 . D0, D1 . E0, E1 . F0, F1 . G0, G1 . H0, H1 . I0, I1 .

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 1 1 1 0

.

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 1 1 1 1

.

A B E A B E A B E A B E

.

A B F A B F A B F A B F

.

C D G C D G C D G C D G

.

F G H F G H F G H F G H

.

E H I E H I E H I E H I

.

EncA0,B0(E0) EncA0,B1(E1) EncA1,B0(E0) EncA1,B1(E0)

.

EncA0,B0(F0) EncA0,B1(F1) EncA1,B0(F1) EncA1,B1(F0)

.

EncC0,D0(G0) EncC0,D1(G1) EncC1,D0(G0) EncC1,D1(G0)

.

EncF0,G0(H0) EncF0,G1(H1) EncF1,G0(H0) EncF1,G1(H0)

.

EncE0,H0(I0) EncE0,H1(I1) EncE1,H0(I1) EncE1,H1(I1)

Garbling a circuit:

▶ Pick random labels W0, W1 on each wire ▶ “Encrypt” truth table of each gate

Garbled circuit all encrypted gates Garbled encoding

  • ne label per wire

Garbled evaluation: Only one ciphertext per gate is decryptable Result of decryption = value on outgoing wire . . .. .. .. .. .. .. .. .

slide-51
SLIDE 51

.

.

Garbled circuit framework [Yao86]

. . A0, A1 . B0, B1 . C0, C1 . D0, D1 . E0, E1 . F0, F1 . G0, G1 . H0, H1 . I0, I1 .

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 1 1 1 0

.

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 1 1 1 1

.

A B E A B E A B E A B E

.

A B F A B F A B F A B F

.

C D G C D G C D G C D G

.

F G H F G H F G H F G H

.

E H I E H I E H I E H I

.

EncA0,B0(E0) EncA0,B1(E1) EncA1,B0(E0) EncA1,B1(E0)

.

EncA0,B0(F0) EncA0,B1(F1) EncA1,B0(F1) EncA1,B1(F0)

.

EncC0,D0(G0) EncC0,D1(G1) EncC1,D0(G0) EncC1,D1(G0)

.

EncF0,G0(H0) EncF0,G1(H1) EncF1,G0(H0) EncF1,G1(H0)

.

EncE0,H0(I0) EncE0,H1(I1) EncE1,H0(I1) EncE1,H1(I1)

Garbling a circuit:

▶ Pick random labels W0, W1 on each wire ▶ “Encrypt” truth table of each gate ▶ Garbled circuit ≡ all encrypted gates

Garbled encoding

  • ne label per wire

Garbled evaluation: Only one ciphertext per gate is decryptable Result of decryption = value on outgoing wire . . .. .. .. .. .. .. .. .

slide-52
SLIDE 52

.

.

Garbled circuit framework [Yao86]

. . A0, A1 . B0, B1 . C0, C1 . D0, D1 . E0, E1 . F0, F1 . G0, G1 . H0, H1 . I0, I1 .

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 1 1 1 0

.

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 1 1 1 1

.

A B E A B E A B E A B E

.

A B F A B F A B F A B F

.

C D G C D G C D G C D G

.

F G H F G H F G H F G H

.

E H I E H I E H I E H I

.

EncA0,B0(E0) EncA0,B1(E1) EncA1,B0(E0) EncA1,B1(E0)

.

EncA0,B0(F0) EncA0,B1(F1) EncA1,B0(F1) EncA1,B1(F0)

.

EncC0,D0(G0) EncC0,D1(G1) EncC1,D0(G0) EncC1,D1(G0)

.

EncF0,G0(H0) EncF0,G1(H1) EncF1,G0(H0) EncF1,G1(H0)

.

EncE0,H0(I0) EncE0,H1(I1) EncE1,H0(I1) EncE1,H1(I1)

Garbling a circuit:

▶ Pick random labels W0, W1 on each wire ▶ “Encrypt” truth table of each gate ▶ Garbled circuit ≡ all encrypted gates ▶ Garbled encoding ≡ one label per wire

Garbled evaluation: Only one ciphertext per gate is decryptable Result of decryption = value on outgoing wire . . .. .. .. .. .. .. .. .

slide-53
SLIDE 53

.

.

Garbled circuit framework [Yao86]

. . A0, A1 . B0, B1 . C0, C1 . D0, D1 . E0, E1 . F0, F1 . G0, G1 . H0, H1 . I0, I1 .

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 1 1 1 0

.

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 1 1 1 1

.

A B E A B E A B E A B E

.

A B F A B F A B F A B F

.

C D G C D G C D G C D G

.

F G H F G H F G H F G H

.

E H I E H I E H I E H I

.

EncA0,B0(E0) EncA0,B1(E1) EncA1,B0(E0) EncA1,B1(E0)

.

EncA0,B0(F0) EncA0,B1(F1) EncA1,B0(F1) EncA1,B1(F0)

.

EncC0,D0(G0) EncC0,D1(G1) EncC1,D0(G0) EncC1,D1(G0)

.

EncF0,G0(H0) EncF0,G1(H1) EncF1,G0(H0) EncF1,G1(H0)

.

EncE0,H0(I0) EncE0,H1(I1) EncE1,H0(I1) EncE1,H1(I1)

Garbling a circuit:

▶ Pick random labels W0, W1 on each wire ▶ “Encrypt” truth table of each gate ▶ Garbled circuit ≡ all encrypted gates ▶ Garbled encoding ≡ one label per wire

Garbled evaluation:

▶ Only one ciphertext per

gate is decryptable Result of decryption = value on outgoing wire . . .. .. .. .. .. .. .. .

slide-54
SLIDE 54

.

.

Garbled circuit framework [Yao86]

. . A0, A1 . B0, B1 . C0, C1 . D0, D1 . E0, E1 . F0, F1 . G0, G1 . H0, H1 . I0, I1 .

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 1 1 1 0

.

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 1 1 1 1

.

A B E A B E A B E A B E

.

A B F A B F A B F A B F

.

C D G C D G C D G C D G

.

F G H F G H F G H F G H

.

E H I E H I E H I E H I

.

EncA0,B0(E0) EncA0,B1(E1) EncA1,B0(E0) EncA1,B1(E0)

.

EncA0,B0(F0) EncA0,B1(F1) EncA1,B0(F1) EncA1,B1(F0)

.

EncC0,D0(G0) EncC0,D1(G1) EncC1,D0(G0) EncC1,D1(G0)

.

EncF0,G0(H0) EncF0,G1(H1) EncF1,G0(H0) EncF1,G1(H0)

.

EncE0,H0(I0) EncE0,H1(I1) EncE1,H0(I1) EncE1,H1(I1)

Garbling a circuit:

▶ Pick random labels W0, W1 on each wire ▶ “Encrypt” truth table of each gate ▶ Garbled circuit ≡ all encrypted gates ▶ Garbled encoding ≡ one label per wire

Garbled evaluation:

▶ Only one ciphertext per

gate is decryptable

▶ Result of decryption =

value on outgoing wire . . .. .. .. .. .. .. .. .

slide-55
SLIDE 55

.

.

Garbled circuit framework [Yao86]

. . A0, A1 . B0, B1 . C0, C1 . D0, D1 . E0, E1 . F0, F1 . G0, G1 . H0, H1 . I0, I1 .

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 1 1 1 0

.

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 1 1 1 1

.

A B E A B E A B E A B E

.

A B F A B F A B F A B F

.

C D G C D G C D G C D G

.

F G H F G H F G H F G H

.

E H I E H I E H I E H I

.

EncA0,B0(E0) EncA0,B1(E1) EncA1,B0(E0) EncA1,B1(E0)

.

EncA0,B0(F0) EncA0,B1(F1) EncA1,B0(F1) EncA1,B1(F0)

.

EncC0,D0(G0) EncC0,D1(G1) EncC1,D0(G0) EncC1,D1(G0)

.

EncF0,G0(H0) EncF0,G1(H1) EncF1,G0(H0) EncF1,G1(H0)

.

EncE0,H0(I0) EncE0,H1(I1) EncE1,H0(I1) EncE1,H1(I1)

Garbling a circuit:

▶ Pick random labels W0, W1 on each wire ▶ “Encrypt” truth table of each gate ▶ Garbled circuit ≡ all encrypted gates ▶ Garbled encoding ≡ one label per wire

Garbled evaluation:

▶ Only one ciphertext per

gate is decryptable

▶ Result of decryption =

value on outgoing wire . . .. .. .. .. .. .. .. .

slide-56
SLIDE 56

.

.

Garbled circuit framework [Yao86]

. . A0, A1 . B0, B1 . C0, C1 . D0, D1 . E0, E1 . F0, F1 . G0, G1 . H0, H1 . I0, I1 .

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 1 1 1 0

.

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 1 1 1 1

.

A B E A B E A B E A B E

.

A B F A B F A B F A B F

.

C D G C D G C D G C D G

.

F G H F G H F G H F G H

.

E H I E H I E H I E H I

.

EncA0,B0(E0) EncA0,B1(E1) EncA1,B0(E0) EncA1,B1(E0)

.

EncA0,B0(F0) EncA0,B1(F1) EncA1,B0(F1) EncA1,B1(F0)

.

EncC0,D0(G0) EncC0,D1(G1) EncC1,D0(G0) EncC1,D1(G0)

.

EncF0,G0(H0) EncF0,G1(H1) EncF1,G0(H0) EncF1,G1(H0)

.

EncE0,H0(I0) EncE0,H1(I1) EncE1,H0(I1) EncE1,H1(I1)

Garbling a circuit:

▶ Pick random labels W0, W1 on each wire ▶ “Encrypt” truth table of each gate ▶ Garbled circuit ≡ all encrypted gates ▶ Garbled encoding ≡ one label per wire

Garbled evaluation:

▶ Only one ciphertext per

gate is decryptable

▶ Result of decryption =

value on outgoing wire . . .. .. .. .. .. .. .. .

slide-57
SLIDE 57

.

.

Garbled circuit framework [Yao86]

. . A0, A1 . B0, B1 . C0, C1 . D0, D1 . E0, E1 . F0, F1 . G0, G1 . H0, H1 . I0, I1 .

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 1 1 1 0

.

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 0 1 1 0

.

0 0 0 0 1 1 1 0 1 1 1 1

.

A B E A B E A B E A B E

.

A B F A B F A B F A B F

.

C D G C D G C D G C D G

.

F G H F G H F G H F G H

.

E H I E H I E H I E H I

.

EncA0,B0(E0) EncA0,B1(E1) EncA1,B0(E0) EncA1,B1(E0)

.

EncA0,B0(F0) EncA0,B1(F1) EncA1,B0(F1) EncA1,B1(F0)

.

EncC0,D0(G0) EncC0,D1(G1) EncC1,D0(G0) EncC1,D1(G0)

.

EncF0,G0(H0) EncF0,G1(H1) EncF1,G0(H0) EncF1,G1(H0)

.

EncE0,H0(I0) EncE0,H1(I1) EncE1,H0(I1) EncE1,H1(I1)

Garbling a circuit:

▶ Pick random labels W0, W1 on each wire ▶ “Encrypt” truth table of each gate ▶ Garbled circuit ≡ all encrypted gates ▶ Garbled encoding ≡ one label per wire

Garbled evaluation:

▶ Only one ciphertext per

gate is decryptable

▶ Result of decryption =

value on outgoing wire . . .. .. .. .. .. .. .. .

slide-58
SLIDE 58

.

.

Garbled circuits for 2PC

. x . y . garbled circuit f . x . OT . input . wire labels . y . y . f x y . . .. .. .. .. .. .. .. .

slide-59
SLIDE 59

.

.

Garbled circuits for 2PC

. x . y . garbled circuit f .

x

. OT . input . wire labels . y . y . f x y . . .. .. .. .. .. .. .. .

slide-60
SLIDE 60

.

.

Garbled circuits for 2PC

. x . y . garbled circuit f .

x

. OT . input . wire labels . y .

y

. f x y . . .. .. .. .. .. .. .. .

slide-61
SLIDE 61

.

.

Garbled circuits for 2PC

. x . y . garbled circuit f .

x

. OT . input . wire labels . y .

y

.

f(x, y)

. . .. .. .. .. .. .. .. .

slide-62
SLIDE 62

.

.

What can go wrong? (II)

. . memory . . . . cpu .

CPU state

.

read

.

M

.

junk

Corrupt party can mess up computation by: Providing wrong (share of) CPU state Providing wrong memory contents . . .. .. .. .. .. .. .. .

slide-63
SLIDE 63

.

.

What can go wrong? (II)

. . memory . . . cpu .

CPU state

.

read

.

M

.

junk

Corrupt party can mess up computation by:

▶ Providing wrong (share of) CPU state

Providing wrong memory contents . . .. .. .. .. .. .. .. .

slide-64
SLIDE 64

.

.

What can go wrong? (II)

. . memory . . . cpu .

CPU state

.

read ℓ

.

M[ℓ]

.

junk

Corrupt party can mess up computation by:

▶ Providing wrong (share of) CPU state

Providing wrong memory contents . . .. .. .. .. .. .. .. .

slide-65
SLIDE 65

.

.

What can go wrong? (II)

. . memory . . . cpu .

CPU state

.

read ℓ

.

M

.

junk

Corrupt party can mess up computation by:

▶ Providing wrong (share of) CPU state ▶ Providing wrong memory contents

. . .. .. .. .. .. .. .. .

slide-66
SLIDE 66

.

.

What can go wrong? (II)

. . memory . . . cpu .

CPU state

.

read ℓ

.

M

.

junk

Corrupt party can mess up computation by:

▶ Providing wrong (share of) CPU state ▶ Providing wrong memory contents

. . .. .. .. .. .. .. .. .

slide-67
SLIDE 67

.

.

Our approach [AfsharHuMohasselR15]

Idea: represent state/memory [re]using garbled encodings! . . W0, W1

▶ Privacy: Given Wb, can’t guess b ▶ Authenticity: Given Wb, can’t guess W1−b

Benefits: CPU next-instruction circuit doesn’t need to encrypt/decrypt (garbled encoding already hides the information) CPU next-instruction circuit doesn’ need to secret-share CPU state . . .. .. .. .. .. .. .. .

slide-68
SLIDE 68

.

.

Our approach [AfsharHuMohasselR15]

Idea: represent state/memory [re]using garbled encodings! . . W0, W1

▶ Privacy: Given Wb, can’t guess b ▶ Authenticity: Given Wb, can’t guess W1−b

Benefits:

▶ CPU next-instruction circuit doesn’t need to encrypt/decrypt (garbled

encoding already hides the information)

▶ CPU next-instruction circuit doesn’ need to secret-share CPU state

. . .. .. .. .. .. .. .. .

slide-69
SLIDE 69

.

.

Reusing garbled encodings

. . garbled CPU . t . garbled CPU . data in . data out . t . garbled CPU . t . state out . state in . state . state out . state in . state . mem access . mem access . (write, addr) . (read, addr) . data out . data in . data Must know ORAM access pattern to choose appropriate garbled encoding for next circuit. (Contrast with naively converting ORAM to circuit) . . .. .. .. .. .. .. .. .

slide-70
SLIDE 70

.

.

Reusing garbled encodings

. garbled CPU . t − 1 . garbled CPU . data in . data out . t . garbled CPU . t + 1 . state out . state in . state . state out . state in . state . mem access . mem access . (write, addr) . (read, addr) . data out . data in . data Must know ORAM access pattern to choose appropriate garbled encoding for next circuit. (Contrast with naively converting ORAM to circuit) . . .. .. .. .. .. .. .. .

slide-71
SLIDE 71

.

.

Reusing garbled encodings

. garbled CPU . t − 1 . garbled CPU . data in . data out . t . garbled CPU . t + 1 . state out . state in . state . state out . state in . state . mem access . mem access . (write, addr) . (read, addr) . data out . data in . data Must know ORAM access pattern to choose appropriate garbled encoding for next circuit. (Contrast with naively converting ORAM to circuit) . . .. .. .. .. .. .. .. .

slide-72
SLIDE 72

.

.

Reusing garbled encodings

. garbled CPU . t − 1 . garbled CPU . data in . data out . t . garbled CPU . t + 1 . state out . state in . state . state out . state in . state . mem access . mem access . (write, addr) . (read, addr) . data out . data in . data Must know ORAM access pattern to choose appropriate garbled encoding for next circuit. (Contrast with naively converting ORAM to circuit) . . .. .. .. .. .. .. .. .

slide-73
SLIDE 73

.

.

Reusing garbled encodings

. garbled CPU . t − 1 . garbled CPU . data in . data out . t . garbled CPU . t + 1 . state out . state in . state . state out . state in . state . mem access . mem access . (write, addr) . (read, addr) . data out . data in . data Must know ORAM access pattern to choose appropriate garbled encoding for next circuit. (Contrast with naively converting ORAM to circuit) . . .. .. .. .. .. .. .. .

slide-74
SLIDE 74

.

.

Reusing garbled encodings

. garbled CPU . t − 1 . garbled CPU . data in . data out . t . garbled CPU . t + 1 . state out . state in . state . state out . state in . state . mem access . mem access . (write, addr) . (read, addr) . data out . data in . data Must know ORAM access pattern to choose appropriate garbled encoding for next circuit. (Contrast with naively converting ORAM to circuit) . . .. .. .. .. .. .. .. .

slide-75
SLIDE 75

.

.

Reusing garbled encodings

. garbled CPU . t − 1 . garbled CPU . data in . data out . t . garbled CPU . t + 1 . state out . state in . state . state out . state in . state . mem access . mem access . (write, addr) . (read, addr) . data out . data in . data Must know ORAM access pattern to choose appropriate garbled encoding for next circuit. (Contrast with naively converting ORAM to circuit) . . .. .. .. .. .. .. .. .

slide-76
SLIDE 76

.

.

Our approach [AfsharHuMohasselR15]

. .

M

.

state

. M . state .

state instr M

.

CPU state M

. . .

garbled CPU circuit

.

CPU instruction

▶ Memory and state encoded with garbled encoding.

Susie garbles circuit with input encoding matching previous output encoding Only valid input Calvin can provide is previous circuit’s output. . . .. .. .. .. .. .. .. .

slide-77
SLIDE 77

.

.

Our approach [AfsharHuMohasselR15]

. .

M

.

state

. M . state .

state instr M

.

CPU state M

. .

garbled CPU circuit

.

CPU instruction

▶ Memory and state encoded with garbled encoding. ▶ Susie garbles circuit with input encoding matching previous output

encoding Only valid input Calvin can provide is previous circuit’s output. . . .. .. .. .. .. .. .. .

slide-78
SLIDE 78

.

.

Our approach [AfsharHuMohasselR15]

. .

M

.

state

. M . state .

(state′, instr, M′[ℓ′])

.

← CPU(state, M[ℓ])

. .

garbled CPU circuit

.

CPU instruction

▶ Memory and state encoded with garbled encoding. ▶ Susie garbles circuit with input encoding matching previous output

encoding

▶ Only valid input Calvin can provide is previous circuit’s output.

. . .. .. .. .. .. .. .. .

slide-79
SLIDE 79

.

.

Our approach [AfsharHuMohasselR15]

. . M . state .

M′

.

state′

.

(state′, instr, M′[ℓ′])

.

← CPU(state, M[ℓ])

. .

garbled CPU circuit

.

CPU instruction

▶ Memory and state encoded with garbled encoding. ▶ Susie garbles circuit with input encoding matching previous output

encoding

▶ Only valid input Calvin can provide is previous circuit’s output.

. . .. .. .. .. .. .. .. .

slide-80
SLIDE 80

.

.

Our approach [AfsharHuMohasselR15]

. . M . state .

M′

.

state′

.

state instr M

.

CPU state M

. .

garbled CPU circuit

.

CPU instruction

▶ Memory and state encoded with garbled encoding. ▶ Susie garbles circuit with input encoding matching previous output

encoding

▶ Only valid input Calvin can provide is previous circuit’s output.

. . .. .. .. .. .. .. .. .

slide-81
SLIDE 81

.

.

Malicious garbler

.

garbled CPU circuit

.

CPU instruction

.

some other circuit

.

some unauthorized info

Main challenge: malicious garbler generates invalid garbled circuits. . .. .. .. .. .. .. .. .

slide-82
SLIDE 82

.

.

Malicious garbler

. .

garbled CPU circuit

.

CPU instruction

.

some other circuit

.

some unauthorized info

Main challenge: malicious garbler generates invalid garbled circuits. . .. .. .. .. .. .. .. .

slide-83
SLIDE 83

.

.

cut and choose

. . #1 . #2 . #3 . #4 . #5 . #6 . #7 . #8 . #9 . #10 .

(eval)

.

(eval)

.

(eval)

.

(eval)

.

(eval)

.

(check)

.

(check)

.

(check)

.

(check)

.

(check)

. GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . . t . t . t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . establish many threads of computation . receiver secretly sets each thread to “check” or “eval” . sender generates garbled circuits, reusing wire labels within each thread . check-threads: receiver gets both labels per wire check correct behavior . eval-threads: receiver gets one garbled encoding learns only prescribed outputs . . .. .. .. .. .. .. .. .

slide-84
SLIDE 84

.

.

cut and choose

. . #1 . #2 . #3 . #4 . #5 . #6 . #7 . #8 . #9 . #10 .

(eval)

.

(eval)

.

(eval)

.

(eval)

.

(eval)

.

(check)

.

(check)

.

(check)

.

(check)

.

(check)

. GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . . t . t . t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . establish many threads of computation . receiver secretly sets each thread to “check” or “eval” . sender generates garbled circuits, reusing wire labels within each thread . check-threads: receiver gets both labels per wire check correct behavior . eval-threads: receiver gets one garbled encoding learns only prescribed outputs . . .. .. .. .. .. .. .. .

slide-85
SLIDE 85

.

.

cut and choose

. . #1 . #2 . #3 . #4 . #5 . #6 . #7 . #8 . #9 . #10 .

(eval)

.

(eval)

.

(eval)

.

(eval)

.

(eval)

.

(check)

.

(check)

.

(check)

.

(check)

.

(check)

. GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . . GC . GC . GC . GC . GC . GC . . GC . GC . GC . GC . GC . GC . . . GC . GC . GC . GC . GC . GC . . GC . GC . GC . GC . GC . GC . . . t . t . t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . establish many threads of computation . receiver secretly sets each thread to “check” or “eval” . sender generates garbled circuits, reusing wire labels within each thread . check-threads: receiver gets both labels per wire check correct behavior . eval-threads: receiver gets one garbled encoding learns only prescribed outputs . . .. .. .. .. .. .. .. .

slide-86
SLIDE 86

.

.

cut and choose

. . #1 . #2 . #3 . #4 . #5 . #6 . #7 . #8 . #9 . #10 .

(eval)

.

(eval)

.

(eval)

.

(eval)

.

(eval)

.

(check)

.

(check)

.

(check)

.

(check)

.

(check)

. GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . . GC . GC . GC . GC . GC . GC . . GC . GC . GC . GC . GC . GC . . . GC . GC . GC . GC . GC . GC . . GC . GC . GC . GC . GC . GC . . . t . t + 1 . t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . establish many threads of computation . receiver secretly sets each thread to “check” or “eval” . sender generates garbled circuits, reusing wire labels within each thread . check-threads: receiver gets both labels per wire check correct behavior . eval-threads: receiver gets one garbled encoding learns only prescribed outputs . . .. .. .. .. .. .. .. .

slide-87
SLIDE 87

.

.

cut and choose

. . #1 . #2 . #3 . #4 . #5 . #6 . #7 . #8 . #9 . #10 .

(eval)

.

(eval)

.

(eval)

.

(eval)

.

(eval)

.

(check)

.

(check)

.

(check)

.

(check)

.

(check)

. GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . . GC . GC . GC . GC . GC . GC . . GC . GC . GC . GC . GC . GC . . . GC . GC . GC . GC . GC . GC . . GC . GC . GC . GC . GC . GC . . . t . t + 1 . t + 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . establish many threads of computation . receiver secretly sets each thread to “check” or “eval” . sender generates garbled circuits, reusing wire labels within each thread . check-threads: receiver gets both labels per wire check correct behavior . eval-threads: receiver gets one garbled encoding learns only prescribed outputs . . .. .. .. .. .. .. .. .

slide-88
SLIDE 88

.

.

cut and choose

. . #1 . #2 . #3 . #4 . #5 . #6 . #7 . #8 . #9 . #10 .

(eval)

.

(eval)

.

(eval)

.

(eval)

.

(eval)

.

(check)

.

(check)

.

(check)

.

(check)

.

(check)

. GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC .

.

.

.

.

.

. GC . GC . GC . GC . GC . GC .

.

.

.

.

.

. GC . GC . GC . GC . GC . GC .

.

.

.

.

.

. GC . GC . GC . GC . GC . GC .

.

.

.

.

.

. GC . GC . GC . GC . GC . GC .

.

.

.

.

.

. t . t + 1 . t + 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . establish many threads of computation . receiver secretly sets each thread to “check” or “eval” . sender generates garbled circuits, reusing wire labels within each thread . check-threads: receiver gets both labels per wire ⇒ check correct behavior . eval-threads: receiver gets one garbled encoding learns only prescribed outputs . . .. .. .. .. .. .. .. .

slide-89
SLIDE 89

.

.

cut and choose

. . #1 . #2 . #3 . #4 . #5 . #6 . #7 . #8 . #9 . #10 .

(eval)

.

(eval)

.

(eval)

.

(eval)

.

(eval)

.

(check)

.

(check)

.

(check)

.

(check)

.

(check)

. GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC . GC .

.

.

.

.

.

. GC . GC . GC . GC . GC . GC .

.

.

.

.

.

. GC . GC . GC . GC . GC . GC .

.

.

.

.

.

. GC . GC . GC . GC . GC . GC .

.

.

.

.

.

. GC . GC . GC . GC . GC . GC .

.

.

.

.

.

. t . t + 1 . t + 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . establish many threads of computation . receiver secretly sets each thread to “check” or “eval” . sender generates garbled circuits, reusing wire labels within each thread . check-threads: receiver gets both labels per wire check correct behavior . eval-threads: receiver gets one garbled encoding ⇒ learns only prescribed outputs . . .. .. .. .. .. .. .. .

slide-90
SLIDE 90

.

.

One-sided secrets

. . M . . Setting:

▶ M is Calvin’s secret input; expensive ORAM initialization commits him

to M

▶ Repeatedly run public ORAM program on M ▶ Example: M = user database; check for membership

In this case we can avoid cut & choose, avoid high interaction! . . .. .. .. .. .. .. .. .

slide-91
SLIDE 91

.

.

One-sided secrets

. . M . . Setting:

▶ M is Calvin’s secret input; expensive ORAM initialization commits him

to M

▶ Repeatedly run public ORAM program on M ▶ Example: M = user database; check for membership

In this case we can avoid cut & choose, avoid high interaction! . . .. .. .. .. .. .. .. .

slide-92
SLIDE 92

.

.

Avoiding cut and choose [HuMohasselR15]

. . M . .

ORAM access pattern

.

small garbled circuit for f

.

commit to garbled output

.

  • pen garbled circuit

.

  • pen committed output

▶ Calvin knows all inputs, can run ORAM in his head

Knowing ORAM access pattern, can convert to small circuit Calvin can evaluate garbled circuit Susie can open garbled circuit (no secrets to hide!) Calvin opens committed output knowing GC was correctly generated . . .. .. .. .. .. .. .. .

slide-93
SLIDE 93

.

.

Avoiding cut and choose [HuMohasselR15]

. . M . .

ORAM access pattern

.

small garbled circuit for f

.

commit to garbled output

.

  • pen garbled circuit

.

  • pen committed output

▶ Calvin knows all inputs, can run ORAM in his head ▶ Knowing ORAM access pattern, can convert to small circuit

Calvin can evaluate garbled circuit Susie can open garbled circuit (no secrets to hide!) Calvin opens committed output knowing GC was correctly generated . . .. .. .. .. .. .. .. .

slide-94
SLIDE 94

.

.

Avoiding cut and choose [HuMohasselR15]

. . M . .

ORAM access pattern

.

small garbled circuit for f

.

commit to garbled output

.

  • pen garbled circuit

.

  • pen committed output

▶ Calvin knows all inputs, can run ORAM in his head ▶ Knowing ORAM access pattern, can convert to small circuit ▶ Calvin can evaluate garbled circuit

Susie can open garbled circuit (no secrets to hide!) Calvin opens committed output knowing GC was correctly generated . . .. .. .. .. .. .. .. .

slide-95
SLIDE 95

.

.

Avoiding cut and choose [HuMohasselR15]

. . M . .

ORAM access pattern

.

small garbled circuit for f

.

commit to garbled output

.

  • pen garbled circuit

.

  • pen committed output

▶ Calvin knows all inputs, can run ORAM in his head ▶ Knowing ORAM access pattern, can convert to small circuit ▶ Calvin can evaluate garbled circuit ▶ Susie can open garbled circuit (no secrets to hide!)

Calvin opens committed output knowing GC was correctly generated . . .. .. .. .. .. .. .. .

slide-96
SLIDE 96

.

.

Avoiding cut and choose [HuMohasselR15]

. . M . .

ORAM access pattern

.

small garbled circuit for f

.

commit to garbled output

.

  • pen garbled circuit

.

  • pen committed output

▶ Calvin knows all inputs, can run ORAM in his head ▶ Knowing ORAM access pattern, can convert to small circuit ▶ Calvin can evaluate garbled circuit ▶ Susie can open garbled circuit (no secrets to hide!) ▶ Calvin opens committed output knowing GC was correctly generated

. . .. .. .. .. .. .. .. .

slide-97
SLIDE 97

.

.

Conclusion

RAM-based 2PC can provide sublinear cost in amortized sense, using practical 2PC techniques

▶ [GKKKRV12] = general paradigm, semi-honest security ▶ [AHMR15] = malicious security ▶ [HMR15] = malicious security with one-sided secrets; no

cut-and-choose, constant rounds Challenges:

▶ Expensive pre-processing (ORAM initialization): communication &

computation

▶ Applying pre-processing to multiple users? ▶ For which computations must we “touch every bit?”

thanks!

. . .. .. .. .. .. .. .. .

slide-98
SLIDE 98

.

.

Conclusion

RAM-based 2PC can provide sublinear cost in amortized sense, using practical 2PC techniques

▶ [GKKKRV12] = general paradigm, semi-honest security ▶ [AHMR15] = malicious security ▶ [HMR15] = malicious security with one-sided secrets; no

cut-and-choose, constant rounds Challenges:

▶ Expensive pre-processing (ORAM initialization): communication &

computation

▶ Applying pre-processing to multiple users? ▶ For which computations must we “touch every bit?”

thanks!

. . .. .. .. .. .. .. .. .