Practical Bootstrapping in Quasilinear Time Jacob Alperin-Sheriff Chris Peikert
School of Computer Science Georgia Tech
UC San Diego 29 April 2013
1 / 21
Practical Bootstrapping in Quasilinear Time Jacob Alperin-Sheriff - - PowerPoint PPT Presentation
Practical Bootstrapping in Quasilinear Time Jacob Alperin-Sheriff Chris Peikert School of Computer Science Georgia Tech UC San Diego 29 April 2013 1 / 21 Fully Homomorphic Encryption [RAD78,Gen09] FHE lets you do this:
School of Computer Science Georgia Tech
1 / 21
2 / 21
2 / 21
3 / 21
⋆ The only known way of obtaining unbounded FHE. ⋆ Goal: Efficiency! Minimize depth d and size s of decryption “circuit.” ⋆ Best SHEs [BGV’12] can evaluate in time ˜
3 / 21
⋆ The only known way of obtaining unbounded FHE. ⋆ Goal: Efficiency! Minimize depth d and size s of decryption “circuit.” ⋆ Best SHEs [BGV’12] can evaluate in time ˜
3 / 21
⋆ The only known way of obtaining unbounded FHE. ⋆ Goal: Efficiency! Minimize depth d and size s of decryption “circuit.” ⋆ Best SHEs [BGV’12] can evaluate in time ˜
3 / 21
4 / 21
4 / 21
4 / 21
4 / 21
4 / 21
4 / 21
4 / 21
5 / 21
1 For “unpacked” (single-bit) plaintexts:
5 / 21
1 For “unpacked” (single-bit) plaintexts:
⋆ Cf. [BGV’12]: ˜
5 / 21
1 For “unpacked” (single-bit) plaintexts:
⋆ Cf. [BGV’12]: ˜
2 For “packed” (many-bit) plaintexts:
5 / 21
1 For “unpacked” (single-bit) plaintexts:
⋆ Cf. [BGV’12]: ˜
2 For “packed” (many-bit) plaintexts:
⋆ Based on a substantial enhancement of “ring-switching” [GHPS’12] to
5 / 21
1 For “unpacked” (single-bit) plaintexts:
⋆ Cf. [BGV’12]: ˜
2 For “packed” (many-bit) plaintexts:
⋆ Based on a substantial enhancement of “ring-switching” [GHPS’12] to
5 / 21
1 For “unpacked” (single-bit) plaintexts:
⋆ Cf. [BGV’12]: ˜
2 For “packed” (many-bit) plaintexts:
⋆ Based on a substantial enhancement of “ring-switching” [GHPS’12] to
5 / 21
1 For “unpacked” (single-bit) plaintexts:
⋆ Cf. [BGV’12]: ˜
2 For “packed” (many-bit) plaintexts:
⋆ Based on a substantial enhancement of “ring-switching” [GHPS’12] to
5 / 21
6 / 21
6 / 21
6 / 21
q encrypting µ ∈ R2 under s ∈ R satisfies
2µ
6 / 21
q encrypting µ ∈ R2 under s ∈ R satisfies
2µ
6 / 21
q encrypting µ ∈ R2 under s ∈ R satisfies
2µ
6 / 21
q encrypting µ ∈ R2 under s ∈ R satisfies
2µ
6 / 21
7 / 21
1 Isolate message-carrying coefficient v0 of v(X) by homomorphically
8 / 21
1 Isolate message-carrying coefficient v0 of v(X) by homomorphically
8 / 21
1 Isolate message-carrying coefficient v0 of v(X) by homomorphically
2 Homomorphically “round” v0 ∈ Zq to the message bit ⌊ 2 q · v0⌉ ∈ Z2.
8 / 21
9 / 21
9 / 21
9 / 21
k = ζk/2
k = {1, ζk}
8 = ζ4
8 = {1, ζ8}
4 = ζ2
4 = {1, ζ4}
2 = 1
2 = {1}
9 / 21
k = ζk/2
k = {1, ζk}
8 = ζ4
8 = {1, ζ8}
4 = ζ2
4 = {1, ζ4}
2 = 1
2 = {1}
k · Bk/2 = B′ k · B′ k/2 · · · B′ 2 = {1, ζ, ζ2, . . . , ζk/2−1}.
9 / 21
i = ζi/2.
10 / 21
i = ζi/2.
10 / 21
i = ζi/2.
10 / 21
i = ζi/2.
10 / 21
i = ζi/2.
⋆ TrOi/Oi′′ = TrOi′/Oi′′ ◦ TrOi/Oi′ 10 / 21
i = ζi/2.
⋆ TrOi/Oi′′ = TrOi′/Oi′′ ◦ TrOi/Oi′
10 / 21
i = ζi/2.
⋆ TrOi/Oi′′ = TrOi′/Oi′′ ◦ TrOi/Oi′
2 · v0, where v0 ∈ Z is the coeff of ζ0 i = 1.
10 / 21
2µ ∈ Rq for message µ ∈ Z2 ⊆ R2.
11 / 21
2µ ∈ Rq for message µ ∈ Z2 ⊆ R2. 1 Prepare:
⋆ View c as a “noiseless” encryption of plaintext
q · v + 0 = c0 + c1 · s ∈ Rq.
11 / 21
2µ ∈ Rq for message µ ∈ Z2 ⊆ R2. 1 Prepare:
⋆ View c as a “noiseless” encryption of plaintext
q · v + 0 = c0 + c1 · s ∈ Rq.
⋆ (Switch to larger ciphertext modulus Q ≫ q and ring ˜
11 / 21
2µ ∈ Rq for message µ ∈ Z2 ⊆ R2. 1 Prepare:
⋆ View c as a “noiseless” encryption of plaintext
q · v + 0 = c0 + c1 · s ∈ Rq.
⋆ (Switch to larger ciphertext modulus Q ≫ q and ring ˜
2 Extract “constant term” v0 ∈ Zq of v: homomorphically evaluate
2 · µ ∈ Zq.
11 / 21
2µ ∈ Rq for message µ ∈ Z2 ⊆ R2. 1 Prepare:
⋆ View c as a “noiseless” encryption of plaintext
q · v + 0 = c0 + c1 · s ∈ Rq.
⋆ (Switch to larger ciphertext modulus Q ≫ q and ring ˜
2 Extract “constant term” v0 ∈ Zq of v: homomorphically evaluate
2 · µ ∈ Zq.
3 Round: homomorphically evaluate ⌊v0⌉ = µ ∈ Z2.
11 / 21
2µ ∈ Rq for message µ ∈ Z2 ⊆ R2. 1 Prepare:
⋆ View c as a “noiseless” encryption of plaintext
q · v + 0 = c0 + c1 · s ∈ Rq.
⋆ (Switch to larger ciphertext modulus Q ≫ q and ring ˜
2 Extract “constant term” v0 ∈ Zq of v: homomorphically evaluate
2 · µ ∈ Zq.
3 Round: homomorphically evaluate ⌊v0⌉ = µ ∈ Z2.
11 / 21
12 / 21
12 / 21
key-switch
0 + c′ 1 · s ≈ τ(v)
12 / 21
key-switch
0 + c′ 1 · s ≈ τ(v)
12 / 21
key-switch
0 + c′ 1 · s ≈ τ(v)
12 / 21
key-switch
0 + c′ 1 · s ≈ τ(v)
⋆ Only need to apply the two automorphisms of each Oi/Oi/2. ⋆ Total lg(k) automorphisms & key-switches ⇒ ˜
12 / 21
key-switch
0 + c′ 1 · s ≈ τ(v)
⋆ Only need to apply the two automorphisms of each Oi/Oi/2. ⋆ Total lg(k) automorphisms & key-switches ⇒ ˜
12 / 21
key-switch
0 + c′ 1 · s ≈ τ(v)
⋆ Only need to apply the two automorphisms of each Oi/Oi/2. ⋆ Total lg(k) automorphisms & key-switches ⇒ ˜
12 / 21
13 / 21
1 Prepare: as before, view c as a “noiseless” encryption of plaintext
j⌊vj⌉ · bj ∈ R2 (where bj = ζj).
14 / 21
1 Prepare: as before, view c as a “noiseless” encryption of plaintext
j⌊vj⌉ · bj ∈ R2 (where bj = ζj). 2 Homomorphically map coeffs vj to “Zq-slots” of certain ring Sq:
14 / 21
1 Prepare: as before, view c as a “noiseless” encryption of plaintext
j⌊vj⌉ · bj ∈ R2 (where bj = ζj). 2 Homomorphically map coeffs vj to “Zq-slots” of certain ring Sq:
3 Batch-round: homom’ly apply ⌊·⌉ on all Zq-slots at once [SV’11]:
14 / 21
1 Prepare: as before, view c as a “noiseless” encryption of plaintext
j⌊vj⌉ · bj ∈ R2 (where bj = ζj). 2 Homomorphically map coeffs vj to “Zq-slots” of certain ring Sq:
3 Batch-round: homom’ly apply ⌊·⌉ on all Zq-slots at once [SV’11]:
4 Homomorphically reverse-map Z2-slots back to B-coeffs:
14 / 21
ℓi
15 / 21
ℓi
15 / 21
ℓi
j (S/pj) via natural homomorphism.
15 / 21
ℓi
j (S/pj) via natural homomorphism.
15 / 21
ℓi
j (S/pj) via natural homomorphism.
i · Ci−1: let c′ k = 1 (mod p⋆,k), = 0 (mod p⋆,=k).
15 / 21
ℓi
j (S/pj) via natural homomorphism.
i · Ci−1: let c′ k = 1 (mod p⋆,k), = 0 (mod p⋆,=k).
j (S/plg q j
15 / 21
q
16 / 21
q
16 / 21
q
∗Z-linear: L(b + b′) = L(b) + L(b′), L(v · b) = v · L(b) for any b, b′ ∈ R, v ∈ Z. 16 / 21
q
∗Z-linear: L(b + b′) = L(b) + L(b′), L(v · b) = v · L(b) for any b, b′ ∈ R, v ∈ Z.
16 / 21
q
∗Z-linear: L(b + b′) = L(b) + L(b′), L(v · b) = v · L(b) for any b, b′ ∈ R, v ∈ Z.
16 / 21
q
∗Z-linear: L(b + b′) = L(b) + L(b′), L(v · b) = v · L(b) for any b, b′ ∈ R, v ∈ Z.
16 / 21
17 / 21
17 / 21
17 / 21
17 / 21
17 / 21
18 / 21
18 / 21
18 / 21
1 Trivially embed ciphertext R → T (still encrypts v). 2 Homomorphically apply S-linear ¯
18 / 21
1 Trivially embed ciphertext R → T (still encrypts v). 2 Homomorphically apply S-linear ¯
18 / 21
1 Trivially embed ciphertext R → T (still encrypts v). 2 Homomorphically apply S-linear ¯
18 / 21
19 / 21
19 / 21
19 / 21
8 · B′ 4 = {1, ζ8} · {1, ζ4}.
20 / 21
8 · B′ 4 = {1, ζ8} · {1, ζ4}.
7 · C′ 91 = {c1, c2} · {c′ 1, c′ 2, c′ 3}.
20 / 21
8 · B′ 4 = {1, ζ8} · {1, ζ4}.
7 · C′ 91 = {c1, c2} · {c′ 1, c′ 2, c′ 3}.
8 · B′ 4
4 · C′ 7
7 · C′ 91
4
8 → C′ 7
7
4 → C′ 91
20 / 21
8 · B′ 4 = {1, ζ8} · {1, ζ4}.
7 · C′ 91 = {c1, c2} · {c′ 1, c′ 2, c′ 3}.
8 · B′ 4
4 · C′ 7
7 · C′ 91
4
8 → C′ 7
7
4 → C′ 91
20 / 21
21 / 21
21 / 21
21 / 21
21 / 21