QC-MDPC: A Timing Attack and a CCA2 KEM PQCrypto April 9, 2018 - - PowerPoint PPT Presentation

qc mdpc a timing attack and a cca2 kem
SMART_READER_LITE
LIVE PREVIEW

QC-MDPC: A Timing Attack and a CCA2 KEM PQCrypto April 9, 2018 - - PowerPoint PPT Presentation

QC-MDPC: A Timing Attack and a CCA2 KEM PQCrypto April 9, 2018 Edward Eaton 1 , Matthieu Lequesne 2,3 , Alex Parent 1 and Nicolas Sendrier 3 1 - ISARA Corporation, Waterloo, Canada 2 - Sorbonne Universit Paris, France 3 - Inria Paris,


slide-1
SLIDE 1

QC-MDPC: A Timing Attack and a CCA2 KEM

PQCrypto – April 9, 2018

Edward Eaton1, Matthieu Lequesne2,3, Alex Parent1 and Nicolas Sendrier3

1 - ISARA Corporation, Waterloo, Canada 2 - Sorbonne Université Paris, France 3 - Inria Paris, France – team Secret

slide-2
SLIDE 2

Context

slide-3
SLIDE 3

Public Key Cryptography

... 1011010001101

RSA [1977]

slide-4
SLIDE 4

Public Key Cryptography

... 1011010001101

RSA [1977] + + [1994] /////////// ???

2

slide-5
SLIDE 5

Post-Quantum Cryptography

Post-Quantum Cryptography Lattice Codes McEliece Goppa

[1978]

MDPC

[2013]

QC-MDPC

[2013]

Hash Multivariate Isogenies

3

slide-6
SLIDE 6

Post-Quantum Cryptography

Post-Quantum Cryptography Lattice Codes McEliece Goppa

[1978]

MDPC

[2013]

QC-MDPC

[2013]

Hash Multivariate Isogenies Code-based cryptosystem (à la McEliece)

3

slide-7
SLIDE 7

Post-Quantum Cryptography

Post-Quantum Cryptography Lattice Codes McEliece Goppa

[1978]

MDPC

[2013]

QC-MDPC

[2013]

Hash Multivariate Isogenies Code-based cryptosystem (à la McEliece) Goal: achieve relatively short keys

3

slide-8
SLIDE 8

Post-Quantum Cryptography

Post-Quantum Cryptography Lattice Codes McEliece Goppa

[1978]

MDPC

[2013]

QC-MDPC

[2013]

Hash Multivariate Isogenies Code-based cryptosystem (à la McEliece) Goal: achieve relatively short keys Idea: use (quasi)-cyclic structure.

3

slide-9
SLIDE 9

Post-Quantum Cryptography

Post-Quantum Cryptography Lattice Codes McEliece Goppa

[1978]

MDPC

[2013]

QC-MDPC

[2013]

Hash Multivariate Isogenies Code-based cryptosystem (à la McEliece) Goal: achieve relatively short keys Idea: use (quasi)-cyclic structure.

3

slide-10
SLIDE 10

Post-Quantum Cryptography

Post-Quantum Cryptography Lattice Codes McEliece Goppa

[1978]

MDPC

[2013]

QC-MDPC

[2013]

Hash Multivariate Isogenies Code-based cryptosystem (à la McEliece) Goal: achieve relatively short keys Idea: use (quasi)-cyclic structure.

3

slide-11
SLIDE 11

QC-MDPC McEliece

slide-12
SLIDE 12

QC-MDPC scheme

k, d, t ∈ N parameters

(k prime, d odd, 2d ∼ t ∼ √ 2k)

R = F2[X]/(X k − 1)

slide-13
SLIDE 13

QC-MDPC scheme

k, d, t ∈ N parameters

(k prime, d odd, 2d ∼ t ∼ √ 2k)

R = F2[X]/(X k − 1)

private key

  • (h0, h1) ← R

|h0| = |h1| = d

slide-14
SLIDE 14

QC-MDPC scheme

k, d, t ∈ N parameters

(k prime, d odd, 2d ∼ t ∼ √ 2k)

R = F2[X]/(X k − 1)

private key

  • (h0, h1) ← R

|h0| = |h1| = d public key

  • q = h1 · h−1
slide-15
SLIDE 15

QC-MDPC scheme

k, d, t ∈ N parameters

(k prime, d odd, 2d ∼ t ∼ √ 2k)

R = F2[X]/(X k − 1)

private key

  • (h0, h1) ← R

|h0| = |h1| = d public key

  • q = h1 · h−1

(e0, e1) ← R |e0| + |e1| = t

slide-16
SLIDE 16

QC-MDPC scheme

k, d, t ∈ N parameters

(k prime, d odd, 2d ∼ t ∼ √ 2k)

R = F2[X]/(X k − 1)

private key

  • (h0, h1) ← R

|h0| = |h1| = d public key

  • q = h1 · h−1

(e0, e1) ← R |e0| + |e1| = t

c = e0 + e1 · q

slide-17
SLIDE 17

QC-MDPC scheme

k, d, t ∈ N parameters

(k prime, d odd, 2d ∼ t ∼ √ 2k)

R = F2[X]/(X k − 1)

private key

  • (h0, h1) ← R

|h0| = |h1| = d public key

  • q = h1 · h−1

(e0, e1) ← R |e0| + |e1| = t

c = e0 + e1 · q

c · h0 = e0h0 + e1h1 (e0, e1) = Decode(h0, h1, e0h0 + e1h1)

slide-18
SLIDE 18

QC-MDPC scheme

k, d, t ∈ N parameters

(k prime, d odd, 2d ∼ t ∼ √ 2k)

R = F2[X]/(X k − 1)

private key

  • (h0, h1) ← R

|h0| = |h1| = d public key

  • q = h1 · h−1

(e0, e1) ← R |e0| + |e1| = t

c = e0 + e1 · q

c · h0 = e0h0 + e1h1 (e0, e1) = Decode(h0, h1, e0h0 + e1h1)

Shared secret: (e0, e1).

slide-19
SLIDE 19

QC-MDPC scheme

k, d, t ∈ N parameters

(k prime, d odd, 2d ∼ t ∼ √ 2k)

R = F2[X]/(X k − 1)

private key

  • (h0, h1) ← R

|h0| = |h1| = d public key

  • q = h1 · h−1

(e0, e1) ← R |e0| + |e1| = t

c = e0 + e1 · q

c · h0 = e0h0 + e1h1 (e0, e1) = Decode(h0, h1, e0h0 + e1h1)

Shared secret: (e0, e1).

5

slide-20
SLIDE 20

QC-MDPC McEliece: Bit Flip Decoding

(e0, e1) = Decode(h0, h1, e0h0 + e1h1

  • s

)

6

slide-21
SLIDE 21

QC-MDPC McEliece: Bit Flip Decoding

(e0, e1) = Decode(h0, h1, e0h0 + e1h1

  • s

) Find a sparse solution (e0, e1) such that:         h0 h1

       ·                     e0 e1                     =         s        

6

slide-22
SLIDE 22

QC-MDPC McEliece: Bit Flip Syndrome Decoding

Input: H the parity-check matrix of the code C, s the syndrome Output: An error e of small weight such that He⊺ = s e ← 0; s′ ← s − He⊺ while s′ = 0 do for j = 1, . . . , n do if σj = s′, hj ≥ threshold then Flip(ej) s′ ← s − He⊺ return e

7

slide-23
SLIDE 23

QC-MDPC McEliece: Bit Flip Syndrome Decoding

Input: H the parity-check matrix of the code C, s the syndrome Output: An error e of small weight such that He⊺ = s e ← 0; s′ ← s − He⊺ while s′ = 0 do for j = 1, . . . , n do if σj = s′, hj ≥ threshold then Flip(ej) s′ ← s − He⊺ return e

  • While loop: variable number of iterations.

7

slide-24
SLIDE 24

QC-MDPC McEliece: Bit Flip Syndrome Decoding

Input: H the parity-check matrix of the code C, s the syndrome Output: An error e of small weight such that He⊺ = s e ← 0; s′ ← s − He⊺ while s′ = 0 do for j = 1, . . . , n do if σj = s′, hj ≥ threshold then Flip(ej) s′ ← s − He⊺ return e

  • While loop: variable number of iterations.
  • Decoding algorithm fails with a small probability (DFR).

7

slide-25
SLIDE 25

QC-MDPC McEliece: Bit Flip Syndrome Decoding

Input: H the parity-check matrix of the code C, s the syndrome Output: An error e of small weight such that He⊺ = s e ← 0; s′ ← s − He⊺ while s′ = 0 do for j = 1, . . . , n do if σj = s′, hj ≥ threshold then Flip(ej) s′ ← s − He⊺ return e

  • While loop: variable number of iterations.
  • Decoding algorithm fails with a small probability (DFR).
  • Thresholds?

7

slide-26
SLIDE 26

The GJS Attack

slide-27
SLIDE 27

The GJS Attack

[GJS] Guo, Johansson, Stankovski, Asiacrypt 2016

Observation [GJS]

When two non-zero bits appear at a distance δ both in the secret key and in the error vector, a decoding failure is less likely to

  • ccur.

9

slide-28
SLIDE 28

Example: δ = 1

H =                   1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1                   s =                  1 1 1 1                  e =

  • 1

1

  • 10
slide-29
SLIDE 29

Example: δ = 1

H =                   1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1                   s =                  1 1 1 1                  e =

  • 1

1

  • 10
slide-30
SLIDE 30

Example: δ = 1

H =                   1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1                   s =                  1 1 1 1                  e =

  • 1

1

  • 10
slide-31
SLIDE 31

The GJS Attack

[GJS] Guo, Johansson, Stankovski, Asiacrypt 2016

Observation [GJS]

When two non-zero bits appear at a distance δ both in the secret key and in the error vector, a decoding failure is less likely to

  • ccur.

⇒ By observing the DFR for different error paterns we can recover information on the key.

11

slide-32
SLIDE 32

The Distance Spectrum [GJS]

Definition (Distance Spectrum)

h = 1001000001

12

slide-33
SLIDE 33

The Distance Spectrum [GJS]

Definition (Distance Spectrum)

h = 1001000001 ∆(h) ⊇ {1}

12

slide-34
SLIDE 34

The Distance Spectrum [GJS]

Definition (Distance Spectrum)

h = 1001000001 ∆(h) ⊇ {1, 3}

12

slide-35
SLIDE 35

The Distance Spectrum [GJS]

Definition (Distance Spectrum)

h = 1001000001 ∆(h) = {1, 3, 4}

12

slide-36
SLIDE 36

Generic Attack Pattern

Attack

  • 1. Measure ∆(h) ;
  • 2. Reconstruct h from ∆(h).

13

slide-37
SLIDE 37

GJS Attack

Eve Alice’s Decoder m ← Fr

2

e

$

← − Fn

2, w(e) = t

c = GAlice · m⊺ + e Decode(c, HAlice) : s ← H · c⊺ . . . ⊤ or ⊥ Success?

14

slide-38
SLIDE 38

GJS Attack

Main observation

For a fixed distance δ, if δ ∈ ∆(e) : P(Decoding fails | δ ∈ ∆(h)) < P(Decoding fails | δ ∈ ∆(h)).

15

slide-39
SLIDE 39

Explaining the Leak

slide-40
SLIDE 40

GJS Attack

Eve Alice’s Decoder m ← Fr

2

e

$

← − Fn

2, w(e) = t

c = GAlice · m⊺ + e Decode(c, HAlice) : s ← H · c⊺ . . . ⊤ or ⊥ Success?

17

slide-41
SLIDE 41

Syndrome

H =                   1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1                   s =                  1 1 1 1                  e =

  • 1

1

  • 18
slide-42
SLIDE 42

Syndrome

H =                   1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1                   s =                  1 1 1 1                  e =

  • 1

1

  • 18
slide-43
SLIDE 43

Syndrome

H =                   1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1                   s =                  1 1 1 1                  e =

  • 1

1

  • 18
slide-44
SLIDE 44

Syndrome

H =                   1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1                   s =                  1 1 1 1                  e =

  • 1

1

  • 18
slide-45
SLIDE 45

Syndrome

H =                   1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1                   s =                  1 1 1 1                  e =

  • 1

1

  • 18
slide-46
SLIDE 46

Syndrome

H =                   1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1                   s =                  1 1 1 1                  e =

  • 1

1

  • 18
slide-47
SLIDE 47

Syndrome

H =                   1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1                   s =                  1 1 1 1                  e =

  • 1

1

  • 18
slide-48
SLIDE 48

Syndrome

H =                   1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1                   s =                  1 1 1 1                  e =

  • 1

1

  • 18
slide-49
SLIDE 49

Syndrome

H =                   1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1                   s =                  1 1 1 1                  e =

  • 1

1

  • 18
slide-50
SLIDE 50

Syndrome

H =                   1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1                   s =                  1 1 1 1                  e =

  • 1

1

  • 18
slide-51
SLIDE 51

Syndrome

H =                   1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1                   s =                  1 1 1 1                  e =

  • 1

1

  • Average syndrome weight?

18

slide-52
SLIDE 52

Without any information

Average syndrome weight (MDPC)

|s| = k · f (k, d, t, 1),

where: f (k, d, t, b) := P(h, e = b) =

  • i=0, i≡b[2]

d

i

r−d

t−i

  • k

t

  • .

19

slide-53
SLIDE 53

Example: δ = 1

H =                   1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1                   s =                  1 1 1 1                  e =

  • 1

1

  • 20
slide-54
SLIDE 54

Consecutive bits set to 1

Extra assumption: h has ℓ times two consecutive bits set to 1.

shift(h) = 1 1 u, |u| = d-2 ℓ times shift(h) = 1 u, |u| = d-1 d − ℓ times shift(h) = 1 u, |u| = d-1 d − ℓ times shift(h) = u, |u| = d k − 2d + ℓ times.

21

slide-55
SLIDE 55

Consecutive bits set to 1

Extra assumption: h has ℓ times two consecutive bits set to 1.

shift(h) = 1 1 u, |u| = d-2 ℓ times shift(h) = 1 u, |u| = d-1 d − ℓ times shift(h) = 1 u, |u| = d-1 d − ℓ times shift(h) = u, |u| = d k − 2d + ℓ times. e = 1 1 u, |u| = t-2

Average syndrome weight (QC-MDPC, approximation)

|s| = ℓ f (k − 2, d − 2, t − 2, 1) + 2(d − ℓ) f (k − 2, d − 1, t − 2, 0) + (k − 2d + ℓ) f (k − 2, d, t − 2, 1).

21

slide-56
SLIDE 56

Side Channel Attack on Syndrome Weight

Main observation

For a fixed distance δ, if δ ∈ ∆(e) : E(σ | δ ∈ ∆(h)) < E(σ | δ ∈ ∆(h)).

22

slide-57
SLIDE 57

Example: δ = 1

H =                   1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1                   s =                  1 1 1 1                  e =

  • 1

1

  • 23
slide-58
SLIDE 58

Example: δ = 1

H =                   1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1                   s =                  1 1 1 1                  e =

  • 1

1

  • 23
slide-59
SLIDE 59

Example: δ = 1

H =                   1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1                   s =                  1 1 1 1                  e =

  • 1

1

  • 23
slide-60
SLIDE 60

New Attacks

slide-61
SLIDE 61

Side Channel Attack on Syndrome Weight

Eve Alice’s Decoder m ← Fr

2

e

$

← − Fn

2, w(e) = t

c = GAlice · m⊺ + e Decode(c, HAlice) : s ← H · c⊺ σ ← w(s) . . . σ = w(s)

25

slide-62
SLIDE 62

80 bits security, 214 samples

26

slide-63
SLIDE 63

80 bits security, 216 samples

27

slide-64
SLIDE 64

80 bits security, 218 samples

28

slide-65
SLIDE 65

80 bits security, 220 samples

29

slide-66
SLIDE 66

Side Channel Attack on Syndrome Weight

Required number of samples to fully distinguish the specturm: Security bits 80 128 256 Number of samples 220 223 225

30

slide-67
SLIDE 67

Side Channel Attack on Syndrome Weight

Required number of samples to fully distinguish the specturm: Security bits 80 128 256 Number of samples 220 223 225

  • Works regardless of the DFR.

30

slide-68
SLIDE 68

Side Channel Attack on Syndrome Weight

Required number of samples to fully distinguish the specturm: Security bits 80 128 256 Number of samples 220 223 225

  • Works regardless of the DFR.
  • Any value correlated to the syndrome weight will leak

information.

30

slide-69
SLIDE 69

QC-MDPC McEliece: Bit Flip Syndrome Decoding

Input: H the parity-check matrix of the code C, s the syndrome Output: An error e of small weight such that He⊺ = s e ← 0; s′ ← s − He⊺ while s′ = 0 do for j = 1, . . . , n do if σj = s′, hj ≥ threshold then Flip(ej) s′ ← s − He⊺ return e

31

slide-70
SLIDE 70

Timing Attack

Eve Alice’s Decoder m ← Fr

2

e

$

← − Fn

2, w(e) = t

c = GAlice · m⊺ + e Decode(c, HAlice) : s ← H · c⊺ σ ← w(s) . . .

Algorithm runs in N iterations

N

32

slide-71
SLIDE 71

128 bits security, 225 samples

33

slide-72
SLIDE 72

Timing Attack

Required number of samples to fully distinguish the spectrum (variable thresholds): Security bits 80 128 256 Number of samples 225 225 228

34

slide-73
SLIDE 73

Timing Attack

Required number of samples to fully distinguish the spectrum (variable thresholds): Security bits 80 128 256 Number of samples 225 225 228

  • Correlation depends strongly on the decoder.

34

slide-74
SLIDE 74

Fixed vs. variable thresholds decoder

Average number of iterations depending on |∆(e) ∩ ∆(h)|, fixed thresholds (left) vs. variable thresholds (right), 128 bits security, 229 samples

35

slide-75
SLIDE 75

In-place vs. out-of-place decoder

2.786 2.7865 2.787 2.7875 2.788 2.7885 2.789 2.7895 2.79 2.7905 500 1000 1500 2000 Average # of Iterations Distance Mult 0 Mult 1 Mult 2 Mean Mean Mean 3.3055 3.306 3.3065 3.307 3.3075 3.308 3.3085 500 1000 1500 2000 Average # of Iterations Distance Mult 0 Mult 1 Mult 2 Mean Mean Mean

Average number of iterations per distance, in-place decoder (left) vs. out-of-place decoder (right), 80 bits security, 225 samples

36

slide-76
SLIDE 76

Analysis

slide-77
SLIDE 77

Analysis

Definition

¯ σℓ = E(σ | δ ∈ ∆(e), µh(δ) = ℓ)

For one block

¯ σℓ = ℓ f (r − 2, d − 2, t − 2, 1) + 2(d − ℓ) f (r − 2, d − 1, t − 2, 0) + (r − 2d + ℓ) f (r − 2, d, t − 2, 1).

where: f (r, d, t, b) := P(h, e = b) =

  • i=0, i≡b[2]

d

i

r−d

t−i

  • r

t

  • .

38

slide-78
SLIDE 78
slide-79
SLIDE 79

Analysis

  • We can compute the values of ¯

σ0, ¯ σ1 and ε = ¯

σ0−¯ σ1 ¯ σ0

.

40

slide-80
SLIDE 80

Analysis

  • We can compute the values of ¯

σ0, ¯ σ1 and ε = ¯

σ0−¯ σ1 ¯ σ0

.

  • Chernoff (Hypothesis testing): need N ∼ 1

ε2 Bernouilli

trials to guess correctly.

40

slide-81
SLIDE 81

Analysis

  • We can compute the values of ¯

σ0, ¯ σ1 and ε = ¯

σ0−¯ σ1 ¯ σ0

.

  • Chernoff (Hypothesis testing): need N ∼ 1

ε2 Bernouilli

trials to guess correctly.

  • Gives a polynomial estimate of the number of samples needed

to recover the spectrum.

40

slide-82
SLIDE 82

DFR Elimination: ParQ

slide-83
SLIDE 83

ParQ - Encapsulation

Input: PublicKey pk, a seed s ∈ {0, 1}k. for i = 1 to P do Let ei = ErrGen(s||i). Compute xi = s ⊕ PRF(ei||i). Compute ci = QCMDPC.Enc(pk, xi, ei). Return SharedSecret = H(s), Ciphetext = (c1, . . . , cP) .

42

slide-84
SLIDE 84

ParQ - Decapsulation

Input: SecretKey sk, Ciphertext (c1, . . . , cP). for i = 1 to P [in random order] do Run (xi, ei) ← QCMDPC.Dec(sk, ci). if QCMDPC.Dec succesful then Compute s = xi ⊕ PRF(ei||i). if cj valid for all j = i then Return SharedSecret = H(s). else Return ⊥. if QCMDPC.Dec failed to decode for i = 1 to P then Return ⊥ .

43

slide-85
SLIDE 85

ParQ - Consequences

  • Same key sizes as QC-MDPC KEM.
  • Ciphertext size and time complexity ×P.
  • DFR → DFRP (QC-MDPC: 2−23

P=12

− − − → ParQ: 2−276)

  • IND-CCA2 in model including DFR.

44

slide-86
SLIDE 86

Conclusion

slide-87
SLIDE 87

Conclusion

Theoretical analysis:

  • Understand the GJS attack;
  • Identify the origin of the leak.

46

slide-88
SLIDE 88

Conclusion

Theoretical analysis:

  • Understand the GJS attack;
  • Identify the origin of the leak.

Generic attack pattern:

  • Quasi-cyclic structure induces correlations in the syndrome;
  • Even number of errors don’t appear in the scalar product;
  • Any parameter correlated with σ can lead to an attack.

46

slide-89
SLIDE 89

Conclusion

Theoretical analysis:

  • Understand the GJS attack;
  • Identify the origin of the leak.

Generic attack pattern:

  • Quasi-cyclic structure induces correlations in the syndrome;
  • Even number of errors don’t appear in the scalar product;
  • Any parameter correlated with σ can lead to an attack.

Experimental work:

  • Successful side-channel attack on the syndrome weight;
  • First timing attack on QC-MDPC codes.

46

slide-90
SLIDE 90

Conclusion

Theoretical analysis:

  • Understand the GJS attack;
  • Identify the origin of the leak.

Generic attack pattern:

  • Quasi-cyclic structure induces correlations in the syndrome;
  • Even number of errors don’t appear in the scalar product;
  • Any parameter correlated with σ can lead to an attack.

Experimental work:

  • Successful side-channel attack on the syndrome weight;
  • First timing attack on QC-MDPC codes.

Countermesures:

  • Masking sensitive parameters in implementation;
  • Bound the number of allowed queries;
  • Improve the decoding algorithm;
  • New KEM: ParQ.

46

slide-91
SLIDE 91

Thank you for your attention. Questions?

47