Lattice-Based Cryptography: Constructing Trapdoors and More - - PowerPoint PPT Presentation

lattice based cryptography constructing trapdoors and
SMART_READER_LITE
LIVE PREVIEW

Lattice-Based Cryptography: Constructing Trapdoors and More - - PowerPoint PPT Presentation

Lattice-Based Cryptography: Constructing Trapdoors and More Applications Chris Peikert Georgia Institute of Technology crypt@b-it 2013 1 / 18 Lattice-Based One-Way Functions Public key Z n m A for q =


slide-1
SLIDE 1

Lattice-Based Cryptography: Constructing Trapdoors and More Applications Chris Peikert

Georgia Institute of Technology crypt@b-it 2013

1 / 18

slide-2
SLIDE 2

Lattice-Based One-Way Functions

◮ Public key

  • · · · A · · ·
  • ∈ Zn×m

q

for q = poly(n), m = Ω(n log q).

2 / 18

slide-3
SLIDE 3

Lattice-Based One-Way Functions

◮ Public key

  • · · · A · · ·
  • ∈ Zn×m

q

for q = poly(n), m = Ω(n log q). fA(x) = Ax mod q ∈ Zn

q

(“short” x, surjective) CRHF if SIS hard [Ajtai’96,. . . ]

2 / 18

slide-4
SLIDE 4

Lattice-Based One-Way Functions

◮ Public key

  • · · · A · · ·
  • ∈ Zn×m

q

for q = poly(n), m = Ω(n log q). fA(x) = Ax mod q ∈ Zn

q

(“short” x, surjective) CRHF if SIS hard [Ajtai’96,. . . ] gA(s, e) = stA + et mod q ∈ Zm

q

(“short” e, injective) OWF if LWE hard [Regev’05,P’09]

2 / 18

slide-5
SLIDE 5

Lattice-Based One-Way Functions

◮ Public key

  • · · · A · · ·
  • ∈ Zn×m

q

for q = poly(n), m = Ω(n log q). fA(x) = Ax mod q ∈ Zn

q

(“short” x, surjective) CRHF if SIS hard [Ajtai’96,. . . ] gA(s, e) = stA + et mod q ∈ Zm

q

(“short” e, injective) OWF if LWE hard [Regev’05,P’09] ◮ Lattice interpretation: Λ⊥(A) = {x ∈ Zm : fA(x) = Ax = 0 mod q}

O (0, q) (q, 0) 2 / 18

slide-6
SLIDE 6

Lattice-Based One-Way Functions

◮ Public key

  • · · · A · · ·
  • ∈ Zn×m

q

for q = poly(n), m = Ω(n log q). fA(x) = Ax mod q ∈ Zn

q

(“short” x, surjective) CRHF if SIS hard [Ajtai’96,. . . ] gA(s, e) = stA + et mod q ∈ Zm

q

(“short” e, injective) OWF if LWE hard [Regev’05,P’09] ◮ Lattice interpretation: Λ⊥

u (A) = {x ∈ Zm : fA(x) = Ax = u mod q}

O (0, q) (q, 0) x 2 / 18

slide-7
SLIDE 7

Lattice-Based One-Way Functions

◮ Public key

  • · · · A · · ·
  • ∈ Zn×m

q

for q = poly(n), m = Ω(n log q). fA(x) = Ax mod q ∈ Zn

q

(“short” x, surjective) CRHF if SIS hard [Ajtai’96,. . . ] gA(s, e) = stA + et mod q ∈ Zm

q

(“short” e, injective) OWF if LWE hard [Regev’05,P’09] ◮ fA, gA in forward direction yield CRHFs, CPA security (w/FHE!) . . . but not much else.

2 / 18

slide-8
SLIDE 8

Trapdoor Inversion

◮ Many cryptographic applications need to invert fA and/or gA.

3 / 18

slide-9
SLIDE 9

Trapdoor Inversion

◮ Many cryptographic applications need to invert fA and/or gA. Invert gA(s, e) = stA + et: find the unique preimage s (equivalently, e)

3 / 18

slide-10
SLIDE 10

Trapdoor Inversion

◮ Many cryptographic applications need to invert fA and/or gA. Invert u = fA(x′) = Ax′: sample random x ← f−1

A (u)

with prob ∝ exp(−x2/s2). Invert gA(s, e) = stA + et: find the unique preimage s (equivalently, e)

3 / 18

slide-11
SLIDE 11

Trapdoor Inversion

◮ Many cryptographic applications need to invert fA and/or gA. Invert u = fA(x′) = Ax′: sample random x ← f−1

A (u)

with prob ∝ exp(−x2/s2). Invert gA(s, e) = stA + et: find the unique preimage s (equivalently, e) ◮ How? Use a “strong trapdoor” for A: a short basis of Λ⊥(A)

[Babai’86,GGH’97,Klein’01,GPV’08,P’10]

O 3 / 18

slide-12
SLIDE 12

Applications of Strong Trapdoors

Canonical App: [GPV’08] Signatures

◮ pk = A, sk = short basis for A, random oracle H : {0, 1}∗ → Zn

q .

4 / 18

slide-13
SLIDE 13

Applications of Strong Trapdoors

Canonical App: [GPV’08] Signatures

◮ pk = A, sk = short basis for A, random oracle H : {0, 1}∗ → Zn

q .

◮ Sign(msg): let u = H(msg) and output Gaussian x ← f−1

A (u).

4 / 18

slide-14
SLIDE 14

Applications of Strong Trapdoors

Canonical App: [GPV’08] Signatures

◮ pk = A, sk = short basis for A, random oracle H : {0, 1}∗ → Zn

q .

◮ Sign(msg): let u = H(msg) and output Gaussian x ← f−1

A (u).

◮ Verify(msg, x): check fA(x) = Ax = H(msg) and x short enough.

4 / 18

slide-15
SLIDE 15

Applications of Strong Trapdoors

Canonical App: [GPV’08] Signatures

◮ pk = A, sk = short basis for A, random oracle H : {0, 1}∗ → Zn

q .

◮ Sign(msg): let u = H(msg) and output Gaussian x ← f−1

A (u).

◮ Verify(msg, x): check fA(x) = Ax = H(msg) and x short enough. ◮ Security: finding short enough preimages in fA must be hard.

4 / 18

slide-16
SLIDE 16

Applications of Strong Trapdoors

Canonical App: [GPV’08] Signatures

◮ pk = A, sk = short basis for A, random oracle H : {0, 1}∗ → Zn

q .

◮ Sign(msg): let u = H(msg) and output Gaussian x ← f−1

A (u).

◮ Verify(msg, x): check fA(x) = Ax = H(msg) and x short enough. ◮ Security: finding short enough preimages in fA must be hard.

Other “Black-Box” Applications of f −1, g−1

◮ Standard Model (no RO) signatures [CHKP’10,R’10,B’10] ◮ SM CCA-secure encryption [PW’08,P’09] ◮ SM (Hierarchical) IBE [GPV’08,CHKP’10,ABB’10a,ABB’10b] ◮ Many more: OT, NISZK, homom enc/sigs, deniable enc, func enc, . . .

[PVW’08,PV’08,GHV’10,GKV’10,BF’10a,BF’10b,OPW’11,AFV’11,ABVVW’11,. . . ]

4 / 18

slide-17
SLIDE 17

Applications of Strong Trapdoors

Canonical App: [GPV’08] Signatures

◮ pk = A, sk = short basis for A, random oracle H : {0, 1}∗ → Zn

q .

◮ Sign(msg): let u = H(msg) and output Gaussian x ← f−1

A (u).

◮ Verify(msg, x): check fA(x) = Ax = H(msg) and x short enough. ◮ Security: finding short enough preimages in fA must be hard.

Some Drawbacks. . .

✗ Generating A w/ short basis is complicated and slow [Ajtai’99,AP’09]

4 / 18

slide-18
SLIDE 18

Applications of Strong Trapdoors

Canonical App: [GPV’08] Signatures

◮ pk = A, sk = short basis for A, random oracle H : {0, 1}∗ → Zn

q .

◮ Sign(msg): let u = H(msg) and output Gaussian x ← f−1

A (u).

◮ Verify(msg, x): check fA(x) = Ax = H(msg) and x short enough. ◮ Security: finding short enough preimages in fA must be hard.

Some Drawbacks. . .

✗ Generating A w/ short basis is complicated and slow [Ajtai’99,AP’09] ✗ Known inversion algorithms trade quality for efficiency

4 / 18

slide-19
SLIDE 19

Applications of Strong Trapdoors

Canonical App: [GPV’08] Signatures

◮ pk = A, sk = short basis for A, random oracle H : {0, 1}∗ → Zn

q .

◮ Sign(msg): let u = H(msg) and output Gaussian x ← f−1

A (u).

◮ Verify(msg, x): check fA(x) = Ax = H(msg) and x short enough. ◮ Security: finding short enough preimages in fA must be hard.

Some Drawbacks. . .

✗ Generating A w/ short basis is complicated and slow [Ajtai’99,AP’09] ✗ Known inversion algorithms trade quality for efficiency tight, iterative, fp looser, parallel, offline g−1

A

[Babai’86] [Babai’86]

f−1

A

[Klein’01,GPV’08] [P’10]

4 / 18

slide-20
SLIDE 20

Today

“Strong” trapdoor generation and inversion algorithms:

5 / 18

slide-21
SLIDE 21

Today

“Strong” trapdoor generation and inversion algorithms: ✔ Very simple & fast

⋆ Generation: one matrix mult. No HNF or inversion (cf. [A’99,AP’09]) ⋆ Inversion of fA, gA: practical, parallel, & mostly offline ⋆ No more efficiency-vs-quality tradeoff 5 / 18

slide-22
SLIDE 22

Today

“Strong” trapdoor generation and inversion algorithms: ✔ Very simple & fast

⋆ Generation: one matrix mult. No HNF or inversion (cf. [A’99,AP’09]) ⋆ Inversion of fA, gA: practical, parallel, & mostly offline ⋆ No more efficiency-vs-quality tradeoff

✔ Tighter parameters m and s

⋆ Asymptotically optimal with small constant factors 5 / 18

slide-23
SLIDE 23

Today

“Strong” trapdoor generation and inversion algorithms: ✔ Very simple & fast

⋆ Generation: one matrix mult. No HNF or inversion (cf. [A’99,AP’09]) ⋆ Inversion of fA, gA: practical, parallel, & mostly offline ⋆ No more efficiency-vs-quality tradeoff

✔ Tighter parameters m and s

⋆ Asymptotically optimal with small constant factors

✔ New kind of trapdoor — not a basis! (But just as powerful.)

5 / 18

slide-24
SLIDE 24

Today

“Strong” trapdoor generation and inversion algorithms: ✔ Very simple & fast

⋆ Generation: one matrix mult. No HNF or inversion (cf. [A’99,AP’09]) ⋆ Inversion of fA, gA: practical, parallel, & mostly offline ⋆ No more efficiency-vs-quality tradeoff

✔ Tighter parameters m and s

⋆ Asymptotically optimal with small constant factors

✔ New kind of trapdoor — not a basis! (But just as powerful.) ✔ More efficient applications: CCA, (H)IBE in standard model

5 / 18

slide-25
SLIDE 25

Overview of Methods

1 Design a fixed, public lattice defined by “gadget” matrix G.

Design fast, parallel, offline algorithms for f−1

G , g−1 G .

6 / 18

slide-26
SLIDE 26

Overview of Methods

1 Design a fixed, public lattice defined by “gadget” matrix G.

Design fast, parallel, offline algorithms for f−1

G , g−1 G . 2 Randomize G ↔ A via a “nice” unimodular transformation.

(The transformation is the trapdoor!)

6 / 18

slide-27
SLIDE 27

Overview of Methods

1 Design a fixed, public lattice defined by “gadget” matrix G.

Design fast, parallel, offline algorithms for f−1

G , g−1 G . 2 Randomize G ↔ A via a “nice” unimodular transformation.

(The transformation is the trapdoor!)

3 Reduce f−1 A , g−1 A

to f−1

G , g−1 G

plus pre-/post-processing.

6 / 18

slide-28
SLIDE 28

Step 1: Gadget G and Inversion Algorithms

◮ Let q = 2k. Define 1-by-k “parity check” vector g :=

  • 1

2 4 · · · 2k−1 ∈ Z1×k

q

.

7 / 18

slide-29
SLIDE 29

Step 1: Gadget G and Inversion Algorithms

◮ Let q = 2k. Define 1-by-k “parity check” vector g :=

  • 1

2 4 · · · 2k−1 ∈ Z1×k

q

. ◮ To invert LWE function gg : Zq × Zk → Zk

q:

s · g + e =

  • s + e0

2s + e1 · · · 2k−1s + ek−1

  • mod q.

7 / 18

slide-30
SLIDE 30

Step 1: Gadget G and Inversion Algorithms

◮ Let q = 2k. Define 1-by-k “parity check” vector g :=

  • 1

2 4 · · · 2k−1 ∈ Z1×k

q

. ◮ To invert LWE function gg : Zq × Zk → Zk

q:

s · g + e =

  • s + e0

2s + e1 · · · 2k−1s + ek−1

  • mod q.

⋆ Get lsb(s) from 2k−1s + ek−1. Then get next bit of s, etc.

Works exactly when every ei ∈ [− q

4, q 4).

7 / 18

slide-31
SLIDE 31

Step 1: Gadget G and Inversion Algorithms

◮ Let q = 2k. Define 1-by-k “parity check” vector g :=

  • 1

2 4 · · · 2k−1 ∈ Z1×k

q

. ◮ To invert LWE function gg : Zq × Zk → Zk

q:

s · g + e =

  • s + e0

2s + e1 · · · 2k−1s + ek−1

  • mod q.

⋆ Get lsb(s) from 2k−1s + ek−1. Then get next bit of s, etc.

Works exactly when every ei ∈ [− q

4, q 4).

⋆ OR round entries and look up in table. 7 / 18

slide-32
SLIDE 32

Step 1: Gadget G and Inversion Algorithms

◮ Let q = 2k. Define 1-by-k “parity check” vector g :=

  • 1

2 4 · · · 2k−1 ∈ Z1×k

q

. ◮ To invert LWE function gg : Zq × Zk → Zk

q:

s · g + e =

  • s + e0

2s + e1 · · · 2k−1s + ek−1

  • mod q.

⋆ Get lsb(s) from 2k−1s + ek−1. Then get next bit of s, etc.

Works exactly when every ei ∈ [− q

4, q 4).

⋆ OR round entries and look up in table.

◮ To sample Gaussian preimage for u = fg(x) := g, x:

7 / 18

slide-33
SLIDE 33

Step 1: Gadget G and Inversion Algorithms

◮ Let q = 2k. Define 1-by-k “parity check” vector g :=

  • 1

2 4 · · · 2k−1 ∈ Z1×k

q

. ◮ To invert LWE function gg : Zq × Zk → Zk

q:

s · g + e =

  • s + e0

2s + e1 · · · 2k−1s + ek−1

  • mod q.

⋆ Get lsb(s) from 2k−1s + ek−1. Then get next bit of s, etc.

Works exactly when every ei ∈ [− q

4, q 4).

⋆ OR round entries and look up in table.

◮ To sample Gaussian preimage for u = fg(x) := g, x:

⋆ For i ← 0, . . . , k − 1: choose xi ← (2Z + u), let u ← (u − xi)/2 ∈ Z. 7 / 18

slide-34
SLIDE 34

Step 1: Gadget G and Inversion Algorithms

◮ Let q = 2k. Define 1-by-k “parity check” vector g :=

  • 1

2 4 · · · 2k−1 ∈ Z1×k

q

. ◮ To invert LWE function gg : Zq × Zk → Zk

q:

s · g + e =

  • s + e0

2s + e1 · · · 2k−1s + ek−1

  • mod q.

⋆ Get lsb(s) from 2k−1s + ek−1. Then get next bit of s, etc.

Works exactly when every ei ∈ [− q

4, q 4).

⋆ OR round entries and look up in table.

◮ To sample Gaussian preimage for u = fg(x) := g, x:

⋆ For i ← 0, . . . , k − 1: choose xi ← (2Z + u), let u ← (u − xi)/2 ∈ Z. ⋆ OR presample many x ← Zk and store in q ‘buckets’ fg(x) for later. 7 / 18

slide-35
SLIDE 35

Step 1: Gadget G and Inversion Algorithms

◮ Another view: for g =

  • 1

2 · · · 2k−1 the lattice Λ⊥(g) has basis S =     

2 −1 2 −1 ... 2 −1 2

     ∈ Zk×k, with ˜ S = 2 · Ik.

8 / 18

slide-36
SLIDE 36

Step 1: Gadget G and Inversion Algorithms

◮ Another view: for g =

  • 1

2 · · · 2k−1 the lattice Λ⊥(g) has basis S =     

2 −1 2 −1 ... 2 −1 2

     ∈ Zk×k, with ˜ S = 2 · Ik. The iterative inversion algorithms for fg, gg are special cases of the (randomized) “nearest-plane” algorithm [Babai’86,Klein’01,GPV’08].

8 / 18

slide-37
SLIDE 37

Step 1: Gadget G and Inversion Algorithms

◮ Another view: for g =

  • 1

2 · · · 2k−1 the lattice Λ⊥(g) has basis S =     

2 −1 2 −1 ... 2 −1 2

     ∈ Zk×k, with ˜ S = 2 · Ik. The iterative inversion algorithms for fg, gg are special cases of the (randomized) “nearest-plane” algorithm [Babai’86,Klein’01,GPV’08]. ◮ Define G = In ⊗ g =      · · · g · · · · · · g · · · ... · · · g · · ·      ∈ Zn×nk

q

.

8 / 18

slide-38
SLIDE 38

Step 1: Gadget G and Inversion Algorithms

◮ Another view: for g =

  • 1

2 · · · 2k−1 the lattice Λ⊥(g) has basis S =     

2 −1 2 −1 ... 2 −1 2

     ∈ Zk×k, with ˜ S = 2 · Ik. The iterative inversion algorithms for fg, gg are special cases of the (randomized) “nearest-plane” algorithm [Babai’86,Klein’01,GPV’08]. ◮ Define G = In ⊗ g =      · · · g · · · · · · g · · · ... · · · g · · ·      ∈ Zn×nk

q

. Now f−1

G , g−1 G reduce to n parallel (and offline) calls to f−1 g , g−1 g .

8 / 18

slide-39
SLIDE 39

Step 1: Gadget G and Inversion Algorithms

◮ Another view: for g =

  • 1

2 · · · 2k−1 the lattice Λ⊥(g) has basis S =     

2 −1 2 −1 ... 2 −1 2

     ∈ Zk×k, with ˜ S = 2 · Ik. The iterative inversion algorithms for fg, gg are special cases of the (randomized) “nearest-plane” algorithm [Babai’86,Klein’01,GPV’08]. ◮ Define G = In ⊗ g =      · · · g · · · · · · g · · · ... · · · g · · ·      ∈ Zn×nk

q

. Now f−1

G , g−1 G reduce to n parallel (and offline) calls to f−1 g , g−1 g .

Also applies to H · G for any invertible H ∈ Zn×n

q

.

8 / 18

slide-40
SLIDE 40

Step 2: Randomize G ↔ A

1 Define semi-random [ ¯

A | G] for uniform ¯ A ∈ Zn× ¯

m q

. Note: f−1

[ ¯ A|G], g−1 [ ¯ A|G] easily reduce to f−1 G , g−1 G

[CHKP’10].

9 / 18

slide-41
SLIDE 41

Step 2: Randomize G ↔ A

1 Define semi-random [ ¯

A | G] for uniform ¯ A ∈ Zn× ¯

m q

. Note: f−1

[ ¯ A|G], g−1 [ ¯ A|G] easily reduce to f−1 G , g−1 G

[CHKP’10].

2 Choose “short” (Gaussian) R ← Z ¯ m×n log q and let

A := [ ¯ A | G] I −R I

  • unimodular

= [ ¯ A | G − ¯ AR].

9 / 18

slide-42
SLIDE 42

Step 2: Randomize G ↔ A

1 Define semi-random [ ¯

A | G] for uniform ¯ A ∈ Zn× ¯

m q

. Note: f−1

[ ¯ A|G], g−1 [ ¯ A|G] easily reduce to f−1 G , g−1 G

[CHKP’10].

2 Choose “short” (Gaussian) R ← Z ¯ m×n log q and let

A := [ ¯ A | G] I −R I

  • unimodular

= [ ¯ A | G − ¯ AR].

⋆ A is uniform if [ ¯

A | ¯ AR] is: leftover hash lemma for ¯ m ≈ n log q.

9 / 18

slide-43
SLIDE 43

Step 2: Randomize G ↔ A

1 Define semi-random [ ¯

A | G] for uniform ¯ A ∈ Zn× ¯

m q

. Note: f−1

[ ¯ A|G], g−1 [ ¯ A|G] easily reduce to f−1 G , g−1 G

[CHKP’10].

2 Choose “short” (Gaussian) R ← Z ¯ m×n log q and let

A := [ ¯ A | G] I −R I

  • unimodular

= [ ¯ A | G − ¯ AR].

⋆ A is uniform if [ ¯

A | ¯ AR] is: leftover hash lemma for ¯ m ≈ n log q. (With G = 0, we get the “key trick” constructing A with a “weak” trapdoor of ≥ 1 short vector, but not a full basis.)

9 / 18

slide-44
SLIDE 44

Step 2: Randomize G ↔ A

1 Define semi-random [ ¯

A | G] for uniform ¯ A ∈ Zn× ¯

m q

. Note: f−1

[ ¯ A|G], g−1 [ ¯ A|G] easily reduce to f−1 G , g−1 G

[CHKP’10].

2 Choose “short” (Gaussian) R ← Z ¯ m×n log q and let

A := [ ¯ A | G] I −R I

  • unimodular

= [ ¯ A | G − ¯ AR].

⋆ A is uniform if [ ¯

A | ¯ AR] is: leftover hash lemma for ¯ m ≈ n log q. (With G = 0, we get the “key trick” constructing A with a “weak” trapdoor of ≥ 1 short vector, but not a full basis.)

⋆ [I | ¯

A | −( ¯ AR1 + R2)] is pseudorandom (under LWE) for ¯ m = n.

9 / 18

slide-45
SLIDE 45

A New Trapdoor Notion

◮ We constructed A = [ ¯ A | G − ¯ AR].

10 / 18

slide-46
SLIDE 46

A New Trapdoor Notion

◮ We constructed A = [ ¯ A | G − ¯ AR].

Definition

◮ R is a trapdoor for A with tag H ∈ Zn×n

q

(H invertible) if A · R

I

  • = H · G.

10 / 18

slide-47
SLIDE 47

A New Trapdoor Notion

◮ We constructed A = [ ¯ A | G − ¯ AR].

Definition

◮ R is a trapdoor for A with tag H ∈ Zn×n

q

(H invertible) if A · R

I

  • = H · G.

◮ The quality of R is s1(R) := max

u=1Ru.

(smaller is better.)

10 / 18

slide-48
SLIDE 48

A New Trapdoor Notion

◮ We constructed A = [ ¯ A | G − ¯ AR].

Definition

◮ R is a trapdoor for A with tag H ∈ Zn×n

q

(H invertible) if A · R

I

  • = H · G.

◮ The quality of R is s1(R) := max

u=1Ru.

(smaller is better.)

◮ Fact: s1(R) ≈ (√rows + √ cols) · r for Gaussian entries w/ std dev r.

10 / 18

slide-49
SLIDE 49

A New Trapdoor Notion

◮ We constructed A = [ ¯ A | G − ¯ AR].

Definition

◮ R is a trapdoor for A with tag H ∈ Zn×n

q

(H invertible) if A · R

I

  • = H · G.

◮ The quality of R is s1(R) := max

u=1Ru.

(smaller is better.)

◮ Fact: s1(R) ≈ (√rows + √ cols) · r for Gaussian entries w/ std dev r. ◮ Note: R is a trapdoor for A − [0 | H′ · G] w/tag (H − H′) [ABB’10].

10 / 18

slide-50
SLIDE 50

A New Trapdoor Notion

◮ We constructed A = [ ¯ A | G − ¯ AR].

Definition

◮ R is a trapdoor for A with tag H ∈ Zn×n

q

(H invertible) if A · R

I

  • = H · G.

◮ The quality of R is s1(R) := max

u=1Ru.

(smaller is better.)

◮ Fact: s1(R) ≈ (√rows + √ cols) · r for Gaussian entries w/ std dev r. ◮ Note: R is a trapdoor for A − [0 | H′ · G] w/tag (H − H′) [ABB’10].

Relating New and Old Trapdoors

Given a basis S for Λ⊥(G) and a trapdoor R for A, we can efficiently construct a basis SA for Λ⊥(A) where ˜ SA ≤ (s1(R) + 1) · ˜ S.

10 / 18

slide-51
SLIDE 51

A New Trapdoor Notion

◮ We constructed A = [ ¯ A | G − ¯ AR].

Definition

◮ R is a trapdoor for A with tag H ∈ Zn×n

q

(H invertible) if A · R

I

  • = H · G.

◮ The quality of R is s1(R) := max

u=1Ru.

(smaller is better.)

◮ Fact: s1(R) ≈ (√rows + √ cols) · r for Gaussian entries w/ std dev r. ◮ Note: R is a trapdoor for A − [0 | H′ · G] w/tag (H − H′) [ABB’10].

Relating New and Old Trapdoors

Given a basis S for Λ⊥(G) and a trapdoor R for A, we can efficiently construct a basis SA for Λ⊥(A) where ˜ SA ≤ (s1(R) + 1) · ˜ S.

(But we’ll never need to.)

10 / 18

slide-52
SLIDE 52

Step 3: Reduce f −1

A , g−1 A to f −1 G , g−1 G

◮ Suppose R is a trapdoor for A (w/tag H = I): A R

I

  • = G.

11 / 18

slide-53
SLIDE 53

Step 3: Reduce f −1

A , g−1 A to f −1 G , g−1 G

◮ Suppose R is a trapdoor for A (w/tag H = I): A R

I

  • = G.

Inverting LWE Function

Given bt = stA + et, recover s from bt R

I

  • = stG + et R

I

  • .

Works if each entry of et R

I

  • in [− q

4, q 4) ⇐ e < q/(4s1(

R

I

  • )).

11 / 18

slide-54
SLIDE 54

Step 3: Reduce f −1

A , g−1 A to f −1 G , g−1 G

◮ Suppose R is a trapdoor for A (w/tag H = I): A R

I

  • = G.

Inverting LWE Function

Given bt = stA + et, recover s from bt R

I

  • = stG + et R

I

  • .

Works if each entry of et R

I

  • in [− q

4, q 4) ⇐ e < q/(4s1(

R

I

  • )).

Sampling Gaussian Preimages

Given u, sample z ← f−1

G (u) and output x =

R

I

  • z ∈ f−1

A (u) ?

◮ We have Ax = Gz = u as desired.

11 / 18

slide-55
SLIDE 55

Step 3: Reduce f −1

A , g−1 A to f −1 G , g−1 G

◮ Suppose R is a trapdoor for A (w/tag H = I): A R

I

  • = G.

Inverting LWE Function

Given bt = stA + et, recover s from bt R

I

  • = stG + et R

I

  • .

Works if each entry of et R

I

  • in [− q

4, q 4) ⇐ e < q/(4s1(

R

I

  • )).

Sampling Gaussian Preimages

Given u, sample z ← f−1

G (u) and output x =

R

I

  • z ∈ f−1

A (u) ?

◮ We have Ax = Gz = u as desired. ◮ Problem: R

I

  • z is non-spherical Gaussian, leaks R !

11 / 18

slide-56
SLIDE 56

Step 3: Reduce f −1

A , g−1 A to f −1 G , g−1 G

◮ Suppose R is a trapdoor for A (w/tag H = I): A R

I

  • = G.

Inverting LWE Function

Given bt = stA + et, recover s from bt R

I

  • = stG + et R

I

  • .

Works if each entry of et R

I

  • in [− q

4, q 4) ⇐ e < q/(4s1(

R

I

  • )).

Sampling Gaussian Preimages

Given u, sample z ← f−1

G (u) and output x =

R

I

  • z ∈ f−1

A (u) ?

◮ We have Ax = Gz = u as desired. ◮ Problem: R

I

  • z is non-spherical Gaussian, leaks R !

◮ Solution: use offline ‘perturbation’ [P’10] to get spherical Gaussian w/ std dev ≈ s1(R): output x = p + R

I

  • z.

11 / 18

slide-57
SLIDE 57

A First Attempt

◮ Given u, sample z ← f−1

G (u) and output x =

R

I

  • z ∈ f−1

A (u) ?

12 / 18

slide-58
SLIDE 58

A First Attempt

◮ Given u, sample z ← f−1

G (u) and output x =

R

I

  • z ∈ f−1

A (u) ?

◮ x1 = Rz has a non-spherical Gaussian distribution of covariance Σ := Ex

  • x · xt

= Ez

  • R · zzt · Rt

≈ s2 · RRt.

12 / 18

slide-59
SLIDE 59

A First Attempt

◮ Given u, sample z ← f−1

G (u) and output x =

R

I

  • z ∈ f−1

A (u) ?

◮ x1 = Rz has a non-spherical Gaussian distribution of covariance Σ := Ex

  • x · xt

= Ez

  • R · zzt · Rt

≈ s2 · RRt. Covariance can be measured — and it leaks R! (up to rotation)

12 / 18

slide-60
SLIDE 60

Inspiration: Some Facts About Gaussians

1 Continuous Gaussian ↔ positive definite covariance matrix Σ.

(pos def means: ut Σ u > 0 for all unit u.)

13 / 18

slide-61
SLIDE 61

Inspiration: Some Facts About Gaussians

1 Continuous Gaussian ↔ positive definite covariance matrix Σ.

(pos def means: ut Σ u > 0 for all unit u.)

Spherical Gaussian ↔ covariance s2 I.

13 / 18

slide-62
SLIDE 62

Inspiration: Some Facts About Gaussians

1 Continuous Gaussian ↔ positive definite covariance matrix Σ.

(pos def means: ut Σ u > 0 for all unit u.)

Spherical Gaussian ↔ covariance s2 I.

2 Convolution of Gaussians:

+ = Σ1 + Σ2 = Σ = s2 I

13 / 18

slide-63
SLIDE 63

Inspiration: Some Facts About Gaussians

1 Continuous Gaussian ↔ positive definite covariance matrix Σ.

(pos def means: ut Σ u > 0 for all unit u.)

Spherical Gaussian ↔ covariance s2 I.

2 Convolution of Gaussians:

+ = Σ1 + Σ2 = Σ = s2 I

3 Given Σ1, how small can s be? For Σ2 := s2 I − Σ1,

13 / 18

slide-64
SLIDE 64

Inspiration: Some Facts About Gaussians

1 Continuous Gaussian ↔ positive definite covariance matrix Σ.

(pos def means: ut Σ u > 0 for all unit u.)

Spherical Gaussian ↔ covariance s2 I.

2 Convolution of Gaussians:

+ = Σ1 + Σ2 = Σ = s2 I

3 Given Σ1, how small can s be? For Σ2 := s2 I − Σ1,

ut Σ2 u = s2 − ut Σ1 u > 0 ⇐ ⇒ s2 > max λi(Σ1)

13 / 18

slide-65
SLIDE 65

Inspiration: Some Facts About Gaussians

1 Continuous Gaussian ↔ positive definite covariance matrix Σ.

(pos def means: ut Σ u > 0 for all unit u.)

Spherical Gaussian ↔ covariance s2 I.

2 Convolution of Gaussians:

+ = Σ1 + Σ2 = Σ = s2 I

3 Given Σ1, how small can s be? For Σ2 := s2 I − Σ1,

ut Σ2 u = s2 − ut Σ1 u > 0 ⇐ ⇒ s2 > max λi(Σ1) For Σ1 = R Rt, can use any s > s1(R) := max singular val of R.

13 / 18

slide-66
SLIDE 66

‘Convolution’ Sampling Algorithm [P’10]

◮ Given trapdoor R of A, syndrome u, and std dev s > s1(R),

14 / 18

slide-67
SLIDE 67

‘Convolution’ Sampling Algorithm [P’10]

◮ Given trapdoor R of A, syndrome u, and std dev s > s1(R),

1 Generate perturbation p with covariance Σ2 := s2 I − RRt > 0.

(s2I − RRt)

14 / 18

slide-68
SLIDE 68

‘Convolution’ Sampling Algorithm [P’10]

◮ Given trapdoor R of A, syndrome u, and std dev s > s1(R),

1 Generate perturbation p with covariance Σ2 := s2 I − RRt > 0. 2 Sample spherical z s.t. Gz = u − Ap.

+ = RRt + (s2I − RRt)

14 / 18

slide-69
SLIDE 69

‘Convolution’ Sampling Algorithm [P’10]

◮ Given trapdoor R of A, syndrome u, and std dev s > s1(R),

1 Generate perturbation p with covariance Σ2 := s2 I − RRt > 0. 2 Sample spherical z s.t. Gz = u − Ap. 3 Output x = p +

R

I

  • z.

(Note: Ax = Ap + Gz = u.)

+ = RRt + (s2I − RRt) = s2 I

Convolution∗ Theorem

Algorithm generates a spherical discrete Gaussian over L⊥

u (A).

14 / 18

slide-70
SLIDE 70

‘Convolution’ Sampling Algorithm [P’10]

◮ Given trapdoor R of A, syndrome u, and std dev s > s1(R),

1 Generate perturbation p with covariance Σ2 := s2 I − RRt > 0. 2 Sample spherical z s.t. Gz = u − Ap. 3 Output x = p +

R

I

  • z.

(Note: Ax = Ap + Gz = u.)

+ = RRt + (s2I − RRt) = s2 I

Convolution∗ Theorem

Algorithm generates a spherical discrete Gaussian over L⊥

u (A).

(∗technically not a convolution, since step 2 depends on step 1.)

14 / 18

slide-71
SLIDE 71

Application: Efficient IBE a la [ABB’10]

◮ Setup: choose A = [ ¯ A | − ¯ AR]. Let mpk = (A, u), msk = R. (A has trapdoor R with tag 0.)

15 / 18

slide-72
SLIDE 72

Application: Efficient IBE a la [ABB’10]

◮ Setup: choose A = [ ¯ A | − ¯ AR]. Let mpk = (A, u), msk = R. (A has trapdoor R with tag 0.) ◮ Extract(R, id): map id → invertible Hid ∈ Zn×n

q

.

[DF’94,. . . ,ABB’10]

Using R, choose skid = x ← f−1

Aid(u), where

Aid = A + [0 | Hid · G] = [ ¯ A | Hid · G − ¯ AR].

15 / 18

slide-73
SLIDE 73

Application: Efficient IBE a la [ABB’10]

◮ Setup: choose A = [ ¯ A | − ¯ AR]. Let mpk = (A, u), msk = R. (A has trapdoor R with tag 0.) ◮ Extract(R, id): map id → invertible Hid ∈ Zn×n

q

.

[DF’94,. . . ,ABB’10]

Using R, choose skid = x ← f−1

Aid(u), where

Aid = A + [0 | Hid · G] = [ ¯ A | Hid · G − ¯ AR]. ◮ Encrypt to Aid, decrypt using skid as in ‘dual’ system [GPV’08].

15 / 18

slide-74
SLIDE 74

Application: Efficient IBE a la [ABB’10]

◮ Setup: choose A = [ ¯ A | − ¯ AR]. Let mpk = (A, u), msk = R. (A has trapdoor R with tag 0.) ◮ Extract(R, id): map id → invertible Hid ∈ Zn×n

q

.

[DF’94,. . . ,ABB’10]

Using R, choose skid = x ← f−1

Aid(u), where

Aid = A + [0 | Hid · G] = [ ¯ A | Hid · G − ¯ AR]. ◮ Encrypt to Aid, decrypt using skid as in ‘dual’ system [GPV’08]. ◮ Security (“puncturing”): Given target id∗ (selective security), set up A = [ ¯ A | −Hid∗ · G − ¯ AR] = ⇒ Aid = [ ¯ A | (Hid − Hid∗)G − ¯ AR].

⋆ Hid − Hid∗ is invertible for all id = id∗, so can extract skid using R. ⋆ Aid∗ = [ ¯

A | − ¯ AR], so can embed an LWE challenge at id∗.

15 / 18

slide-75
SLIDE 75

Trapdoor Delegation [CHKP’10]

◮ Suppose R is a trapdoor for A, i.e. A R

I

  • = H · G.

16 / 18

slide-76
SLIDE 76

Trapdoor Delegation [CHKP’10]

◮ Suppose R is a trapdoor for A, i.e. A R

I

  • = H · G.

◮ To delegate a trapdoor for an extension [A | A′] with tag H′, just sample Gaussian R′ s.t. [A | A′] R′

I

  • = H′ · G ⇐

⇒ AR′ = H′ · G − A′.

16 / 18

slide-77
SLIDE 77

Trapdoor Delegation [CHKP’10]

◮ Suppose R is a trapdoor for A, i.e. A R

I

  • = H · G.

◮ To delegate a trapdoor for an extension [A | A′] with tag H′, just sample Gaussian R′ s.t. [A | A′] R′

I

  • = H′ · G ⇐

⇒ AR′ = H′ · G − A′. ◮ One-way: R′ reveals nothing about R. Useful for HIBE & IB-TDFs [CHKP’10,ABB’10,BKPW’12].

16 / 18

slide-78
SLIDE 78

Trapdoor Delegation [CHKP’10]

◮ Suppose R is a trapdoor for A, i.e. A R

I

  • = H · G.

◮ To delegate a trapdoor for an extension [A | A′] with tag H′, just sample Gaussian R′ s.t. [A | A′] R′

I

  • = H′ · G ⇐

⇒ AR′ = H′ · G − A′. ◮ One-way: R′ reveals nothing about R. Useful for HIBE & IB-TDFs [CHKP’10,ABB’10,BKPW’12]. ◮ Note: R′ is only width(A) × width(G) = m × n log q. So size of R′ grows only as O(m), not Ω(m2) like a basis does. Also computationally efficient: n log q samples, no HNF or ToBasis.

16 / 18

slide-79
SLIDE 79

Hierarchical IBE [CHKP’10,ABB’10]

◮ Setup(d): choose A0, . . . , Ad where Aε = [A0 | A1] has trapdoor Rε for tag 0. Let msk = skε = Rε and mpk = {Ai}.

17 / 18

slide-80
SLIDE 80

Hierarchical IBE [CHKP’10,ABB’10]

◮ Setup(d): choose A0, . . . , Ad where Aε = [A0 | A1] has trapdoor Rε for tag 0. Let msk = skε = Rε and mpk = {Ai}. ◮ Extract(id): map id = (id1, . . . , idt) → (Hid1, . . . Hidt) (invertible). Let Aid = [A0 | A1 + Hid1G | · · · | At + HidtG | At+1].

17 / 18

slide-81
SLIDE 81

Hierarchical IBE [CHKP’10,ABB’10]

◮ Setup(d): choose A0, . . . , Ad where Aε = [A0 | A1] has trapdoor Rε for tag 0. Let msk = skε = Rε and mpk = {Ai}. ◮ Extract(id): map id = (id1, . . . , idt) → (Hid1, . . . Hidt) (invertible). Let Aid = [A0 | A1 + Hid1G | · · · | At + HidtG | At+1]. Delegate skid = trapdoor Rid for Aid with tag 0. Using skid, can delegate any skid′ for any nontrivial extension id′.

17 / 18

slide-82
SLIDE 82

Hierarchical IBE [CHKP’10,ABB’10]

◮ Setup(d): choose A0, . . . , Ad where Aε = [A0 | A1] has trapdoor Rε for tag 0. Let msk = skε = Rε and mpk = {Ai}. ◮ Extract(id): map id = (id1, . . . , idt) → (Hid1, . . . Hidt) (invertible). Let Aid = [A0 | A1 + Hid1G | · · · | At + HidtG | At+1]. Delegate skid = trapdoor Rid for Aid with tag 0. Using skid, can delegate any skid′ for any nontrivial extension id′. ◮ Encrypt to Aid, decrypt using Rid as in [GPV’08].

17 / 18

slide-83
SLIDE 83

Hierarchical IBE [CHKP’10,ABB’10]

◮ Setup(d): choose A0, . . . , Ad where Aε = [A0 | A1] has trapdoor Rε for tag 0. Let msk = skε = Rε and mpk = {Ai}. ◮ Extract(id): map id = (id1, . . . , idt) → (Hid1, . . . Hidt) (invertible). Let Aid = [A0 | A1 + Hid1G | · · · | At + HidtG | At+1]. Delegate skid = trapdoor Rid for Aid with tag 0. Using skid, can delegate any skid′ for any nontrivial extension id′. ◮ Encrypt to Aid, decrypt using Rid as in [GPV’08]. ◮ Security (“puncturing”): Set up mpk, trapdoor R with tags = −id∗.

17 / 18

slide-84
SLIDE 84

Conclusions

◮ A simple trapdoor that’s easy to generate, use, and understand. ◮ Key sizes and algorithms for “strong” trapdoors are now realistic, with ring techniques (tomorrow) Selected bibliography for this talk:

CHKP’10 D. Cash, D. Hofheinz, E. Kiltz, C. Peikert, “Bonsai Trees, or How to Delegate a Lattice Basis,” Eurocrypt’10 / J. Crypt’11. ABB’10 S. Agrawal, D. Boneh, X. Boyen, “Efficient Lattice (H)IBE in the Standard Model,” Eurocrypt’10. MP’12 D. Micciancio, C. Peikert, “Trapdoors for Lattices: Simpler, Tighter, Faster, Smaller,” Eurocrypt’12.

18 / 18