The CLT Multilinear Map
From DGHV to Zeroizing
Tancrède Lepoint
Paris - October 14-15, 2015 — School on FHE and MMAPs
The CLT Multilinear Map From DGHV to Zeroizing Tancrde Lepoint - - PowerPoint PPT Presentation
The CLT Multilinear Map From DGHV to Zeroizing Tancrde Lepoint Paris - October 14-15, 2015 School on FHE and MMAPs outline Introduction & timeline Syntax of MMAPs Interlude: HE over Z The CLT13 Candidate
Paris - October 14-15, 2015 — School on FHE and MMAPs
◮ Introduction & timeline ◮ Syntax of MMAPs ◮ Interlude: HE over Z ◮ The CLT13 Candidate ◮ “Zeroizing”, again and again ◮ Conclusion & open problems
2 / 68
◮ Introduction & timeline ◮ Syntax of MMAPs ◮ Interlude: HE over Z ◮ The CLT13 Candidate ◮ “Zeroizing”, again and again ◮ Conclusion & open problems
2 / 68
3 / 68
◮ m
◮ Recovering m from [m] is hard (discrete log)
◮ Compute linear functions is easy
◮
i[mi]ui = i uimi
◮ Computing other functions seems hard
◮ [m1], [m2] → [m1 · m2] (Diffie-Hellman) ◮ Even testing an alleged solution is hard [m1 · m2] ≈c u (Decisional DH) 4 / 68
5 / 68
5 / 68
◮ m
◮ map
◮ in bilinear-map group, computing quadratic functions in the
◮ but computing/checking cubics seems hard
◮ Many new applications
◮ 3-partite DH Key Exchange ◮ Efficient NIZK proofs ◮ ABE/functional encryption for simple func. ◮ Broadcast Encryption, Traitor Tracing, . . . 6 / 68
7 / 68
[c0] [c1] [c2] [c3] [c4] [c5] [c6] [c7] [c8] [c9] [c10] [c11] [c12] [c13] [c14] [c15] [c16] [c17] [c18] [c19] [c20] [c21] [c22] [c23] [c24] [c25]
7 / 68
[c0] [c1] [c2] [c3] [c4] [c5] [c6] [c7] [c8] [c9] [c10] [c11] [c12] [c13] [c14] [c15] [c16] [c17] [c18] [c19] [c20] [c21] [c22] [c23] [c24] [c25] a0
7 / 68
[c0] [c1] [c2] [c3] [c4] [c5] [c6] [c7] [c8] [c9] [c10] [c11] [c12] [c13] [c14] [c15] [c16] [c17] [c18] [c19] [c20] [c21] [c22] [c23] [c24] [c25] a0 a1
7 / 68
[c0] [c1] [c2] [c3] [c4] [c5] [c6] [c7] [c8] [c9] [c10] [c11] [c12] [c13] [c14] [c15] [c16] [c17] [c18] [c19] [c20] [c21] [c22] [c23] [c24] [c25]
7 / 68
[c0] [c1] [c2] [c3] [c4] [c5] [c6] [c7] [c8] [c9] [c10] [c11] [c12] [c13] [c14] [c15] [c16] [c17] [c18] [c19] [c20] [c21] [c22] [c23] [c24] [c25]
7 / 68
8 / 68
◮ To be useful, MMAPs should have the ability to test whether
◮ Same as testing whether a degree-κ expr. is 0
◮ Current solutions: take a SWHE scheme and publish an
◮ called zero-test parameter ◮ can identify enc. of 0, but cannot decrypt (large plaintext space) 9 / 68
10 / 68
10 / 68
10 / 68
10 / 68
10 / 68
10 / 68
10 / 68
10 / 68
◮ Introduction & timeline ◮ Syntax of MMAPs ◮ Interlude: HE over Z ◮ The CLT13 Candidate ◮ “Zeroizing”, again and again ◮ Conclusion & open problems
11 / 68
◮ All constructions expose somewhat different interfaces. ◮ Syntax proposed by [Hal15] in three parts
◮ Initialization: generation of public/secret parameters ◮ Also define “plaintext space” and “encoding space” ◮ Encoding: use the secret parameters to encode plaintexts ◮ Operations: use the public parameters to add, multiply and test for 0 ◮ (with restrictions) 12 / 68
◮ Each encoding has a tag ◮ Add elements with the same tag ◮ Multiply elements with compatible tags
◮ Resulting tag follow simple rule
◮ Zero-Test only an encoding at a distinguished tag
13 / 68
◮ Each encoding has a tag ◮ Add elements with the same tag ◮ Multiply elements with compatible tags
◮ Resulting tag follow simple rule
◮ Zero-Test only an encoding at a distinguished tag
◮ T = {1, 2, . . . , κ}, addition of tags during multiplication, test
◮ DAG [GGH15,Hal15]
13 / 68
◮ DL security: hard to recover m from [m]i ◮ hard to distinguish zeros at levels i = κ (except by lifting
◮ generalized DDH: hard to identify relations for incompatible
◮ etc.
14 / 68
◮ DL security: hard to recover m from [m]i ◮ hard to distinguish zeros at levels i = κ (except by lifting
◮ generalized DDH: hard to identify relations for incompatible
◮ etc.
14 / 68
◮ Introduction & timeline ◮ Syntax of MMAPs ◮ Interlude: HE over Z ◮ The CLT13 Candidate ◮ “Zeroizing”, again and again ◮ Conclusion & open problems
15 / 68
◮ Public error-free element: x0 = q0 · p ◮ Secret key sk = p
16 / 68
◮ Public error-free element: x0 = q0 · p ◮ Secret key sk = p ◮ Ciphertext for m ∈ {0, 1}:
16 / 68
◮ Public error-free element: x0 = q0 · p ◮ Secret key sk = p ◮ Ciphertext for m ∈ {0, 1}:
◮ Decryption of c:
16 / 68
◮ How to Add and Multiply Encrypted Bits:
◮ Add/Mult two near-multiples of p gives a near-multiple of p ◮ c1 = q1 · p + 2 · r1 + m1,
c2 = q2 · p + 2 · r2 + m2
◮ c1 + c2 = p · (q1 + q2) + 2 · (r1 + r2) + m1 + m2
◮ c1 · c2 = p · (c2q1 + c1q2 − q1q2) + 2 · (2r1r2 + r2m1 + r1m2) + m1 · m2
17 / 68
◮ How to Add and Multiply Encrypted Bits:
◮ Add/Mult two near-multiples of p gives a near-multiple of p ◮ c1 = q1 · p + 2 · r1 + m1,
c2 = q2 · p + 2 · r2 + m2
◮ c1 + c2 = p · (q1 + q2) + 2 · (r1 + r2) + m1 + m2
◮ c1 · c2 = p · (c2q1 + c1q2 − q1q2) + 2 · (2r1r2 + r2m1 + r1m2) + m1 · m2
+ × ×
Correctness for multiplicative depth of L: log2 p = η ≈ 2L · (ρ + 1)
17 / 68
◮ p = 541, q0 = 809 ⇒ x0 = 437669 ◮ noise size: ρ = 4
18 / 68
◮ p = 541, q0 = 809 ⇒ x0 = 437669 ◮ noise size: ρ = 4
◮ c1 = 737 · 541 + 2 · 6 + 1 = 398730 ◮ c2 = 368 · 541 + 2 · 9 + 0 = 199106
18 / 68
◮ p = 541, q0 = 809 ⇒ x0 = 437669 ◮ noise size: ρ = 4
◮ c1 = 737 · 541 + 2 · 6 + 1 = 398730 ◮ c2 = 368 · 541 + 2 · 9 + 0 = 199106
◮ c3 = c1 + c2 mod x0 = (398730 + 199106) mod 437669 = 160167 ◮ c4 = c1 · c2 mod x0 = (398730 · 199106) mod 437669 = 317801
18 / 68
◮ p = 541, q0 = 809 ⇒ x0 = 437669 ◮ noise size: ρ = 4
◮ c1 = 737 · 541 + 2 · 6 + 1 = 398730 ◮ c2 = 368 · 541 + 2 · 9 + 0 = 199106
◮ c3 = c1 + c2 mod x0 = (398730 + 199106) mod 437669 = 160167 ◮ c4 = c1 · c2 mod x0 = (398730 · 199106) mod 437669 = 317801
◮ c3 mod p = 160167 mod 541 = 31 = 2 · 15 + 1 = 2 · 15 + (1 XOR 0) ◮ c4 mod p = 317801 mod 541 = 234 = 2 · 117 + 0 = 2 · 117 + (1 AND 0)
18 / 68
19 / 68
◮ Recall that c = q · p + 2r + m
◮ Assume gcd(2, q0) = 1,
c = 2 ·
19 / 68
◮ Recall that c = q · p + 2r + m
◮ Assume gcd(2, q0) = 1,
c = 2 ·
◮ Therefore ciphertext of m indistinguishable from uniform
19 / 68
◮ In one ciphertext, encode ℓ plaintexts ◮ Addition and Multiplication: in parallel
u1 u2 u3 · · · uℓ + × v1 v2 v3 · · · vℓ w1 w2 w3 · · · wℓ
20 / 68
◮ In one ciphertext, encode ℓ plaintexts ◮ Addition and Multiplication: in parallel
◮ Permutations between the slots (algebraic
u1 u2 u3 · · · uℓ u1 u2 u3 u4 · · · uℓ π u2 uℓ · · · u3 · · · u1 u4 · · ·
20 / 68
◮ In one ciphertext, encode ℓ plaintexts ◮ Addition and Multiplication: in parallel
◮ Permutations between the slots (algebraic
u1 u2 u3 · · · uℓ + × v1 v2 v3 · · · vℓ w1 w2 w3 · · · wℓ
20 / 68
◮ In one ciphertext, encode ℓ plaintexts ◮ Addition and Multiplication: in parallel
◮ Permutations between the slots (algebraic
u1 u2 u3 · · · uℓ + × v1 v2 v3 · · · vℓ w1 w2 w3 · · · wℓ
◮ Public element x0 = q0 · p ◮ Ciphertext of m ∈ {0, 1}:
20 / 68
◮ In one ciphertext, encode ℓ plaintexts ◮ Addition and Multiplication: in parallel
◮ Permutations between the slots (algebraic
u1 u2 u3 · · · uℓ + × v1 v2 v3 · · · vℓ w1 w2 w3 · · · wℓ
◮ Public element x0 = q0 · p ◮ Ciphertext of m ∈ {0, 1}:
◮ c mod p = 2r + m
;
c mod q0 = q
·p + 2r + m mod q0
20 / 68
◮ In one ciphertext, encode ℓ plaintexts ◮ Addition and Multiplication: in parallel
◮ Permutations between the slots (algebraic
u1 u2 u3 · · · uℓ + × v1 v2 v3 · · · vℓ w1 w2 w3 · · · wℓ
◮ Public element x0 = q0 · p ◮ Ciphertext of m ∈ {0, 1}:
◮ c mod p = 2r + m
;
c mod q0 = q
·p + 2r + m mod q0
◮ We can write
◮ Ciphertext of
◮ Ciphertext of
21 / 68
◮ Ciphertext of
◮ Thanks to the structure of the CRT:
◮ Addition: the addition is performed modulo each pi similarly to DGHV ◮ Multiplication: the multiplication is performed modulo each pi similarly to
DGHV
21 / 68
(Error-Free) Decisional Approximate-GCD
Given x0 = q0 ·p and polynomially many xi ∈ D = {q ·p +r : q ← [0, q0), r ← [0, 2ρ)}, decide whether z is uniformly generated in [0, x0) or in D
22 / 68
(Error-Free) Decisional Approximate-GCD
Given x0 = q0 ·p and polynomially many xi ∈ D = {q ·p +r : q ← [0, q0), r ← [0, 2ρ)}, decide whether z is uniformly generated in [0, x0) or in D
Sketch: (Error-Free) ℓ-Decisional Approximate-GCD Given x0 = q0 · p1 · · · pn and polynomially many xi ∈ Dn = {CRTq0,pi (q, . . . , ri, . . .) : q ← [0, q0), ri ← [0, 2ρ)}, decide whether z is uniformly generated in [0, x0) or in Dn
22 / 68
(Error-Free) Decisional Approximate-GCD
Given x0 = q0 ·p and polynomially many xi ∈ D = {q ·p +r : q ← [0, q0), r ← [0, 2ρ)}, decide whether z is uniformly generated in [0, x0) or in D
Sketch: (Error-Free) ℓ-Decisional Approximate-GCD Given x0 = q0 · p1 · · · pn and polynomially many xi ∈ Dn = {CRTq0,pi (q, . . . , ri, . . .) : q ← [0, q0), ri ← [0, 2ρ)}, decide whether z is uniformly generated in [0, x0) or in Dn ◮ For n = 1, the above problem is the (Error-Free) Decisional Approximate-GCD
22 / 68
(Error-Free) Decisional Approximate-GCD
Given x0 = q0 ·p and polynomially many xi ∈ D = {q ·p +r : q ← [0, q0), r ← [0, 2ρ)}, decide whether z is uniformly generated in [0, x0) or in D
Sketch: (Error-Free) ℓ-Decisional Approximate-GCD Given x0 = q0 · p1 · · · pn and polynomially many xi ∈ Dn = {CRTq0,pi (q, . . . , ri, . . .) : q ← [0, q0), ri ← [0, 2ρ)}, decide whether z is uniformly generated in [0, x0) or in Dn ◮ For n = 1, the above problem is the (Error-Free) Decisional Approximate-GCD ◮ Let A be an adversary having adv. ǫ to solve this latter problem
22 / 68
(Error-Free) Decisional Approximate-GCD
Given x0 = q0 ·p and polynomially many xi ∈ D = {q ·p +r : q ← [0, q0), r ← [0, 2ρ)}, decide whether z is uniformly generated in [0, x0) or in D
Sketch: (Error-Free) ℓ-Decisional Approximate-GCD Given x0 = q0 · p1 · · · pn and polynomially many xi ∈ Dn = {CRTq0,pi (q, . . . , ri, . . .) : q ← [0, q0), ri ← [0, 2ρ)}, decide whether z is uniformly generated in [0, x0) or in Dn ◮ For n = 1, the above problem is the (Error-Free) Decisional Approximate-GCD ◮ Let A be an adversary having adv. ǫ to solve this latter problem ◮ Denote Di the distribution of elements of the form CRTq0,p1,...,pn(q, ∗, . . . , ∗
, ri, . . . , rn)
22 / 68
(Error-Free) Decisional Approximate-GCD
Given x0 = q0 ·p and polynomially many xi ∈ D = {q ·p +r : q ← [0, q0), r ← [0, 2ρ)}, decide whether z is uniformly generated in [0, x0) or in D
Sketch: (Error-Free) ℓ-Decisional Approximate-GCD Given x0 = q0 · p1 · · · pn and polynomially many xi ∈ Dn = {CRTq0,pi (q, . . . , ri, . . .) : q ← [0, q0), ri ← [0, 2ρ)}, decide whether z is uniformly generated in [0, x0) or in Dn ◮ For n = 1, the above problem is the (Error-Free) Decisional Approximate-GCD ◮ Let A be an adversary having adv. ǫ to solve this latter problem ◮ Denote Di the distribution of elements of the form CRTq0,p1,...,pn(q, ∗, . . . , ∗
, ri, . . . , rn) ◮ ∃j0 s.t. A has advantage ≥ ǫ/n to distinguish Dj0−1 and Dj0
22 / 68
(Error-Free) Decisional Approximate-GCD
Given x0 = q0 ·p and polynomially many xi ∈ D = {q ·p +r : q ← [0, q0), r ← [0, 2ρ)}, decide whether z is uniformly generated in [0, x0) or in D
Sketch: (Error-Free) ℓ-Decisional Approximate-GCD Given x0 = q0 · p1 · · · pn and polynomially many xi ∈ Dn = {CRTq0,pi (q, . . . , ri, . . .) : q ← [0, q0), ri ← [0, 2ρ)}, decide whether z is uniformly generated in [0, x0) or in Dn ◮ For n = 1, the above problem is the (Error-Free) Decisional Approximate-GCD ◮ Let A be an adversary having adv. ǫ to solve this latter problem ◮ Denote Di the distribution of elements of the form CRTq0,p1,...,pn(q, ∗, . . . , ∗
, ri, . . . , rn) ◮ ∃j0 s.t. A has advantage ≥ ǫ/n to distinguish Dj0−1 and Dj0 ◮ With proba 1/n, you can place p at the position j0 (generate the n − 1 other pi’s yourself), and you use the challenge z for this slot
22 / 68
(Error-Free) Decisional Approximate-GCD
Given x0 = q0 ·p and polynomially many xi ∈ D = {q ·p +r : q ← [0, q0), r ← [0, 2ρ)}, decide whether z is uniformly generated in [0, x0) or in D
Sketch: (Error-Free) ℓ-Decisional Approximate-GCD Given x0 = q0 · p1 · · · pn and polynomially many xi ∈ Dn = {CRTq0,pi (q, . . . , ri, . . .) : q ← [0, q0), ri ← [0, 2ρ)}, decide whether z is uniformly generated in [0, x0) or in Dn ◮ For n = 1, the above problem is the (Error-Free) Decisional Approximate-GCD ◮ Let A be an adversary having adv. ǫ to solve this latter problem ◮ Denote Di the distribution of elements of the form CRTq0,p1,...,pn(q, ∗, . . . , ∗
, ri, . . . , rn) ◮ ∃j0 s.t. A has advantage ≥ ǫ/n to distinguish Dj0−1 and Dj0 ◮ With proba 1/n, you can place p at the position j0 (generate the n − 1 other pi’s yourself), and you use the challenge z for this slot
22 / 68
◮ Parallelization:
u1 u2 u3 · · · uℓ + × v1 v2 v3 · · · vℓ w1 w2 w3 · · · wℓ
◮ Use the fact that q ≫ p to pack elements
◮ (Also asymptotic reduction of overhead per gate with permutations)
23 / 68
◮ Introduction & timeline ◮ Syntax of MMAPs ◮ Interlude: HE over Z ◮ The CLT13 Candidate ◮ “Zeroizing”, again and again ◮ Conclusion & open problems
24 / 68
◮ Large plaintext space ◮ Add the “tags”
◮ We will get it via some multiplicative masks
◮ Add a zero-testing procedure
◮ The secret key will be the pi’s and the secret mask: we will mix them
together
25 / 68
◮ Ciphertext of
26 / 68
◮ Ciphertext of
◮ Ciphertext of
◮ Let z ← [0, x0) be a random (invertible) multiplicative mask
27 / 68
◮ Let z ← [0, x0) be a random (invertible) multiplicative mask ◮ Encoding of
27 / 68
◮ Let z ← [0, x0) be a random (invertible) multiplicative mask ◮ Encoding of
◮ Operations over Zx0:
27 / 68
◮ How to test whether two degree-κ encodings are equal?
28 / 68
◮ How to test whether two degree-κ encodings are equal?
◮ What is an encoding of
28 / 68
◮ How to test whether two degree-κ encodings are equal?
◮ What is an encoding of
◮ Idea of [GGH13]: multiply by an element which will cancel zκ
28 / 68
◮ let’s rewrite [
i −1/zκ mod pi) · p∗ i + (
i = j=i pj
29 / 68
◮ let’s rewrite [
i −1/zκ mod pi) · p∗ i + (
i = j=i pj
◮ The random value q′′ makes difficult to obtain something
29 / 68
◮ let’s rewrite [
i −1/zκ mod pi) · p∗ i + (
i = j=i pj
◮ The random value q′′ makes difficult to obtain something
◮ In the following x0 = pj, and
29 / 68
◮ now
i −1/zκ mod pi) · p∗ i mod x0
i = j=i pj
30 / 68
◮ now
i −1/zκ mod pi) · p∗ i mod x0
i = j=i pj
◮ Multiply by the public element (where hi ≪ pi)
i
i mod x0
30 / 68
◮ now
i −1/zκ mod pi) · p∗ i mod x0
i = j=i pj
◮ Multiply by the public element (where hi ≪ pi)
i
i mod x0
◮ We have (we prove equivalence whp when many pzt’s are
i )| ≪ x0
30 / 68
◮ Second candidate multilinear map ◮ Hardness assumptions:
◮ GDDH ◮ but also DLIN, SubM, etc.
◮ Composite-order multilinear maps ◮ Used in multiple schemes and obfuscation candidates
31 / 68
◮ Introduction & timeline ◮ Syntax of MMAPs ◮ Interlude: HE over Z ◮ The CLT13 Candidate ◮ “Zeroizing”, again and again ◮ Conclusion & open problems
32 / 68
◮ Encoding is related to a numerator u ∼ (e1, . . . , en)
◮ ei = gi · ri + mi ◮ Finding the ei’s means breaking the scheme ◮ An encoding of 0 is u ∼ (g1r1, . . . , gnrn)
◮ Adding / multiplying encodings operate on the numerators
◮ Zero-testing top-level encodings u ∼ (g1r1, . . . , gnrn) we get
i ri · (hip∗ i ) over Z (no mod q)
33 / 68
◮ Sample: subset-sum of publicly available random level-0
34 / 68
◮ Sample: subset-sum of publicly available random level-0
◮ Encode at level 1: multiply by a level-1 encoding of
34 / 68
◮ Sample: subset-sum of publicly available random level-0
◮ Encode at level 1: multiply by a level-1 encoding of
◮ reRandomization: add a subset-sum of level-1 encodings of
34 / 68
◮ Extraction: extract the λ most significant bits of
i
i )
i
i )
m1 = m2, we will have ext([ m1]κ) == ext([ m2]κ)
35 / 68
◮ Setup: For N participants, initialization of a N − 1-multilinear
36 / 68
◮ Setup: For N participants, initialization of a N − 1-multilinear
◮ Publish: Use the public params, sample a level-0 encoding
i = reRand(enc(ci, 1))
36 / 68
◮ Setup: For N participants, initialization of a N − 1-multilinear
◮ Publish: Use the public params, sample a level-0 encoding
i = reRand(enc(ci, 1))
◮ KeyGen: Compute ˜
j=i c′ j, and get the shared key
36 / 68
i=1
37 / 68
i=1
◮ At the heart of the multipartite key echange protocol
37 / 68
i=1
◮ At the heart of the multipartite key echange protocol ◮ Assumed to be hard (but no reduction to Approx.-GCD)
37 / 68
i=1
◮ At the heart of the multipartite key echange protocol ◮ Assumed to be hard (but no reduction to Approx.-GCD) ◮ Asymptotic parameters determined from several attacks:
◮ orthogonal lattice attack on encodings ◮ GCD attack on zero-testing ◮ hidden subset sum attack on zero-testing ◮ attacks on the inverse zero-testing matrix ◮ brute-force on the noises, . . . 37 / 68
38 / 68
39 / 68
i ri · (hi · p∗ i ) ∈ Z
39 / 68
i ri · ˆ
i ) ∈ Z
39 / 68
i ri · ˆ
i ) ∈ Z
i )
39 / 68
i ri · ˆ
i ) ∈ Z
i )
39 / 68
◮ Let’s do it with many [
40 / 68
◮ Let’s do it with many [
ˆ bi · (hi · p∗
i )
ˆ b′
i · (hi · p∗ i )
40 / 68
◮ Let’s do it with many [
ˆ bi · (hi · p∗
i )
1 ˆ b′
i · (hi · p∗ i )
i
40 / 68
◮ Let’s do it with many [
ˆ bi · (hi · p∗
i )
1 ˆ b′
i · (hi · p∗ i )
i
ˆ bi/ˆ b′
i
40 / 68
◮ Compute the eigenvalues βi/β′
i = ˆ
i over Q
41 / 68
◮ Compute the eigenvalues βi/β′
i = ˆ
i over Q
◮ We have that
i · [
41 / 68
◮ Compute the eigenvalues βi/β′
i = ˆ
i over Q
◮ We have that
i · [
◮ Compute
i · [
41 / 68
◮ Compute the eigenvalues βi/β′
i = ˆ
i over Q
◮ We have that
i · [
◮ Compute
i · [
41 / 68
◮ The Diffie-Hellman key exchange uses many [0]’s for
◮ sample random level-0 ◮ lift them to level-1 ◮ rerandomize them at level 1
◮ On the opposite side, we do not need rerandomization in
◮ Some assumptions used to prove some iO constructions do not hold 42 / 68
◮ Let’s never reveal encodings of
◮ tags = formal variables X, Y , top-level Y · X κ
43 / 68
◮ Let’s never reveal encodings of
◮ tags = formal variables X, Y , top-level Y · X κ ◮ A level-j encoding of
43 / 68
◮ Let’s never reveal encodings of
◮ tags = formal variables X, Y , top-level Y · X κ ◮ A level-j encoding of
◮ Additionals encodings at a special level Y :
43 / 68
◮ Let’s never reveal encodings of
◮ tags = formal variables X, Y , top-level Y · X κ ◮ A level-j encoding of
◮ Additionals encodings at a special level Y :
◮ New zero-test:
43 / 68
◮ High-level idea: still a 2(n + 2) linear form in the CRT
44 / 68
◮ High-level idea: still a 2(n + 2) linear form in the CRT
◮ Compute
0, α, βL] [ 0, α, βR] [ b, α′, β′
L] · tL
−[ 0, α′, β′
R] · tR
[ c, α′′, β′′
L]
[ 0, α′′, β′′
R]
◮ High-level idea: still a 2(n + 2) linear form in the CRT
◮ Compute
0, α, βL] [ 0, α, βR] [ b, α′, β′
L] · tL
−[ 0, α′, β′
R] · tR
[ c, α′′, β′′
L]
[ 0, α′′, β′′
R]
44 / 68
◮ Encoding = matrix
45 / 68
◮ Encoding = matrix ◮ Secret parameters: z, gi and random P ∈ Zℓ×ℓ
x0
45 / 68
◮ Encoding = matrix ◮ Secret parameters: z, gi and random P ∈ Zℓ×ℓ
x0
◮ To encode
45 / 68
◮ To zero-test an encoding [[
◮ |w| ≪ x0 ⇐
46 / 68
◮ Compute w =
47 / 68
◮ Compute w =
◮ Let’s rewrite
47 / 68
◮ Compute w =
◮ Let’s rewrite
◮ B is not diagonal as before... but we can extend it into a
47 / 68
◮ Same attack as before yields
˜ B
48 / 68
◮ Same attack as before yields
˜ B
◮ Inversion in Q to obtain
2
48 / 68
◮ Same attack as before yields
˜ B
◮ Inversion in Q to obtain
2
◮ Instead of computing eigenvalues use characteristic
48 / 68
◮ Previous fixes conserves a linear zero-testing function ◮ Extensions of Cheon et al. attack [CHLRS15] by Coron et al.
◮ General attack framework described ◮ Use of Cayley-Hamilton theorem instead of eigenvalues
◮ Essentially, the form of the encodings should not be a
◮ Can we make the zero-testing non linear?
49 / 68
◮ A CLT13 encoding has the form
i
◮ Can we use the element a, non-linear in the ri’s, in the
50 / 68
◮ A CLT13 encoding has the form
i
◮ Can we use the element a, non-linear in the ri’s, in the
◮ Define an other modulus N > x0, and do the zero-testing
50 / 68
◮ We want to generate a new zero-test value αzt such that
51 / 68
◮ We want to generate a new zero-test value αzt such that
◮ In particular, we have
i
51 / 68
◮ We want to generate a new zero-test value αzt such that
◮ In particular, we have
i
◮ so we want |αzt · ui mod N| ≪ N and |αzt · x0 mod N| ≪ N
51 / 68
◮ Given N, the generation of αzt ∈ ZN such that for all i,
52 / 68
◮ Given N, the generation of αzt ∈ ZN such that for all i,
◮ The problem amounts to finding a relatively short vector in a
52 / 68
◮ Given N, the generation of αzt ∈ ZN such that for all i,
◮ The problem amounts to finding a relatively short vector in a
◮ Use LLL? (we can tolerate an exponential approx. factor over
52 / 68
◮ Remember that N ≫ x0 and ui = (gip∗
i −1zk mod pi)p∗ i in
i
53 / 68
◮ Remember that N ≫ x0 and ui = (gip∗
i −1zk mod pi)p∗ i in
i
◮ First note that p−1
j ui mod N is small for all i = j
◮ Only p−1
j
uj mod N is not a priori small
53 / 68
◮ Remember that N ≫ x0 and ui = (gip∗
i −1zk mod pi)p∗ i in
i
◮ First note that p−1
j ui mod N is small for all i = j
◮ Only p−1
j
uj mod N is not a priori small
◮ Let us find αj such that αj · p−1
j uj mod N is small
◮ As before it amounts to finding a short vector in (for a suitable B)
⌈N/B⌉ p−1
j
uj N
53 / 68
◮ New zero-testing element:
j
54 / 68
◮ New zero-testing element:
j
◮ When applied on an encoding [
i
54 / 68
◮ x0 can no longer be public
◮ Recovering x0 allows to apply Cheon et al. attack!
◮ Each level includes a ladder of encodings (solution of
◮ encodings
X (j)
i
= (CRTpi(rigi)/zj mod x0) + qi · x0
with qi ← [0, 2i) for i = 1, . . . , log(x0)
◮ do the operation over Z, and remove X (j)
i
for decreasing i’s
55 / 68
56 / 68
56 / 68
56 / 68
56 / 68
56 / 68
◮ Consider u = [
◮ Apply the ladder to reduce its size to the size of x0:
m
◮ Write u′ over Z:
◮ All sm’s and a come up in the way of Cheon et al. attack
57 / 68
◮ Two very nice ideas:
◮ Recall that
◮ Define
58 / 68
◮ φ is a multiplication, therefore linear
59 / 68
◮ φ is a multiplication, therefore linear ◮ The smallest element is the ladder can be extracted over Z:
0 )
59 / 68
◮ φ is a multiplication, therefore linear ◮ The smallest element is the ladder can be extracted over Z:
0 )
◮ The next element can be reduced by the first, and then
1 ) = φ(X (κ) 1
0 ) + k · φ(X (κ) 0 )
59 / 68
◮ By repeating this, you can extract any encoding, and in
60 / 68
◮ By repeating this, you can extract any encoding, and in
◮ As before let us do it, but this time over Z via φ:
60 / 68
◮ By repeating this, you can extract any encoding, and in
◮ As before let us do it, but this time over Z via φ:
◮ This time a′ is much bigger than it was before
◮ but modulo v0 = αzt · x0 this is the same linearity as the previous
zero-testing
60 / 68
◮ Similarly to last time, compute a determinant, but this time
◮ It will be full rank over Z whp ◮ but modulo v0 = αzt · x0 it will be a rank-n matrix!! 61 / 68
◮ Similarly to last time, compute a determinant, but this time
◮ It will be full rank over Z whp ◮ but modulo v0 = αzt · x0 it will be a rank-n matrix!!
◮ Compute the determinant over Z: it will be a multiple of v0
61 / 68
◮ Similarly to last time, compute a determinant, but this time
◮ It will be full rank over Z whp ◮ but modulo v0 = αzt · x0 it will be a rank-n matrix!!
◮ Compute the determinant over Z: it will be a multiple of v0 ◮ Repeat this and take the GCD to recover v0
◮ Then you can recover x0 ◮ and you can apply the classical Cheon et al. attack 61 / 68
◮ Introduction & timeline ◮ Syntax of MMAPs ◮ Interlude: HE over Z ◮ The CLT13 Candidate ◮ “Zeroizing”, again and again ◮ Conclusion & open problems
62 / 68
◮ Zeroizing attacks are devastating for general-purpose
◮ Break many assumptions and schemes ◮ But not all (e.g. obfuscation is currently unaffected!)
◮ All attempts made public at strengthening these schemes are
◮ including the attempts at making “zero-testing” less linear [CLT15,GHL15]
◮ Similar situation for [GGH15] ◮ Break & Repair mode
◮ LOTS of room for more cryptanalysis and more theory 63 / 68
◮ GGH13: weak distributions 0 × 0
◮ all fixes broken [GGHZ14,GHL15,Hal15,≥ 5 unpublished attempts] ◮ see Damien Stehlé’s talk ◮ Gu’s MMAP(s) [Gu15]: completely broken [PS15]
◮ CLT13: “too many” encodings of 0
◮ early fixes broken [GGHZ14,BWZ14] ◮ new CLT [CLT15] completely broken by [MF15,CHL15] (two weeks ago on
Eprint): thus weaker than [CLT13]
◮ GGH15: some “low-level” encodings of 0
64 / 68
65 / 68
65 / 68
66 / 68
66 / 68
67 / 68
68 / 68