fast uniform scalar multiplication for genus 2 jacobians
play

Fast, uniform scalar multiplication for genus 2 Jacobians with fast - PowerPoint PPT Presentation

Fast, uniform scalar multiplication for genus 2 Jacobians with fast Kummers Ping Ngai (Brian) Chung Craig Costello Benjamin Smith University of Chicago Microsoft Research INRIA + Laboratoire dInformatique de l Ecole polytechnique


  1. Fast, uniform scalar multiplication for genus 2 Jacobians with fast Kummers Ping Ngai (Brian) Chung Craig Costello Benjamin Smith University of Chicago Microsoft Research INRIA + Laboratoire d’Informatique de l’´ Ecole polytechnique (LIX) SAC 2016 St. John’s, Canada, 11/08/2016 Smith (INRIA + LIX) Genus 2 scalar multiplication from Kummers St John’s, 11/08/2016 1 / 1

  2. We want to implement basic cryptosystems based on the hardness of the Discrete Logarithm and Diffie–Hellman problems in some group G . Especially: Diffie–Hellman Key exchange, Schnorr and (EC)DSA Signatures, ... Smith (INRIA + LIX) Genus 2 scalar multiplication from Kummers St John’s, 11/08/2016 2 / 1

  3. Work to be done Group operation in G : ⊕ . Inverse: ⊖ . We occasionally need to compute isolated ⊕ es. We mostly need to compute scalar multiplications : ( m , P ) �− → [ m ] P := P ⊕ · · · ⊕ P � �� � m times for P in G and m in Z (with [ − m ] P = [ m ]( ⊖ P )). Side channel safety = ⇒ scalar multiplication must be uniform and constant-time when the scalar m is secret. Smith (INRIA + LIX) Genus 2 scalar multiplication from Kummers St John’s, 11/08/2016 3 / 1

  4. ...So you want to instantiate a DLP/DHP-based protocol Smallest key size for a given security level: use an elliptic curve or a genus 2 Jacobian . For signatures and encryption : Elliptic: Edwards curves (eg. Ed25519), NIST curves, etc. Genus 2: Jacobian surfaces. Scalar mult: Uniform genus 2 is much slower than elliptic curves. For Diffie–Hellman : Elliptic: x -lines of Montgomery curves (eg. Curve25519) Genus 2: Kummer surfaces (Jacobians modulo ± 1). Scalar mult: Uniform genus 2 can be faster than elliptic curves. E.g.: Bos–Costello–Hisil–Lauter (2012) Bernstein–Chuengsatiansup–Lange–Schwabe (2014) Our aim: bring Diffie–Hellman performance to signatures in genus 2. Smith (INRIA + LIX) Genus 2 scalar multiplication from Kummers St John’s, 11/08/2016 4 / 1

  5. Genus 2 curves C : y 2 = f ( x ) with f ∈ F p [ x ] degree 5 or 6 and squarefree Unlike elliptic curves, the points do not form a group. Smith (INRIA + LIX) Genus 2 scalar multiplication from Kummers St John’s, 11/08/2016 5 / 1

  6. Making groups from genus 2 curves Jacobian : algebraic group J C ∼ C (2) : Elements are pairs of points on C , with all pairs { ( x , y ) , ( x , − y ) } “blown down” to 0. Negation ⊖ : { ( x 1 , y 1 ) , ( x 2 , y 2 ) } �→ { ( x 1 , − y 1 ) , ( x 2 , − y 2 ) } Group law on J C induced by { P 1 , P 2 } ⊕ { Q 1 , Q 2 } ⊕ { R 1 , R 2 } = 0 whenever P 1 , P 2 , Q 1 , Q 2 , R 1 , R 2 are the intersection of C with some cubic y = g ( x ). Why? Any 4 points in the plane determine a cubic y = g ( x ) , which must intersect C : y 2 = f ( x ) in 6 points because g ( x ) 2 = f ( x ) has 6 solutions. Smith (INRIA + LIX) Genus 2 scalar multiplication from Kummers St John’s, 11/08/2016 6 / 1

  7. Genus 2 group law: { P 1 , P 2 } ⊕ { Q 1 , Q 2 } = ⊖{ R 1 , R 2 } = { S 1 , S 2 } Algorithmically: we use the Mumford representation and Cantor’s algorithm. Smith (INRIA + LIX) Genus 2 scalar multiplication from Kummers St John’s, 11/08/2016 7 / 1

  8. Why is uniform genus 2 tricky? Elements { P 1 , P 2 } : separate, incompatible representations for cases where one or both of the P i are at infinity. Group law { P 1 , P 2 } ⊕ { Q 1 , Q 2 } = { S 1 , S 2 } : branch-tacular, separate special cases for P i , Q i at infinity, for P i = P j , for P i = Q j , for { P 1 , P 2 } = { Q 1 , Q 2 } , . . . These special cases are never implemented in “record-breaking” genus 2 implementations, but they’re easy to attack in practice. For elliptic curves, we can always sweep the special cases under a convenient line to get a uniform group law, but in genus 2 this is much harder; protection kills performance . Smith (INRIA + LIX) Genus 2 scalar multiplication from Kummers St John’s, 11/08/2016 8 / 1

  9. Why is Diffie–Hellman different? Now you know why genus 2 Jacobians are painful candidates for cryptographic groups. So why is genus 2 fast and safe for Diffie–Hellman? Because DH doesn’t need a group law , just scalar multiplication. So we can “drop signs” and work modulo ⊖ , on the Kummer surface K C := J C / �± 1 � . Elliptic curve equivalent: work on x-line P 1 , eg. Curve25519 (Bernstein 2006). Smith (INRIA + LIX) Genus 2 scalar multiplication from Kummers St John’s, 11/08/2016 9 / 1

  10. What a Kummer surface looks like Smith (INRIA + LIX) Genus 2 scalar multiplication from Kummers St John’s, 11/08/2016 10 / 1

  11. Moving from J C to the Kummer K C Quotient map x : J C − → K C (ie x ( P ) = ± P ) No group law on K C : x ( P ) and x ( Q ) determines x ( P ⊕ Q ) and x ( P ⊖ Q ), but we can’t tell which is which. Still, ⊖ [ m ]( P ) = [ m ]( ⊖ P ) for any m ∈ Z and P ∈ J C , so we do have a “scalar multiplication” on K C : [ m ] : x ( P ) �− → x ([ m ] P ) . Problem: How do we compute [ m ] efficiently, without ⊕ ? Smith (INRIA + LIX) Genus 2 scalar multiplication from Kummers St John’s, 11/08/2016 11 / 1

  12. Any 3 of x ( P ), x ( Q ), x ( P ⊖ Q ), and x ( P ⊕ Q ) determines the 4th, so we can define pseudo-addition xADD : ( x ( P ) , x ( Q ) , x ( P ⊖ Q )) �− → x ( P ⊕ Q ) pseudo-doubling xDBL : x ( P ) �− → x ([2] P ) Bonus: easier to hide/avoid special cases in xADD than ⊕ . = ⇒ Evaluate [ m ] by combining xADD s and xDBL s using differential addition chains (ie. every ⊕ has summands with known difference). Classic example: the Montgomery ladder. Smith (INRIA + LIX) Genus 2 scalar multiplication from Kummers St John’s, 11/08/2016 12 / 1

  13. Algorithm 1 The Montgomery ladder 1: function Ladder ( m = � β − 1 i =0 m i 2 i , P ) ( R 0 , R 1 ) ← (0 , P ) 2: for i := β − 1 down to 0 do 3: ( R m i , R ¬ m i ) ← ([2] R m i , R m i ⊕ R ¬ m i ) 4: ⊲ invariant: ( R 0 , R 1 ) = ([ ⌊ m / 2 i ⌋ ] P , [ ⌊ m / 2 i ⌋ + 1] P ) end for 5: return R 0 ⊲ R 0 = [ m ] P , R 1 = [ m ] P ⊕ P 6: 7: end function For each group operation R 0 ⊕ R 1 , the difference R 0 ⊖ R 1 is fixed = ⇒ trivial adaptation from J C to K C Smith (INRIA + LIX) Genus 2 scalar multiplication from Kummers St John’s, 11/08/2016 13 / 1

  14. Algorithm 2 The Montgomery ladder on the Kummer 1: function Ladder ( m = � β − 1 i =0 m i 2 i , ± P ) ( x 0 , x 1 ) ← ( x (0) , x ( P )) 2: for i := β − 1 down to 0 do 3: ( x m i , x ¬ m i ) ← ( xDBL ( x m i ) , xADD ( x 0 , x 1 , x ( P )) 4: ⊲ invariant: x 0 = x ([ ⌊ m / 2 i ⌋ ] P , x 1 = x ([ ⌊ m / 2 i ⌋ + 1] P ) end for 5: return x 0 (= x ([ m ] P )) 6: 7: end function High symmetry of K C = ⇒ fast, vectorizable xADD and xDBL (Gaudry) = ⇒ very fast Kummer-based Diffie–Hellman implementations Eg. Bos–Costello–Hisil–Lauter (2013), Bernstein–Chuengsatiansup–Lange–Schwabe (2014). Smith (INRIA + LIX) Genus 2 scalar multiplication from Kummers St John’s, 11/08/2016 14 / 1

  15. Pulling a y-rabbit out of an x-hat Kummer multiplication computes x ([ m ] P ) from x ( P ) —but we need [ m ] P for signatures... Mathematically, we threw away the sign: you can’t deduce [ m ] P from P and x ([ m ] P ). But there’s a trick: if you computed x ([ m ] P ) using the Montgomery ladder, then you can! At the end of the loop, x 0 = x ([ m ] P ) and x 1 = x ([ m ] P ⊕ P ); and P , x ( Q ), and x ( Q ⊕ P ) uniquely determines Q (for any Q ). Our paper: efficiently computing this in genus 2, with 1D (Montgomery) and 2D (Bernstein) SM algorithms. Smith (INRIA + LIX) Genus 2 scalar multiplication from Kummers St John’s, 11/08/2016 15 / 1

  16. P, x ( Q ) , and x ( P ⊕ Q ) determine Q This is an old trick for elliptic curves: cf. L´ opez–Dahab (CHES 99), Okeya–Sakurai (CHES 01), Brier–Joye (PKC 02). Smith (INRIA + LIX) Genus 2 scalar multiplication from Kummers St John’s, 11/08/2016 16 / 1

  17. Genus 2 group law: { P 1 , P 2 } ⊕ { Q 1 , Q 2 } = { S 1 , S 2 } Choosing { T 1 , T 2 } as (the wrong) preimage of x ( { Q 1 , Q 2 } ) yields a cubic incompatible with x ( { S 1 , S 2 } ). Smith (INRIA + LIX) Genus 2 scalar multiplication from Kummers St John’s, 11/08/2016 17 / 1

  18. So: your fast Kummer implementations can now be easily upgraded to full Jacobian group implementations. Fast Diffie–Hellman code now yields efficient signatures. Algorithm 3 Montgomery/Kummer-based multiplication on the Jacobian 1: function ScalarMultiply ( m = � β − 1 i =0 m i 2 i , P ) ( x 0 , x 1 ) ← ( x (0) , x ( P )) 2: for i := β − 1 down to 0 do ⊲ Montgomery ladder 3: ( x m i , x ¬ m i ) ← ( xDBL ( x m i ) , xADD ( x 0 , x 1 , x ( P )) 4: ⊲ invariant: x 0 = x ([ ⌊ m / 2 i ⌋ ] P ), x 1 = x ([ ⌊ m / 2 i ⌋ + 1] P ) end for 5: Q ← Recover ( P , x 0 , x 1 ) ⊲ Q = [ m ] P 6: return Q 7: 8: end function Smith (INRIA + LIX) Genus 2 scalar multiplication from Kummers St John’s, 11/08/2016 18 / 1

  19. Gratuitous cross-promotion ...this isn’t just wishful theory. Our technique was used in µ Kummer: efficient Diffie–Hellman and Schnorr signatures for microcontrollers (Renes–Schwabe–S.–Batina, CHES 2016) Smith (INRIA + LIX) Genus 2 scalar multiplication from Kummers St John’s, 11/08/2016 19 / 1

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