fast constant time gcd computation and modular inversion
play

Fast Constant-Time GCD Computation and Modular Inversion Daniel J. - PowerPoint PPT Presentation

Fast Constant-Time GCD Computation and Modular Inversion Daniel J. Bernstein 1,2 Bo-Yin Yang 3 1 University of Illinois at Chicago 2 Ruhr Universt at Bochum 3 Academia Sinica Monday, August 26, 2019 Summary: Fast, Safe GCD and Inversions


  1. Fast Constant-Time GCD Computation and Modular Inversion Daniel J. Bernstein 1,2 Bo-Yin Yang 3 1 University of Illinois at Chicago 2 Ruhr Universt¨ at Bochum 3 Academia Sinica Monday, August 26, 2019

  2. Summary: Fast, Safe GCD and Inversions Normally compute 1 / x in F p as x p − 2 . n 3+ o (1) bit ops using schoolbook multiplication n 2 . 58 ... + o (1) bit ops using Karatsuba multiplication n 2+ o (1) bit ops using FFT-based multiplication DJB + B.-Y. Yang (UIC/RUB + Sinica) Fast Safe GCD + Inversions 2019.08.26 2 / 15

  3. Summary: Fast, Safe GCD and Inversions Normally compute 1 / x in F p as x p − 2 . n 3+ o (1) bit ops using schoolbook multiplication n 2 . 58 ... + o (1) bit ops using Karatsuba multiplication n 2+ o (1) bit ops using FFT-based multiplication Why not use extensions of Euclid’s algorithm? n 2+ o (1) bit ops using schoolbook multiplication n 1 . 58 ... + o (1) bit ops using Karatsuba multiplication n 1+ o (1) bit ops using FFT-based multiplication DJB + B.-Y. Yang (UIC/RUB + Sinica) Fast Safe GCD + Inversions 2019.08.26 2 / 15

  4. Summary: Fast, Safe GCD and Inversions Normally compute 1 / x in F p as x p − 2 . n 3+ o (1) bit ops using schoolbook multiplication n 2 . 58 ... + o (1) bit ops using Karatsuba multiplication n 2+ o (1) bit ops using FFT-based multiplication Why not use extensions of Euclid’s algorithm? n 2+ o (1) bit ops using schoolbook multiplication n 1 . 58 ... + o (1) bit ops using Karatsuba multiplication n 1+ o (1) bit ops using FFT-based multiplication Usual answer: Need constant-time algorithm. DJB + B.-Y. Yang (UIC/RUB + Sinica) Fast Safe GCD + Inversions 2019.08.26 2 / 15

  5. Summary: Fast, Safe GCD and Inversions Normally compute 1 / x in F p as x p − 2 . n 3+ o (1) bit ops using schoolbook multiplication n 2 . 58 ... + o (1) bit ops using Karatsuba multiplication n 2+ o (1) bit ops using FFT-based multiplication Why not use extensions of Euclid’s algorithm? n 2+ o (1) bit ops using schoolbook multiplication n 1 . 58 ... + o (1) bit ops using Karatsuba multiplication n 1+ o (1) bit ops using FFT-based multiplication Usual answer: Need constant-time algorithm. Our algorithm is constant-time; n 1+ o (1) bit ops; simpler than previous variable-time algorithms. No division subroutine between recursive calls. DJB + B.-Y. Yang (UIC/RUB + Sinica) Fast Safe GCD + Inversions 2019.08.26 2 / 15

  6. Examples of Needing Inversions NTRU Key generation (where n is prime) Find inverse in F 3 [ X ] / ( X n − 1) Find inverse in ( Z / 2 k Z )[ X ] / ( X n − 1), which depends on inverse in F 2 [ X ] / ( X n − 1). DJB + B.-Y. Yang (UIC/RUB + Sinica) Fast Safe GCD + Inversions 2019.08.26 3 / 15

  7. Examples of Needing Inversions NTRU Key generation (where n is prime) Find inverse in F 3 [ X ] / ( X n − 1) Find inverse in ( Z / 2 k Z )[ X ] / ( X n − 1), which depends on inverse in F 2 [ X ] / ( X n − 1). NTRU Prime Key generation (where n is prime) Find inverse in F 4591 [ X ] / ( X n − X − 1) (= a field). Find inverse in F 3 [ X ] / ( X n − X − 1) DJB + B.-Y. Yang (UIC/RUB + Sinica) Fast Safe GCD + Inversions 2019.08.26 3 / 15

  8. Examples of Needing Inversions NTRU Key generation (where n is prime) Find inverse in F 3 [ X ] / ( X n − 1) Find inverse in ( Z / 2 k Z )[ X ] / ( X n − 1), which depends on inverse in F 2 [ X ] / ( X n − 1). NTRU Prime Key generation (where n is prime) Find inverse in F 4591 [ X ] / ( X n − X − 1) (= a field). Find inverse in F 3 [ X ] / ( X n − X − 1) Integer Modular Inversions in CSIDH Needs inverse modulo p = 4 p 1 p 2 p 3 · · · p 73 p 74 − 1, where p 1 · · · p 73 are the smallest 73 odd primes and p 74 = 587. DJB + B.-Y. Yang (UIC/RUB + Sinica) Fast Safe GCD + Inversions 2019.08.26 3 / 15

  9. Examples of Needing Inversions NTRU Key generation (where n is prime) Find inverse in F 3 [ X ] / ( X n − 1) Find inverse in ( Z / 2 k Z )[ X ] / ( X n − 1), which depends on inverse in F 2 [ X ] / ( X n − 1). NTRU Prime Key generation (where n is prime) Find inverse in F 4591 [ X ] / ( X n − X − 1) (= a field). Find inverse in F 3 [ X ] / ( X n − X − 1) Integer Modular Inversions in CSIDH Needs inverse modulo p = 4 p 1 p 2 p 3 · · · p 73 p 74 − 1, where p 1 · · · p 73 are the smallest 73 odd primes and p 74 = 587. DJB + B.-Y. Yang (UIC/RUB + Sinica) Fast Safe GCD + Inversions 2019.08.26 3 / 15

  10. An Example in F 7 [ X ] Euclid-Stevin Algorithm 2 y 7 + 7 y 6 + y 5 + 8 y 4 + 2 y 3 + 8 y 2 + y + 8 = R 0 3 y 6 + y 5 + 4 y 4 + y 3 + 5 y 2 + 9 y + 2 = R 1 R 0 − (3 y + 6) R 1 = 4 y 5 + 2 y 4 + 2 y 3 + 4 y + 3 = R 2 R 1 − (6 y + 6) R 2 = y 4 + 3 y 3 + 2 y 2 + 2 y + 5 = R 3 R 2 − (4 y + 4) R 3 = 3 y 3 + 5 y 2 + 4 y + 4 = R 4 = R 3 − (5 y + 2) R 4 = 2 y + 4 R 5 R 4 − (5 y 2 + 3 y + 3) R 5 = 6 = R 6 = R 5 − (5 y + 3) R 6 = 0 R 7 Non-Constant-Time An “ideal” Euclidean step has dividend of degree 1 higher than the divisor, resulting in a remainder of degree 1 lower than the divisor. DJB + B.-Y. Yang (UIC/RUB + Sinica) Fast Safe GCD + Inversions 2019.08.26 4 / 15

  11. An Example in F 7 [ X ] Euclid-Stevin Algorithm 2 y 7 + 7 y 6 + y 5 + 8 y 4 + 2 y 3 + 8 y 2 + y + 8 = R 0 3 y 6 + y 5 + 4 y 4 + y 3 + 5 y 2 + 9 y + 2 = R 1 R 0 − (3 y + 6) R 1 = 4 y 5 + 2 y 4 + 2 y 3 + 4 y + 3 = R 2 R 1 − (6 y + 6) R 2 = y 4 + 3 y 3 + 2 y 2 + 2 y + 5 = R 3 R 2 − (4 y + 4) R 3 = 3 y 3 + 5 y 2 + 4 y + 4 = R 4 = R 3 − (5 y + 2) R 4 = 2 y + 4 R 5 R 4 − (5 y 2 + 3 y + 3) R 5 = 6 = R 6 = R 5 − (5 y + 3) R 6 = 0 R 7 Non-Constant-Time An “ideal” Euclidean step has dividend of degree 1 higher than the divisor, resulting in a remainder of degree 1 lower than the divisor. From R 4 to R 5 is non-ideal! DJB + B.-Y. Yang (UIC/RUB + Sinica) Fast Safe GCD + Inversions 2019.08.26 4 / 15

  12. #Subtractions = #Coeffs . − 1 − #Skips 15 coefficients to start, 1 to end = 14 steps? 2 y 7 + 7 y 6 + y 5 + 8 y 4 + 2 y 3 + 8 y 2 + y + 8 = R 0 3 y 6 + y 5 + 4 y 4 + y 3 + 5 y 2 + 9 y + 2 R 1 = R 0 − 3 yR 1 = 4 y 6 + 3 y 5 + 5 y 4 + y 3 + 2 y 2 + 2 y + 1 R 0 − (3 y + 6) R 1 = 4 y 5 + 2 y 4 + 2 y 3 + 4 y + 3 R 2 = R 1 − 6 yR 2 = 3 y 5 + 6 y 4 + y 3 + 2 y 2 + 5 y + 2 R 1 − (6 y + 6) R 2 = y 4 + 3 y 3 + 2 y 2 + 2 y + 5 R 3 = R 2 − 4 yR 3 = 4 y 4 + y 3 + 6 y 2 + 5 y + 3 R 2 − (4 y + 4) R 3 = 3 y 3 + 5 y 2 + 4 y + 4 R 4 = R 3 − 5 yR 4 = 6 y 3 + 3 y 2 + 3 y + 5 = R 3 − (5 y + 2) R 4 = 2 y + 4 R 5 R 4 − 5 y 2 R 5 = 6 y 2 + 4 y + 4 R 4 − (5 y 2 + 3 y ) R 5 = 6 y + 4 R 4 − (5 y 2 + 3 y + 3) R 5 = 6 = R 6 R 5 − 5 yR 6 = 4 = R 5 − (5 y + 3) R 6 = 0 R 7 DJB + B.-Y. Yang (UIC/RUB + Sinica) Fast Safe GCD + Inversions 2019.08.26 5 / 15

  13. A Euclidean Subtraction stage Starting from a Dividend of higher degree than Divisor “Regular” Subtraction Stage Subtract from Dividend correct multiple of Divisor. DJB + B.-Y. Yang (UIC/RUB + Sinica) Fast Safe GCD + Inversions 2019.08.26 6 / 15

  14. A Euclidean Subtraction stage Starting from a Dividend of higher degree than Divisor “Regular” Subtraction Stage Subtract from Dividend correct multiple of Divisor. ◮ If “Dividend lead term” = 0, no problem! Decrement “Dividend” degree. If Divisor has higher degree than Dividend, Swap. What if “the Divisor lead term” = 0? Decrement Divisor Degree, do dummy Subtraction How did existing constant-time GCD do it? Do GCD in rising order from Constant term up Keep polynomial as arrays and track the degrees. DJB + B.-Y. Yang (UIC/RUB + Sinica) Fast Safe GCD + Inversions 2019.08.26 6 / 15

  15. A Better Subtraction Stage What we do differently Start the known (bigger) polynomial as “Divisor”!! ◮ We can ensure that its lead term is non-zero! Track δ = deg Divisor − deg Dividend. Can reverse polynomials (lead term = “constant”). Our Subtraction Stage: “divstep” If δ is positive, and Dividend has a non-zero lead (constant) term, then Swap & negate δ . Take appropriate linear combination of Divisor and Dividend. Shift Dividend (divide by x ), increment δ . DJB + B.-Y. Yang (UIC/RUB + Sinica) Fast Safe GCD + Inversions 2019.08.26 7 / 15

  16. What do we do exactly Details of computation with R 0 , R 1 ∈ k [ x ] , d = deg R 0 > deg R 1 Setting up “Divisor” f = x d R 0 (1 / x ), “Dividend” g = x d − 1 R 1 (1 / x ), “Degree Difference” δ = 1. Do 2 d − 1 divstep’s (and collect return values). divstep : Z × k [[ x ]] ∗ × k [[ x ]] → Z × k [[ x ]] ∗ × k [[ x ]], divstep( δ, f , g ) := � (1 − δ, g , ( g (0) f − f (0) g ) / x ) if δ > 0 and g (0) � = 0 , (1 + δ, f , ( f (0) g − g (0) f ) / x ) otherwise . DJB + B.-Y. Yang (UIC/RUB + Sinica) Fast Safe GCD + Inversions 2019.08.26 8 / 15

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