Homomorphic Secret Sharing & Applications from Lattice-Based Assumptions
Elette Boyle
Many slides taken/adapted from Geoffroy Couteau, Lisa Kohl, & Peter Scholl
Homomorphic Secret Sharing & Applications from Lattice-Based - - PowerPoint PPT Presentation
Homomorphic Secret Sharing & Applications from Lattice-Based Assumptions Elette Boyle Many slides taken/adapted from Geoffroy Couteau, Lisa Kohl, & Peter Scholl Fully Homomorphic Encryption (FHE) Supports homomorphic
Many slides taken/adapted from Geoffroy Couteau, Lisa Kohl, & Peter Scholl
f(x)
Evalf
x
x
Enc
Dec
pk sk
+
Elements in commutative group G
y0 y1 +
EvalP EvalP
x0 x1
Share
[Boyle-Gilboa-Ishai 16]
y1 y2
Evalf Evalf
x1 x2
Share
(sometimes not an issue!)
f(x)
Evalf
x
x
Enc
Dec
pk sk
+
[Benolah86, Goldreich-Micali-Wigderson87]
Similarly: (m,t)-HSS for degree m/(t+1) functions, unconditionally Challenge: Support homomorphism for richer function classes
y0 y1 +
EvalAX+B EvalAX+B
x0 x1
Share
All P/poly
“High-level” LWE+ Circuits [DHRW16, BGI15, BGILT18] “Mid-level” DDH, Paillier Branching Programs [BGI16, BCGIO17, DKK18, FGJS17] LWE [BKS19] “Low-level” OWF Simple functions [GI14, BGI15, BGI16b] “Algorithmica” None Linear Functions [Ben86]
Requires one-way functions [GI14,BGI15] Structured assumptions yielding PKE Builds atop specific FHE
“Lapland” LPN Low-deg polynomials [BCGIKS19] Weird PRGs…
x x’ Such that Alice & Bob learn nothing but f(x,x’) f(x,x’) f(x,x’) Feasibility: If honest majority of parties, or based on computational assumptions [Yao86,GMW87,BenOrGoldwasserWigderson88,ChaumCrepauDamgard88] … [Yao86,Goldreich-Micali-Wigderson87]
Ω( C ) bits
[Yao86, GMW87, BGW88, CCD88,…]
~|input|+|output| bits
[RAD77,Gen09]
How much communication is required to evaluate C(x,x’)?
Input x Output C(x,x’) small input small output huge circuit x x’
Circuit C
HSS for [Class] ⇒ 2PC for [Class] with low communication
y0 y1 +
EvalC EvalC
w0 w1
Share
HSS for [Class] ⇒ 2PC for [Class] with low communication
Comm ~ |inputs| * poly(λ) + |output|
Note: Compact
y0 y1
EvalC EvalC
w0 w1
Share
Securely compute Share(x,x’)
Exchange additive
+
Recover 𝑗th entry
∀ indices 𝑗, 𝑗* ∈ 𝑜 , ∀ server 𝑡 ∈ [𝑛],
Communication < 𝑜 [Chor-Goldreich-Kushilevitz-Sudan98]
Wishes to access item 𝑗 without revealing 𝑗 2 non-communicating servers Each holds a copy of (same) 𝑜-entry DB
# Value 1 100101 2 100100 3 011011 4 101010 5 001001 6 110101 # Value 1 100101 2 100100 3 011011 4 101010 5 001001 6 110101
𝑤𝑗𝑓𝑥4 given index 𝑗 𝑤𝑗𝑓𝑥4 given index 𝑗′
≈
[GI14,BGI15]
# Value 1 100101 2 100100 3 011011 4 101010 5 001001 6 110101 # Value 1 100101 2 100100 3 011011 4 101010 5 001001 6 110101
Secret Input = Private query predicate P HSS-Share0(P) HSS-Share1(P) HSS-Eval(P0,DB) HSS-Eval(P1,DB)
Program DB(P) = # DB items satisfying P Example: “How many items in DB satisfy secret predicate P?” DB(P) =
[GI14,BGI15]
# Value 1 100101 2 100100 3 011011 4 101010 5 001001 6 110101 # Value 1 100101 2 100100 3 011011 4 101010 5 001001 6 110101
HSS-Eval(P0,DB1) HSS-Eval(P0,DB2) … HSS-Eval(P0,DBn) HSS-Eval(P1,DB1) … Program DBi(P) = 1 if DB item i satisfies P Idea: Can split complex function “DB” into a sum of simpler “Dbi” functions
…
…
Compute
7
89: ;
(𝑝𝑣𝑢8
? + 𝑝𝑣𝑢8 :)
= 7
89: ;
𝑝𝑣𝑢8
?
+ 7
89: ;
𝑝𝑣𝑢8
:
7
89: ;
𝑝𝑣𝑢8
?
7
89: ;
𝑝𝑣𝑢8
:
[GI14,BGI15]
# Value 1 100101 2 100100 3 011011 4 101010 5 001001 6 110101 # Value 1 100101 2 100100 3 011011 4 101010 5 001001 6 110101
HSS-Eval(P0,DB1) HSS-Eval(P0,DB2) … HSS-Eval(P0,DBn) HSS-Eval(P1,DB1) … Program DBi(P) = 1 if DB item i satisfies P Compute
7
89: ;
𝑝𝑣𝑢8
?
+ 7
89: ;
𝑝𝑣𝑢8
:
7
89: ;
𝑝𝑣𝑢8
?
7
89: ;
𝑝𝑣𝑢8
:
Statistical Privacy
Slightly 𝑜B(:) [Yekh07,Efre09,DvirGopi15] Rather complex
Requires public-key cryptography [DiCrescenzo-Malkin-Ostrovsky 00]
Computational Privacy (𝜇 = sec param)
(𝜇 + 2) log 𝑜 [Boyle-Gilboa-Ishai 16b]
poly(𝜇) logJ 𝑜 [KushilevitzOstrovsky00,…]
Impossible.
(Communication, n=|DB|)
[Doerner-Shelat’17, Gordon-Katz-Wang’18, Bunn-Katz-Kushilevitz-Ostrovsky’18]
[Boneh-Boyle-CorriganGibbs-Gilboa-Ishai’19]
[Boyle-Gilboa-Ishai’19]
[Boyle-Gilboa-Ishai-Lin-Tessaro’18]
y0 y1
FHE-EvalC FHE-EvalC
FHE (pk,sk) w w
FHE-Encrypt
sk0 sk0 y y
Dec(sk1,y) Dec(sk0,y)
Ciphertext-ciphertext multiplications 1 Decryption
+ (Assuming necessary Threshold decryption Structure)
Expressiveness Computational
Point functions etc. Branching Programs All circuits PRG [GI14,BGI15,…] DDH [BGI16] specific FHE [DHRW16] 1/poly correctness error Only poly-size plaintext space Noise growth Costly ciphertext mult.
Q: Q: Can we build HSS from lattices, wi without FHE?
(R)-LWE [This work]
Yes.
y0 y1 +
FHE-EvalC FHE-EvalC
w w
Encrypt
sk0 FHE (pk,sk) sk0 y y
Dec(sk1,y) Dec(sk0,y)
Ciphertext-ciphertext multiplications 1 Decryption
Cost of (restricted) multiplication ≈ cost of decryption
[Boyle-Kohl-Scholl Eurocrypt’19]
Multiplication of n n-bit numbers Many numerical / statistical calculations FHE Decryption … Min L2-distance from list of length-n vectors Undirected graph connectivity Streaming algorithms Finite automata Captures NC1 (Log-depth) & Log-space
Supported Operations:
(Missing: Multiply Memory x Memory)
Any (poly-size) Branching Program can be represented by (poly-many) of these operations
LWE
;
𝑡 𝑓 + ≈ 𝑣 mod 𝑞
Given 𝐵 ∈ 𝑎O
T×;:
[Regev 05, Lyubashevsky-Peikert-Regev 13]
Ring-LWE:
Version over polynomial rings
(This talk: Only use encryption based on R/LWE, not its actual structure)
(contrasted to HSS From DDH) (contrasted to HSS From FHE)
[BGI16] (simplified): ØTypes of shares:
ØTypes of computations:
( 𝑦 , 𝑦 ), ( 𝑧 , 𝑧 ) → ( 𝑦 + 𝑧 , 𝑦 + 𝑧 )
𝑦 , ( 𝑧 , 𝑧 )→ ( 𝑦 ⋅ 𝑧 , 𝑦 ⋅ 𝑧 )
[Boyle-Gilboa-Ishai 16]
shares”
Structure of most (ring)-LWE based encryption schemes:
LinDec 𝑡𝑙, 𝑦 ≈ 𝑟 𝑞 ⋅ 𝑦 mod 𝑟 Ciphertexts: 𝑎c, plaintexts: 𝑎O (𝑞 < 𝑟 )
[Regev 05, Lyubashevsky-Peikert-Regev 13]
LinDec(𝑡𝑙, 1 ) E.g. 𝑞 = 2, 𝑦 = 1
≈ 𝑟 𝑞 ⋅ 𝑦
Given:
LinDec 𝑡𝑙, ≈ 𝑟 𝑞 ⋅ 𝑦 mod 𝑟
Main idea: multiplication via distributed decryption
if 𝑡𝑙 + 𝑡𝑙 = 𝑡𝑙 mod 𝑟, then
Problem 1: how to remove the noise?
𝑦
LinDec( 𝑡𝑙 , 𝑦 ) +LinDec 𝑡𝑙 , 𝑦 = LinDec( 𝑡𝑙 + 𝑡𝑙 , 𝑦 ) LinDec( 𝑧 ⋅ 𝑡𝑙 , 𝑦 ) +LinDec 𝑧 ⋅ 𝑡𝑙 , 𝑦 = 𝑧 ⋅ LinDec( 𝑡𝑙 + 𝑡𝑙 , 𝑦 )
linear in 𝑡𝑙 𝑧 𝑧 ⋅
Based on [Dodis Halevi Rothblum Wichs 16]
In general: Round + Round ≠ Round( + ) mod 𝑞 Rounding lemma: If ≈
c O ⋅ 𝑨, then:
Round + Round = Round( + ) mod 𝑞 Except with probability ≈ 𝑨 ⋅ 𝑞/𝑟 𝑨 𝑨
𝑨 𝑨 𝑨 𝑨
+ 𝑨 𝑨 𝑨 𝑨
𝑨 𝑨 𝑨 𝑨
Negligible if 𝑞 ≪ 𝑟 (Needs 𝑟 superpolynomial)
𝑧 ⋅ sk 𝑧 ⋅ sk
𝑦
LinDec Round 𝑦 ⋅ 𝑧 𝑦 ⋅ 𝑧 𝑦 ⋅ 𝑧 ⋅ sk 𝑦 ⋅ 𝑧 ⋅ sk
𝑦 ⋅ sk
mod 𝑟 mod 𝑞 𝑟
≠ 2 + 2 mod 4
+ = 𝑨 mod 𝑟 except with pr. 𝑨 /𝑞
(or: “do nothing” lemma)
𝑨 𝑨 𝑨 𝑨
𝑨 𝑨 𝑨
𝑧 ⋅ sk LinDec Round 𝑦 ⋅ sk 𝑦 ⋅ 𝑧 ⋅ sk 𝑧 ⋅ sk Lift 𝑦 ⋅ 𝑧 ⋅ sk LinDec 𝑥 ⋅ sk round lift
𝑦 ⋅ sk sk sk
[Applebaum-Cash-Peikert-Sahai’09, Brakerski-Vaikuntanathan’11]
⇒ simple public-key setup
𝑦 ⋅ sk 𝑦 ⋅ sk 𝑦 pk
Private input: Query 𝑅 Output: 𝑅(DB)
# Value 1 100101 2 100100 3 011011 4 101010 5 001001 6 110101 # Value 1 100101 2 100100 3 011011 4 101010 5 001001 6 110101
Rounding Lifting Nearly-linear decryption HSS for NC1