Practical Garbled Circuit Optimizations
Mike Rosulek
Collaborators: David Evans / Vlad Kolesnikov / Payman Mohassel / Samee Zahur
Practical Garbled Circuit Optimizations Mike Rosulek Collaborators: - - PowerPoint PPT Presentation
Practical Garbled Circuit Optimizations Mike Rosulek Collaborators: David Evans / Vlad Kolesnikov / Payman Mohassel / Samee Zahur Garbled circuit framework [Yao86] Garbled circuit framework [Yao86] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1
Mike Rosulek
Collaborators: David Evans / Vlad Kolesnikov / Payman Mohassel / Samee Zahur
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,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
Garbling a circuit:
◮ Pick random labels W0,W1 on each wire
A0,A1 B0,B1 C0,C1 D0,D1 E0,E1 F0,F1 G0,G1 H0,H1 I0,I1
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
Garbling a circuit:
◮ Pick random labels W0,W1 on each wire
A0,A1 B0,B1 C0,C1 D0,D1 E0,E1 F0,F1 G0,G1 H0,H1 I0,I1
EA0,B0 (E0) EA0,B1 (E1) EA1,B0 (E0) EA1,B1 (E0) EA0,B0 (F0) EA0,B1 (F1) EA1,B0 (F1) EA1,B1 (F0) EC0,D0 (G0) EC0,D1 (G1) EC1,D0 (G0) EC1,D1 (G0) EF0,G0 (H0) EF0,G1 (H1) EF1,G0 (H0) EF1,G1 (H0) EE0,H0 (I0) EE0,H1 (I1) EE1,H0 (I1) EE1,H1 (I1)
Garbling a circuit:
◮ Pick random labels W0,W1 on each wire ◮ “Encrypt” truth table of each gate
A0,A1 B0,B1 C0,C1 D0,D1 E0,E1 F0,F1 G0,G1 H0,H1 I0,I1
EA0,B0 (E0) EA0,B1 (E1) EA1,B0 (E0) EA1,B1 (E0) EA0,B0 (F0) EA0,B1 (F1) EA1,B0 (F1) EA1,B1 (F0) EC0,D0 (G0) EC0,D1 (G1) EC1,D0 (G0) EC1,D1 (G0) EF0,G0 (H0) EF0,G1 (H1) EF1,G0 (H0) EF1,G1 (H0) EE0,H0 (I0) EE0,H1 (I1) EE1,H0 (I1) EE1,H1 (I1)
Garbling a circuit:
◮ Pick random labels W0,W1 on each wire ◮ “Encrypt” truth table of each gate ◮ Garbled circuit ≡ all encrypted gates
A0,A1 B0,B1 C0,C1 D0,D1 E0,E1 F0,F1 G0,G1 H0,H1 I0,I1
EA0,B0 (E0) EA0,B1 (E1) EA1,B0 (E0) EA1,B1 (E0) EA0,B0 (F0) EA0,B1 (F1) EA1,B0 (F1) EA1,B1 (F0) EC0,D0 (G0) EC0,D1 (G1) EC1,D0 (G0) EC1,D1 (G0) EF0,G0 (H0) EF0,G1 (H1) EF1,G0 (H0) EF1,G1 (H0) EE0,H0 (I0) EE0,H1 (I1) EE1,H0 (I1) EE1,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
A0,A1 B0,B1 C0,C1 D0,D1 E0,E1 F0,F1 G0,G1 H0,H1 I0,I1
EA0,B0 (E0) EA0,B1 (E1) EA1,B0 (E0) EA1,B1 (E0) EA0,B0 (F0) EA0,B1 (F1) EA1,B0 (F1) EA1,B1 (F0) EC0,D0 (G0) EC0,D1 (G1) EC1,D0 (G0) EC1,D1 (G0) EF0,G0 (H0) EF0,G1 (H1) EF1,G0 (H0) EF1,G1 (H0) EE0,H0 (I0) EE0,H1 (I1) EE1,H0 (I1) EE1,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
A0,A1 B0,B1 C0,C1 D0,D1 E0,E1 F0,F1 G0,G1 H0,H1 I0,I1
EA0,B0 (E0) EA0,B1 (E1) EA1,B0 (E0) EA1,B1 (E0) EA0,B0 (F0) EA0,B1 (F1) EA1,B0 (F1) EA1,B1 (F0) EC0,D0 (G0) EC0,D1 (G1) EC1,D0 (G0) EC1,D1 (G0) EF0,G0 (H0) EF0,G1 (H1) EF1,G0 (H0) EF1,G1 (H0) EE0,H0 (I0) EE0,H1 (I1) EE1,H0 (I1) EE1,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
A0,A1 B0,B1 C0,C1 D0,D1 E0,E1 F0,F1 G0,G1 H0,H1 I0,I1
EA0,B0 (E0) EA0,B1 (E1) EA1,B0 (E0) EA1,B1 (E0) EA0,B0 (F0) EA0,B1 (F1) EA1,B0 (F1) EA1,B1 (F0) EC0,D0 (G0) EC0,D1 (G1) EC1,D0 (G0) EC1,D1 (G0) EF0,G0 (H0) EF0,G1 (H1) EF1,G0 (H0) EF1,G1 (H0) EE0,H0 (I0) EE0,H1 (I1) EE1,H0 (I1) EE1,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
A0,A1 B0,B1 C0,C1 D0,D1 E0,E1 F0,F1 G0,G1 H0,H1 I0,I1
EA0,B0 (E0) EA0,B1 (E1) EA1,B0 (E0) EA1,B1 (E0) EA0,B0 (F0) EA0,B1 (F1) EA1,B0 (F1) EA1,B1 (F0) EC0,D0 (G0) EC0,D1 (G1) EC1,D0 (G0) EC1,D1 (G0) EF0,G0 (H0) EF0,G1 (H1) EF1,G0 (H0) EF1,G1 (H0) EE0,H0 (I0) EE0,H1 (I1) EE1,H0 (I1) EE1,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
A0,A1 B0,B1 C0,C1 D0,D1 E0,E1 F0,F1 G0,G1 H0,H1 I0,I1
EA0,B0 (E0) EA0,B1 (E1) EA1,B0 (E0) EA1,B1 (E0) EA0,B0 (F0) EA0,B1 (F1) EA1,B0 (F1) EA1,B1 (F0) EC0,D0 (G0) EC0,D1 (G1) EC1,D0 (G0) EC1,D1 (G0) EF0,G0 (H0) EF0,G1 (H1) EF1,G0 (H0) EF1,G1 (H0) EE0,H0 (I0) EE0,H1 (I1) EE1,H0 (I1) EE1,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
x y
x y garbled circuit f garbled input x,
x y garbled circuit f garbled input x,
OT input wire labels y garbled y
x y garbled circuit f garbled input x,
OT input wire labels y garbled y f (x,y)
x y garbled circuit f garbled input x,
OT input wire labels y garbled y f (x,y) Private function evaluation, zero-knowledge proofs, encryption with key-dependent message security, randomized encodings, secure
x y garbled circuit f garbled input x,
OT input wire labels y garbled y f (x,y) Private function evaluation, zero-knowledge proofs, encryption with key-dependent message security, randomized encodings, secure
Garbling is a fundamental primitive [BellareHoangRogaway12]
Garble Encode Eval Decode f garbled circuit decoding info garbled input garbled
encoding info x f (x)
Garble Encode Eval Decode f garbled circuit F decoding info d garbled input X garbled
encoding info e x f (x)
Garble Encode Eval Decode f garbled circuit F decoding info d garbled input X garbled
encoding info e x f (x) Security properties: Privacy: (F,X,d) reveals nothing beyond f (x) Obliviousness: (F,X) reveals nothing Authenticity: given (F,X), hard to find Y that decodes {f (x),⊥}
computation size hardness assumption
computation size hardness assumption
1λ 2λ 3λ 4λ 5λ 1986 1990 1999 2008 2009 2014 2015 DES AES SHA1 SHA256
1λ 2λ 3λ 4λ 5λ 1986 1990 1999 2008 2009 2014 2015
[BeaverMicaliRogaway] [NaorPinkasSumner] [KolesnikovSchneider] [PinkasSchneiderSmartWilliams] [KolesnikovMohasselRosulek] [ZahurRosulekEvans] [Yao,GoldreichMicaliWigderson]
DES AES SHA1 SHA256
1λ 2λ 3λ 4λ 5λ 1986 1990 1999 2008 2009 2014 2015
[BeaverMicaliRogaway] [NaorPinkasSumner] [KolesnikovSchneider] [PinkasSchneiderSmartWilliams] [KolesnikovMohasselRosulek] [ZahurRosulekEvans] [Yao,GoldreichMicaliWigderson]
DES AES SHA1 SHA256
Prediction: by 2026, all garbled circuits will have zero size.
A0,A1 B0,B1 C0,C1
EA0,B0 (C0) EA0,B1 (C1) EA1,B0 (C0) EA1,B1 (C0)
◮ Position in this list leaks semantic value
A0,A1 B0,B1 C0,C1
EA0,B0 (C0) EA0,B1 (C1) EA1,B0 (C0) EA1,B1 (C0)
◮ Position in this list leaks semantic value
A0,A1 B0,B1 C0,C1
EA0,B0 (C0) EA0,B1 (C1) EA1,B0 (C0) EA1,B1 (C0)
◮ Position in this list leaks semantic value =⇒ permute ciphertexts
A0,A1 B0,B1 C0,C1
EA0,B0 (C0) EA0,B1 (C1) EA1,B0 (C0) EA1,B1 (C0)
◮ Position in this list leaks semantic value =⇒ permute ciphertexts ◮ Need to detect [in]correct decryption
A0,A1 B0,B1 C0,C1
EA0,B0 (C0) EA0,B1 (C1) EA1,B0 (C0) EA1,B1 (C0)
◮ Position in this list leaks semantic value =⇒ permute ciphertexts ◮ Need to detect [in]correct decryption ◮ (Apparently) no one knows exactly what Yao had in mind:
◮ EK0,K1 (M) = E(K0,S0),E(K1,S1) where S0 ⊕ S1 = M
[GoldreichMicaliWigderson87]
◮ EK0,K1 (M) = E(K1,E(K0,M))
[LindellPinkas09]
A0,A1 B0,B1 C0,C1 EA0,B0 (C0) EA0,B1 (C1) EA1,B0 (C0) EA1,B1 (C0)
A•
0,A• 1
B•
0,B• 1
C•
0,C• 1
EA•
0,B• 0 (C•
0)
EA•
0,B• 1 (C•
1)
EA•
1,B• 0 (C•
0)
EA•
1,B• 1 (C•
0) ◮ Randomly assign (•,•) or (•,•)
to each pair of wire labels
◮ Include color in the wire label
(e.g., as last bit)
A•
0,A• 1
B•
0,B• 1
C•
0,C• 1
0)
1)
0)
0) ◮ Randomly assign (•,•) or (•,•)
to each pair of wire labels
◮ Include color in the wire label
(e.g., as last bit)
◮ Order the 4 ciphertexts
canonically, by color of keys
A•
0,A• 1
B•
0,B• 1
C•
0,C• 1
1)
0)
0)
0) ◮ Randomly assign (•,•) or (•,•)
to each pair of wire labels
◮ Include color in the wire label
(e.g., as last bit)
◮ Order the 4 ciphertexts
canonically, by color of keys
A0,A•
1
B0,B•
1
C0,C1
◮ Randomly assign (•,•) or (•,•)
to each pair of wire labels
◮ Include color in the wire label
(e.g., as last bit)
◮ Order the 4 ciphertexts
canonically, by color of keys
◮ Evaluate by decrypting
ciphertext indexed by your colors
A0,A•
1
B0,B•
1
C•
0,C1
0)
◮ Randomly assign (•,•) or (•,•)
to each pair of wire labels
◮ Include color in the wire label
(e.g., as last bit)
◮ Order the 4 ciphertexts
canonically, by color of keys
◮ Evaluate by decrypting
ciphertext indexed by your colors
A0,A•
1
B0,B•
1
C•
0,C1
0)
◮ Randomly assign (•,•) or (•,•)
to each pair of wire labels
◮ Include color in the wire label
(e.g., as last bit)
◮ Order the 4 ciphertexts
canonically, by color of keys
◮ Evaluate by decrypting
ciphertext indexed by your colors Can use one-time-secure symmetric encryption!
EA,B(C): cost to garble AES PRF(A,gateID) ⊕ PRF(B,gateID) ⊕ C ∼6s [extrapolated]
[NaorPinkasSumner99]
time from Fairplay [MNPS04]: PRF = SHA256
2 hash ≫ 1 hash EA,B(C): cost to garble AES PRF(A,gateID) ⊕ PRF(B,gateID) ⊕ C ∼6s [extrapolated]
[NaorPinkasSumner99]
time from Fairplay [MNPS04]: PRF = SHA256
H(ABgateID) ⊕ C 0.15s
[LindellPinkasSmart08]
time from [sS12]; H = SHA256
2 hash ≫ 1 hash ≫ 1 block cipher EA,B(C): cost to garble AES PRF(A,gateID) ⊕ PRF(B,gateID) ⊕ C ∼6s [extrapolated]
[NaorPinkasSumner99]
time from Fairplay [MNPS04]: PRF = SHA256
H(ABgateID) ⊕ C 0.15s
[LindellPinkasSmart08]
time from [sS12]; H = SHA256
AES256(AB,gateID) ⊕ C 0.12s
[shelatShen12]
2 hash ≫ 1 hash ≫ 1 block cipher ≫ 1 block cipher w/o key schedule EA,B(C): cost to garble AES PRF(A,gateID) ⊕ PRF(B,gateID) ⊕ C ∼6s [extrapolated]
[NaorPinkasSumner99]
time from Fairplay [MNPS04]: PRF = SHA256
H(ABgateID) ⊕ C 0.15s
[LindellPinkasSmart08]
time from [sS12]; H = SHA256
AES256(AB,gateID) ⊕ C 0.12s
[shelatShen12]
AES(const,K) ⊕ K ⊕ C 0.0003s
where K = 2A ⊕ 4B ⊕ gateID
[BellareHoangKeelveedhiRogaway13]
size (×λ) garble cost eval cost assumption Classical large? 8 5 PKE P&P 4 4/8 1/2 hash/PRF
A•
0,A• 1
B•
0B• 1
C•
0C• 1
1)
0)
0)
0)
A•
0,A• 1
B•
0B• 1
C•
0C• 1
C0 ← {0,1}n C1 ← {0,1}n
1)
0)
0)
0)
A•
0,A• 1
B•
0B• 1
C•
0C• 1
C0 ← {0,1}n C1 ← {0,1}n
1)
0)
0)
0) ◮ What wire label will be payload of 1st (••) ciphertext?
A•
0,A• 1
B•
0B• 1
C•
0C• 1
C0 ← {0,1}n C1 = E−1
A0,B1(0n)
1)
0)
0)
0) ◮ What wire label will be payload of 1st (••) ciphertext? ◮ Choose that label so that 1st ciphertext is 0n
A•
0,A• 1
B•
0B• 1
C•
0C• 1
C0 ← {0,1}n C1 = E−1
A0,B1(0n)
0)
0)
0) ◮ What wire label will be payload of 1st (••) ciphertext? ◮ Choose that label so that 1st ciphertext is 0n
A•
0,A• 1
B•
0B• 1
C•
0C• 1
C0 ← {0,1}n C1 = E−1
A0,B1(0n)
0)
0)
0) ◮ What wire label will be payload of 1st (••) ciphertext? ◮ Choose that label so that 1st ciphertext is 0n ◮ No need to include 1st ciphertext in garbled gate
A•
0,A• 1
B•
0B• 1
C•
0C• 1
C0 ← {0,1}n C1 = E−1
A0,B1(0n)
0)
0)
0) ◮ What wire label will be payload of 1st (••) ciphertext? ◮ Choose that label so that 1st ciphertext is 0n ◮ No need to include 1st ciphertext in garbled gate ◮ Evaluate as before, but imagine ciphertext 0n if you got ••.
size (×λ) garble cost eval cost assumption Classical large? 8 5 PKE P&P 4 4/8 1/2 hash/PRF GRR3 3 4/8 1/2 hash/PRF
A0,A1 B0,B1 C0,C1
A,A ⊕ ∆A B,B ⊕ ∆B C,C ⊕ ∆C
◮ Wire’s offset ≡ XOR of its two labels
A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆
◮ Wire’s offset ≡ XOR of its two labels ◮ Choose all wires to have same (secret) offset ∆
A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ C ← {0,1}n
◮ Wire’s offset ≡ XOR of its two labels ◮ Choose all wires to have same (secret) offset ∆
A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ C := A ⊕ B A
⊕ B
= A ⊕ B
◮ Wire’s offset ≡ XOR of its two labels ◮ Choose all wires to have same (secret) offset ∆ ◮ Choose false output = false input ⊕ false input
A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ C := A ⊕ B A
⊕ B ⊕ ∆
= A ⊕ B ⊕ ∆
◮ Wire’s offset ≡ XOR of its two labels ◮ Choose all wires to have same (secret) offset ∆ ◮ Choose false output = false input ⊕ false input ◮ Evaluate by xoring input wire labels (no crypto)
A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ C := A ⊕ B A ⊕ ∆
⊕ B
= A ⊕ B ⊕ ∆
◮ Wire’s offset ≡ XOR of its two labels ◮ Choose all wires to have same (secret) offset ∆ ◮ Choose false output = false input ⊕ false input ◮ Evaluate by xoring input wire labels (no crypto)
A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ C := A ⊕ B A ⊕ ∆
⊕ B ⊕ ∆
= A ⊕ B
◮ Wire’s offset ≡ XOR of its two labels ◮ Choose all wires to have same (secret) offset ∆ ◮ Choose false output = false input ⊕ false input ◮ Evaluate by xoring input wire labels (no crypto)
A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ EA
,B
(C ) EA
,B⊕∆(C ⊕ ∆)
EA⊕∆,B (C ) EA⊕∆,B⊕∆(C )
◮ Still need to garble and gates
A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ C ← {0,1}n EA
,B
(C ) EA
,B⊕∆(C ⊕ ∆)
EA⊕∆,B (C ) EA⊕∆,B⊕∆(C )
◮ Still need to garble and gates ◮ Compatible with garbled row-reduction
A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ C := E−1
A,B(0n)
EA
,B
(C ) EA
,B⊕∆(C ⊕ ∆)
EA⊕∆,B (C ) EA⊕∆,B⊕∆(C )
◮ Still need to garble and gates ◮ Compatible with garbled row-reduction
A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ EA
,B
(C ) EA
,B⊕∆(C ⊕ ∆)
EA⊕∆,B (C ) EA⊕∆,B⊕∆(C )
◮ Still need to garble and gates ◮ Compatible with garbled row-reduction ◮ Secret ∆ used in key and payload of ciphertexts!
A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ EA
,B
(C ) EA
,B⊕∆(C ⊕ ∆)
EA⊕∆,B (C ) EA⊕∆,B⊕∆(C )
◮ Still need to garble and gates ◮ Compatible with garbled row-reduction ◮ Secret ∆ used in key and payload of ciphertexts! ◮ Requires related-key + circularity assumption [ChoiKatzKumaresanZhou12]
size (×λ) garble cost eval cost assumption XOR AND XOR AND XOR AND Classical large? 8 5 PKE P&P 4 4 4/8 4/8 1/2 1/2 PRF/hash GRR3 3 3 4/8 4/8 1/2 1/2 PRF/hash Free XOR 3 4 1
Garbled gates with only 2 ciphertexts! A0,A1 B0,B1 C0,C1
Garbled gates with only 2 ciphertexts!
◮ Evaluator can know exactly one of:
K1 = E−1
A0,B0(0n)
K2 = E−1
A0,B1(0n)
K3 = E−1
A1,B0(0n)
K4 = E−1
A1,B1(0n)
A0,A1 B0,B1 C0,C1
Garbled gates with only 2 ciphertexts!
◮ Evaluator can know exactly one of:
K1 = E−1
A0,B0(0n) learn C0
K2 = E−1
A0,B1(0n) learn C1
K3 = E−1
A1,B0(0n) learn C0
K4 = E−1
A1,B1(0n) learn C0
A0,A1 B0,B1 C0,C1
Garbled gates with only 2 ciphertexts!
◮ Evaluator can know exactly one of:
K1 = E−1
A0,B0(0n) learn C0
K2 = E−1
A0,B1(0n) learn C1
K3 = E−1
A1,B0(0n) learn C0
K4 = E−1
A1,B1(0n) learn C0
A0,A1 B0,B1 C0,C1
(1, K1) (3, K3) (4, K4)
(1,K1), (3,K3), (4,K4)
Garbled gates with only 2 ciphertexts!
◮ Evaluator can know exactly one of:
K1 = E−1
A0,B0(0n) learn C0
K2 = E−1
A0,B1(0n) learn C1
K3 = E−1
A1,B0(0n) learn C0
K4 = E−1
A1,B1(0n) learn C0
A0,A1 B0,B1 C0,C1
(1, K1) (3, K3) (4, K4)
P = uniq deg-2 poly thru (1,K1), (3,K3), (4,K4)
Garbled gates with only 2 ciphertexts!
◮ Evaluator can know exactly one of:
K1 = E−1
A0,B0(0n) learn C0
K2 = E−1
A0,B1(0n) learn C1
K3 = E−1
A1,B0(0n) learn C0
K4 = E−1
A1,B1(0n) learn C0
A0,A1 B0,B1 C0,C1
(2, K2) P(5) P(6)
P = uniq deg-2 poly thru (1,K1), (3,K3), (4,K4) (2,K2), (5,P(5)), (6,P(6))
Garbled gates with only 2 ciphertexts!
◮ Evaluator can know exactly one of:
K1 = E−1
A0,B0(0n) learn C0
K2 = E−1
A0,B1(0n) learn C1
K3 = E−1
A1,B0(0n) learn C0
K4 = E−1
A1,B1(0n) learn C0
A0,A1 B0,B1 C0,C1
(2, K2) P(5) P(6)
P = uniq deg-2 poly thru (1,K1), (3,K3), (4,K4) Q = uniq deg-2 poly thru (2,K2), (5,P(5)), (6,P(6))
Garbled gates with only 2 ciphertexts!
◮ Evaluator can know exactly one of:
K1 = E−1
A0,B0(0n) learn C0
K2 = E−1
A0,B1(0n) learn C1
K3 = E−1
A1,B0(0n) learn C0
K4 = E−1
A1,B1(0n) learn C0
A0,A1 B0,B1 C0,C1 C0 = P(0); C1 = Q(0)
P(0) Q(0)
P = uniq deg-2 poly thru (1,K1), (3,K3), (4,K4) Q = uniq deg-2 poly thru (2,K2), (5,P(5)), (6,P(6))
Garbled gates with only 2 ciphertexts!
◮ Evaluator can know exactly one of:
K1 = E−1
A0,B0(0n) learn C0
K2 = E−1
A0,B1(0n) learn C1
K3 = E−1
A1,B0(0n) learn C0
K4 = E−1
A1,B1(0n) learn C0
A0,A1 B0,B1 C0,C1 C0 = P(0); C1 = Q(0) P(5) P(6)
P(0) Q(0) P(5) P(6)
P = uniq deg-2 poly thru (1,K1), (3,K3), (4,K4) Q = uniq deg-2 poly thru (2,K2), (5,P(5)), (6,P(6))
Garbled gates with only 2 ciphertexts!
◮ Evaluator can know exactly one of:
K1 = E−1
A0,B0(0n) learn C0
K2 = E−1
A0,B1(0n) learn C1
K3 = E−1
A1,B0(0n) learn C0
K4 = E−1
A1,B1(0n) learn C0 ◮ Evaluate by interpolating poly thru
Ki, P(5) and P(6) A0,A1 B0,B1 C0,C1 C0 = P(0); C1 = Q(0) P(5) P(6)
P(5) P(6)
P = uniq deg-2 poly thru (1,K1), (3,K3), (4,K4) Q = uniq deg-2 poly thru (2,K2), (5,P(5)), (6,P(6))
Garbled gates with only 2 ciphertexts!
◮ Evaluator can know exactly one of:
K1 = E−1
A0,B0(0n) learn C0
K2 = E−1
A0,B1(0n) learn C1
K3 = E−1
A1,B0(0n) learn C0
K4 = E−1
A1,B1(0n) learn C0 ◮ Evaluate by interpolating poly thru
Ki, P(5) and P(6) A0,A1 B0,B1 C0,C1 C0 = P(0); C1 = Q(0) P(5) P(6)
P(5) P(6)
P = uniq deg-2 poly thru (1,K1), (3,K3), (4,K4) Q = uniq deg-2 poly thru (2,K2), (5,P(5)), (6,P(6))
Garbled gates with only 2 ciphertexts!
◮ Evaluator can know exactly one of:
K1 = E−1
A0,B0(0n) learn C0
K2 = E−1
A0,B1(0n) learn C1
K3 = E−1
A1,B0(0n) learn C0
K4 = E−1
A1,B1(0n) learn C0 ◮ Evaluate by interpolating poly thru
Ki, P(5) and P(6) A0,A1 B0,B1 C0,C1 C0 = P(0); C1 = Q(0) P(5) P(6)
(3, K3) P(5) P(6)
P = uniq deg-2 poly thru (1,K1), (3,K3), (4,K4) Q = uniq deg-2 poly thru (2,K2), (5,P(5)), (6,P(6))
Garbled gates with only 2 ciphertexts!
◮ Evaluator can know exactly one of:
K1 = E−1
A0,B0(0n) learn C0
K2 = E−1
A0,B1(0n) learn C1
K3 = E−1
A1,B0(0n) learn C0
K4 = E−1
A1,B1(0n) learn C0 ◮ Evaluate by interpolating poly thru
Ki, P(5) and P(6) A0,A1 B0,B1 C0,C1 C0 = P(0); C1 = Q(0) P(5) P(6)
(3, K3) P(5) P(6)
P = uniq deg-2 poly thru (1,K1), (3,K3), (4,K4) Q = uniq deg-2 poly thru (2,K2), (5,P(5)), (6,P(6))
Garbled gates with only 2 ciphertexts!
◮ Evaluator can know exactly one of:
K1 = E−1
A0,B0(0n) learn C0
K2 = E−1
A0,B1(0n) learn C1
K3 = E−1
A1,B0(0n) learn C0
K4 = E−1
A1,B1(0n) learn C0 ◮ Evaluate by interpolating poly thru
Ki, P(5) and P(6) A0,A1 B0,B1 C0,C1 C0 = P(0); C1 = Q(0) P(5) P(6)
P(0) (3, K3) P(5) P(6)
P = uniq deg-2 poly thru (1,K1), (3,K3), (4,K4) Q = uniq deg-2 poly thru (2,K2), (5,P(5)), (6,P(6))
Garbled gates with only 2 ciphertexts!
◮ Evaluator can know exactly one of:
K1 = E−1
A0,B0(0n) learn C0
K2 = E−1
A0,B1(0n) learn C1
K3 = E−1
A1,B0(0n) learn C0
K4 = E−1
A1,B1(0n) learn C0 ◮ Evaluate by interpolating poly thru
Ki, P(5) and P(6) A0,A1 B0,B1 C0,C1 C0 = P(0); C1 = Q(0) P(5) P(6)
Q(0) (2, K2) P(5) P(6)
P = uniq deg-2 poly thru (1,K1), (3,K3), (4,K4) Q = uniq deg-2 poly thru (2,K2), (5,P(5)), (6,P(6))
Garbled gates with only 2 ciphertexts!
◮ Evaluator can know exactly one of:
K1 = E−1
A0,B0(0n) learn C0
K2 = E−1
A0,B1(0n) learn C1
K3 = E−1
A1,B0(0n) learn C0
K4 = E−1
A1,B1(0n) learn C0 ◮ Evaluate by interpolating poly thru
Ki, P(5) and P(6)
◮ Incompatible with Free-XOR: can’t
ensure C0 ⊕ C1 = ∆ A0,A1 B0,B1 C0,C1 C0 = P(0); C1 = Q(0) P(5) P(6)
P(0) Q(0) (1, K1) (2, K2) (3, K3) (4, K4) P(5) P(6)
P = uniq deg-2 poly thru (1,K1), (3,K3), (4,K4) Q = uniq deg-2 poly thru (2,K2), (5,P(5)), (6,P(6))
size (×λ) garble cost eval cost assumption XOR AND XOR AND XOR AND Classical large? 8 5 PKE P&P 4 4 4/8 4/8 1/2 1/2 hash/PRF GRR3 3 3 4/8 4/8 1/2 1/2 PRF/hash Free XOR 3 4 1
GRR2 2 2 4/8 4/8 1/2 1/2 PRF/hash
A,A ⊕ ∆1
A,A ⊕ ∆1 A∗,A∗ ⊕ ∆2
◮ Translate to a new wire offset
A,A ⊕ ∆1 A∗,A∗ ⊕ ∆2 0 0 1 1
◮ Translate to a new wire offset (unary a → a gate)
A,A ⊕ ∆1 A∗,A∗ ⊕ ∆2 A A∗ A ⊕ ∆1 A∗ ⊕ ∆2
◮ Translate to a new wire offset (unary a → a gate)
A,A ⊕ ∆1 A∗,A∗ ⊕ ∆2 EA (A∗ ) EA⊕∆1(A∗ ⊕ ∆2)
◮ Translate to a new wire offset (unary a → a gate)
A,A ⊕ ∆1 A∗,A∗ ⊕ ∆2 EA (A∗ ) EA⊕∆1(A∗ ⊕ ∆2) A∗ ← {0,1}n
◮ Translate to a new wire offset (unary a → a gate)
A,A ⊕ ∆1 A∗,A∗ ⊕ ∆2 EA (A∗ ) EA⊕∆1(A∗ ⊕ ∆2) A∗ := E−1
A (0n) ◮ Translate to a new wire offset (unary a → a gate)
A,A ⊕ ∆1 A∗,A∗ ⊕ ∆2 0n EA⊕∆1(A∗ ⊕ ∆2) A∗ := E−1
A (0n) ◮ Translate to a new wire offset (unary a → a gate)
A,A ⊕ ∆1 A∗,A∗ ⊕ ∆2 EA⊕∆1(A∗ ⊕ ∆2) A∗ := E−1
A (0n) ◮ Translate to a new wire offset (unary a → a gate) using 1 ciphertext
A,A ⊕ ∆1 A∗,A∗ ⊕ ∆2
∆1 → ∆2
EA⊕∆1(A∗ ⊕ ∆2) A∗ := E−1
A (0n) ◮ Translate to a new wire offset (unary a → a gate) using 1 ciphertext
A,A ⊕ ∆A B,B ⊕ ∆B C,C ⊕ ∆C
A,A ⊕ ∆A B,B ⊕ ∆B C,C ⊕ ∆C
∆A → ∆C ∆B → ∆C
◮ Adjust inputs to target offset ∆C (1 ciphertext each)
free A,A ⊕ ∆A B,B ⊕ ∆B C,C ⊕ ∆C
∆A → ∆C ∆B → ∆C
◮ Adjust inputs to target offset ∆C (1 ciphertext each), then XOR is free
free A,A ⊕ ∆A B,B ⊕ ∆C C,C ⊕ ∆C
∆A → ∆C
◮ Adjust inputs to target offset ∆C (1 ciphertext each), then XOR is free ◮ If input wire already suitable, no need to adjust
free A,A ⊕ ∆A B,B ⊕ ∆C C,C ⊕ ∆C
∆A → ∆C
◮ Adjust inputs to target offset ∆C (1 ciphertext each), then XOR is free ◮ If input wire already suitable, no need to adjust ◮ Total cost: 0, 1 or 2 depending on how many {∆A,∆B,∆C} distinct.
free A,A ⊕ ∆A B,B ⊕ ∆C C,C ⊕ ∆C
∆A → ∆C
◮ Adjust inputs to target offset ∆C (1 ciphertext each), then XOR is free ◮ If input wire already suitable, no need to adjust ◮ Total cost: 0, 1 or 2 depending on how many {∆A,∆B,∆C} distinct.
Combinatorial optimization problem: Choose an offset for each wire, minimizing total cost of XOR gates
◮ Subj. to compatibility with 2-ciphertext row-reduction of AND gates ◮ (or) Subj. to removing circularity property of free-XOR
size (×λ) garble cost eval cost assumption XOR AND XOR AND XOR AND Classical large? 8 5 PKE P&P 4 4 4/8 4/8 1/2 1/2 hash/PRF GRR3 3 3 4/8 4/8 1/2 1/2 PRF/hash Free XOR 3 4 1
GRR2 2 2 4/8 4/8 1/2 1/2 PRF/hash FleXOR {0,1,2} 2 {0,1,2} 4 {0,1,2} 1
What if garbler knows in advance the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆
What if garbler knows in advance the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆
What if garbler knows in advance the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ 0 0 1 0 if a = 0: unary gate b → 0
What if garbler knows in advance the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ B C B ⊕ ∆ C if a = 0: unary gate b → 0
What if garbler knows in advance the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ EB (C) EB⊕∆(C) if a = 0: unary gate b → 0
What if garbler knows in advance the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆
What if garbler knows in advance the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ 0 0 1 1 if a = 1: unary gate b → b
What if garbler knows in advance the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ B C B ⊕ ∆ C ⊕ ∆ if a = 1: unary gate b → b
What if garbler knows in advance the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ EB (C ) EB⊕∆(C ⊕ ∆) if a = 1: unary gate b → b
What if garbler knows in advance the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ EB (C) EB⊕∆(C) if a = 0: unary gate b → 0 EB (C ) EB⊕∆(C ⊕ ∆) if a = 1: unary gate b → b
What if garbler knows in advance the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ EB (C ) EB⊕∆(C ⊕ a∆)
What if garbler knows in advance the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ C ← {0,1}n EB (C ) EB⊕∆(C ⊕ a∆)
What if garbler knows in advance the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ C := E−1
B (0n)
EB (C ) EB⊕∆(C ⊕ a∆)
What if garbler knows in advance the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ C := E−1
B (0n)
0n EB⊕∆(C ⊕ a∆)
What if garbler knows in advance the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ C := E−1
B (0n)
EB⊕∆(C ⊕ a∆)
Fine print: permute ciphertexts with permute-and-point.
What if evaluator knows the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆
What if evaluator knows the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆
What if evaluator knows the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ Evaluator has B (knows false): ⇒ should obtain C (false)
What if evaluator knows the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ EB(C) Evaluator has B (knows false): ⇒ should obtain C (false)
What if evaluator knows the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ EB(C) Evaluator has B (knows false): ⇒ should obtain C (false) Evaluator has B ⊕ ∆ (knows true):
What if evaluator knows the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ EB(C) Evaluator has B (knows false): ⇒ should obtain C (false) Evaluator has B ⊕ ∆ (knows true): ⇒ should be able to transfer truth value from “a” wire to “c” wire
What if evaluator knows the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ EB (C ) EB⊕∆(A ⊕ C) Evaluator has B (knows false): ⇒ should obtain C (false) Evaluator has B ⊕ ∆ (knows true): ⇒ should be able to transfer truth value from “a” wire to “c” wire
◮ Suffices to learn A ⊕ C
What if evaluator knows the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ EB (C ) EB⊕∆(A ⊕ C) Evaluator has B (knows false): ⇒ should obtain C (false) Evaluator has B ⊕ ∆ (knows true): ⇒ should be able to transfer truth value from “a” wire to “c” wire
◮ Suffices to learn A ⊕ C
What if evaluator knows the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ EB (C ) EB⊕∆(A ⊕ C)
⊕ A ⊕ C
Evaluator has B (knows false): ⇒ should obtain C (false) Evaluator has B ⊕ ∆ (knows true): ⇒ should be able to transfer truth value from “a” wire to “c” wire
◮ Suffices to learn A ⊕ C
What if evaluator knows the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ EB (C ) EB⊕∆(A ⊕ C)
⊕ A ⊕ C
Evaluator has B (knows false): ⇒ should obtain C (false) Evaluator has B ⊕ ∆ (knows true): ⇒ should be able to transfer truth value from “a” wire to “c” wire
◮ Suffices to learn A ⊕ C
What if evaluator knows the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ EB (C ) EB⊕∆(A ⊕ C) C ← {0,1}n Evaluator has B (knows false): ⇒ should obtain C (false) Evaluator has B ⊕ ∆ (knows true): ⇒ should be able to transfer truth value from “a” wire to “c” wire
◮ Suffices to learn A ⊕ C
What if evaluator knows the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ EB (C ) EB⊕∆(A ⊕ C) C := E−1
B (0n)
Evaluator has B (knows false): ⇒ should obtain C (false) Evaluator has B ⊕ ∆ (knows true): ⇒ should be able to transfer truth value from “a” wire to “c” wire
◮ Suffices to learn A ⊕ C
What if evaluator knows the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ 0n EB⊕∆(A ⊕ C) C := E−1
B (0n)
Evaluator has B (knows false): ⇒ should obtain C (false) Evaluator has B ⊕ ∆ (knows true): ⇒ should be able to transfer truth value from “a” wire to “c” wire
◮ Suffices to learn A ⊕ C
What if evaluator knows the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ EB⊕∆(A ⊕ C) C := E−1
B (0n)
Evaluator has B (knows false): ⇒ should obtain C (false) Evaluator has B ⊕ ∆ (knows true): ⇒ should be able to transfer truth value from “a” wire to “c” wire
◮ Suffices to learn A ⊕ C
What if evaluator knows the truth value on one input wire? A,A ⊕ ∆ B,B ⊕ ∆ C,C ⊕ ∆ EB⊕∆(A ⊕ C) C := E−1
B (0n)
Evaluator has B (knows false): ⇒ should obtain C (false) Evaluator has B ⊕ ∆ (knows true): ⇒ should be able to transfer truth value from “a” wire to “c” wire
◮ Suffices to learn A ⊕ C
Fine print: no need for permute-and-point here
◮ Garbler chooses random bit r
◮ Garbler chooses random bit r
◮ Garbler chooses random bit r ◮ Arrange for evaluator to learn a ⊕ r in the clear
◮ Garbler chooses random bit r ◮ Arrange for evaluator to learn a ⊕ r in the clear
◮ Garbler chooses random bit r ◮ Arrange for evaluator to learn a ⊕ r in the clear
◮ Garbler chooses random bit r ◮ Arrange for evaluator to learn a ⊕ r in the clear ◮ Total cost = 2 “half gates” + 1 XOR gate = 2 ciphertexts
◮ Garbler chooses random bit r
◮ r = color bit of false wire label A
◮ Arrange for evaluator to learn a ⊕ r in the clear
◮ a ⊕ r = color bit of wire label evaluator gets (A or A ⊕ ∆)
◮ Total cost = 2 “half gates” + 1 XOR gate = 2 ciphertexts
size (×λ) garble cost eval cost assumption XOR AND XOR AND XOR AND Classical large? 8 5 PKE P&P 4 4 4/8 4/8 1/2 1/2 hash/PRF GRR3 3 3 4/8 4/8 1/2 1/2 PRF/hash Free XOR 3 4 1
GRR2 2 2 4/8 4/8 1/2 1/2 PRF/hash FleXOR {0,1,2} 2 {0,1,2} 4 {0,1,2} 1
HalfGates 2 4 2
size (×λ) garble cost eval cost assumption XOR AND XOR AND XOR AND Classical large? 8 5 PKE P&P 4 4 4/8 4/8 1/2 1/2 hash/PRF GRR3 3 3 4/8 4/8 1/2 1/2 PRF/hash Free XOR 3 4 1
GRR2 2 2 4/8 4/8 1/2 1/2 PRF/hash FleXOR {0,1,2} 2 {0,1,2} 4 {0,1,2} 1
HalfGates 2 4 2
[XYZ26]? < 2? ? ? ? ? ?
Every practical garbling scheme is combination of:
◮ Calls to symmetric primitive (can be modeled as random oracle) ◮ GF (2λ)-linear operations (xor, polynomial interpolation)
Every practical garbling scheme is combination of:
◮ Calls to symmetric primitive (can be modeled as random oracle) ◮ GF (2λ)-linear operations (xor, polynomial interpolation)
Teorem ([ZahurRosulekEvans15])
Garbling a single and gate requires 2 ciphertexts (2λ bits), if garbling scheme is “linear” in this sense.
Every practical garbling scheme is combination of:
◮ Calls to symmetric primitive (can be modeled as random oracle) ◮ GF (2λ)-linear operations (xor, polynomial interpolation)
Teorem ([ZahurRosulekEvans15])
Garbling a single and gate requires 2 ciphertexts (2λ bits), if garbling scheme is “linear” in this sense. Half-gates construction is size-optimal among schemes that: . . . use “known techniques” . . . work gate-by-gate in {xor,and,not} basis
Consider larger “chunks” of circuit, beyond {xor,and,not} basis?
Consider larger “chunks” of circuit, beyond {xor,and,not} basis?
Discover some clever non-linear approach to garbling?
Consider larger “chunks” of circuit, beyond {xor,and,not} basis?
Discover some clever non-linear approach to garbling?
Wait for break-even point for asymptotically superior methods?
Consider larger “chunks” of circuit, beyond {xor,and,not} basis?
Discover some clever non-linear approach to garbling?
Wait for break-even point for asymptotically superior methods?
Use weaker security when situation calls for it.
x,w x “∃w : R(x,w) = 1 ”
x,w x “∃w : R(x,w) = 1 ” garbled R(x,·)
x,w x “∃w : R(x,w) = 1 ” garbled R(x,·) OT input wire labels w garbled w
x,w x “∃w : R(x,w) = 1 ” garbled R(x,·) OT input wire labels w garbled w commit(garbled output)
x,w x “∃w : R(x,w) = 1 ” garbled R(x,·) OT input wire labels w garbled w commit(garbled output)
contains true wire label ⇒ prover knows valid w
x,w x “∃w : R(x,w) = 1 ” garbled R(x,·) OT input wire labels w garbled w commit(garbled output)
contains true wire label ⇒ prover knows valid w
x,w x “∃w : R(x,w) = 1 ” garbled R(x,·) OT input wire labels w garbled w commit(garbled output)
contains true wire label ⇒ prover knows valid w
correct GC ⇒ garbled
about w
x,w x “∃w : R(x,w) = 1 ” garbled R(x,·) OT input wire labels w garbled w commit(garbled output)
contains true wire label ⇒ prover knows valid w
correct GC ⇒ garbled
about w
x,w x “∃w : R(x,w) = 1 ” garbled R(x,·) OT input wire labels w garbled w commit(garbled output)
contains true wire label ⇒ prover knows valid w
correct GC ⇒ garbled
about w
Prover knows entire input to garbled circuit!
For this ZK protocol, garbled circuit does not require privacy property
◮ Only authenticity is needed ◮ Garbled circuits can be significantly smaller in this case
For this ZK protocol, garbled circuit does not require privacy property
◮ Only authenticity is needed ◮ Garbled circuits can be significantly smaller in this case
size (×λ) garble cost eval cost assumption XOR AND XOR AND XOR AND Classical large? 8 5 PKE P&P 4 4 4/8 4/8 1/2 1/2 hash/PRF GRR3 3 3 4/8 4/8 1/2 1/2 hash/PRF Free XOR 3 4 1
GRR2 2 2 4/8 4/8 1/2 1/2 hash/PRF FleXOR {0,1,2} 2 {0,1,2} 4 {0,1,2} 1
HalfGates 2 4 2
PrivFree * 1 2 1
1λ 2λ 3λ 4λ 5λ 1986 1990 1999 2008 2009 2014 2015 DES AES SHA1 SHA256
◮ Reduction in size by 10x ◮ Reduction in computation by 10000x