Κρυπτογραφία Θεωρία Αριθμών Παύλος Εφραιμίδης v1.8, 02/04/2014 1 Θεωρία Αριθμών Θεωρία Αριθμών Ένας όμορφος κλάδος των μαθηματικών Απέκτησε μεγάλη πρακτική αξία χάρη στη Σύγχρονη Κρυπτογραφία Η Υπολογιστική Πολυπλοκότητα συγκεκριμένων υπολογιστικών προβλημάτων της Θεωρίας Αριθμών αποτελεί τη βάση της Σύγχρονης Κρυπτογραφίας 2 Γιατί χρησιμοποιούμε Θεωρία Αριθμών στη σύγχρονη Κρυπτογραφία; 3 1
Υπολογιστικά προβλήματα Πρώτοι αριθμοί Εύρεση μεγάλων πρώτων αριθμών Υπολογιστικά εφικτό (tractable) Παραγοντοποίηση ακεραίων αριθμών που είναι γινόμενο μεγάλων πρώτων αριθμών Υπολογιστικά μη εφικτό (intractable) 4 Ο μεγαλύτερος γνωστός πρώτος αριθμός Ο μεγαλύτερος γνωστός πρώτος αριθμός έχει εκατομμύρια ψηφία Κάνσας Σίτι, Μισούρι Αμερικανός μαθηματικός υπολόγισε έναν νέο πρώτο αριθμό που αποτελείται από 17.425.170 ψηφία και είναι ο μεγαλύτερος πρώτος αριθμός που γνωρίζουμε αυτή τη στιγμή. Ο νέος βασιλιάς των πρώτων αριθμών πήρε τα σκήπτρα από έναν πρώτο αριθμό που ανακαλύφθηκε το 2008 και αποτελείται από 12.978.189 ψηφία. Το 2009 ανακαλύφθηκε άλλος ένας πρώτος αριθμός που όμως ήταν μικρότερος από εκείνον του 2008. πηγή: http://news.in.gr/science-technology/article/?aid=1231234090 Δημοσίευση: 06 Φεβ. 2013, 15:51 5 Ο μεγαλύτερος γνωστός πρώτος αριθμός As of January 2014, the largest known prime number is 2 257,885,161 1, a number with 17,425,170 digits. (wikipedia, 2014-03-04). Plot of the number of digits in largest known prime by year, since the electronic computer. Note that the vertical scale is logarithmic. The red line is the exponential curve of best fit: y = exp(0.188439 t - 362.591), where t is in years. 6 2
Διακριτός Λογάριθμος Διακριτοί Λογάριθμοι Discrete Exponentiation Υπολογισμός discrete exponentiation: Δίνονται α, n και x. Υπολογισμός του α x (mod n) είναι: Υπολογιστικά εφικτός Διακριτός Λογάριθμος (Discrete Logarithm) Απλοποιημένος ορισμός: Έστω x, τέτοιο ώστε α x =β (mod n), με α, n γνωστά. Η εύρεση του x είναι το πρόβλημα του διακριτού λογαρίθμου. Εύρεση διακριτού λογαρίθμου: Υπολογιστικά μη εφικτός 7 Τι θα θέλαμε Κρυπτογράφηση, Αποκρυπτογράφηση γνωρίζοντας το κλειδί: Υπολογιστικά Εφικτό Αποκρυπτογράφηση χωρίς να γνωρίζουμε το κλειδί: Υπολογιστικά Μη Εφικτό 8 Ένα πρώτο πρωτόκολλο: Diffie - Hellman 9 3
Αλγόριθμος Diffie-Hellman Συμφωνούμε όλοι στους αριθμούς: p και g Η Αλίκη επιλέγει α και υπολογίζει Α = g α mod n Ο Μπάμπης επιλέγει β και υπολογίζει Β=g β mod n Ανταλλάσσουν τα Α και Β μέσω ενός απροστάτευτου καναλιού επικοινωνίας: Η Αλίκη υπολογίζει k 1 = Β α και ο Μπάμπης k 2 =Α β. Ισχύει k 1 = k 2 = k Όσοι άλλοι άκουσαν τα Ακαι Βδεν μπορούν να βρουν το kαπό αυτά!! Επεκτείνεται και σε 3 ή περισσότερα άτομα 10 Υπολογιστικά εφικτό; Υπολογιστικά εφικτό: Εκτέλεση ενός αλγορίθμου πολυωνυμικού χρόνου Πχ. ταξινόμηση αριθμών με την Quicksort Υπολογιστικά μη-εφικτό: Εκτέλεση αλγορίθμου με χρόνο μηπολυωνυμικό, πχ. εκθετικό Πχ περιοδεύων πωλητής: δεν έχει βρεθεί πολυωνυμικός αλγόριθμος 11 Αναλογία με τα NP-Complete προβλήματα Υπολογιστικά εφικτό: Η επιβεβαίωση μιας λύσης γίνεται σε πολυωνυμικό χρόνο, εφόσον μας δοθεί η υποψήφια λύση Υπολογιστικά μη-εφικτό: Η εύρεση μιας λύσης 12 4
Γιατί χρησιμοποιούμε Θεωρία Αριθμών στη σύγχρονη Κρυπτογραφία; Από τη Θεωρία Αριθμών αντλούμε τα κατάλληλα υπολογιστικά προβλήματα για να χτίσουμε κρυπτοσυστήματα (πχ. RSA) και κρυπτογραφικά πρωτόκολλα. 13 Θεωρία Αριθμών 14 Βασικές Έννοιες Συμβολισμός δ α : O δ διαιρεί τον α ή ο α είναι πολλαπλάσιο του δ. Ιδιότητες α > 0 & δ α δ α δ α 0 Υπάρχει κ: α = κ δ Ορισμός: Εάν δ α και δ 0 τότε ο δ είναι διαιρέτης του α δ διαιρέτης του α: 1 δ α Τετριμμένοι διαιρέτες του α: 1, α Διαιρέτες που δεν είναι τετριμμένοι: Παράγοντες Πχ. για τον ακέραιο αριθμό 20: Διαιρέτες του 20: 1, 2, 4, 5, 10, 20 Παράγοντες του 20: 2, 4, 5, 10 15 5
Πρώτοι αριθμοί Σύνθετοι Αριθμοί Ακέραιος αριθμός α. Αν α > 1 και οι μόνοι διαιρέτες του είναι οι τετριμμένοι διαιρέτες 1 και α, τότε ο α είναι ΠΡΩΤΟΣ αριθμός Οι πρώτοι αριθμοί παρουσιάζουν ιδιαίτερο ενδιαφέρον Οι μικρότεροι πρώτοι αριθμοί είναι: 2,3,5,7,11,13,17,19,23,29,31,37,... 16 Σύνθετοι Αριθμοί Οι ακέραιοι που δεν είναι πρώτοι αριθμοί ονομάζονται ΣΥΝΘΕΤΟΙ. Πχ. ο αριθμός 39 είναι σύνθετος: 3 39 Ο αριθμός 1 (μονάδα) Ούτε πρώτος, ούτε σύνθετος, αλλά απλά η μονάδα. Ακέραιοι 0 δεν τους ονομάζουμε ούτε πρώτους, ούτε σύνθετους. 17 Θεώρημα Διαίρεσης Έστω ακέραιος α και θετικός ακέραιος n. Τότε υπάρχουν μοναδικοί ακέραιοι q και r τέτοιοι ώστε: 0 r < n & α = q n+r q = α/n, ΠΗΛΙΚΟ r = α mod n, ΥΠΟΛΟΙΠΟ Άρα α = q n + r ή ισοδύναμα α mod n = α - q n 18 6
Ισοδυναμία α b Εξετάζοντας τώρα τα υπόλοιπα ορίζουμε: Αν (α mod n) = (β mod n) τότε γράφουμε α β (mod n) και λέμε ότι o α είναι ισοδύναμος με τον b, modulo n a Δηλαδή α β (mod n) έχουν το ίδιο υπόλοιπο όταν διαιρούνται με n Υπάρχει και ο συμβολισμός α T β (mod n) που σημαίνει ότι α και β δεν είναι ισοδύναμα modulo n 19 Κλάσεις modulo n Για κάθε n, μπορούμε να διαχωρίσουμε τους ακεραίους σε κλάσεις ισοδύναμων ακεραίων modulo n αριθμών. [α] n = {α + κ n: k Z} π.χ. [3] 7 = [-4] 7 = {..,-11,-4,3,10,17,..} Γράφουμε: Z n = {[α] n : 0 α n-1 } ή απλοποιημένα: Z n = {0,1,..,n-1} 20 Μέγιστος Κοινός Διαιρέτης (ΜΚΔ) Greatest Common Divisor (GCD) 21 7
Μέγιστος Κοινός Διαιρέτης (1) δ α AND δ β δ κοινός διαιρέτης των α, β δ α AND δ β δ (α+β) AND δ (α-β) δ α AND δ β δ (α x+ β y), x, y ακέραιοι α β α β OR β = 0 α β AND β α α = ±β 22 Μέγιστος Κοινός Διαιρέτης (2) Μέγιστος κοινός διαιρέτης (greatest common divisor ή gcd) Για α, β με α + β > 0 ισχύει 1 gcd(α,β) min( α, β ) Ορίζουμε gcd(0,0) = 0 23 Ιδιότητες της συνάρτησης gcd(α,β) gcd(α,β) = gcd(b,a) gcd(α,β) = gcd(-a,β) gcd(α,β) = gcd( α, β ) gcd(α,0) = α gcd(α,kα) = α, για k Z 24 8
Θεώρημα Εάν α, β ακέραιοι, τέτοιοι ώστε α + β > 0 τότε gcd(α,β) είναι το μικρότερο θετικό στοιχείο του συνόλου {α x+β y: x,y Z}. Παρατηρήστε ότι {α x+β y: x,y Z} είναι το σύνολο των γραμμικών συνδυασμών των α και β 25 Λήμματα για gcd δ α AND δ β δ gcd(α,β) Εάν n 0, τότε gcd(α n, β n) = n gcd(α,β) Εάν α 0, β 0, n 0, τότε n α β AND gcd(α,n) = 1 n β 26 Σχετικά Πρώτοι Αριθμοί Εάν α,β τέτοιοι ώστε gcd(α,β) = 1 α, β σχετικά πρώτοι. Θεώρημα: Για ακέραιους α, β και p, gcd(α,p)=1 και gcd(β,p)=1 gcd(α β,p) = 1 Απόδειξη: gcd(α,p) = 1 Υπάρχουν x,y: αx + py =1 gcd(β,p) = 1 Υπάρχουν x',y': βx'+ py'=1 Πολλαπλασιάζουμε τις 2 σχέσεις... 27 9
Ανά δύο σχετικά πρώτοι Ανά δύο σχετικά πρώτοι αριθμοί n 1, n 2, n 3,.., n k : Για κάθε i,j με i j: gcd(n i,n j ) = 1. 28 Παραγοντοποίηση Ακεραίων (1) Θεώρημα: Για όλους τους πρώτους p και για όλους τους ακέραιους α,β: p α β p α OR p β Απόδειξη με εις άτοπο απαγωγή 29 Παραγοντοποίηση Ακεραίων (2) Θεώρημα: Κάθε ακέραιος α μπορεί να γραφεί με μοναδικό τρόπο ως γινόμενο πρώτων παραγόντων: α = p 1 e1 p 2 e2 p r er όπου p i πρώτος, p 1 < p 2 <..< p r και e i θετικοί ακέραιοι. Αποδεικνύεται με εφαρμογή του προηγούμενου θεωρήματος 30 10
Μέγιστος Κοινός Διαιρέτης - ΜΚΔ Πρώτη ΙΔΕΑ για υπολογισμό ΜΚΔ: Παραγοντοποιούμε τους δύο αριθμούς e e e α = p p 2 L p r β= p 1 1 2 f 1 f p 2 1 2 όπου e i, f i 0. r f r r Lp Τότε gcd( α, β ) = p min( e1, f1 ) 1 p min( e2, f 2 ) 2 L p min( e r, fr ) r Η παραγοντοποίηση ενός ακεραίου δεν επιτυγχάνεται (μέχρι σήμερα) σε πολυωνυμικό χρόνο! Άρα αυτός ο τρόπος δεν είναι αποδοτικός. 31 Ευκλείδης (Euclid) Αλεξάνδρεια, 323 283 π.χ. Πηγές: wikipedia, wolfram 32 Αλγόριθμος του Ευκλείδη (1) Αναδρομικό Θεώρημα ΜΚΔ: Για κάθε α 0 και β > 0: gcd(α,β) = gcd(β, α mod β) Απόδειξη: Είναι θετικά και επιπλέον μπορεί να δείξει κανείς ότι το ένα μέρος διαιρεί το άλλο και επομένως πρέπει να ταυτίζονται. 33 11
Αλγόριθμος του Ευκλείδη (2) Περιγράφεται σε έργο του Ευκλείδη και είναι ίσως ο αρχαιότερος αλγόριθμος στον κόσμο // Euclid s GCD algorithm a,b integers >= 0 EUCLID (a,b) { if (b == 0) then return a; else return EUCLID(b, a mod b); } 34 Παράδειγμα Παράδειγμα: EUCLID(30,21) = EUCLID(21,9) = EUCLID(9,3) = EUCLID(3,0) = 3 // Euclid s GCD algorithm a,b integers >= 0 EUCLID (a,b) { if (b == 0) then return a; else return EUCLID(b, a mod b); } 35 Ανάλυση Ορθότητα Αλγορίθμου: Από το Αναδρομικό Θεώρημα ΜΚΔ. Τερματισμός Αλγορίθμου: Η δεξιά παράμετρος μειώνεται σε κάθε κλήση, άρα υποχρεωτικά θα τερματίσει. Πολυπλοκότητα Χρόνου: Θεωρούμε ότι α > β 1. Τότε η εκτέλεση Euclid(α,β) θα χρειαστεί O(log β) αναδρομικές κλήσεις. Ο ακριβής χρόνος εκτέλεσης του Αλγορίθμου του Ευκλείδη σχετίζεται με τους αριθμούς Fibonacci. Ακολουθία fibonacci: Όπου φ 1,61803 και ψ -0,61803 36 12
Extended Euclid Algorithm Έχουμε ήδη δει το θεώρημα: Εάν α, β ακέραιοι, τέτοιοι ώστε α + β > 0 τότε gcd(α,β) είναι το μικρότερο θετικό στοιχείο του συνόλου {α x+β y: x,y Z}. Ο αλγόριθμος του Ευκλείδη υπολογίζει το μέγιστο κοινό διαιρέτη, όχι όμως τις τιμές των x και y του παραπάνω θεωρήματος. Μπορούμε να επεκτείνουμε τον αλγόριθμο του Ευκλείδη ώστε να μας υπολογίζει και τα κατάλληλα x και y. 37 Επεκταμένος Αλγόριθμος του Ευκλείδη (Extended Euclid Algorithm) 38 Επεκταμένος Αλγόριθμος του Ευκλείδη // Extended Euclid algorithm ExtEuclid(a,b) if (b == 0) then return (a,1,0); else (d,x',y') = ExtEuclid(b,a mod b); (d,x,y) = (d',y',x'- a/b y'); return (d,x,y); 39 13
Extended-Euclid(30,21) ExtEuclid(a,b) if (b == 0) then return (a,1,0); else (d,x',y') = ExtEuclid(b,a mod b); (d,x,y) = (d',y',x'- a/b y'); return (d,x,y); a b a/b d x y 30 21 1 3-2 3 21 9 2 3 1-2 9 3 3 3 0 1-3*0=1 3 0-3 1 0 gcd(30,21) = 3 = (-2) * 30 +3 * 21 40 Extended-Euclid(99,69) ExtEuclid(a,b) if (b == 0) then return (a,1,0); else (d,x',y') = ExtEuclid(b,a mod b); (d,x,y) = (d',y',x'- a/b y'); return (d,x,y); a b a/b d x y 99 69 1 3 7-10 69 30 2 3-3 7 30 9 3 3 1-3 9 3 3 3 0 1 3 0-3 1 0 gcd(99,69) = 3 = 7 * 99 10 * 69 41 Αριθμητική Modulo 42 14
Αριθμητική Modulo Μοιάζει με την κοινή αριθμητική με τη διαφορά ότι το αποτέλεσμα υπολογίζεται modulo n, και επομένως κάθε αποτέλεσμα είναι ένας αριθμός του συνόλου {0,1,2,..,n-1} Αυτή η χαλαρή περιγραφή αρκεί σε γενικές γραμμές. Μια πιο αυστηρή θεώρηση βασίζεται στη θεωρία Ομάδων (Αβελιανές Ομάδες) 43 Modular πράξεις Το σύνολο υπολοίπων: Ζ/N Z={0,1,,N-1} Η αναγωγή: a b mod N iff ( a b) N...-2-1 0 1 2... N-1 N... N-1 0 1 2 44 Μερικές ενδιαφέρουσες ιδιότητες a+b mod(n)=(a mod(n) + b mod(n)) mod(n) a*b mod(n)=(a mod(n) * b mod(n)) mod(n) Πολύ χρήσιμα στον υπολογισμό του g X mod(n) 45 15
Modular αριθμητική a+b mod 6 a b mod 6 46 Αβελιανές Ομάδες Ομάδα: Σύνολο S και Δυαδική Πράξη *, όπου ισχύουν: i. Κλειστότητα ii. iii. iv. Ταυτότητα Προσεταιριστικότητα Αντίστροφος Εάν ισχύει και η αντιμεταθετική ιδιότητα: Αβελιανή Ομάδα Ορίζονται δύο Αβελιανές Ομάδες, μία για κάθε πράξη. Πρόσθεση modulo n Πολλαπλασιασμός modulo n 47 Υποομάδα Εάν (S, ) είναι ομάδα και S S και (S, ) επίσης ομάδα, τότε (S, ) είναι υποομάδα της (S, ). Παράδειγμα: (Z,+): Το σύνολο των ακεραίων μαζί με την πράξη του αθροίσματος είναι ομάδα (άρτιοι ακέραιοι, +): Το σύνολο των άρτιων ακεραίων με την πράξη του αθροίσματος είναι επίσης ομάδα, και επομένως υποομάδα της (Z,+) Θεώρημα: Κάθε κλειστό υποσύνολο μιας πεπερασμένης ομάδας είναι υποομάδα. 48 16
Αναγνωρίστε τις ομάδες <Ζ/nΖ, *> 49 Θεώρημα Lagrange Ομάδα (S, ) και Υποομάδα (S', ) S' είναι διαιρέτης του S. Εφαρμόζεται στη διαδικασία ελέγχουν των Miller-Rabin για το εάν ένας αριθμός είναι πρώτος Corollary: S' S S' S /2 50 Υποομάδα παραγόμενη από ένα στοιχείο α Έστω α ένα στοιχείο μιας ομάδας (S, ) Το σύνολο όλων των στοιχείων που μπορούν να πραχθούν από το α χρησιμοποιώντας την πράξη συμβολίζεται α ή ( α, ) και είναι μια υποομάδα της (S, ) 51 17
Κυκλικές ομάδες (Cyclic Groups) Μια ομάδα G είναι κυκλική, εάν υπάρχει στοιχείο g της G, τέτοιο ώστε όλα τα μέλη της G μπορούν να γραφούν ως g n για κάποιο n. Τότε g είναι γεννήτορας της G και συμβολίζεται G = g Επομένως, μια ομάδα (S, ) είναι κυκλική ομάδα (cyclic group) εάν S = x, για κάποιο x S. Δηλαδή τα στοιχεία του S είναι οι δυνάμεις του στοιχείου x και x είναι ένας γεννήτορας της ομάδας. Για παράδειγμα η ομάδα Z 7* παράγεται από το στοιχείο 3 της ομάδας. 52 Υποομάδες: Τάξη Υποομάδες που παράγονται από τους γραμμικούς συνδυασμούς ενός στοιχείου μια ομάδας. Τάξη (Order) στοιχείου α S, ord(α): Το ελάχιστο t > 0 τέτοιο ώστε α t = e (ουδέτερο στοιχείο της ομάδας ή αλλιώς μονάδα ). Θεώρημα: Για κάθε πεπερασμένη ομάδα και κάθε στοιχείο α της ομάδας ord(α) = α, δηλαδή η τάξη του στοιχείου ισούται με τον πληθάριθμο της ομάδας που παράγει το στοιχείο. Για παράδειγμα ποια είναι η τάξη ord(3) του στοιχείου 3 στην ομάδα Z 7* ; 53 Γραμμικές Εξισώσεις Modulo Επίλυση modular γραμμικών εξισώσεων α x β (mod n), για n > 0 Δίνονται τα α,β,n και ζητούνται τα x mod n. Μπορεί να υπάρχουν 0,1 ή περισσότερες λύσεις α x β (mod n) α x = d n + β α x d n = β Για β=1 παίρνουμε τον πολλαπλασιαστικό αντίστροφο του α modulo n. 54 18
Δύο Αβελιανές Ομάδες Αβελιανή Ομάδα: + mod n Z n = {[α] n : 0 α n-1 } Πχ. Z 8 κλειστό ως προς + mod 8 Αβελιανή Ομάδα: * mod n Z n * = {[α] n є Z n : gcd(α,n) = 1} Πχ. Z 15* κλειστό ως προς * mod 15 Τα (Z n,+ n ) και (Z n*,* n ) είναι πεπερασμένες αβελιανές ομάδες 55 Συνάρτηση φ() του Euler Ο πληθάριθμος του συνόλου Z n* ονομάζεται συνάρτηση φ(n) του Euler και ισούται: φ(n) = n Π p n (1-1/p) για όλους τους πρώτους p που διαιρούν τον n Έστω p, q πρώτοι. Τότε φ(p), φ(q), φ(p q) =? Leonhard Euler 15 April 1707 18 September 1783 πηγή: wikipedia 56 Συνάρτηση φ(n) του Euler Η φ(n) δίνει τον αριθμό των ακεραίων που είναι σχετικά πρώτοι με τον n. παράδειγμα: φ(10)= φ(11)= 57 19
Συνάρτηση φ(n) του Euler Η φ(n) δίνει τον αριθμό των ακεραίων που είναι σχετικά πρώτοι με τον n. παράδειγμα: φ(10)= φ(11)= Ενδιαφέρουσες περιπτώσεις: για πρώτο p, φ(p)=p-1 για πρώτους p, q και n=pq τότε φ(n)=(p-1)(q-1) 58 Γραμμικές εξισώσεις modulo n 59 Επίλυση Γραμμικών Εξισώσεων Modulo Εξίσωση με άγνωστο x: α x β (mod n), για n > 0 Ικανή και αναγκαία συνθήκη: Έχει λύση d β, όπου d=gcd(α,n) Πιο συγκεκριμένα, η εξίσωση έχει d διακριτές λύσεις, εάν d = gcd(α,n) δεν έχει λύση, διαφορετικά 60 20
Εύρεση των λύσεων Ένας τρόπος για να υπολογιστούν οι d λύσεις x 0, x 1,, x d-1 της εξίσωσης: Έστω x, y οι τιμές που παίρνουμε από τον Extended Euclid. Τότε: x 0 = x (b/d) mod n x i = (x 0 + i (n/d)) mod n, για i = 1,, d-1 61 Παραδείγματα 3 x = 2 (mod 7) 4 x = 3 (mod 8) 6 x = 4 (mod 8) 6 x = 1 (mod 13) 62 3 x = 2 (mod 7) Λύση: α = 3, n = 7 Αλγόριθμος Ευκλείδη: d = gcd(3,7) = 1 Το d=1 διαιρεί το β=1 και επομένως η εξίσωση έχει d=1 λύση. Extended Euclid Algorithm: d = 1 = gcd(3,7) = 3 (-2) + 7 1 x 0 = -2 (2/1) mod 7 x 0 = 3 63 21
4 x = 3 (mod 8) Λύση: α = 4, n = 8 Αλγόριθμος Ευκλείδη: d = gcd(4,8) = 4 Το d=4 δεν διαιρεί το β=3. Επομένως η εξίσωση αυτή δεν έχει λύση. 64 6 x = 4 (mod 8) Λύση: α = 6, n = 8 Αλγόριθμος Ευκλείδη: d = gcd(6,8) = 2 Το d=2 διαιρεί το β = 4 και επομένως η εξίσωση έχει d=2 λύσεις. Extended Euclid Algorithm: d = 2 = gcd(6,8) = 6 (-1) + 8 1 Οι d=2 λύσεις είναι: x 0 = x (b/d) mod n =-1 (4/2) mod 8 x 0 = 6 x i = (x 0 + i (n/d)) mod n, για i = 1,, d-1 x 1 =2 65 Πολλαπλασιαστικός Αντίστροφος H εξίσωση με άγνωστο x και b=1 α x 1(mod n), για n > 0 υπολογίζει τον πολλαπλασιαστικό αντίστροφο του α (mod n). Παράδειγμα: Η εξίσωση 6 x 1 (mod 13) έχει μοναδική λύση x = 11. Ισχύει 6 11 1 (mod 13). Μπορούμε να γράψουμε: Παρατηρήσεις: 6-1 mod n = 11 Ο πολλαπλασιαστικός αντίστροφος υπάρχει αν και μόνο εάν gcd(α,n) = 1. Εάν υπάρχει ο πολλαπλασιαστικός αντίστροφος, είναι μοναδικός. 66 22
Παραδείγματα 6 x = 1 (mod 5) 4 x = 1 (mod 8) 67 Εύρεση Πρώτων Αριθμών 68 Πόσοι είναι οι πρώτοι αριθμοί Θεώρημα του Ευκλείδη Έστω μια λίστα πρώτων αριθμών p 1, p 2,, p n. Ορίζω τον αριθμό p = p 1 p 2 p n + 1 Ο αριθμός p δεν διαιρείται από κανέναν από τους πρώτους αριθμούς της λίστας p 1, p 2,, p n Διακρίνουμε δύο περιπτώσεις: 1. ο p είναι πρώτος αριθμός 2. ο p είναι σύνθετος αριθμός, επομένως υπάρχει πρώτος αριθμός q που δεν ανήκει στη λίστα p 1, p 2,, p n και διαιρεί τον p Επομένως, είτε ισχύει το 1 είτε το 2, έχουμε βρει έναν επιπλέον πρώτο αριθμό για να συμπληρώσουμε τη λίστα. Η διαδικασία αυτή μπορεί να συνεχιστεί επ άπειρον. Συμπέρασμα: Υπάρχουν άπειροι πρώτοι αριθμοί! 69 23
Πυκνότητα πρώτων αριθμών Πυκνότητα των Πρώτων Αριθμών Έστω π(n) η συνάρτηση κατανομής πρώτων που μας δίνει το πλήθος των πρώτων αριθμών που είναι n Αποδεικνύεται ότι (Prime Number Theorem): π ( n) lim n = 1 n ln n Ποια λοιπόν η πιθανότητα, αν επιλέξουμε τυχαία έναν ακέραιο αριθμό αυτός να είναι ΠΡΩΤΟΣ; Η πιθανότητα για αριθμό n είναι 1/lnn Άρα για αριθμό 100 ψηφίων είναι ln(10 100 ) δηλ. περίπου 1/230 70 Bernhard Riemann Στην απόδειξη του Prime Number Theorem συνέβαλαν πολλοί σπουδαίοι μαθηματικοί, με κυριότερη τη συμβολή του Riemann Georg Friedrich Bernhard Riemann September 17, 1826 July 20, 1866) πηγή: wikipedia 71 Primality Testing (1) Δίνεται ένας ακέραιος n. Μπορούμε να αποφανθούμε αν είναι πρώτος; Μπορούμε να αποφασίσουμε σε πολυωνυμικό χρόνο εάν είναι πρώτος ή όχι (χωρίς να τον παραγοντοποιήσουμε) Για την παραγοντοποίηση δεν έχει βρεθεί πολυωνυμικός αλγόριθμος (με εξαίρεση το κβαντικό μοντέλο υπολογισμού) 72 24
Primality Testing (2) Τυχαιοκρατικός Αλγόριθμος (randomized algorithm) * Ισχύει: n prime Z + n = Zn 1 Μικρό θεώρημα του Fermat: a n 1(mod n) Δοκιμάζουμε για τυχαίες βάσεις α n και εάν επαληθεύεται συνεχώς υποθέτουμε ότι n πρώτος!! Ντετερμινιστικός Αλγόριθμος από Ινδούς ερευνητές: Agrawal, Kayal and Saxena (2002) 73 Θεωρήματα Θεώρημα του Lagrange (Lagrange Theorem in Group Theory) x φ(n) =1 mod n Joseph-Louis Lagrange (Giuseppe Luigi Lagrancia) 25 January 1736 10 April 1813 Πηγή: wikipedia Μικρό Θεώρημα του Fermat x p-1 =1 mod p Pierre de Fermat 1601 (??) 12 January 1665 Πηγή: wikipedia 74 Έλεγχος πρώτου αριθμού Βασική παρατήρηση από Θεωρία αριθμών: Εάν ο p είναι πρώτος αριθμός, τότε για κάθε ακέραιο 0 < α < p, είναι α p-1 mod p = 1. Αυτό ισχύει σπάνια εάν ο p είναι σύνθετος αριθμός. 75 25
Chinese Remainder Theorem Ερώτημα: Υπάρχουν ακέραιοι x που όταν διαιρεθούν με το 3, το 5 και το 7, δίνουν υπόλοιπο 2, 3, και 2 αντίστοιχα; Την απάντηση έδωσε το 100 μ.χ. περίπου ο κινέζος Sun-Tsŭ. 76 Chinese Remainder Theorem Έστω κ αριθμοί n i, i = 1,2,, κ τέτοιοι ώστε να είναι ανά δύο πρώτοι μεταξύ τους, και n=n 1 n 2 n k. Έστω οι αριθμοί α και β. Υπολογίζουμε τους αριθμούς α i =α mod n i και β i =β mod n i. Έχουμε την αντιστοιχία α (α 1,α 2,,α κ ) β (β 1,β 2,,β κ ) Τότε: (α + b) mod n ((α 1 +β 1 ) mod n 1,,,(α κ + β κ ) mod n k ) (α - b) mod n ((α 1 - β 1 ) mod n 1,,,(α κ - β κ ) mod n k ) (α b) mod n ((α 1 β 1 ) mod n 1,,,(α κ β κ ) mod n k ) 77 Chinese Remainder Theorem Έστω κ αριθμοί n i, i = 1,2,, κ τέτοιοι ώστε να είναι ανά δύο πρώτοι μεταξύ τους, και n=n 1 n 2 n k. Έστω οι αριθμοί α 1,α 2,,α κ. Τότε υπάρχει αριθμός x που να λύνει το παρακάτω σύστημα εξισώσεων modulo. x α 1 (mod n 1 ) x α 2 (mod n 2 ) x α k (mod n k ) Για το παράδειγμα: x 2 (mod 3) x 3 (mod 5) x 2 (mod 7) 78 26
Chinese Remainder Theorem Έστω κ αριθμοί n i, i = 1,2,, κ τέτοιοι ώστε να είναι ανά δύο πρώτοι μεταξύ τους, και n=n 1 n 2 n k. Κατεύθυνση Από τον αριθμό α μπορούμε εύκολα να βρούμε τα αi χρησιμοποιώντας τον τύπο α i =α mod n i Κατεύθυνση Από τους α 1,α 2,,α κ μπορούμε να βρούμε το α. Η διαδικασία όμως είναι λίγο πιο πολύπλοκη. 79 Εύρεση το α από α i Υπολογίζουμε αριθμούς m i = n / n i, για i=1,2,,κ Επομένως m i είναι το γινόμενο όλων των n j για j i Έστω c i = m i (m i -1 mod n i ), για i = 1,2,, κ Τότε α = (α 1 c 1 +α 2 c 2 + +α κ c κ ) (mod n) Παράδειγμα: α 1 =2, α 2 =3, α 3 =2 n 1 =3, n 2 =5, n 3 =7 m 1 =35, m 2 =21, m 3 =15 m 1-1 mod 3= m 2-1 mod 5= m 3-1 mod 7= c1, c2, c3 α 80 Chinese Remainder Theorem Παράδειγμα: x 2 (mod 3) x 3 (mod 5) x 2 (mod 7) Λύση: x = 23, καθώς και κάθε αριθμός της ακολουθίας x = 23 + 105 k. 81 27
Υπολογισμός Δυνάμεων β a mod n Υπολογίζουμε τη δύναμη αποδοτικά υψώνοντας συνεχώς στο τετράγωνο πολλαπλασιάζοντας με α Παράδειγμα:c=7 9 mod 11, c=c c mod 11 (τρεις φορές διαδοχικά) c=c 7 mod 11 82 Modular εκθετοποίηση g α =x mod n Δοθέντος α,g είναι εύκολη η εύρεση του x Δοθέντος g,x είναι δύσκολη η εύρεση του a Πρόβλημα διακριτού λογάριθμου Δοθέντος α,x είναι δύσκολη η εύρεση του g, εκτός εάν είναι γνωστή η παραγοντοποίηση του n Πρόβλημα εύρεσης διακριτής ρίζας 83 Υπολογισμός g a =x mod n Νόμοι εκθετοποίησης x a x b =x a+b (x a ) b =x a b 84 28
Υπολογισμός g a =x mod n τετραγωνισμός και πολλαπλασιασμός x 13 = x 8 x 4 x 1 = (x 4 ) 2 (x 2 ) 2 x = (x 4 x 2 ) 2 x = ((x 2 ) 2 x 2 ) 2 x = ((x 2 x) 2 ) 2 x δηλ. 5 πολλαπλασιασμοί αντί 12 πολλαπλ. 85 Υπολογισμός g a =x mod n ModularExponentiation(α,β,n) 1. x = 0 2. y = 1 3. Έστω <β κ,β κ-1,...,β 0 > η δυαδική αναπαράσταση του εκθέτη β. 4. for (i = κ; i >=0; i-- ) 5. x = 2 x 6. y = (y y) mod n 7. if (β i == 1) 8. x = x + 1 9. y = (y α) mod n 10. return y Η μεταβλητή x δεν χρησιμοποιείται στην ουσία από τον αλγόριθμο. Έχει τον ακόλουθο ρόλο για την κατανόηση της εξέλιξης του αλγορίθμου: Στο τέλος κάθε επανάληψης το τρέχον αποτέλεσμα y ισούται με y = α x mod n 86 Υπολογισμός g a =x mod n τετραγωνισμός και πολλαπλασιασμός x 13 : σε δυαδική μορφή : 13=(1101) 2 y=1 bit=1 : y1 x, xx 2 bit=0 : x(x 2 ) (x 2 )=x 4 bit=1 : yx x 4, x(x 4 ) (x 4 )=x 8 bit=1 : yx x 4 x 8 = x 13 87 29
Αλγόριθμος Diffie-Hellman (που είδαμε νωρίτερα) Συμφωνούμε όλοι στους αριθμούς: p και g Η Αλίκη επιλέγει α και υπολογίζει Α = g α mod n Ο Μπάμπης επιλέγει β και υπολογίζει Β=g β mod n Ανταλλάσσουν τα Α και Β μέσω ενός απροστάτευτου καναλιού επικοινωνίας: Η Αλίκη υπολογίζει k 1 = Β α και ο Μπάμπης k 2 =Α β. Ισχύει k 1 = k 2 = k Όσοι άλλοι άκουσαν τα Ακαι Βδεν μπορούν να βρουν το kαπό αυτά!! Επεκτείνεται και σε 3 ή περισσότερα άτομα 88 Ανταλλαγή κλειδιών κατά Diffie-Hellman Αλίκη 2. (τυχαία) επιλογή α και αποστολή του Α= g α mod p. 3. υπολογισμός του κλειδιού K = Β α mod N. 1. (δημόσια) συμφωνία σε g και modulus p K=Β α =(g β ) α =(g α ) β =Α β =K Μπάμπης 2. (τυχαία) επιλογή β και αποστολή του Β = g β mod p. 3. υπολογισμός του κλειδιού K = Α β mod N. 89 Ασύμμετρη κρυπτογραφία Δύο κλειδιά, δημόσιο e και ιδιωτικό d Μία συνάρτηση (απο)κρυπτογράφησς f() Μονόδρομη συνάρτηση με μυστική πόρτα Μήνυμα m (plaintext) κρυπτογράφηση: c=f e (m) Κρυπτοκείμενο c (ciphertext) αποκρυπτογράφηση: m=f d (c) 90 30
RSA Φάση Δημιουργίας Κλειδιών: 1. p, q (δύο μεγάλοι πρώτοι αριθμοί) 2. n = p q 3. e σχετικά πρώτος με το phi(n) = (p-1)(q-1) 4. d = e -1 mod phi(n) 5. P = (e,n) PUBLIC KEY 6. S = (d,n) SECRET KEY Φάση Εφαρμογής του RSA (σε μήνυμα m): ENCRYPT: C = P(m) = m e (mod n) DECRYPT: m = S(C) = C d (mod n) 91 Κρυπτογράφηση RSA τμήματος Το modulus n καθορίζει το (μέγιστο) μέγεθος του τμήματος Πρακτική κρυπτογράφηση: χρήση συνάρτηση αντιστοίχισης πχ: a-->10, b-->11,...,z-->35 αντιστοίχιση του μηνύματος σε έναν ακέραιο διαμερισμός του ακεραίου σε αριθμούς < n Παράδειγμα κρυπτογράφηση stars με e=3, n=1189: stars --> 2829102728 282 910 272 8 282 3 mod 1189 = 39 910 3 mod 1189 = 635 272 3 mod 1189 = 1012 8 3 mod 1189 = 512 c = (39,635,1012,512) 31
Ορθότητα του RSA Έστω RSA με παραμέτρους p, q, n = p q και phi(n) = (p-1) (q-1) και ζεύγος κλειδιών δημόσιο κλειδί (e,n) μυστικό κλειδί (d,n) Έστω μήνυμα m Τότε c = m e (mod n) και το αποτέλεσμα της αποκρυπτογράφησης είναι c d (mod n) = m ed (mod n) Θα δείξουμε ότι m ed (mod n) = m 94 m ed (mod n) = m Τα e και d είναι πολλαπλασιαστικοί αντίστροφοι mod phi(n), με phi(n)=(p-1) (q-1) Επομένως e d = 1 (mod phi(n)) ή ισοδύναμα e d = 1 + k (p-1) (q-1), για κάποιο κατάλληλο k. Θα δείξουμε ότι m ed = m (mod p) Eάν m = 0 (mod p) τότε και m ed = 0 (mod p) Εάν m 0 (mod p) τότε m ed =m (m p-1 ) k(q-1) (mod p) =m ( (m mod p) p-1 ) k(q-1) (mod p) =m ( 1 ) k(q-1) (mod p) =m (mod p) Όμοια προκύπτει ότι m ed = m (mod q) Οι αριθμοί p και q είναι σχετικά πρώτοι μεταξύ τους (έτσι και αλλιώς, αφού είναι πρώτοι αριθμοί) Επομένως εφαρμόζεται το Chinese Remainder Theorem n 1 =p, n 2 =q, n = n 1 n 2 και παίρνουμε m ed = m (mod n) 95 Ασφάλεια του RSA Η ασφάλεια αλλά και η πρακτικότητα του RSA βασίζονται στις παρακάτω διαπιστώσεις/υποθέσεις: Είναι υπολογιστικά εφικτό να βρεθούν πολύ μεγάλοι (πχ. 1024 ή 2048 bits) τυχαίοι πρώτοι αριθμοί Δεν είναι υπολογιστικά εφικτό (μέχρι σήμερα) να παραγοντοποιηθούν ακέραιοι που ισούνται με το γινόμενο πολύ μεγάλων πρώτων αριθμών 96 32
ElGamal ElGamal cryptosystem: Πιθανοκρατικό Κρυπτοσύστημα Δημοσίου Κλειδιού Ο αλγόριθμος ElGamal μπορεί να χρησιμοποιηθεί αντί του RSA Πιθανόν ασφαλέστερος Η ασφάλεια του βασίζεται σε πρόβλημα σχετικό με τον υπολογισμό του διακριτού λογαρίθμου (discrete logarithm) Επίσης δημοφιλές είναι το Paillier cryptosystem 97 ElGamal Πιθανοκρατική κρυπτογράφηση (probabilistic encryption): Το ίδιο αρχικό μήνυμα κρυπτογραφείται κάθε φορά σε διαφορετικό κρυπτοκείμενο. Πλεονέκτημα: Ακόμα και εάν κάποιος υποψιάζεται το περιεχόμενο ενός κρυπτογραφημένου μηνύματος δεν μπορεί να επαληθεύσει ότι είναι πράγματι αυτό (χρησιμοποιώντας μόνο το δημόσιο κλειδί). Μειονέκτημα του ElGamal: Το κρυπτοκείμενο που παράγει ο ElGamal είναι διπλάσιο σε μέγεθος από το αρχικό κείμενο. 98 Υπολογιστική Πολυπλοκότητα Υπολογιστική πολυπλοκότητα του ερωτήματος εάν ένας ακέραιος αριθμός πρώτος ή σύνθετος; Απαντιέται σε πολυωνυμικό χρόνο Παραγοντοποίηση ενός σύνθετου ακεραίου αριθμού Δεν έχει βρεθεί πολυωνυμικός αλγόριθμος Όμως, ΔΕΝ είναι NP-Complete 99 33
Κβαντικοί Υπολογιστές Στο μοντέλο του κβαντικού υπολογισμού υπάρχει πολυωνυμικός αλγόριθμος που παραγοντοποιεί ακέραιους αριθμούς!! Έχουν υλοποιηθεί στοιχειώδεις κβαντικοί υπολογιστές (μερικών bit) σε περιβάλλον εργαστηρίου Άμεσα αλλά και μεσοπρόσθεσμα δε φαίνεται να μπορούν να κατασκευαστούν πρακτικά χρήσιμοι κβαντικοί υπολογιστές 100 Πηγές/Αναφορές Κεφάλαιο 31 Number-Theoretic Algorithms από το βιβλίο Introduction to Algorithms, T. Cormen, C. Leiserson, R. Rivest, C. Stein, Second Edition, MIT Press, 2001 Θεωρία Αριθμών (Κεφάλαιο 2), Τεχνικές Κρυπτογραφίας & Κρυπτανάλυσης, Κάτος, Στεφανίδης, Εκδ. Ζυγός, Διαφάνειες Β. Κάτου, Επίκ. Καθηγητή ΔΠΘ Σύγχρονη Κρυπτογραφία Θεωρία και Εφαρμογές, Κεφάλαια 2 και 3 101 34