Υ οποίηση αντα α ής κ ειδιού DH και ψηφιακών υπο ραφών ασισμένη σε ε ειπτικές καμπύ ες Νίκος Γιανναράκης Ζ ή Παρασκευοπού ου Σ ο ή Η εκτρο ό ν Μη ανικών και Μη ανικών Υπο ο ιστών Ε νικό Μετσό ιο Πο υτε νείο 28 Ιανουαρίου 2013 Elliptic Curve Cryptography 1 / 35
Κρυπτο ραφία με ε ειπτικές καμπύ ες Why elliptic curve cryptography? Αυξημένη ασφά εια με μικρότερα μήκη κ ειδιών Μει μένο υπο ο ιστικό κόστος και bandwitdh Ιδανικές ια φορητές συσκευές ό ενερ ειακών απαιτήσε ν (κινητά κ π.) ECC σε secure web servers, επιτά υνση ε ς και 280% [6] Elliptic Curve Cryptography 2 / 35
Σύ κριση μήκους κ ειδιού ECC RSA Ανα ο ία AES 160 1024 1:6 256 3072 1:12 128 384 7680 1:20 192 512 15360 1:30 256 Σ ήμα : Σύ κριση μήκους κ ειδιού σε bits ECC-160 RSA-1024 ECC-224 RSA-2048 Time(ms) 3.69 8.75 5.12 56.18 Ops/Sec 271.3 114.3 195.5 17.8 Perf ratio 2.4 : 1.0 11.0 : 1.0 Key ratio 1.0 : 6.4 1.0 : 9.1 Σ ήμα : Σύ κριση απόδοσης ανά ο α με το μήκος κ ειδιού [6] Elliptic Curve Cryptography 3 / 35
Ε ειπτικές καμπύ ες στο R Ορισμός Μία ε ειπτική καμπύ η στο R μπορεί να οριστεί ς το σύνο ο τ ν σημεί ν (x,y) που ικανοποιούν μία εξίσ ση ε ειπτικής καμπύ ης της μορφής: y 2 = x 3 + a x + b, x, y, a, b R μαζί με ένα σημείο O, το οποίο ονομάζουμε σημείο στο άπειρο. Ορισμός πράξε ν Πρόσ εση δύο σημεί ν P, Q Διπ ασιασμός ενός σημείου P Elliptic Curve Cryptography 4 / 35
Πρόσ εση δύο σημεί ν πάν σε ε ειπτικές καμπύ ες στο R H πρόσ εση δύο σημεί ν P, Q μπορεί να οριστεί ε μετρικά Elliptic Curve Cryptography 5 / 35
Διπ ασιασμός σημείου πάν σε ε ειπτικές καμπύ ες στο R Ο διπ ασιασμός ενός σημείου πάν σε μία ε ειπτική καμπύ η ορίζεται ε μετρικά σύμφ να με το παρακάτ σ ήμα Elliptic Curve Cryptography 6 / 35
Προ ήματα Αρ ές πράξεις σε πρα ματικούς αρι μούς Έ ειψη ακρί ειας Elliptic Curve Cryptography 7 / 35
Ε ειπτικές καμπύ ες πάν από το F p και το F 2 m Ορισμός Δια έ οντας a, b F p και υπο ο ίζοντας τα σημεία (x, y) της καμπύ ης modulo p ορίζουμε μία ε ειπτική καμπύ η στο F p. Elliptic Curve Cryptography 8 / 35
Πρόσ εση δύο σημεί ν πάν σε ε ειπτικές καμπύ ες στο F p H πρόσ εση δύο σημεί ν R = P + Q σε μία ε ειπτική καμπύ η στο F p ορίζεται α ε ρικά: s = (y P y Q ) (x P x Q ) (mod p) x R = s 2 x P x Q (mod p) y R = y P + s (x P x R ) (mod p) Το O είναι το ουδέτερο στοι είο της πρόσ εσης : P + O = P. Elliptic Curve Cryptography 9 / 35
Διπ ασιασμός σημείου πάν σε ε ειπτικές καμπύ ες στο F p Ο διπ ασιασμός σημείου R = 2P σε μία ε ειπτική καμπύ η στο F p ορίζεται α ε ρικά: s = (3 x2 P + a) 2 y P (mod p) x R = s 2 2 x P (mod p) y R = y p + s (x P x R ) (mod p) Elliptic Curve Cryptography 10 / 35
Βα μ τός πο απ ασιασμός πάν σε ε ειπτικές καμπύ ες στο F p Με ρήση τ ν παραπάν πράξε ν μπορούμε να ορίσουμε την πράξη του α μ τού πο απ ασιασμού R = k P όπου l Z και P ένα σημείο ε ειπτικής καμπύ ης. P = O k P = O Naive P + P... + P Double-and-add (το ανά ο ο του επανα αμ ανόμενου τετρα νισμού) Windowed, Sliding-window, wnaf, Montogomery ladder... [3] Elliptic Curve Cryptography 11 / 35
Double-and-add Input: Elliptic curve E, elliptic curve point P, scalar d: (d 0 d 1... d t 1 ) Output: T = d P T P for i t 1 downto 0 do T T + T (mod n) if d i = 1 then T T + P (mod n) end end return T Algorithm 1: Μέ οδος double-and-add Elliptic Curve Cryptography 12 / 35
Το πρό ημα του διακριτού ο αρί μου σε ε ειπτικές καμπύ ες (ECDLP) Ορισμός Εστ ε ειπτικη καμπυ η στο F p και ε στ δυ ο σημειά αυτη ς P, Q. Αν η τάξη του P είναι n τότε το πρό ημα διακριτού ο αρί μου ορίζεται ς η εύρεση ενός ακεραίου 0 l n 1 τέτοιου ώστε Q = l P. Elliptic Curve Cryptography 13 / 35
Αντα α ή κ ειδιού με τη μέ οδο Diffie-Hellman ια ε ειπτικές καμπύ ες (ECDH) Ο ρήστης Α και ο ρήστης Β επι έ ουν δημόσια τις παραμέτρους D = (q, a, b, G, n, h) Ο ρήστης Α επι έ ει έναν τυ αίο αρι μό 1 a n 1 ς ιδι τικό κ ειδί και υπο ο ίζει και στέ νει στον Β το δημόσιο κ ειδί του a G. Ο ρήστης Β επι έ ει έναν τυ αίο αρι μό 1 b n 1 ς ιδι τικό κ ειδί και υπο ο ίζει και στέ νει στον Α το δημόσιο κ ειδί b G και το στέ νει στον Α. Ο Α υπο ο ίζει το a b G Ο Β υπο ο ίζει το b a G Το κοινό κ ειδί τους είναι το a b G = b a G Elliptic Curve Cryptography 14 / 35
Ψηφιακές υπο ραφές με τον α όρι μο DSA ια ε ειπτικές καμπύ ες (ECDSA) Παρα ή υπο ραφής Για να υπο ράψει ένα μήνυμα m, ο ρήστης Α με παραμέτρους D = (q, a, b, G, n, h) και ένα ζεύ ος ιδι τικού-δημόσιου κ ειδιού (d, Q) ακο ου εί τα παρακάτ ήματα Elliptic Curve Cryptography 15 / 35
Ψηφιακές υπο ραφές με τον α όρι μο DSA ια ε ειπτικές καμπύ ες (ECDSA) Παρα ή υπο ραφής 1. Επι έ ει έναν τυ αίο αρι μό k τέτοιο ώστε 1 k n 1. 2. Υπο ο ίζει το σημείο k G = (x 1, y 1 ). 3. Υπο ο ίζει το r = x 1 (mod n). Αν r = 0 επιστρέφει στο ήμα 1. 4. Υπο ο ίζει το k 1 (mod n). 5. Υπο ο ίζει το SHA 1(m) και μετατρέπει το αποτέ εσμα του bit-string σε έναν ακέραιο e. 6. Υπο ο ίζει το s = k 1 (e + d r) (mod n). Αν s = 0 επιστρέφει στο ήμα 1. 7. Η υπο ραφή του A ια το μήνυμα m είναι (r, s). Elliptic Curve Cryptography 16 / 35
Ψηφιακές υπο ραφές με τον α όρι μο DSA ια ε ειπτικές καμπύ ες (ECDSA) Επα ή ευση υπο ραφής Για να επα η εύσει μία υπο ραφή (r, s) σε ένα μήνυμα m, ο ρήστης Β παίρνει τις παραμέτρους D = (q, FR, a, b, G, n, h) και το δημόσιο κ ειδί Q του Α και ακο ου εί τα παρακάτ ήματα: Προσο ή! Ο Β α πρέπει να ε έ ξει ότι τα στοι εία του Α δεν έ ουν α οι εί, π.. αν το σημείο Q ανήκει στην καμπύ η που ορίζεται απο το D Elliptic Curve Cryptography 17 / 35
Ψηφιακές υπο ραφές με τον α όρι μο DSA ια ε ειπτικές καμπύ ες (ECDSA) Επα ή ευση υπο ραφής 1. Επι ε αιώνει ότι τα r, s είναι ακέραιοι στο διάστημα [1, n 1]. 2. Υπο ο ίζει το SHA 1(m) και μετατρέπει το αποτέ εσμα του bit-string σε έναν ακέραιο e. 3. Υπο ο ίζει το w = s 1 (mod n). 4. Υπο ο ίζει το u 1 = e w (mod n) και το u 2 = r w (mod n). 5. Υπο ο ίζει το X = u 1 G + u 2 G 6. Εάν X = O τότε απορρίπτει την υπο ραφή. Α ιώς υπο ο ίζει τo u = x 1 (mod n) όπου x 1 η συντετα μένη x του X. 7. Δέ εται την υπο ραφή αν και μόνο αν u = r. Elliptic Curve Cryptography 18 / 35
Υ οποίηση Επι ο ή παραμέτρ ν Παράμετρος Περι ραφή p Η αρακτηριστική του πεπερασμένου σώματος F p a Ο συντε εστής a της ε ειπτικής καμπύ ης b Ο συντε εστής b της ε ειπτικής καμπύ ης G Ένα σημείο G = (x G, y G ) n Η τάξη του στοι είου G h E(F p )/n Σ ήμα : Domain Parameters Απαιτείται πο ύ προσεκτική επι ο ή τ ν παραμέτρ ν [1] [2] [4] Elliptic Curve Cryptography 19 / 35
Υ οποίηση Επίπεδα υ οποίησης Αρι μητική modulo με υποστήριξη ια με ά ους αρι μούς Υ οποίηση τ ν πράξε ν που ορίζονται στην ομάδα (πρόσ εση, διπ ασιασμός) Υ οποίηση του α μ τού πο απ ασιασμού Υ οποίηση ενός κρυπτοσυστήματος π.. ECDH Elliptic Curve Cryptography 20 / 35
Υ οποίηση στη ώσσα OCaml Why OCaml? Μεί ση σφα μάτ ν. Έ ε ος τύπ ν κατά τη μετα ώττιση. Βι ιο ήκες. Αρκετές έτοιμες συναρτήσεις ( ια big numbers κ.α.) Τα ύτητα. Απόδοση αρκετά κοντά σε low-level ώσσες όπ ς C. Garbage collected. Η δια είριση μνήμης ίνεται αυτόματα, ένα πρά μα ι ότερο ια να ανησυ ούμε. Elliptic Curve Cryptography 21 / 35
Υ οποίηση στη ώσσα OCaml Βασικοί τύποι type point = Infinity Point of Z.t * Z.t An elliptic curve point. It is either infinity or a point (x,y). type elliptic_curve = { p : Z.t ; a : Z.t ; b : Z.t ; g : point ; n : Z.t ; h : Z.t ; } The type of domain parameters Elliptic Curve Cryptography 22 / 35
Υ οποίηση στη ώσσα OCaml Modulo αρι μητική Χρησιμοποιή ηκε η ι ιο ήκη με ά ν αρι μών Zarith, ρησιμοποιεί το GMP (C/C++). Διάφορες ετοιμες συναρτήσεις ια ασικές πράξεις όπ ς εύρεση αντιστρόφου ενός αρι μού modulo n. Elliptic Curve Cryptography 23 / 35
Υ οποίηση στη ώσσα OCaml Υ οποίηση πράξε ν ομάδας val add_point : point -> point -> elliptic_curve -> point Given two points P and Q, both on the same elliptic curve, and the elliptic curve returns P+Q on that curve. val double_point : point -> elliptic_curve -> point Given a point P on an elliptic curve and the elliptic curve retuns the point 2P on that curve. Elliptic Curve Cryptography 24 / 35
Υ οποίηση στη ώσσα OCaml Υ οποίηση α μ τού πο απ ασιασμού val multiply_point : point -> Z.t -> elliptic_curve -> point Given a point P on an elliptic curve, an integer k and the elliptic curve returns the scalar multiplication kp on that curve. Elliptic Curve Cryptography 25 / 35
Βε τιστοποίησεις Βε τιστοποίηση αρι μητικής modulo Το πιο ρονο όρο κομμάτι είναι οι πράξεις με με ά ους αρι μούς και η αρι μητική modulo. Η ρήση της ι ιο ήκης Zarith μας ύνει το πρό ημα ε τιστοποίησεις αυτού του κομματιού κα ώς ρησιμοποιεί το GMP που έ ει ρή ορες υ οποιήσεις πράξε ν στη ώσσα C. Βε τιστοποίηση πράξε ν Οι συναρτήσεις add_point και double_point δεν παρουσιάζουν ιδιαίτερα περι ώρια ε τιστοποίησης. Μπορούμε να ε τιστοποιήσουμε τη συνάρτηση multiply_point ρησιμοποιώντας έναν κα ύτερο α όρι μο από αυτούς που έ ουν αναφερ εί (η υ οποίηση μας ρησιμοποιεί τη μέ οδο double-and-add) Elliptic Curve Cryptography 26 / 35
Επι έσεις Επί υση ECDLP (πρακτικά ανέφικτο με κατά η η επι ο ή παραμέτρ ν) Επί εση στη συνάρτηση κατακερματισμού (hash function) εαν ρησιμοποιείται. Κακή δια είριση κ ειδιών (private key, αρι μός k στο ECDSA) κ π. Elliptic Curve Cryptography 27 / 35
Επί υση του ECDLP Certicom ECC Challenge Στό ος είναι να ρε ούν τα ιδι τικά κ ειδιά απο μία δο είσα ίστα με δημόσια κ ειδιά και τις αντίστοι ες παραμέτρους. Επίπεδο 1 : 109-bit, 131-bit Επίπεδο 2 : 163-bit, 191-bit, 239-bit, 359-bit Το 2004 ύ ηκε το πρό ημα ια τα 109-bit από 10000 υπο ο ιστές σε 549 μέρες ρησιμοποιώντας τη μέ οδο rho. Για τα 131-bit όμ ς α ρειαστούν σημαντικά περισσότεροι πόροι. Τα προ ήματα στο επίπεδο 2 ε ρούνται υπο ο ιστικά ανέφτικα. Elliptic Curve Cryptography 28 / 35
Επί εση στο ECDSA Sony Playstation 3 Το playstation 3 ρησιμοποιεί το σ ήμα ψηφιακής υπο ραφής ECDSA ια ψηφιακές υπο ραφές στα παι νίδια και στις ανα α μίσεις του firmware του έτσι ώστε να μην επιτρέπεται σε unsigned κώδικα να εκτε εστεί στην κονσό α. Elliptic Curve Cryptography 29 / 35
Επί εση στο ECDSA Επι ο ή τυ αίου αρι μού k Ο τυ αίος αρι μός k έ ει τις ίδιες απαιτήσεις ασφά ειας με το ιδι τικό κ ειδί d. Αυτό συνεπά εται απο το ε ονός οτι αν ο κακό ου ος ρήστης Ε ανακτήσει ένα k που ρησιμοποιεί ο Α ια να υπο ράψει ένα μήνυμα m τότε μπορεί να ανακτήσει το ιδι τικό κ ειδί του A αφού d = r 1 (k s e) (mod n). Συνεπώς το k α πρέπει να παρά εται με ασφα ή τρόπο και να απο ηκεύεται με ασφα ή τρόπο. Elliptic Curve Cryptography 30 / 35
Επί εση στο ECDSA Sony Playstation 3 τρόπος επι ο ής τυ αίου k Η Sony δε παρή α ε ποτέ τυ αίο k α ά ρησιμοποιούσε μία στα ερά ια k Με τον τρόπο που δείξαμε παραπάν υπο ο ίστηκε το private key της Sony και δό ηκε η δυνατότητα να κάνουμε sign ότι κώδικα έ ουμε. [7] Elliptic Curve Cryptography 31 / 35
Παρα ή τυ αί ν αρι μών! Elliptic Curve Cryptography 32 / 35
References [1] Don Johnson, Alfred Menezes, Scott Vanstone, The Elliptic Curve Digital Signature Algorithm (ECDSA) Certicom Research [2] Certicom Research SEC 2: Recommended Elliptic Curve Domain Parameters Certicom Research [3] Daniel J. Bernstein, Tanja Lange Analysis and optimization of elliptic-curve single-scalar multiplication [4] Brainpool ECC Brainpool Standard Curves and Curve Generation v1.0 Brainpool Elliptic Curve Cryptography 33 / 35
References [5] Chrisoft Paar, Jan pelzl, Understanding Cryptography: A textbook for Students and Practitioners Springer [6] Vipul Gupta, Douglas Stebila, Stephen Fung, Sheueling Chang, Nils Gura, Hans Eberle Speeding up secure web transactions using elliptic curve cryptography Sun Microsystems Labs [7] bushing, marcan, sgher, sven PS3 Epic Fail fail0verflow Elliptic Curve Cryptography 34 / 35
Fork here! https://github.com/zoep/ecc-ocaml The end Elliptic Curve Cryptography 35 / 35