Solving LPN Using Large Covering Codes Thom Wiggers Radboud - - PowerPoint PPT Presentation

solving lpn using large covering codes
SMART_READER_LITE
LIVE PREVIEW

Solving LPN Using Large Covering Codes Thom Wiggers Radboud - - PowerPoint PPT Presentation

Solving LPN Using Large Covering Codes Thom Wiggers Radboud University, Nijmegen, The Netherlands 8th August 2019 Outline Intro Learning Parity with Noise Breaking LPN The covering-codes reduction Covering Codes Combinations of reductions


slide-1
SLIDE 1

Solving LPN Using Large Covering Codes

Thom Wiggers

Radboud University, Nijmegen, The Netherlands

8th August 2019

slide-2
SLIDE 2

Outline

Intro Learning Parity with Noise Breaking LPN The covering-codes reduction Covering Codes Combinations of reductions What we are working on

slide-3
SLIDE 3

Post-quantum cryptography

Cryptography based on problems that are hard both for classical and quantum computers.

slide-4
SLIDE 4

Post-quantum cryptography

Cryptography based on problems that are hard both for classical and quantum computers. Categories of mathematical problems ◮ Lattice-based ◮ Code-based ◮ Hash-based ◮ Multivariate ◮ Isogenies

slide-5
SLIDE 5

Post-quantum cryptography

Cryptography based on problems that are hard both for classical and quantum computers. Categories of mathematical problems ◮ Lattice-based ◮ Code-based ◮ Hash-based ◮ Multivariate ◮ Isogenies Learning Parity with Noise falls in the code-based category.

slide-6
SLIDE 6

Post-quantum cryptography

Cryptography based on problems that are hard both for classical and quantum computers. Categories of mathematical problems ◮ Lattice-based ◮ Code-based ◮ Hash-based ◮ Multivariate ◮ Isogenies Learning Parity with Noise falls in the code-based category. We want to qualify how hard the LPN problem is.

slide-7
SLIDE 7

Primary school mathematics

slide-8
SLIDE 8

Primary school mathematics

All maths in this talk will be in base two: ◮ 0 + 0 = 0

slide-9
SLIDE 9

Primary school mathematics

All maths in this talk will be in base two: ◮ 0 + 0 = 0

slide-10
SLIDE 10

Primary school mathematics

All maths in this talk will be in base two: ◮ 0 + 0 = 0 ◮ 1 + 0 = 0 + 1 = 1

slide-11
SLIDE 11

Primary school mathematics

All maths in this talk will be in base two: ◮ 0 + 0 = 0 ◮ 1 + 0 = 0 + 1 = 1

slide-12
SLIDE 12

Primary school mathematics

All maths in this talk will be in base two: ◮ 0 + 0 = 0 ◮ 1 + 0 = 0 + 1 = 1 ◮ 1 + 1 = 0

slide-13
SLIDE 13

Primary school mathematics

All maths in this talk will be in base two: ◮ 0 + 0 = 0 ◮ 1 + 0 = 0 + 1 = 1 ◮ 1 + 1 = 0

slide-14
SLIDE 14

Primary school mathematics

All maths in this talk will be in base two: ◮ 0 + 0 = 0 ◮ 1 + 0 = 0 + 1 = 1 ◮ 1 + 1 = 0 So a + b + b = a.

slide-15
SLIDE 15

Primary school mathematics

All maths in this talk will be in base two: ◮ 0 + 0 = 0 ◮ 1 + 0 = 0 + 1 = 1 ◮ 1 + 1 = 0 So a + b + b = a. Also, 1−1 = 0 = 1+1

slide-16
SLIDE 16

Outline

Intro Learning Parity with Noise Breaking LPN The covering-codes reduction Covering Codes Combinations of reductions What we are working on

slide-17
SLIDE 17

Learning Parity without Noise

s ·         1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1         =

  • 1

1 1

slide-18
SLIDE 18

Learning Parity without Noise

Through the magic of Gaussian elimination s =         1 1 1 1 1 1         ·

  • 1

1 1 1

  • =
  • 1

1 1 1

slide-19
SLIDE 19

Learning Parity with Noise [Reg05]

We add some noise to the computations. We flip a bit using a biased coin (Bernoulli distribution) that gives head (1) with probability τ.

slide-20
SLIDE 20

Learning Parity with Noise [Reg05]

We add some noise to the computations. We flip a bit using a biased coin (Bernoulli distribution) that gives head (1) with probability τ. s ·         1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1         + e =

  • 1

1

  • Suddenly, finding s is hard.

Hardness related to decoding random codes.

slide-21
SLIDE 21

The LPN problem

Definition (LPN Oracle samples)

We have some LPN problem with secret s of length k bits. Our biased ‘coin’ Berτ gives e = 1 with probability τ.

slide-22
SLIDE 22

The LPN problem

Definition (LPN Oracle samples)

We have some LPN problem with secret s of length k bits. Our biased ‘coin’ Berτ gives e = 1 with probability τ. We obtain samples (a, c) such that

slide-23
SLIDE 23

The LPN problem

Definition (LPN Oracle samples)

We have some LPN problem with secret s of length k bits. Our biased ‘coin’ Berτ gives e = 1 with probability τ. We obtain samples (a, c) such that a, s + e = c where a is a k-bit uniformly random vector and e ← Berτ.

slide-24
SLIDE 24

The LPN problem

Definition (LPN Oracle samples)

We have some LPN problem with secret s of length k bits. Our biased ‘coin’ Berτ gives e = 1 with probability τ. We obtain samples (a, c) such that a, s + e = c where a is a k-bit uniformly random vector and e ← Berτ.         a1 a2 a3 a4 a5 a6         · s +         e1 e2 e3 e4 e5 e6         =         c1 c2 c3 c4 c5 c6        

slide-25
SLIDE 25

The LPN problem

Definition (LPN Oracle samples)

We have some LPN problem with secret s of length k bits. Our biased ‘coin’ Berτ gives e = 1 with probability τ. We obtain samples (a, c) such that a, s + e = c where a is a k-bit uniformly random vector and e ← Berτ. A · s + e = c

slide-26
SLIDE 26

The LPN problem

Definition (LPN Oracle samples)

We have some LPN problem with secret s of length k bits. Our biased ‘coin’ Berτ gives e = 1 with probability τ. We obtain samples (a, c) such that a, s + e = c where a is a k-bit uniformly random vector and e ← Berτ.

Definition (Search LPN Problem)

Given n samples (a, c), recover (information on) s. We want to do this using at most t amount of time, n samples and m memory.

slide-27
SLIDE 27

The LPN problem

Definition (LPN Oracle samples)

We have some LPN problem with secret s of length k bits. Our biased ‘coin’ Berτ gives e = 1 with probability τ. We obtain samples (a, c) such that a, s + e = c where a is a k-bit uniformly random vector and e ← Berτ.

Definition (Search LPN Problem)

Given n samples (a, c), recover (information on) s. We want to do this using at most t amount of time, n samples and m memory. Familiar? LWE is the same problem over Zq.

slide-28
SLIDE 28

The classic BKW algorithm [BKW00]

slide-29
SLIDE 29

The classic BKW algorithm [BKW00]

  • 1. Repeat until small enough
slide-30
SLIDE 30

The classic BKW algorithm [BKW00]

  • 1. Repeat until small enough

1.1 Sort queries into sets Vj that have the same b bits at the end.

slide-31
SLIDE 31

The classic BKW algorithm [BKW00]

  • 1. Repeat until small enough

1.1 Sort queries into sets Vj that have the same b bits at the end. 1.2 Pick one (a′, c′) from Vj and add it to all the other samples in Vj. k 1 0 0 1 1 1 1 0 1 0 1 ⊕ b 0 0 1 1 0 0 1 0 0 1 0 1 = 1 0 1 0 1 1 1 1 0 0 0 0 k′

slide-32
SLIDE 32

The classic BKW algorithm [BKW00]

  • 1. Repeat until small enough

1.1 Sort queries into sets Vj that have the same b bits at the end. 1.2 Pick one (a′, c′) from Vj and add it to all the other samples in Vj. k 1 0 0 1 1 1 1 0 1 0 1 ⊕ b 0 0 1 1 0 0 1 0 0 1 0 1 = 1 0 1 0 1 1 1 1 0 0 0 0 k′

  • 2. Throw out all samples that have more than one bit set in a.
slide-33
SLIDE 33

The classic BKW algorithm [BKW00]

  • 1. Repeat until small enough

1.1 Sort queries into sets Vj that have the same b bits at the end. 1.2 Pick one (a′, c′) from Vj and add it to all the other samples in Vj. k 1 0 0 1 1 1 1 0 1 0 1 ⊕ b 0 0 1 1 0 0 1 0 0 1 0 1 = 1 0 1 0 1 1 1 1 0 0 0 0 k′

  • 2. Throw out all samples that have more than one bit set in a.
  • 3. For 0 < j < b, sort into sets Wj that have aj = 1.
slide-34
SLIDE 34

The classic BKW algorithm [BKW00]

  • 1. Repeat until small enough

1.1 Sort queries into sets Vj that have the same b bits at the end. 1.2 Pick one (a′, c′) from Vj and add it to all the other samples in Vj. k 1 0 0 1 1 1 1 0 1 0 1 ⊕ b 0 0 1 1 0 0 1 0 0 1 0 1 = 1 0 1 0 1 1 1 1 0 0 0 0 k′

  • 2. Throw out all samples that have more than one bit set in a.
  • 3. For 0 < j < b, sort into sets Wj that have aj = 1.
  • 4. Decide sj by the majority of the c in Wj
slide-35
SLIDE 35

The classic BKW algorithm [BKW00]

  • 1. Repeat until small enough

1.1 Sort queries into sets Vj that have the same b bits at the end. 1.2 Pick one (a′, c′) from Vj and add it to all the other samples in Vj. k 1 0 0 1 1 1 1 0 1 0 1 ⊕ b 0 0 1 1 0 0 1 0 0 1 0 1 = 1 0 1 0 1 1 1 1 0 0 0 0 k′

  • 2. Throw out all samples that have more than one bit set in a.
  • 3. For 0 < j < b, sort into sets Wj that have aj = 1.
  • 4. Decide sj by the majority of the c in Wj
slide-36
SLIDE 36

The LF1 algorithm [LF06]

1. Repeat until small enough

1.1 Sort queries into sets Vj that have the same b bits at the end. 1.2 Pick one (a′, c′) from Vj and add it to all the other samples in Vj. k 1 0 0 1 1 1 1 0 1 0 1 ⊕ b 0 0 1 1 0 0 1 0 0 1 0 1 = 1 0 1 0 1 1 1 1 0 0 0 0 k′

slide-37
SLIDE 37

The LF1 algorithm [LF06]

1. Repeat until small enough

1.1 Sort queries into sets Vj that have the same b bits at the end. 1.2 Pick one (a′, c′) from Vj and add it to all the other samples in Vj. k 1 0 0 1 1 1 1 0 1 0 1 ⊕ b 0 0 1 1 0 0 1 0 0 1 0 1 = 1 0 1 0 1 1 1 1 0 0 0 0 k′

2. Apply mathematical magic (Walsh-Hadamard transform) to recover s1, . . . , sb.

slide-38
SLIDE 38

The LF1 algorithm [LF06]

1. Repeat until small enough

1.1 Sort queries into sets Vj that have the same b bits at the end. 1.2 Pick one (a′, c′) from Vj and add it to all the other samples in Vj. k 1 0 0 1 1 1 1 0 1 0 1 ⊕ b 0 0 1 1 0 0 1 0 0 1 0 1 = 1 0 1 0 1 1 1 1 0 0 0 0 k′

2. Apply mathematical magic (Walsh-Hadamard transform) to recover s1, . . . , sb.

slide-39
SLIDE 39

Generic solving algorithm

Solve an LPNk,τ problem, given n samples.

  • 1. Apply reduction algorithm and obtain LPNk′,τ ′ problem with n′

samples.

slide-40
SLIDE 40

Generic solving algorithm

Solve an LPNk,τ problem, given n samples.

  • 1. Apply reduction algorithm and obtain LPNk′,τ ′ problem with n′

samples.

  • 2. Apply solving algorithm consuming n′ samples.
slide-41
SLIDE 41

Generic solving algorithm

Solve an LPNk,τ problem, given n samples.

  • 1. Apply reduction algorithm and obtain LPNk′,τ ′ problem with n′

samples.

  • 2. Apply solving algorithm consuming n′ samples.

→ obtain information on s.

slide-42
SLIDE 42

Generic solving algorithm

Solve an LPNk,τ problem, given n samples.

  • 1. Apply reduction algorithm and obtain LPNk′,τ ′ problem with n′

samples.

  • 2. Apply solving algorithm consuming n′ samples.

→ obtain information on s.

slide-43
SLIDE 43

Generic solving algorithm

Solve an LPNk,τ problem, given n samples.

  • 1. Apply reduction algorithm and obtain LPNk′,τ ′ problem with n′

samples.

  • 2. Apply solving algorithm consuming n′ samples.

→ obtain information on s. We may apply several reductions algorithms in sequence!

slide-44
SLIDE 44

Complexity

Time Samples Memory 20 211 222 233 244 255 266 277 288

LPN with k = 256 and = 1

5

BKW LF1

slide-45
SLIDE 45

The Gauss algorithm [EKM17]

Main idea: Try to find an error-free set of samples and then simply apply Gaussian elimination.

slide-46
SLIDE 46

The Gauss algorithm [EKM17]

Main idea: Try to find an error-free set of samples and then simply apply Gaussian elimination.

  • 1. Take k samples (a, c) as invertible matrix A and vector c.
slide-47
SLIDE 47

The Gauss algorithm [EKM17]

Main idea: Try to find an error-free set of samples and then simply apply Gaussian elimination.

  • 1. Take k samples (a, c) as invertible matrix A and vector c.
  • 2. Compute s′ = A−1 · c.
slide-48
SLIDE 48

The Gauss algorithm [EKM17]

Main idea: Try to find an error-free set of samples and then simply apply Gaussian elimination.

  • 1. Take k samples (a, c) as invertible matrix A and vector c.
  • 2. Compute s′ = A−1 · c.
  • 3. If Test(s′) confirms it’s error-free, we’re done, else goto 1.
slide-49
SLIDE 49

The Gauss algorithm [EKM17]

Main idea: Try to find an error-free set of samples and then simply apply Gaussian elimination.

  • 1. Take k samples (a, c) as invertible matrix A and vector c.
  • 2. Compute s′ = A−1 · c.
  • 3. If Test(s′) confirms it’s error-free, we’re done, else goto 1.
slide-50
SLIDE 50

The Gauss algorithm [EKM17]

Main idea: Try to find an error-free set of samples and then simply apply Gaussian elimination.

  • 1. Take k samples (a, c) as invertible matrix A and vector c.
  • 2. Compute s′ = A−1 · c.
  • 3. If Test(s′) confirms it’s error-free, we’re done, else goto 1.

The Test(s′) algorithm is as follows:

  • 1. Take m samples (a, c) and write them as matrix Atest, ctest.
slide-51
SLIDE 51

The Gauss algorithm [EKM17]

Main idea: Try to find an error-free set of samples and then simply apply Gaussian elimination.

  • 1. Take k samples (a, c) as invertible matrix A and vector c.
  • 2. Compute s′ = A−1 · c.
  • 3. If Test(s′) confirms it’s error-free, we’re done, else goto 1.

The Test(s′) algorithm is as follows:

  • 1. Take m samples (a, c) and write them as matrix Atest, ctest.
  • 2. Compute e′ = Atest · s′ + ctest.
slide-52
SLIDE 52

The Gauss algorithm [EKM17]

Main idea: Try to find an error-free set of samples and then simply apply Gaussian elimination.

  • 1. Take k samples (a, c) as invertible matrix A and vector c.
  • 2. Compute s′ = A−1 · c.
  • 3. If Test(s′) confirms it’s error-free, we’re done, else goto 1.

The Test(s′) algorithm is as follows:

  • 1. Take m samples (a, c) and write them as matrix Atest, ctest.
  • 2. Compute e′ = Atest · s′ + ctest.

◮ We know Atest · s + e = ctest

slide-53
SLIDE 53

The Gauss algorithm [EKM17]

Main idea: Try to find an error-free set of samples and then simply apply Gaussian elimination.

  • 1. Take k samples (a, c) as invertible matrix A and vector c.
  • 2. Compute s′ = A−1 · c.
  • 3. If Test(s′) confirms it’s error-free, we’re done, else goto 1.

The Test(s′) algorithm is as follows:

  • 1. Take m samples (a, c) and write them as matrix Atest, ctest.
  • 2. Compute e′ = Atest · s′ + ctest.

◮ We know Atest · s + e = ctest ◮ We also know e will have roughly m · τ bits flipped

slide-54
SLIDE 54

The Gauss algorithm [EKM17]

Main idea: Try to find an error-free set of samples and then simply apply Gaussian elimination.

  • 1. Take k samples (a, c) as invertible matrix A and vector c.
  • 2. Compute s′ = A−1 · c.
  • 3. If Test(s′) confirms it’s error-free, we’re done, else goto 1.

The Test(s′) algorithm is as follows:

  • 1. Take m samples (a, c) and write them as matrix Atest, ctest.
  • 2. Compute e′ = Atest · s′ + ctest.

◮ We know Atest · s + e = ctest ◮ We also know e will have roughly m · τ bits flipped

  • 3. If e′ has approximately m · τ bits flipped, probably s′ = s
slide-55
SLIDE 55

Variant: Pooled Gauss

  • 1. Take n = k2 log2 k samples as a sample pool.
slide-56
SLIDE 56

Variant: Pooled Gauss

  • 1. Take n = k2 log2 k samples as a sample pool.
  • 2. Randomly take k samples (a, c) from the pool as invertible

matrix A and vector c.

slide-57
SLIDE 57

Variant: Pooled Gauss

  • 1. Take n = k2 log2 k samples as a sample pool.
  • 2. Randomly take k samples (a, c) from the pool as invertible

matrix A and vector c.

  • 3. Compute s′ = A−1 · c.
slide-58
SLIDE 58

Variant: Pooled Gauss

  • 1. Take n = k2 log2 k samples as a sample pool.
  • 2. Randomly take k samples (a, c) from the pool as invertible

matrix A and vector c.

  • 3. Compute s′ = A−1 · c.
  • 4. If Test(s′) confirms it’s error-free, we’re done, else goto 1.
slide-59
SLIDE 59

Variant: Pooled Gauss

  • 1. Take n = k2 log2 k samples as a sample pool.
  • 2. Randomly take k samples (a, c) from the pool as invertible

matrix A and vector c.

  • 3. Compute s′ = A−1 · c.
  • 4. If Test(s′) confirms it’s error-free, we’re done, else goto 1.
slide-60
SLIDE 60

Variant: Pooled Gauss

  • 1. Take n = k2 log2 k samples as a sample pool.
  • 2. Randomly take k samples (a, c) from the pool as invertible

matrix A and vector c.

  • 3. Compute s′ = A−1 · c.
  • 4. If Test(s′) confirms it’s error-free, we’re done, else goto 1.

Needs much less samples.

slide-61
SLIDE 61

Variant: Pooled Gauss

  • 1. Take n = k2 log2 k samples as a sample pool.
  • 2. Randomly take k samples (a, c) from the pool as invertible

matrix A and vector c.

  • 3. Compute s′ = A−1 · c.
  • 4. If Test(s′) confirms it’s error-free, we’re done, else goto 1.

Needs much less samples. This algorithm is an Information-Set Decoding algorithm: it finds an error-free index set in the pool. Notably, it resembles the [Pra62] algorithm.

slide-62
SLIDE 62

Complexities

To solve LPNk,τ: n Samples Time Memory BKW 20 · ln(4k) · 2b · (1 − 2τ)−2a kan kn LF1 (8b + 2000) (1 − 2τ)−2a +(a −1)2b kan + b2b kn + b2b Gauss k · I + m

  • k3 + km
  • I

k2 + km Pooled Gauss k2 log2 k + m

  • k3 + km
  • I

k2 log2 k + km Gauss needs I = O

  • log2

2 k

(1−τ)k

  • iterations to find a solution.
slide-63
SLIDE 63

Complexity

Time Samples Memory 20 214 228 242 256 270 284 298 2112

LPN with k = 256 and = 1

5

BKW LF1 Gauss Pooled Gauss

slide-64
SLIDE 64

Covering Codes

1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1

slide-65
SLIDE 65

Covering-codes reduction

1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1 k k′

slide-66
SLIDE 66

Covering-codes reduction

1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1 k k′

This allows us to reduce a k-size LPN problem with noise τ to a k′-sized LPN problem with noise τ ′. This new noise τ ′ is strongly dependent on the code used. We measure the impact as bc. (0 ≤ bc ≤ 1, larger is better)

slide-67
SLIDE 67

Finding codes for the reduction

◮ We need a code that allows us to reduce from k to k′.

1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1 k k′

slide-68
SLIDE 68

Finding codes for the reduction

◮ We need a code that allows us to reduce from k to k′. ◮ We could use random codes, but they are hard to decode.

1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1 k k′

slide-69
SLIDE 69

Finding codes for the reduction

◮ We need a code that allows us to reduce from k to k′. ◮ We could use random codes, but they are hard to decode. ◮ (Quasi-)Perfect codes give the best bc, but only few are known.

1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1 k k′

slide-70
SLIDE 70

Coded Gauss

  • 1. Apply covering-codes reduction to reduce problem size from k

to k′.

  • 2. Recover secret using Gauss
slide-71
SLIDE 71

Coded Gauss

  • 1. Apply covering-codes reduction to reduce problem size from k

to k′.

  • 2. Recover secret using Gauss

The complexity of this algorithm: ◮ We will need I = O

  • log2

2 k

(1−τ ′)k′

  • attempts before we find k′

error-free samples.

slide-72
SLIDE 72

Coded Gauss

  • 1. Apply covering-codes reduction to reduce problem size from k

to k′.

  • 2. Recover secret using Gauss

The complexity of this algorithm: ◮ We will need I = O

  • log2

2 k

(1−τ ′)k′

  • attempts before we find k′

error-free samples. ◮ Gauss needs n = k′ · I + m samples.

slide-73
SLIDE 73

Coded Gauss

  • 1. Apply covering-codes reduction to reduce problem size from k

to k′.

  • 2. Recover secret using Gauss

The complexity of this algorithm: ◮ We will need I = O

  • log2

2 k

(1−τ ′)k′

  • attempts before we find k′

error-free samples. ◮ Gauss needs n = k′ · I + m samples. ◮ In each Gauss iteration we do k3 + k · m work

slide-74
SLIDE 74

Coded Gauss

  • 1. Apply covering-codes reduction to reduce problem size from k

to k′.

  • 2. Recover secret using Gauss

The complexity of this algorithm: ◮ We will need I = O

  • log2

2 k

(1−τ ′)k′

  • attempts before we find k′

error-free samples. ◮ Gauss needs n = k′ · I + m samples. ◮ In each Gauss iteration we do k3 + k · m work ◮ We will need to decode all the n samples as well

slide-75
SLIDE 75

Coded Gauss

  • 1. Apply covering-codes reduction to reduce problem size from k

to k′.

  • 2. Recover secret using Gauss

The complexity of this algorithm: ◮ We will need I = O

  • log2

2 k

(1−τ ′)k′

  • attempts before we find k′

error-free samples. ◮ Gauss needs n = k′ · I + m samples. ◮ In each Gauss iteration we do k3 + k · m work ◮ We will need to decode all the n samples as well → Time complexity O(n + (k3 + k · m) · I)

slide-76
SLIDE 76

How ‘good’ should a code be?

Let’s assume we have arbitrary [k, k′] codes.

64 128 192 256 320 384 448 512k ′ 0.2 0.4 0.6 0.8 1

bc

Coded Gauss is faster Plain Gauss is faster

16 32 48 64 80 96 112 128k ′ 10-18 10-16 10-14 10-12 10-10 10-8 10-6 10-4 10-2 100

bc

Coded Gauss is faster Plain Gauss is faster

slide-77
SLIDE 77

How ‘good’ should a code be?

Let’s assume we have arbitrary [k, k′] codes. We have the following inequality TGauss(k, τ) ≥ TCoded Gauss(k, k′, τ, bc)

64 128 192 256 320 384 448 512k ′ 0.2 0.4 0.6 0.8 1

bc

Coded Gauss is faster Plain Gauss is faster

16 32 48 64 80 96 112 128k ′ 10-18 10-16 10-14 10-12 10-10 10-8 10-6 10-4 10-2 100

bc

Coded Gauss is faster Plain Gauss is faster

slide-78
SLIDE 78

How ‘good’ should a code be?

Let’s assume we have arbitrary [k, k′] codes.

64 128 192 256 320 384 448 512k ′ 0.2 0.4 0.6 0.8 1

bc

Coded Gauss is faster Plain Gauss is faster

(a) Lower bound for bc

16 32 48 64 80 96 112 128k ′ 10-18 10-16 10-14 10-12 10-10 10-8 10-6 10-4 10-2 100

bc

Coded Gauss is faster Plain Gauss is faster

(b) More detailed look at 0 < k′ ≤ 128.

Figure: Minimal bc before Coded Gauss is faster than applying Gauss to the full problem. k = 512, τ = 1

8.

slide-79
SLIDE 79

The best-case scenario for bc

Assume we have arbitrary, (quasi-)perfect codes.

slide-80
SLIDE 80

The best-case scenario for bc

Assume we have arbitrary, (quasi-)perfect codes. bc ≤ 2k′−k

R

  • w=0

k w δw

s − δR+1 s

  • + δR+1

s

. Here, R is a property we can bound for quasi-perfect codes (Hamming Bound [Ham50]) and δs = 1 − 2τ.

slide-81
SLIDE 81

The best-case scenario for bc

Assume we have arbitrary, (quasi-)perfect codes.

64 128 192 256 320 384 448 512k ′ 2-31 2-28 2-25 2-22 2-19 2-16 2-13 2-10 2-7 2-4 2-1

bc

Needed bc (τ =

1 p 512 )

Hamming Bound bc (τ =

1 p 512 )

(a) τ =

1 √ 512 64 128 192 256 320 384 448 512

k ′

2-91 2-84 2-77 2-70 2-63 2-56 2-49 2-42 2-35 2-28 2-21 2-14 2-7 20

bc

Needed bc (τ = 1

8)

bc at Hamming Bound (τ = 1

8)

(b) τ = 1

8

Figure: Minimal bc and the bc obtained at the Hamming bound for various τ. k = 512, δ = δs = 1 − 2τ.

slide-82
SLIDE 82

The best-case scenario for bc

Assume we have arbitrary, (quasi-)perfect codes.

64 128 192 256 320 384 448 512

k ′

2-196 2-180 2-164 2-148 2-132 2-116 2-100 2-84 2-68 2-52 2-36 2-20 2-4

bc

Needed bc (τ = 1

4)

bc at Hamming Bound (τ = 1

4)

(a) τ = 1

4 64 128 192 256 320 384 448 512

k ′

2-511 2-474 2-437 2-400 2-363 2-326 2-289 2-252 2-215 2-178 2-141 2-104 2-67 2-30

bc

Needed bc (τ = 4999999

10000000)

bc at Hamming Bound (τ = 4999999

10000000)

(b) τ =

4 999 999 10 000 000

Figure: Minimal bc and the bc obtained at the Hamming bound for various τ. k = 512, δ = δs = 1 − 2τ.

slide-83
SLIDE 83

Coded Gauss doesn’t work

In conclusion, the following:

  • 1. Apply covering code to reduce to k′-sized problem
  • 2. Use Gauss to solve the problem

isn’t faster than only applying step 2.

slide-84
SLIDE 84

Coded Gauss doesn’t work

In conclusion, the following:

  • 1. Apply covering code to reduce to k′-sized problem
  • 2. Use Gauss to solve the problem

isn’t faster than only applying step 2.

Note

Our analysis was limited to the above algorithm. We have results that show the following may work

  • 1. Apply some reduction to reduce to a k′-sized problem with

noise τ ′

  • 2. Apply covering code to reduce to k′′-sized problem with noise

τ ′′

  • 3. Use Gauss to solve the problem
slide-85
SLIDE 85

Coded Gauss doesn’t work

In conclusion, the following:

  • 1. Apply covering code to reduce to k′-sized problem
  • 2. Use Gauss to solve the problem

isn’t faster than only applying step 2.

Note

Our analysis was limited to the above algorithm. We have results that show the following may work

  • 1. Apply some reduction to reduce to a k′-sized problem with

noise τ ′

  • 2. Apply covering code to reduce to k′′-sized problem with noise

τ ′′

  • 3. Use Gauss to solve the problem

However, we would also need to include the complexity of step 1 when analysing this combination.

slide-86
SLIDE 86

Outline

Intro Learning Parity with Noise Breaking LPN The covering-codes reduction Covering Codes Combinations of reductions What we are working on

slide-87
SLIDE 87

Improving the performance of the covering-codes reduction

The covering-codes reduction as originally proposed:

  • 1. Apply covering-codes reduction
  • 2. Recover information on s using Walsh-Hadamard Transform.
slide-88
SLIDE 88

Improving the performance of the covering-codes reduction

The covering-codes reduction as originally proposed:

  • 1. Apply covering-codes reduction
  • 2. Recover information on s using Walsh-Hadamard Transform.

Picking codes is hard. Much of the work around this attack has been

  • n finding the right codes to instantiate attacks.
slide-89
SLIDE 89

Concatenated Codes

Current attacks use concatenations of small perfect codes to construct larger [k, k′] codes.

Example

We construct the following [12, 4] code from [3, 1] repetion codes with generator

  • 1

1 1

  • :

  1 1 1 1 1 1 1 1 1  

slide-90
SLIDE 90

Concatenated Codes

Current attacks use concatenations of small perfect codes to construct larger [k, k′] codes.

Example

We construct the following [12, 4] code from [3, 1] repetion codes with generator

  • 1

1 1

  • :

  1 1 1 1 1 1 1 1 1   The bc of concatenated codes is the product of the bc of the smaller codes.

slide-91
SLIDE 91

Concatenated Codes (cont.)

Example

We construct the following [12, 4] code from [3, 1] repetion codes with generator

  • 1

1 1

  • :

  1 1 1 1 1 1 1 1 1  

Decoding Algorithm

  • 1. Generate look up tables for the small codes
  • 2. Split your vector along the small codes
  • 3. Look up the codewords for the individual pieces in the lookup

tables

  • 4. Concatenate
slide-92
SLIDE 92

StGen codes

Samardjiska and Gliogoski proposed an improvement on these concatenations of codes. We add random noise on top of the blocks.

G = Ik B1

k1

B′

2

B2

k2 n2

. . . ...

B′

v

Bv

kv

                       

n1 nv

(1) Simona proposed using these codes with the covering-codes reduction at a department lunch talk.

slide-93
SLIDE 93

Decoding StGen Codes

G = Ik B1

k1

B′

2

B2

k2 n2

. . . ...

B′

v

Bv

kv

                       

n1 nv

(2)

Decoding algorithm sketch

  • 1. Set maximum error weights and limits
slide-94
SLIDE 94

Decoding StGen Codes

G = Ik B1

k1

B′

2

B2

k2 n2

. . . ...

B′

v

Bv

kv

                       

n1 nv

(2)

Decoding algorithm sketch

  • 1. Set maximum error weights and limits
  • 2. Split vector into pieces
slide-95
SLIDE 95

Decoding StGen Codes

G = Ik B1

k1

B′

2

B2

k2 n2

. . . ...

B′

v

Bv

kv

                       

n1 nv

(2)

Decoding algorithm sketch

  • 1. Set maximum error weights and limits
  • 2. Split vector into pieces
  • 3. Produce all candidate codewords and error vectors for first

block B1

slide-96
SLIDE 96

Decoding StGen Codes

G = Ik B1

k1

B′

2

B2

k2 n2

. . . ...

B′

v

Bv

kv

                       

n1 nv

(2)

Decoding algorithm sketch

  • 1. Set maximum error weights and limits
  • 2. Split vector into pieces
  • 3. Produce all candidate codewords and error vectors for first

block B1

  • 4. Multiply each of these by B′

2 to account for that random noise

slide-97
SLIDE 97

Decoding StGen Codes

G = Ik B1

k1

B′

2

B2

k2 n2

. . . ...

B′

v

Bv

kv

                       

n1 nv

(2)

Decoding algorithm sketch

  • 1. Set maximum error weights and limits
  • 2. Split vector into pieces
  • 3. Produce all candidate codewords and error vectors for first

block B1

  • 4. Multiply each of these by B′

2 to account for that random noise

  • 5. Generate all the candidates for B2
slide-98
SLIDE 98

Decoding StGen Codes

G = Ik B1

k1

B′

2

B2

k2 n2

. . . ...

B′

v

Bv

kv

                       

n1 nv

(2)

Decoding algorithm sketch

  • 1. Set maximum error weights and limits
  • 2. Split vector into pieces
  • 3. Produce all candidate codewords and error vectors for first

block B1

  • 4. Multiply each of these by B′

2 to account for that random noise

  • 5. Generate all the candidates for B2
  • 6. Increase maximum weights if you have few candidates for the

next round.

slide-99
SLIDE 99

Complications of StGen codes

◮ Decoding is not trivial

slide-100
SLIDE 100

Complications of StGen codes

◮ Decoding is not trivial

◮ Decoding algorithm based on list decoding [SG17]

slide-101
SLIDE 101

Complications of StGen codes

◮ Decoding is not trivial

◮ Decoding algorithm based on list decoding [SG17] ◮ Highly tweakable

slide-102
SLIDE 102

Complications of StGen codes

◮ Decoding is not trivial

◮ Decoding algorithm based on list decoding [SG17] ◮ Highly tweakable

◮ Because of the random elements we can no longer directly compute bc.

slide-103
SLIDE 103

Complications of StGen codes

◮ Decoding is not trivial

◮ Decoding algorithm based on list decoding [SG17] ◮ Highly tweakable

◮ Because of the random elements we can no longer directly compute bc.

◮ For random codes computing bc is a hugely expensive operation.

slide-104
SLIDE 104

Complications of StGen codes

◮ Decoding is not trivial

◮ Decoding algorithm based on list decoding [SG17] ◮ Highly tweakable

◮ Because of the random elements we can no longer directly compute bc.

◮ For random codes computing bc is a hugely expensive operation. ◮ We instead estimate it over a number of random vectors

slide-105
SLIDE 105

Outline

Intro Learning Parity with Noise Breaking LPN The covering-codes reduction Covering Codes Combinations of reductions What we are working on

slide-106
SLIDE 106

Finding reduction chains

Bogos and Vaudenay propose a search algorithm for finding combinations of reductions:

Figure: Finding chains of reductions [Bog17].

slide-107
SLIDE 107

Improving the performance of an attack

Bogos and Vaudenay propose a combination of reductions to solve LPN512, 1

8 in O(278.85) time using 263.3 samples.

slide-108
SLIDE 108

Improving the performance of an attack

Bogos and Vaudenay propose a combination of reductions to solve LPN512, 1

8 in O(278.85) time using 263.3 samples.

Step k log2 n 1 − 2τ δs Algorithm 1 512 63.3 0.75 sparse-secret 2 512 63.3 0.75 0.75 xor-reduce (b = 59) 3 453 66.6 0.5625 0.75 xor-reduce (b = 65) 4 388 67.2 0.3164 0.75 xor-reduce (b = 66) 5 322 67.4 0.1001 0.75 xor-reduce (b = 66) 6 256 67.8 0.0100 0.75 xor-reduce (b = 67) 7 189 67.6 0.0001 0.75 covering-codes 8 64 67.6 8.8 · 10−10 FWHT

Table: The full solving chain of Bogos and Vaudenay [BV16; BV] on LPN512, 1

8 . In step 7 they apply a [189, 64] covering code with

bc = 8.78 · 10−6.

slide-109
SLIDE 109

The code used by Bogos and Vaudenay

The last reduction applied uses a number of random codes.

slide-110
SLIDE 110

The code used by Bogos and Vaudenay

The last reduction applied uses a number of random codes.

Table: bc for the small random codes used in the solving algorithm for LPN512, 1

8 [BV16; BV].

Code Count bc

  • τ = 1

8

  • [18, 6]

1 0.323782920837402 [19, 6] 5 0.291754990816116 [19, 7] 4 0.336303114891052

slide-111
SLIDE 111

The code used by Bogos and Vaudenay

G = Ik

[19, 7]

[18, 6]...

[19, 6]

                       

The bc of the concatenated code is bc = 0.3231 · 0.2925 · 0.3364 = 8.78 · 10−6.

slide-112
SLIDE 112

The code used by Bogos and Vaudenay

G = Ik

[19, 7] B′

2

[18, 6]. . .

...

B′

v

[19, 6]

                       

The bc of this StGen code is approximated to bc ≈ 3.8 · 10−5.

slide-113
SLIDE 113

Theoretical improvement

Using bc = 3.8 · 10−5 we improve the performance of the algorithm.

Table: Improved attack on LPN512, 1

8

Original With StGen code Time O

  • 278.85

O

  • 278.1

Samples 263.3 263.2

slide-114
SLIDE 114

Theoretical improvement

Using bc = 3.8 · 10−5 we improve the performance of the algorithm.

Table: Improved attack on LPN512, 1

8

Original With StGen code Time O

  • 278.85

O

  • 278.1

Samples 263.3 263.2 But: we assumed that decoding takes O(1) time!

slide-115
SLIDE 115

Theoretical improvement

Using bc = 3.8 · 10−5 we improve the performance of the algorithm.

Table: Improved attack on LPN512, 1

8

Original With StGen code Time O

  • 278.85

O

  • 278.1

Samples 263.3 263.2 But: we assumed that decoding takes O(1) time!

Table: Decoding times

Base codes Concatenated StGen B&V 0.2 ms

slide-116
SLIDE 116

Theoretical improvement

Using bc = 3.8 · 10−5 we improve the performance of the algorithm.

Table: Improved attack on LPN512, 1

8

Original With StGen code Time O

  • 278.85

O

  • 278.1

Samples 263.3 263.2 But: we assumed that decoding takes O(1) time!

Table: Decoding times

Base codes Concatenated StGen B&V 0.2 ms ±500 000 ms

slide-117
SLIDE 117

Theoretical improvement

Using bc = 3.8 · 10−5 we improve the performance of the algorithm.

Table: Improved attack on LPN512, 1

8

Original With StGen code Time O

  • 278.85

O

  • 278.1

Samples 263.3 263.2 But: we assumed that decoding takes O(1) time!

Table: Decoding times

Base codes Concatenated StGen B&V 0.2 ms ±500 000 ms Small perfect 0.009 ms 20–100 ms

slide-118
SLIDE 118

Outline

Intro Learning Parity with Noise Breaking LPN The covering-codes reduction Covering Codes Combinations of reductions What we are working on

slide-119
SLIDE 119

Finding reduction chains

Bogos and Vaudenay propose a search algorithm for finding combinations of reductions:

Figure: Finding chains of reductions [Bog17].

slide-120
SLIDE 120

Finding new reduction chains

Bogos and Vaudenay propose a search algorithm for finding combinations of reductions:

Figure: Finding chains of reductions with Gauss [Bog17].

slide-121
SLIDE 121

Memory consumption of m

16 32 48 64 80 96 112 128k ′ 222 226 230 234 238 242 246 250 254 258 262 222 226 230 234 238 242 246 250 254 258 262

m

bc=10−2 bc=10−3 bc=10−4 bc=10−5 bc=10−6 bc=10−7 1 MiB 1 GiB 1 TiB 1 PiB 1 EiB

Figure: m for various small bc (τ = 1

8)

slide-122
SLIDE 122

Software

We developed software that allows to implement LPN solving algorithms. // Create LPN oracle with k=32 and tau=1/32 let mut oracle = LpnOracle::new(32, 1.0 / 32.0);

  • racle.get_samples(1000);

// apply the LF2 `xor_reduce' reduction // using b = 8 three times xor_reduction(&mut oracle, 8); xor_reduction(&mut oracle, 8); xor_reduction(&mut oracle, 8); // solve using two techniques let fwht_solution = fwht_solve(oracle.clone()); let gauss_solution = pooled_gauss_solve(oracle); Available via https://thomwiggers.nl/research/msc-thesis/.

slide-123
SLIDE 123

Wrapping up

Conclusions

◮ Solving LPN not only costs a lot of time, but also a lot of memory.

Work in progress

slide-124
SLIDE 124

Wrapping up

Conclusions

◮ Solving LPN not only costs a lot of time, but also a lot of memory. ◮ Combining the covering-codes reduction with Gauss does not work.

Work in progress

slide-125
SLIDE 125

Wrapping up

Conclusions

◮ Solving LPN not only costs a lot of time, but also a lot of memory. ◮ Combining the covering-codes reduction with Gauss does not work.

◮ At least, in the combinations we presented

Work in progress

slide-126
SLIDE 126

Wrapping up

Conclusions

◮ Solving LPN not only costs a lot of time, but also a lot of memory. ◮ Combining the covering-codes reduction with Gauss does not work.

◮ At least, in the combinations we presented

◮ We can improve the theoretical performance of solving algorithms using StGen codes

Work in progress

slide-127
SLIDE 127

Wrapping up

Conclusions

◮ Solving LPN not only costs a lot of time, but also a lot of memory. ◮ Combining the covering-codes reduction with Gauss does not work.

◮ At least, in the combinations we presented

◮ We can improve the theoretical performance of solving algorithms using StGen codes

◮ But StGen codes decode so much slower that it’s not faster in practice

Work in progress

slide-128
SLIDE 128

Wrapping up

Conclusions

◮ Solving LPN not only costs a lot of time, but also a lot of memory. ◮ Combining the covering-codes reduction with Gauss does not work.

◮ At least, in the combinations we presented

◮ We can improve the theoretical performance of solving algorithms using StGen codes

◮ But StGen codes decode so much slower that it’s not faster in practice

Work in progress

◮ Find combinations of reductions that do work with Gauss

slide-129
SLIDE 129

Wrapping up

Conclusions

◮ Solving LPN not only costs a lot of time, but also a lot of memory. ◮ Combining the covering-codes reduction with Gauss does not work.

◮ At least, in the combinations we presented

◮ We can improve the theoretical performance of solving algorithms using StGen codes

◮ But StGen codes decode so much slower that it’s not faster in practice

Work in progress

◮ Find combinations of reductions that do work with Gauss ◮ Adapt Bogos and Vaudenay’s reduction chain finding algorithm to consider memory consumption

slide-130
SLIDE 130

Wrapping up

Conclusions

◮ Solving LPN not only costs a lot of time, but also a lot of memory. ◮ Combining the covering-codes reduction with Gauss does not work.

◮ At least, in the combinations we presented

◮ We can improve the theoretical performance of solving algorithms using StGen codes

◮ But StGen codes decode so much slower that it’s not faster in practice

Work in progress

◮ Find combinations of reductions that do work with Gauss ◮ Adapt Bogos and Vaudenay’s reduction chain finding algorithm to consider memory consumption ◮ Add StGen codes to the reduction finding algorithm to find better-optimised solving algorithms.

slide-131
SLIDE 131

Wrapping up

Conclusions

◮ Solving LPN not only costs a lot of time, but also a lot of memory. ◮ Combining the covering-codes reduction with Gauss does not work.

◮ At least, in the combinations we presented

◮ We can improve the theoretical performance of solving algorithms using StGen codes

◮ But StGen codes decode so much slower that it’s not faster in practice

Work in progress

◮ Find combinations of reductions that do work with Gauss ◮ Adapt Bogos and Vaudenay’s reduction chain finding algorithm to consider memory consumption ◮ Add StGen codes to the reduction finding algorithm to find better-optimised solving algorithms.

slide-132
SLIDE 132

Wrapping up

Conclusions

◮ Solving LPN not only costs a lot of time, but also a lot of memory. ◮ Combining the covering-codes reduction with Gauss does not work.

◮ At least, in the combinations we presented

◮ We can improve the theoretical performance of solving algorithms using StGen codes

◮ But StGen codes decode so much slower that it’s not faster in practice

Work in progress

◮ Find combinations of reductions that do work with Gauss ◮ Adapt Bogos and Vaudenay’s reduction chain finding algorithm to consider memory consumption ◮ Add StGen codes to the reduction finding algorithm to find better-optimised solving algorithms.

Thank you for your attention

slide-133
SLIDE 133

Outline

Backup slides BKW algorithm LF1 algorithm LF2 algorithm Gauss vs Coded Gauss Memory consumption StGen code decoding Bibliography

slide-134
SLIDE 134

The BKW algorithm

Input: A set V of n samples (a, c) from OLPN

s,t , a, b s.t. k ≥ ab 1 for i = 1 to a − 1 do

// Reduction (partition-reduce):

2

Partition V = V1 ∪ · · · ∪ V2b s.t. they all have the same bit values on the last ib bits

3

foreach Vj do

4

Choose a (a′, c′) ∈ Vj

5

Replace all other (a, c) ∈ Vj by (a + a′, c + c′)

6

Discard (a′, c′) // Solving phase (majority):

7 Discard all samples (a, c) from V where HW (a) = 1 8 Divide V into b partitions, such that vectors a ∈ Vj have aj = 1 9 for i = 1 to b do 10

si = majority(c), for all (a, c) ∈ Vi

11 return s1, . . . , sb

slide-135
SLIDE 135

LF1 algorithm

Algorithm 1: The LF1 algorithm as presented in [BTV15] Input: A set V of n samples (a, c) from OLPN

s,t ,

a, b s.t. k = ab Output: (s1, . . . , sa) from s

1 Run a − 1 iterations of partition-reduce as in the BKW

algorithm // Solving Phase (FWHT):

2 f (x) = (a,c)∈V 1V1,...,b=x(−1)c 3 ˆ

f (x) =

x (−1)a,xf (x) 4 return (s1, . . . , sb) = arg max a∈Zb

2

(ˆ f (a))

slide-136
SLIDE 136

LF2 algorithm

Algorithm 2: The LF2 algorithm [LF06] Input: A set V of n samples (a, c) from OLPN

s,t ,

a, b s.t. k = ab Output: (s1, . . . , sb) from s

1 for i = 1 to a − 1 do 2

Partition V = V1 ∪ · · · ∪ V2b s.t. they all have the same bit values on the last ib bits

3

foreach Vj do

4

V ′

j = ∅ 5

for (a, c), (a′, c′) ∈ Vj, (a, c) = (a′, c′) do

6

V ′

j = V ′ j ∪ {(a + a′, c + c′)} 7

V = V ′

1 ∪ · · · ∪ V ′ 2b

// Solving Phase (FWHT) [..]

8 return (s1, . . . , sb) = arg max(ˆ

f (a))

slide-137
SLIDE 137

Gauss

1 Function Gauss(OLPN s,τ , τ) 2

repeat

3

repeat

4

(A, c) ←

  • OLPN

s,τ

k

5

until A is full rank

6

s′ = A−1c

7

until Test(s′, τ,

1 2k ,

1−τ

2

k)

8

return s′

1 Function Test(s′, τ, α, β) 2

m =

3 2 ln( 1 α)+

  • ln 1

β 1 2 −τ

2 ;

3

c = τm +

  • 3

1

2 − τ

  • ln

1

α

  • m;

4

(A, c) ←

  • OLPN

s,τ

m;

5

if HW (As′ + c) ≤ c then

6

return True;

7

else

8

return False;

slide-138
SLIDE 138

Pooled Gauss

1 Function PooledGauss(OLPN s,τ , τ) 2

P ←

  • OLPN

s,τ

k2 log2 k

3

repeat

4

repeat

5

(A, c)

U

← − P

6

until A is full rank

7

s′ = A−1c

8

until Test(s′, τ,

1 2k ,

1−τ

2

k)

9

return s′

slide-139
SLIDE 139

When is Coded Gauss faster

  • k3 + km
  • log2

2 k

1

2 + 1 2δ

k ≥

  • k′3 + k′m
  • log2

2 k′

1

2 + 1 2δbc

k′ + m + n.

slide-140
SLIDE 140

Memory consumption of m

16 32 48 64 80 96 112 128k ′ 222 226 230 234 238 242 246 250 254 258 262 222 226 230 234 238 242 246 250 254 258 262

m

bc=10−2 bc=10−3 bc=10−4 bc=10−5 bc=10−6 bc=10−7 1 MiB 1 GiB 1 TiB 1 PiB 1 EiB

Figure: m for various small bc (τ = 1

8)

slide-141
SLIDE 141

StGen decoding

Input: w1, wb, winc, G, Lmax, c ∈ Fn

2.

Output: A close codeword of c Let Ki = Σi

j=1kj, Ni = Σi j=1nj and let Gi be the ‘small code’ (Iki |Bi). 1 L0 = {(x0, e0)}, x0, e0 are zero-dimensional vectors. 2 for i = 1 to v do 3

foreach (xi−1, ei−1) in Li−1 do

4

b =

  • cKi−1, . . . , cKi
  • ||
  • xi−1B′

i +

  • ck+Ni−1, . . . , ck+Ni
  • 5

max-wt = min(wi − HW (ei−1), wb)

6

foreach e′ ∈

  • v ∈ Fni +ki

2

| HW (v) ≤ max-wt

  • do

7

Find x′ s.t. x′Gi + b = e′

8

enew =

  • (ei−1)1, . . . , (ei−1)Ki−1, e′

1, . . . , e′ ki ,

(ei−1)Ki−1, . . . , (ei−1)Ki−1+Ni−1, e′

ki , . . . , e′ ki +ni

  • 9

Add (xi−1||x′, enew) to Li

10

if |Li| < Lmax then wi+1 = wi + winc else wi+1 = wi

11 return x from (x, e) ∈ Lv where HW (e) is minimal

Algorithm 3: List-decoding StGen codes [SG15]

slide-142
SLIDE 142

Outline

Backup slides BKW algorithm LF1 algorithm LF2 algorithm Gauss vs Coded Gauss Memory consumption StGen code decoding Bibliography

slide-143
SLIDE 143

Bibliography I

[BKW00] Avrim Blum, Adam Kalai and Hal Wasserman. ‘Noise-tolerant learning, the parity problem, and the statistical query model’. In: 32nd ACM STOC. ACM Press, May 2000, pp. 435–440. [Bog17] Sonia Bogos. ‘LPN in Cryptography: an Algorithmic Study’. PhD thesis. École Polytechnique Fédérale De Lausanne, 2017. URL: https://infoscience.epfl. ch/record/228977/files/EPFL_TH7800.pdf. [BTV15] Sonia Bogos, Florian Tramer and Serge Vaudenay. On Solving LPN using BKW and Variants. Cryptology ePrint Archive, Report 2015/049. http://eprint.iacr.org/2015/049. 2015. [BV] Sonia Bogos and Serge Vaudenay. Optimization of LPN Solving Algorithms: Additional material. URL: https://infoscience.epfl.ch/record/223773/ files/additional_material.pdf?version=1.

slide-144
SLIDE 144

Bibliography II

[BV16] Sonia Bogos and Serge Vaudenay. ‘Optimization of LPN Solving Algorithms’. In: ASIACRYPT 2016, Part I.

  • Ed. by Jung Hee Cheon and Tsuyoshi Takagi. Vol. 10031.
  • LNCS. Springer, Heidelberg, Dec. 2016, pp. 703–728.

DOI: 10.1007/978-3-662-53887-6_26. [EKM17] Andre Esser, Robert Kübler and Alexander May. ‘LPN Decoded’. In: CRYPTO 2017, Part II. Ed. by Jonathan Katz and Hovav Shacham. Vol. 10402. LNCS. Springer, Heidelberg, Aug. 2017, pp. 486–514. [Ham50] Richard W. Hamming. ‘Error detecting and error correcting codes’. In: The Bell System Technical Journal 29.2 (Apr. 1950), pp. 147–160. DOI: 10.1002/j.1538-7305.1950.tb00463.x.

slide-145
SLIDE 145

Bibliography III

[LF06] Éric Levieil and Pierre-Alain Fouque. ‘An Improved LPN Algorithm’. In: SCN 06. Ed. by Roberto De Prisco and Moti Yung. Vol. 4116. LNCS. Springer, Heidelberg, Sept. 2006, pp. 348–359. [Pra62] Eugene Prange. ‘The use of information sets in decoding cyclic codes’. In: IRE Transactions on Information Theory 8.5 (Sept. 1962), pp. 5–9. DOI: 10.1109/TIT.1962.1057777. [Reg05] Oded Regev. ‘On lattices, learning with errors, random linear codes, and cryptography’. In: 37th ACM STOC.

  • Ed. by Harold N. Gabow and Ronald Fagin. ACM Press,

May 2005, pp. 84–93.

slide-146
SLIDE 146

Bibliography IV

[SG15] Simona Samardjiska and Danilo Gligoroski. ‘Approaching maximum embedding efficiency on small covers using Staircase-Generator codes’. In: 2015 IEEE International Symposium on Information Theory (ISIT). June 2015,

  • pp. 2752–2756. DOI: 10.1109/ISIT.2015.7282957.

[SG17] Simona Samardjiska and Danilo Gligoroski. ‘A Robust List-Decoding Algorithm for Maximizing Embedding Efficiency for Arbitrary Payloads’. 2017.