lattice attacks against elliptic curve signatures with
play

Lattice Attacks against Elliptic-Curve Signatures with Blinded - PowerPoint PPT Presentation

Lattice Attacks against Elliptic-Curve Signatures with Blinded Scalar Multiplication Dahmun Goudarzi, Matthieu Rivain, Damien Vergnaud SAC 2016, 12 Aug, St. Johns Outline EC signature schemes based on random nonces computed from [ k ]


  1. Lattice Attacks against Elliptic-Curve Signatures with Blinded Scalar Multiplication Dahmun Goudarzi, Matthieu Rivain, Damien Vergnaud SAC 2016, 12 Aug, St. Johns

  2. Outline � EC signature schemes based on random nonces ◮ σ computed from [ k ] P , k ← $ ◮ σ + k ⇒ secret key ◮ lattice attack: few bits of several k i ⇒ secret key � Scenario: ◮ implementation with countermeasures against SCA ◮ blinding of the nonce ◮ noisy side-channel leakage on the bits of the blinded nonce � Issue: noisy information on blinded nonces ⇒ lattice attack

  3. Outline � Approach: ◮ template attack ⇒ probability scores ◮ probability scores ⇒ bit-selection algorithm ◮ selected bits ⇒ lattice attack ◮ dealing with blinding � Presentation: ◮ ECDSA ◮ target implementation & leakage model ◮ Howgrave-Graham and Smart lattice attack ◮ bit selection ◮ experimental results

  4. ECDSA

  5. � Key pair ( x, Q ) with Q = [ x ] P ∈ E ( K )

  6. � Key pair ( x, Q ) with Q = [ x ] P ∈ E ( K ) � Signature of h = H ( m ) $ ← − [1; q ] ( q = | E ( K ) | ) k t = xcoord ([ k ] P ) s = h + t · x (mod q ) k

  7. � Key pair ( x, Q ) with Q = [ x ] P ∈ E ( K ) � Signature of h = H ( m ) $ ← − [1; q ] ( q = | E ( K ) | ) ⇒ random nonce k k t = xcoord ([ k ] P ) s = h + t · x (mod q ) ⇒ signature σ = ( t, s ) k

  8. � Key pair ( x, Q ) with Q = [ x ] P ∈ E ( K ) � Signature of h = H ( m ) $ ← − [1; q ] ( q = | E ( K ) | ) ⇒ random nonce k k t = xcoord ([ k ] P ) s = h + t · x (mod q ) ⇒ signature σ = ( t, s ) k � Verification of σ = ( t, s ) k = h + t · x s

  9. � Key pair ( x, Q ) with Q = [ x ] P ∈ E ( K ) � Signature of h = H ( m ) $ ← − [1; q ] ( q = | E ( K ) | ) ⇒ random nonce k k t = xcoord ([ k ] P ) s = h + t · x (mod q ) ⇒ signature σ = ( t, s ) k � Verification of σ = ( t, s ) k = h + t · x s � h � � t · x � ? [ k ] P = P + P s s ���� � �� � t � � t Q s

  10. Target implementation and leakage model

  11. Target implementation � Regular binary algorithm ( e.g. Montgomery ladder) � Classical side-channel countermeasures: ◮ randomization of point coordinates ◮ scalar blinding Classic blinding : Euclidean blinding : $ [0 , 2 λ − 1] $ [1 , 2 λ − 1] 1 . r ← − [ ] 1 . r ← − [ ] 2 . a ← k + r · q 2 . a ← ⌊ k/r ⌋ ; b ← k mod r 3 . return [ a ] P 3 . return [ r ]([ a ] P ) + [ b ] P

  12. Leakage model Algorithm 1 Montgomery ladder Input: blinded nonce a Output: [ a ] P 1. P 0 ← O ; P 1 ← P 2. for i = ℓ − 1 downto 0 do P 1 − a i ← P 1 − a i + P a i 3. P a i ← 2 P a i 4. 5. end for 6. return P 0 � Loop iteration: ( P 0 , P 1 ) ← f ( a i , P 0 , P 1 ) ⇒ leaks Ψ( a i , P 0 , P 1 ) � Gaussian leakage assumption: Ψ( a i , P 0 , P 1 ) ∼ N ( m a i , Σ)

  13. Template attacker � Get a side-channel trace ( ψ ℓ − 1 , . . . , ψ 1 , ψ 0 ) � For every i , use leakage templates to decide ψ i ∼ Ψ(0) or ψ i ∼ Ψ(1) � Maximum likelihood � 2 ( ψ i − m 0 ) t · Σ − 1 · ( ψ i − m 0 ) � 1 Pr[ a i = 0 | ψ i ] = cst · exp − � 2 ( ψ i − m 1 ) t · Σ − 1 · ( ψ i − m 1 ) � 1 Pr[ a i = 1 | ψ i ] = cst · exp − � We get Pr[ a i = 0 | ψ i ] ∼ D θ ( a i ) with where Λ t Λ = Σ θ = Λ · ( m 0 − m 1 ) � �� � multivariate SNR

  14. Howgrave-Graham and Smart attack with blinded nonces

  15. ℓ λ k a a = k + r · q

  16. ℓ λ k a a = k + r · q known unknown

  17. ℓ λ k a 0 σ 0 = ( s 0 , t 0 ) a 1 σ 1 = ( s 1 , t 1 ) a n σ n = ( s n , t n )

  18. ℓ λ k a 0 σ 0 = ( s 0 , t 0 ) a 1 σ 1 = ( s 1 , t 1 ) a n σ n = ( s n , t n ) x ≡ a i · s i − h i (mod q ) t i

  19. ℓ λ k a 0 σ 0 = ( s 0 , t 0 ) a 1 σ 1 = ( s 1 , t 1 ) a n σ n = ( s n , t n ) x ≡ a i · s i − h i ≡ a 0 · s 0 − h 0 (mod q ) t i t 0

  20. ℓ λ k a 0 σ 0 = ( s 0 , t 0 ) a 1 σ 1 = ( s 1 , t 1 ) a n σ n = ( s n , t n ) x ≡ a i · s i − h i ≡ a 0 · s 0 − h 0 (mod q ) t i t 0 ⇔ a i + A a 0 + B ≡ 0 (mod q )

  21. a i a 0 + A × + B ≡ 0 (mod q )

  22. a i a 0 + A × + B ≡ 0 (mod q ) ⇔ x i, 1 + α i, 2 · x i, 2 + α i, 3 · x i, 3 + · · · + β i, 1 · x 0 , 1 + β i, 2 · x 0 , 2 + β i, 3 · x 0 , 3 + · · · + γ i ≡ 0 (mod q )

  23. a i a 0 + A × + B ≡ 0 (mod q ) ⇔ x i, 1 + α i, 2 · x i, 2 + α i, 3 · x i, 3 + · · · + β i, 1 · x 0 , 1 + β i, 2 · x 0 , 2 + β i, 3 · x 0 , 3 + · · · · q + γ i = η i

  24. x i, 1 + α i, 2 · x i, 2 + α i, 3 · x i, 3 + · · · + β i, 1 · x 0 , 1 + β i, 2 · x 0 , 2 + β i, 3 · x 0 , 3 + · · · + γ i = η i · q ⇒ n equations (for i = 1 , 2 , . . . , n )

  25. α i, 2 · x i, 2 + α i, 3 · x i, 3 + · · · + β i, 1 · x 0 , 1 + β i, 2 · x 0 , 2 + β i, 3 · x 0 , 3 + · · · · q = η i x i, 1 + γ i ⇒ n equations (for i = 1 , 2 , . . . , n )

  26.           α i, 2 · x i, 2 + α i, 3 · x i, 3 + · · ·         . + β i, 1 · x 0 , 1 + β i, 2 · x 0 , 2 + β i, 3 · x 0 , 3 + · · ·  .  .       · q = η i x i, 1 + γ i           ⇒ n equations (for i = 1 , 2 , . . . , n )     .  .  .                 .   . .       ( α 1 ,j ) j ( β 1 ,j ) j q γ 1 + ( α 2 ,j ) j ( β 2 ,j ) j q × = γ 2 +         . ... ...    .  .     ( α n,j ) j ( β n,j ) j q γ n +

  27.           α i, 2 · + α i, 3 · + · · · x i, 2 x i, 3         + β i, 1 · x 0 , 1 + β i, 2 · x 0 , 2 + β i, 3 · x 0 , 3 + · · · .  .  .       η i · q = x i, 1 + γ i             ⇒ n equations (for i = 1 , 2 , . . . , n )   .   .  .                .   .  .      γ 1 + ( α 1 ,j ) j ( β 1 ,j ) j q γ 2 +  ( α 2 ,j ) j ( β 2 ,j ) j q        . ... ...    .  .         γ n +  ( α n,j ) j ( β n,j ) j q                         1        ×   =   1             .     .    .           ...                            .     .  .    1

  28. Lattice problem � There exists y st: M · y = v + x where v = ( γ 1 , γ 2 , . . . , γ n , 0 , 0 , · · · , 0) x is the vector of unknown blocks � CVP (Closest Vector Problem): v ⇒ ( v + x ) � 1 � ( v + x ) − v � ≤ c 0 dim( M ) det( M ) dim( M ) � �� � � x � √ c 0 ≈ 1 / 2 π e (heuristic)

  29. Lattice attack parameters � Sum of contributions: n � ( δ i − λ − c 1 · N i ) ≥ ℓ i =0 where δ i = number of known bits in a i N i = number of unknown blocks in a i � Loss λ bits per blinded nonce � Linear term c 1 · N i ◮ overlooked in the original paper ◮ significant in our context ◮ heuristically c 1 ≈ − log 2 ( c 0 ) ≈ 2 . 05 ◮ higher in practice

  30. Experiments Practical c 1 values for a 95% success rate: ( n + 1) = 5 ( n + 1) = 10 ( n + 1) = 20 N b = 5 10 25 50 10 20 50 100 20 40 100 λ = 0 3.60 2.60 2.56 2.90 4.10 3.30 3.52 3.57 4.85 4.42 4.51 λ = 16 3.40 2.60 2.40 3.02 4.20 3.15 3.40 4.20 5.25 4.77 4.96 λ = 32 3.40 2.60 2.60 2.68 3.90 3.10 3.60 n/a 4.95 4.50 n/a λ = 64 3.20 2.80 2.36 n/a 3.70 3.55 3.68 n/a 4.80 4.60 n/a � CVP algorithm: the embedding method � For tested parameters: 2 . 3 < c 1 < 5 . 3

  31. Attack on leaking implementations

  32. a i

  33. a i leak ∼ Ψ( a i, 0 ) Pr[ a i, 0 = 0]

  34. a i leak ∼ Ψ( a i, 1 ) Pr[ a i, 1 = 0]

  35. a i leak ∼ Ψ( a i, 2 ) Pr[ a i, 2 = 0]

  36. a i leak ∼ Ψ( a i,j ) Pr[ a i,j = 0]

  37. a i leak ∼ Ψ( a i,j ) Pr[ a i,j = 0]

  38. a i leak ∼ Ψ( a i,j ) Pr[ a i,j = 0] � Guess ˆ a i,j = argmax Pr[ a i,j = b ] b ∈{ 0 , 1 } � Good-guess probability p i,j := Pr[ a i,j = ˆ a i,j ] = max b ∈{ 0 , 1 } Pr[ a i,j = b ] � Select some guess bits to construct the lattice

  39. I

  40. I J i

  41. I J i � Goal: select I and ( J i ) i ∈ I to maximize � � success proba = p i,j i ∈ I j ∈ J i such that � � ( | J i | − λ − c 1 · N i ) ≥ ℓ and N i ≤ ∆ max i ∈ I i ∈ I � �� � � �� � CVP constraint lattice dimension

  42. � For each selected set J i CVP constraint += | J i | − λ − c 1 · N i ( must reach ℓ ) dim( L ) += N i ( must not exceed ∆ max ) � success proba × = p i,j j ∈ J i � Select J i to maximize 1 � � � | Ji |− λ − c 1 Ni γ i = p i,j j ∈ J i � Efficient algorithm based on dynamic programming

  43. Euclidean case

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend