… στέλνοντας μυστικά σε μία κάρτ ποστάλ… Κρυπτογράφηση με χρήση Δημοσίου Κλειδιού (Public Key Cryptography – PKC) … στέλνοντας μυστικά σε μία κάρτ ποστάλ…
Σύνοψη Πρόβλημα: θέλω να στείλω μήνυμα σε κάποιον δημόσια χωρίς να μπορούν να το καταλάβουν οι άλλοι Λύση: το κωδικοποιώ Γνωρίζω τον παραλήπτη: συμφωνώ από πριν μαζί του στη χρήση κάποιου μυστικού κλειδιού γνωστού και στους δυο μας – όχι ασφαλές Δε γνωρίζω τον παραλήπτη: κωδικοποιώ το μήνυμα ώστε να μην το καταλαβαίνουν οι άλλοι αλλά τότε δεν το καταλαβαίνει ούτε ο παραλήπτης…
Σύνοψη Πρόβλημα: θέλω να στείλω μήνυμα σε κάποιον δημόσια χωρίς να μπορούν να το καταλάβουν οι άλλοι Γενικά: δε γνωρίζω τον παραλήπτη και θέλω να συμφωνήσω μαζί του με δημόσια επικοινωνία σε μυστικό κωδικό που να τον ξέρουμε μόνο οι δυο μας Ανάμειξη χρωμάτων: ο αντίπαλος «δεν μπορεί» να κάνει ξε-ανακάτεμα χρωμάτων Πολλαπλασιασμός: ο αντίπαλος «δεν μπορεί» να κάνει διαίρεση (μη ρεαλιστικό) Ύψωση σε δύναμη: ο αντίπαλος «δεν μπορεί» να κάνει παραγοντοποίηση (ρεαλιστικό με την τρέχουσα τεχνολογία)
Το πρόβλημα… Μάς αρέσει να κουτσομπολεύουμε και να μοιραζόμαστε μυστικά… και επειδή στόχος της κρυπτογράφησης είναι η επικοινωνία μυστικών, είμαστε από τη φύση μας σε θέση να κρυπτογραφούμε Δεν συμβαίνει το ίδιο με τους υπολογιστές… Μεταφέρουμε ένα μυστικό σε έναν φίλο με το να του το ψιθυρίσουμε στο αυτί του... Ένας υπολογιστής δεν μπορεί να ψιθυρίσει έναν αριθμό πιστωτικής κάρτας σε έναν άλλο υπολογιστή… Ειδικά αν είναι συνδεδεμένοι στο internet, δεν μπορούν να ελέγξουν από πού περνάει ο αριθμός της πιστωτικής κάρτας ούτε ποιοι άλλοι υπολογιστές μπορούν να τον μάθουν/υποκλέψουν… Στη συνέχεια, θα δούμε πώς λύνεται το πρόβλημα αυτό για τους υπολογιστές με χρήση μιας από τις πιο εντυπωσιακές ιδέες της επιστήμης των υπολογιστών: της κρυπτογράφησης με χρήση δημοσίου κλειδιού (public key cryptography)
Το πρόβλημα…
… στέλνοντας μυστικά σε μία κάρτ ποστάλ… Το φανταζόμαστε σαν αναλογία για να κατανοήσουμε τη δύναμη της κρυπτογράφησης με χρήση δημοσίου κλειδιού Στα αλήθεια, αν θέλαμε να στείλουμε σε κάποιον ένα εμπιστευτικό έγγραφο, θα το βάζαμε σε έναν φάκελο και θα τον κλείναμε καλά πριν τον στείλουμε Αυτό δεν εγγυάται σώνει και καλά διατήρηση του απορρήτου, αλλά είναι μια λογική προσέγγιση Αν επιλέξουμε να γράψουμε το εμπιστευτικό μήνυμα σε μια καρτ ποστάλ, προφανώς το απόρρητο παραβιάζεται: οποιοσδήποτε πιάνει την καρτ ποστάλ (π.χ., ταχυδρόμος) μπορεί να διαβάσει το μήνυμα: αυτό είναι το πρόβλημα που αντιμετωπίζει ένας υπολογιστής όταν προσπαθεί να επικοινωνήσει εμπιστευτικά με κάποιον άλλον υπολογιστή στο internet Επειδή κάθε μήνυμα στο internet ταξιδεύει μέσα από πολλούς υπολογιστές που λέγονται δρομολογητές (routers), οποιοσδήποτε έχει πρόσβαση σε αυτούς τους δρομολογητές (συμπεριλαμβανομένων κακόβουλων υποκλοπέων) μπορεί να δει το περιεχόμενο του μηνύματος Επομένως, κάθε κομματάκι πληροφορίας που φεύγει από τον υπολογιστή και διοχετεύεται στο internet πρέπει να αντιμετωπίζεται σαν να είναι γραμμένο σε μία καρτ ποστάλ!
… στέλνοντας μυστικά σε μία κάρτ ποστάλ…
… στέλνοντας μυστικά σε μία κάρτ ποστάλ…
Λύση;;; Γιατί να μην χρησιμοποιήσουμε έναν μυστικό κωδικό για να κρυπτογραφήσουμε το κάθε μήνυμα πριν το γράψουμε στην καρτ ποστάλ; Αυτό θα δούλευε αν ήδη γνωρίζουμε τον παραλήπτη της καρτ ποστάλ αφού θα μπορούσαμε να έχουμε συμφωνήσει (στο παρελθόν) να χρησιμοποιούμε κάποιον μυστικό κωδικό που θα γνωρίζαμε και οι δύο Και πάλι δεν είναι εγγυημένο το αδιάβλητο της επικοινωνίας… (γιατί;) Το πραγματικό πρόβλημα προκύπτει όταν στέλνουμε την καρτ ποστάλ σε παραλήπτη που δεν γνωρίζουμε: αν χρησιμοποιήσουμε μυστικό κωδικό για να κρυπτογραφήσουμε το μήνυμα στην καρτ ποστάλ, οι ταχυδρόμοι δεν θα μπορούν να διαβάσουν το μήνυμα, αλλά δεν θα μπορεί να το διαβάσει ούτε ο παραλήπτης!
Κώδικας του (Ιουλίου) Καίσαρα Κάθε γράμμα του κειμένου αντικαθίσταται από ένα άλλο που βρίσκεται σε σταθερή απόσταση στο αλφάβητο Στον κώδικα του Καίσαρα χρησιμοποιείται μετατόπιση τριών θέσεων: B στο πρωτότυπο κείμενο γίνεται E στο κρυπτογραφημένο κείμενο ΣΗΜΕΡΑ ΕΙΝΑΙ ΩΡΑΙΑ ΜΕΡΑ ΦΚΟΘΥΔ ΘΜΠΔΜ ΓΥΔΜΔ ΟΘΥΔ Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω
Κώδικας του (Ιουλίου) Καίσαρα Ο κώδικας αυτός «σπάει» εύκολα (Α) Πόσες πιθανές μετατοπίσεις υπάρχουν; 24 (ελληνικά), 26 (αγγλικά) Μπορώ γρήγορα να τις δοκιμάσω όλες και να αποκρυπτογραφήσω το μήνυμα
Κώδικας του (Ιουλίου) Καίσαρα Ο κώδικας αυτός «σπάει» εύκολα (Β) Ανάλυση συχνότητας: εντοπίζω τα συχνότερα χρησιμοποιούμενα γράμματα και στα δύο κείμενα και υπολογίζω τη μετατόπιση που χρησιμοποιείται Υπάρχουν πίνακες με τις συχνότητες εμφάνισης των γραμμάτων κάθε γλώσσας: έστω – στα ελληνικά – το Α είναι το πιο συχνά χρησιμοποιούμενο γράμμα Παρατηρώ ότι στο κρυπτογραφημένο (κόκκινο) κείμενο το πιο συχνά εμφανιζόμενο γράμμα είναι το Δ (μπλε) Συμπεραίνω ότι το Δ κρυπτογραφεί το Α χρησιμοποιείται μετατόπιση = 3 Εφαρμόζω μετατόπιση 3 σε όλο το κρυπτογραφημένο κείμενο και λαμβάνω το αρχικό… ΣΗΜΕΡΑ ΕΙΝΑΙ ΩΡΑΙΑ ΜΕΡΑ ΦΚΟΘΥΔ ΘΜΠΔΜ ΓΥΔΜΔ ΟΘΥΔ
Λύση;;;
Λύση;;; Η δύναμη της κρυπτογράφησης με χρήση δημοσίου κλειδιού συνίσταται στο ότι επιτρέπει τη δημιουργία μυστικών κωδικών που μόνο ο παραλήπτης μπορεί να αποκρυπτογραφήσει παρά το ότι δεν μπορούμε να συμφωνήσουμε από πριν με τον παραλήπτη για το ποιος είναι ο μυστικός κωδικός Οι υπολογιστές αντιμετωπίζουν το ίδιο πρόβλημα όταν επικοινωνούν με παραλήπτες που δεν “γνωρίζουν” Όταν αγοράζουμε για πρώτη φορά από το Amazon.com χρησιμοποιώντας την πιστωτική μας κάρτα, ο υπολογιστής μας πρέπει να τον μεταδώσει στον εξυπηρετητή της Amazon Αλλά οι δύο υπολογιστές δεν έχουν επικοινωνήσει ξανά στο παρελθόν οπότε αποκλείεται να έχουν συμφωνήσει στη χρήση κάποιου μυστικού κωδικού Και κάθε συμφωνία που θα προσπαθήσουν να κάνουν είναι φανερή σε όλους τους δρομολογητές που μεσολαβούν μεταξύ αυτών των δύο υπολογιστών
Ανάγκη για κρυπτογράφηση… Η εκπληκτική ανάπτυξη του εμπορίου στο web κατέστη δυνατή λόγω της δυνατότητας αποστολής απόρρητων πληροφοριών (όπως π.χ., αριθμοί πιστωτικών καρτών) χωρίς να αποκαλύπτονται και με ασφάλεια στο Διαδίκτυο Το γεγονός ότι μπορεί να εγκαθιδρυθεί ασφαλής επικοινωνία πάνω από κανάλια «ανοιχτής πρόσβασης» θεωρούταν για δεκαετίες μη επιλύσιμο πρόβλημα Όταν βρέθηκε η λύση, αποδείχθηκε ότι ήταν εξαιρετικά κομψή…
Κρυπτογράφηση με διαμοιραζόμενο μυστικό Υποθέστε ότι επιτρέπεται η προφορική επικοινωνία σε ένα δωμάτιο όπου είμαστε με το φίλο μας Arnold και με την κακιά Eve και επιθυμούμε να πούμε κάτι στον Arnold – π.χ., έναν αριθμό μεταξύ του 1 και του 9, ας πούμε τον 7 - χωρίς η Eve να μπορεί να το καταλάβει δεδομένου ότι μπορούμε να μιλάμε στον Arnold μόνο δυνατά ώστε η Eve να μπορεί να ακούει (δεν επιτρέπονται ψιθυρίσματα ούτε σημειωματάκια) Σκεφτόμαστε κάποιον αριθμό που γνωρίζει ο Arnold και δε γνωρίζει η Eve: ας πούμε ότι όταν ήμασταν μικροί παίζαμε με τον Arnold έξω από ένα σπίτι στην οδό Πανεπιστημίου 322 (υποθέτουμε ότι η Eve δε μάς ήξερε όταν ήμασταν μικροί) Λέμε δυνατά στον Arnold: “Θυμάσαι την οδό του σπιτιού που παίζαμε όταν ήμασταν μικροί; Αν πάρεις αυτόν τον αριθμό και του προσθέσεις αυτόν που θέλω να σου πω θα προκύψει ο αριθμός 329” Υποθέτοντας ότι ο Arnold θυμάται σωστά την οδό που παίζαμε, θα καταλάβει τον αριθμό που σκεφτήκαμε αν από το 329 αφαιρέσει τον αριθμό της οδού, δηλ., τον 322: 329-322=7 Εν τω μεταξύ, η Eve δεν μπορεί να καταλάβει τον αριθμό παρά το ότι άκουσε τη φράση που δυνατά είπαμε στον Arnold
Κρυπτογράφηση με διαμοιραζόμενο μυστικό Θέλω να μεταφέρω τον αριθμό 7 στον Arnold χωρίς να το καταλάβει η κακιά Eve Κάθε επικοινωνία πρέπει να είναι δημόσια “Αν στον αριθμό της οδού που ήταν το bar που πήγαμε χτες προσθέσεις τον αριθμό που θέλω να σου πω θα προκύψει ο αριθμός 329” Η Eve δεν ξέρει που πήγαμε χτες… Ο Arnold υπολογίζει 329-322=7 322: διαμοιραζόμενο μυστικό 329: κρυπτογραφημένο μήνυμα μέσω πρόσθεσης
Κρυπτογράφηση με διαμοιραζόμενο μυστικό Πώς είναι δυνατόν να δημιουργήσουμε και να διακινήσουμε δημόσια ένα μυστικό που να γνωρίζουμε μόνο εμείς και κάποιος άλλος; Η ιδέα με την πρόσθεση: Κρυπτογραφούμε το μήνυμα 7 προσθέτοντάς του το διαμοιραζόμενο μυστικό, 322. Ο Arnold μπορεί να το αποκρυπτογραφήσει αφαιρώντας το διαμοιραζόμενο μυστικό, αλλά η Eve δεν μπορεί…
Κρυπτογράφηση με διαμοιραζόμενο μυστικό Γιατί δουλεύει η μέθοδος αυτή; Εμείς και ο Arnold διαθέτουμε ένα διαμοιραζόμενο μυστικό: τον αριθμό 322. Επειδή και οι δύο γνωρίζουμε τον αριθμό αυτόν αλλά δεν τον γνωρίζει η Eve, μπορούμε να χρησιμοποιούμε αυτό το διαμοιραζόμενο μυστικό για να μεταδίδουμε μεταξύ μας οποιοδήποτε αριθμό θέλουμε: τον προσθέτουμε στο διαμοιραζόμενο μυστικό, ανακοινώνουμε δημόσια το άθροισμα – ο παραλήπτης αφαιρεί το διαμοιραζόμενο μυστικό και καταλαβαίνει τον αριθμό που διαλέξαμε ενώ η Eve παρά το ότι ακούει το άθροισμα δεν μπορεί να τον καταλάβει αφού δε γνωρίζει ποιον αριθμό πρέπει να αφαιρέσει… Σε αυτή την απλή ιδέα με την πρόσθεση ενός διαμοιραζόμενου μυστικού σε ένα ιδιωτικό μήνυμα βασίζεται εν πολλοίς η λειτουργία της κρυπτογράφησης στο internet: οι υπολογιστές χρησιμοποιούν συνεχώς το κόλπο αυτό εμπλουτισμένο με κάποιες επιπλέον λεπτομέρειες ώστε η επικοινωνία να είναι πραγματικά ασφαλής…
Κρυπτογράφηση με διαμοιραζόμενο μυστικό: στην πράξη; Οι διαμοιραζόμενοι κωδικοί που χρησιμοποιούν οι υπολογιστές είναι πολύ μεγαλύτεροι από τον αριθμό 322 της οδού που αναφέραμε: αν οι κωδικοί είναι πολύ μικροί, οποιοσδήποτε υποκλέπτει τη «συζήτηση» μπορεί εύκολα να δοκιμάσει όλες τις πιθανές εκδοχές Υποθέστε ότι χρησιμοποιούμε έναν 3-ψήφιο αριθμό οδού για να κρυπτογραφήσουμε έναν πραγματικό 16-ψήφιο αριθμό πιστωτικής κάρτας χρησιμοποιώντας την ιδέα με την πρόσθεση που περιγράψαμε Υπάρχουν 999 πιθανοί τριψήφιοι αριθμοί οδών, οπότε η κακιά Eve που ακούει τη συζήτησή μας μπορεί να φτιάξει μια λίστα με 999 πιθανούς αριθμούς, ένας από τους οποίους θα είναι και ο αριθμός της πιστωτικής μας κάρτας (με έναν υπολογιστή μπορούμε σε κλάσματα του δευτερολέπτου να δοκιμάσουμε τους 999 αριθμούς πιστωτικών καρτών, οπότε τριψήφιοι κωδικοί δεν επαρκούν για να δώσουν χρήσιμα διαμοιραζόμενα μυστικά…)
Κρυπτογράφηση με διαμοιραζόμενο μυστικό: στην πράξη; Αν ακούσετε ότι η κρυπτογράφηση χρησιμοποιεί συγκεκριμένο αριθμό bits, όπως π.χ., “128-bit encryption”, αυτό δηλώνει το πόσα ψηφία έχει το διαμοιραζόμενο μυστικό το οποίο καλείται “κλειδί - key” επειδή χρησιμοποιείται για να “ξεκλειδώσει” ή αλλιώς να αποκρυπτογραφήσει ένα μήνυμα Το 30% του αριθμού των ψηφίων του κλειδιού δείχνει κατά προσέγγιση τον αριθμό των ψηφίων στο κλειδί: 30% του 128 είναι περίπου 38, οπότε ξέρουμε ότι η 128-bit κρυπτογράφηση χρησιμοποιεί κλειδί που είναι ένας αριθμός με 38 ψηφία ένας αριθμός με 38 ψηφία είναι μεγαλύτερος από έναν δις δις δις δις και επειδή ένας υπολογιστής χρειάζεται δισεκατομμύρια χρόνια για να δοκιμάσει τόσες πολλές εκδοχές ένα διαμοιραζόμενο μυστικό με 38 ψηφία θεωρείται πολύ ασφαλές
Κρυπτογράφηση με διαμοιραζόμενο μυστικό: στην πράξη; Αν ακούσετε ότι η κρυπτογράφηση χρησιμοποιεί συγκεκριμένο αριθμό bits, όπως π.χ., “128-bit encryption”, αυτό δηλώνει το πόσα ψηφία έχει το διαμοιραζόμενο μυστικό το οποίο καλείται “κλειδί - key” επειδή χρησιμοποιείται για να “ξεκλειδώσει” ή αλλιώς να αποκρυπτογραφήσει ένα μήνυμα Το 30% του αριθμού των ψηφίων του κλειδιού δείχνει κατά προσέγγιση τον αριθμό των ψηφίων στο κλειδί: 30% του 128 είναι περίπου 38, οπότε ξέρουμε ότι η 128-bit κρυπτογράφηση χρησιμοποιεί κλειδί που είναι ένας αριθμός με 38 ψηφία ένας αριθμός με 38 ψηφία είναι μεγαλύτερος από έναν δις δις δις δις και επειδή ένας υπολογιστής χρειάζεται δισεκατομμύρια χρόνια για να δοκιμάσει τόσες πολλές εκδοχές, ένα διαμοιραζόμενο μυστικό με 38 ψηφία θεωρείται πολύ ασφαλές Αναφερόμαστε σε δεκαδικά ψηφία όχι σε δυαδικά (bits). Το ποσοστό 30% για μετατροπή από bits σε δεκαδικά ψηφία (δίνεται δυαδικός αριθμός: πόσα ψηφία χρειάζονται για να γραφτεί στο δεκαδικό σύστημα) προέρχεται από το ότι: log10 2 ≈ 0.3.
Παράδειγμα 10011001 = 1+23+24+27=1+8+16+128=153 Ο 10011001 έχει μήκος 8 ψηφίων και είναι στο δυαδικό Ο 153 έχει μήκος 3 ψηφίων και είναι στο δεκαδικό σύστημα Για να αναπαραστήσω ένα δυαδικό αριθμό με 8 ψηφία στο δεκαδικό σύστημα χρειάστηκα: log102*8 ≈ 0,3*8=2,4 ≈3 ψηφία 11110011001 = 1+23+24+27+28+29 +210 =1+8+16+128+256+512+1024=1945 Ο 10011001 έχει μήκος 11 ψηφίων και είναι στο δυαδικό Ο 1945 έχει μήκος 4 ψηφίων και είναι στο δεκαδικό σύστημα Για να αναπαραστήσω ένα δυαδικό αριθμό με 11 ψηφία στο δεκαδικό σύστημα χρειάστηκα: log102*11 ≈ 0,3*11=3,3 ≈4 ψηφία 10κάτι=2: με χρήση 10 ψηφίων, τι μήκος λέξης θέλω για να πετύχω 2 διαφορετικές λέξεις (δηλ., τα ψηφία 0 και 1); log102 ≈ 0,3 2κάτι=16: με χρήση 2 ψηφίων, τι μήκος λέξης θέλω για να πετύχω 16 διαφορετικές λέξεις; log216=4
Κρυπτογράφηση με διαμοιραζόμενο μυστικό: στην πράξη; Επειδή τα αποτελέσματα που παράγει η πρόσθεση μπορούν να αναλυθούν στατιστικά με παρατήρηση μεγάλου πλήθους κρυπτογραφημένων μηνυμάτων, σύγχρονες μέθοδοι κρυπτογράφησης που καλούνται “block ciphers” χρησιμοποιούν μια παραλλαγή της ιδέας της πρόσθεσης: Μεγάλα μηνύματα κόβονται σε μικρά “blocks” συγκεκριμένου μεγέθους (συνήθως 10-15 χαρακτήρων). Μετά, αντί μόνο να προσθέσουμε κάθε block του μηνύματος με το κλειδί, κάθε block μετατρέπεται πολλές φορές με συγκεκριμένες πράξεις όπως η πρόσθεση έτσι ώστε το μήνυμα και το κλειδί να αναμειχθούν πολύ καλά Π.χ., ένας κανόνας μπορεί να είναι: πρόσθεσε το πρώτο μισό του κλειδιού στο δεύτερο μισό του block, ανάστρεψε το αποτέλεσμα και πρόσθεσε το δεύτερο μισό του κλειδιού στο δεύτερο μισό του block Στην πραγματικότητα τέτοιοι κανόνες είναι εξαιρετικά πολύπλοκοι: σύγχρονες τεχνικές με block ciphers χρησιμοποιούν 10 ή παραπάνω “γύρους” μετατροπών ώστε το μήνυμα αναμειγμένο με το κλειδί να είναι εξαιρετικά δύσκολο να αναλυθεί με στατιστικούς ελέγχους και να αποκρυτπογραφηθεί Η πιο δημοφιλής τεχνική block cipher είναι η Advanced Encryption Standard (AES): στην πιο τυπική της έκδοση χρησιμοποιεί blocks των 16 χαρακτήρων, κλειδιά των 128 bit και 10 γύρους λειτουργιών ανάμειξης
Πώς δημιουργείται δημόσια ένα διαμοιραζόμενο κλειδί; Πώς δημιουργείται δημόσια ένα διαμοιραζόμενο κλειδί; Η κρυπτογράφηση στο internet βασίζεται στη κατάτμηση του μηνύματος σε blocks και σε χρήση παραλλαγής της ιδέας της πρόσθεσης για κρυπτογράφηση κάθε block Αλλά πώς δημιουργείται το διαμοιραζόμενο μυστικό; Στο παράδειγμα υποθέσαμε ότι ήμασταν φίλοι με τον Arnold και η Eve δεν μάς γνώριζε… Τι γίνεται αν είμαστε εντελώς ξένοι με τον Arnold και την Eve και παίζαμε το ίδιο παιχνίδι; Μπορούμε να δημιουργήσουμε ένα διαμοιραζόμενο μυστικό; Αν και εκ πρώτης όψεως φαίνεται αδύνατο, αποδεικνύεται ότι υπάρχει ένας πολύ έξυπνος τρόπος που λύνει το πρόβλημα: η λύση αποκαλείται ανταλλαγή κλειδιού Diffie-Hellman – εμείς θα την αναφέρουμε σαν ιδέα ανάμειξης χρωμάτων…
Η ιδέα της ανάμειξης χρωμάτων Βήμα 1: Διαλέγουμε ο καθένας ένα “ιδιωτικό χρώμα”
Η ιδέα της ανάμειξης χρωμάτων Βήμα 2: Ένας από εμάς ανακοινώνει δημόσια τα συστατικά ενός νέου, διαφορετικού χρώματος που καλείται “δημόσιο χρώμα”
Η ιδέα της ανάμειξης χρωμάτων Δημιουργούμε και δημοσιοποιούμε ο καθένας μια μίξη συνδυάζοντας ένα ποτήρι του δημόσιου χρώματος με ένα ποτήρι του ιδιωτικού μας χρώματος παράγοντας ένα “δημόσιο-ιδιωτικό μείγμα” + = + =
Η ιδέα της ανάμειξης χρωμάτων Βήμα 4: Λαμβάνουμε μια ποσότητα από το “δημόσιο-ιδιωτικό χρώμα” του Arnold, τη μεταφέρουμε στο μέρος μας και προσθέτουμε ένα ποτήρι του δικού μας ιδιωτικού χρώματος (το ίδιο κάνει και ο Arnold: λαμβάνει μια ποσότητα από το “δημόσιο-ιδιωτικό χρώμα” μας, τη μεταφέρει στο μέρος του και προσθέτει ένα ποτήρι του δικού του ιδιωτικού χρώματος) + = + =
Η ιδέα της ανάμειξης χρωμάτων Βήμα 4: Λαμβάνουμε μια ποσότητα από το “δημόσιο-ιδιωτικό χρώμα” του Arnold, τη μεταφέρουμε στο μέρος μας και προσθέτουμε ένα ποτήρι του δικού μας ιδιωτικού χρώματος (το ίδιο κάνει και ο Arnold: λαμβάνει μια ποσότητα από το “δημόσιο-ιδιωτικό χρώμα” μας, τη μεταφέρει στο μέρος του και προσθέτει ένα ποτήρι του δικού του ιδιωτικού χρώματος) + = + = ?????
Η ιδέα της ανάμειξης χρωμάτων
Ανάμειξη χρωμάτων με αριθμούς Βήμα 1: Αντί να διαλέξετε ένα “ιδιωτικό χρώμα” εσύ και ο Arnold διαλέγετε ο καθένας έναν “ιδιωτικό αριθμό” (π.χ., 6 και 4, αντίστοιχα) Βήμα 2: Ένας από εσάς ανακοινώνει έναν “δημόσιο αριθμό” αντί για ένα δημόσιο χρώμα που είπαμε πριν (π.χ., 7) Βήμα 3: Πολλαπλασίασε τον ιδιωτικό σου αριθμό (π.χ., 6) με το δημόσιο αριθμό (π.χ., 7) για να προκύψει ο “δημόσιος-ιδιωτικός αριθμός” σου, δηλ., ο 42 Βήμα 4: Λαμβάνεις το δημόσιο-ιδιωτικό αριθμό του Arnold, που είναι ο 28, και τον πολλαπλασιάζεις με το δικό σου ιδιωτικό αριθμό, δηλ., τον 6, για να προκύψει ο κοινός (δημόσια διαμοιραζόμενος) μυστικός αριθμός, δηλ., ο 168
Η ιδέα της ανάμειξης χρωμάτων με αριθμούς Βήμα 1: Διαλέγουμε ο καθένας έναν “ιδιωτικό αριθμό” 4 6
Η ιδέα της ανάμειξης χρωμάτων με αριθμούς Βήμα 2: Ένας από εμάς ανακοινώνει δημόσια έναν “δημόσιο αριθμό” 4 6 7
Η ιδέα της ανάμειξης χρωμάτων με αριθμούς Βήμα 3: Πολλαπλασιάζουμε ο καθένας το δημόσιο αριθμό με τον ιδιωτικό μας αριθμό παράγοντας ένα “δημόσιο-ιδιωτικό αριθμό” 4x7=28 6x7=42 28 42 7
Η ιδέα της ανάμειξης χρωμάτων με αριθμούς Βήμα 4: Λαμβάνουμε το δημόσιο-ιδιωτικό αριθμό του Arnold, που είναι ο 42, και τον πολλαπλασιάζουμε με το δικό μας ιδιωτικό αριθμό, δηλ., τον 4, για να προκύψει ο κοινός (δημόσια διαμοιραζόμενος) μυστικός αριθμός, δηλ., ο 168 4x7=28 4x42=168 4x7x6=168 6x7=42 6x28=168 4x7x6=168 28 42 7
Η ιδέα της ανάμειξης χρωμάτων με αριθμούς Βήμα 4: Λαμβάνουμε το δημόσιο-ιδιωτικό αριθμό του Arnold, που είναι ο 42, και τον πολλαπλασιάζουμε με το δικό μας ιδιωτικό αριθμό, δηλ., τον 4, για να προκύψει ο κοινός (δημόσια διαμοιραζόμενος) μυστικός αριθμός, δηλ., ο 168 28 42 4x7=28 4x42=168 4x7x6=168 6x7=42 6x28=168 4x7x6=168 168 ??? 7
Ανάμειξη χρωμάτων με αριθμούς
Η ανάμειξη χρωμάτων στην πραγματικότητα… Δεν μπορώ να «ξε-ανακατέψω χρώματα» = δεν μπορώ να κάνω διαίρεση Απλή λειτουργία που είναι εύκολο να υλοποιηθεί (όπως το ανακάτεμα χρωμάτων) αλλά δύσκολο να αναιρεθεί (όπως το ξε-ανακάτεμα χρωμάτων): ανακάτεμα χρωμάτων: ύψωση σε ακέραια δύναμη (discrete exponentiation) ξε-ανακάτεμα χρωμάτων: λογαρίθμηση με ακέραια βάση (discrete logarithm) Δεν υπάρχει γνωστή μέθοδος που να επιτρέπει σε έναν υπολογιστή να υπολογίσει διακριτούς λογαρίθμους αποδοτικά Αριθμητική με χρήση ρολογιού (clock arithmetic): κάθε αριθμός απεικονίζεται στο υπόλοιπο που αφήνει η διαίρεσή του με το μέγεθος του ρολογιού… Χρήση ύψωσης σε δύναμη: 6 × 6 × 6 × 6 = 64 PPN = βάσηιδιωτικός αριθμός (μέγεθος ρολογιού)
Σκεφτείτε τα εξής… ΠΑΡΑΤΗΡΗΣΗ 1: Αν σας πω ότι το υπόλοιπο της διαίρεσης ενός αριθμού Χ με το 3 είναι 2, μπορείτε να μου πείτε ποιος είναι ο Χ;;;; ΠΑΡΑΤΗΡΗΣΗ 2: Αν σας πω ότι κρατάω (Λίστα 1) τα πιθανά υπόλοιπα της διαίρεσης ενός αριθμού με το 3, πόσες τιμές κρατάω; Αν κρατάω (Λίστα 2) τα πιθανά υπόλοιπα της διαίρεσης ενός αριθμού με το 1023, πόσες τιμές κρατάω;;;;;;
Σκεφτείτε τα εξής… ΠΑΡΑΤΗΡΗΣΗ 3: Αν σας ζητήσω να μαντέψετε ποιον αριθμό από κάθε λίστα διάλεξα τυχαία, πόσο πιθανό είναι να μαντέψετε σωστά; Η πρώτη λίστα περιέχει τους αριθμούς 0, 1 και 2 Διαλέγω το 0 (ή το 1 ή το 2) με πιθανότητα 1/3 Διαλέγετε το 0 (ή το 1 ή το 2) με πιθανότητα 1/3 Διαλέγουμε και οι δύο το 0 (ή το 1 ή το 2) με πιθανότητα 1/3 * 1/3 = 1/9 Διαλέγουμε και οι δύο το ίδιο νούμερο (ή το 0 ή το 1 ή το 2) με πιθανότητα 1/9+1/9+1/9=3/9=1/3=0,3333333 Η δεύτερη λίστα περιέχει τους αριθμούς 0, 1 …1022 Διαλέγω το 0 (ή το 1 ή … ή το 1022) με πιθανότητα 1/1023 Διαλέγετε το 0 (ή το 1 ή … ή το 1022) με πιθανότητα 1/1023 Διαλέγουμε και οι δύο το 0 (ή το 1 ή … ή το 1022) με πιθανότητα 1/1023 * 1/1023 = 1/1.046.529 Διαλέγουμε και οι δύο το ίδιο νούμερο (ή το 1 ή … ή το 1022) με πιθανότητα 1023*1/1.046.529 = 1/1023=0,000977517
Αριθμητική με χρήση ρολογιού… Με χρήση ρολογιού μεγέθους 7, ο αριθμός 12 απλοποιείται στον αριθμό 5: ξεκινάμε από το 0 και μετράμε 12 μονάδες κατά τη φορά του ρολογιού Με χρήση ρολογιού μεγέθους 7, βρίσκουμε ότι 12 + 6 = 4: ξεκινάμε από το 5 (που τελείωσε ο αριθμός 12) και προσθέτουμε άλλες 6 μονάδες κατά τη φορά του ρολογιού
Αριθμητική με χρήση ρολογιού… Οι πρώτες δέκα δυνάμεις του 2, 3 και 6 με χρήση ρολογιού μεγέθους 11. Κάθε απάντηση υπολογίζεται από την προηγούμενή της με απλή αριθμητική
Αριθμητική με χρήση ρολογιού… Οι πρώτες δέκα δυνάμεις του 2, 3 και 6 με χρήση ρολογιού μεγέθους 11. Κάθε απάντηση υπολογίζεται από την προηγούμενή της με απλή αριθμητική ΕΝΔΙΑΦΕΡΟΥΣΑ ΠΑΡΑΤΗΡΗΣΗ: έξυπνος συνδυασμός βάσης – μεγέθους ρολογιού δίνει τη δυνατότητα δημιουργίας περισσότερων χρήσιμων αποτελεσμάτων, δηλ., «μηνυμάτων»
Η ανάμειξη χρωμάτων στην πραγματικότητα… Βήμα 1: Εσύ και ο Arnold διαλέγετε ο καθένας έναν ιδιωτικό αριθμό (μικρότερο από το μέγεθος του ρολογιού) Βήμα 2: Εσύ και ο Arnold συμφωνείτε δημόσια σε δύο δημόσιους αριθμούς: ένα μέγεθος ρολογιού (χρησιμοποιούμε το 11 στο παράδειγμα) και έναν άλλο αριθμό που καλείται βάση (χρησιμοποιούμε σα βάση το 2) Βήμα 3: Εσύ και ο Arnold ο καθένας χωριστά δημιουργείτε έναν δημόσιο-ιδιωτικό αριθμό (PPN) αναμειγνύοντας τον ιδιωτικό σας αριθμό με τους δημόσιους, με χρήση δυνάμεων και αριθμητικής με χρήση ρολογιού Βήμα 4: Εσύ και ο Arnold ο καθένας χωριστά λαμβάνετε ο ένας το δημόσιο-ιδιωτικό αριθμό του άλλου και τον αναμειγνύετε με το δικό σας ιδιωτικό αριθμό
Πώς δημιουργούμε μια δημόσια κλειδαριά …με αριθμούς; 8 9 11,2
Πώς δημιουργούμε μια δημόσια κλειδαριά …με αριθμούς; 8 9 28mod11=3 29mod11=6 11,2 3 6
Πώς δημιουργούμε μια δημόσια κλειδαριά …με αριθμούς; 8 9 28mod11=3 29mod11=6 11,2 3 6 68mod11= 4 39mod11= 4
Πώς δημιουργούμε μια δημόσια κλειδαριά …με αριθμούς; 8 9 28mod11=3 29mod11=6 11,2 3 6 68mod11= 4 39mod11= 4 ??????
Κρυπτογράφηση Δημοσίου Κλειδιού (Public Key Cryptography-PKC) στην πράξη…
Κρυπτογράφηση Δημοσίου Κλειδιού (Public Key Cryptography-PKC) στην πράξη… Ανάμειξη αριθμών στην πραγματικότητα, Βήμα 4: Μόνο εσύ και ο Arnold μπορείτε να βρείτε το μυστικό αριθμό, συνδυάζοντας τα στοιχεία που δείχνονται με βέλη, με χρήση δυνάμεων και αριθμητικής με χρήση ρολογιού…
Πώς δημιουργείται δημόσια κοινό μυστικό κλειδί για επικοινωνία; g, p Το παρόν υλικό είναι μόνο για όσους ενδιαφέρονται για παραπάνω λεπτομέρειες. Δεν αποτελεί εξεταστέα ύλη για το μάθημα.
Πώς δημιουργείται δημόσια κοινό μυστικό κλειδί για επικοινωνία; g, p Επιλέγει μυστικό a Και υπολογίζει το a*=ga mod p Επιλέγει μυστικό b Και υπολογίζει το b*=gb mod p Το παρόν υλικό είναι μόνο για όσους ενδιαφέρονται για παραπάνω λεπτομέρειες. Δεν αποτελεί εξεταστέα ύλη για το μάθημα.
Πώς δημιουργείται δημόσια κοινό μυστικό κλειδί για επικοινωνία; a*, b* g, p Επιλέγει μυστικό a Και υπολογίζει το a*=ga mod p Επιλέγει μυστικό b Και υπολογίζει το b*=gb mod p Το παρόν υλικό είναι μόνο για όσους ενδιαφέρονται για παραπάνω λεπτομέρειες. Δεν αποτελεί εξεταστέα ύλη για το μάθημα.
Πώς δημιουργείται δημόσια κοινό μυστικό κλειδί για επικοινωνία; a*, b* g, p Επιλέγει μυστικό a Και υπολογίζει το a*=ga mod p Υπολογίζει το Κ=b*a mod p Επιλέγει μυστικό b Και υπολογίζει το b*=gb mod p Υπολογίζει το Κ=a*b mod p Το παρόν υλικό είναι μόνο για όσους ενδιαφέρονται για παραπάνω λεπτομέρειες. Δεν αποτελεί εξεταστέα ύλη για το μάθημα.
Πώς δημιουργείται δημόσια κοινό μυστικό κλειδί για επικοινωνία; a*, b* g, p Επιλέγει μυστικό a Και υπολογίζει το a*=ga mod p Υπολογίζει το Κ=b*a mod p=gba mod p Επιλέγει μυστικό b Και υπολογίζει το b*=gb mod p Υπολογίζει το Κ=a*b mod p=gba mod p Μπορεί να υπολογίσει μόνο το a*xb*=ga+b mod p που δεν είναι χρήσιμο για τον υπολογισμό του Κ Το παρόν υλικό είναι μόνο για όσους ενδιαφέρονται για παραπάνω λεπτομέρειες. Δεν αποτελεί εξεταστέα ύλη για το μάθημα.
Πώς δημιουργείται δημόσια κοινό μυστικό κλειδί για επικοινωνία; a*, b* g, p Επιλέγει μυστικό a Και υπολογίζει το a*=ga mod p Υπολογίζει το Κ=b*a mod p=gba mod p Επιλέγει μυστικό b Και υπολογίζει το b*=gb mod p Υπολογίζει το Κ=a*b mod p=gba mod p Για να υπολογίσει το a (ή το b) από το a*=ga mod p πρέπει να δοκιμάσει όλες τις τιμές a από 1 έως p-1 Το παρόν υλικό είναι μόνο για όσους ενδιαφέρονται για παραπάνω λεπτομέρειες. Δεν αποτελεί εξεταστέα ύλη για το μάθημα.
Κρυπτογράφηση Δημοσίου Κλειδιού (Public Key Cryptography-PKC) στην πράξη… Η τελική έκδοση της ιδέας με την ανάμειξη χρωμάτων, δηλ., η ανάμειξη αριθμών μέσω δυνάμεων και αριθμητικής με χρήση ρολογιού, είναι ένας από τους τρόπους που οι υπολογιστές εγκαθιδρύουν στην πράξη διαμοιραζόμενα μυστικά στο internet Η συγκεκριμένη μέθοδος που περιγράψαμε λέγεται αλγόριθμος ανταλλαγής κλειδιού Diffie-Hellman, και πήρε το όνομά του από τους Whitfield Diffie και Martin Hellman, που πρώτοι δημοσίευσαν τον αλγόριθμο το 1976
Κρυπτογράφηση Δημοσίου Κλειδιού (Public Key Cryptography-PKC) στην πράξη… Οποτεδήποτε επισκέπτεστε ένα ασφαλές website (κάποιο που ξεκινάει με “https:” αντί για “http:”), ο δικός σας υπολογιστής και ο web εξυπηρετητής με τον οποίο επικοινωνεί δημιουργούν ένα διαμοιραζόμενο μυστικό, χρησιμοποιώντας το πρωτόκολλο Diffie-Hellman ή κάποια παραλλαγή του Αφότου δημιουργηθεί αυτό το διαμοιραζόμενο μυστικό, οι δύο υπολογιστές μπορούν να κρυπτογραφήσουν όλη την επικοινωνία τους χρησιμοποιώντας μια παραλλαγή της ιδέας με την πρόσθεση που περιγράψαμε
Ο αλγόριθμος (πρωτόκολλο) Diffie-Hellman για ανταλλαγή κλειδιού Χρησιμοποιήσαμε πολύ μικρό μέγεθος ρολογιού (11) για να γίνονται εύκολα οι πράξεις Αλλά μικρό (δημόσιο) μέγεθος ρολογιού σημαίνει μικρό πλήθος πιθανών ιδιωτικών αριθμών (αφού μπορούμε να χρησιμοποιήσουμε μόνο ιδιωτικούς αριθμούς που είναι μικρότεροι από το μέγεθος ρολογιού) που σημαίνει ότι κάποιος μπορεί με έναν υπολογιστή να δοκιμάσει όλους τους πιθανούς ιδιωτικούς αριθμούς μέχρι να εντοπίσει κάποιον που παράγει το δικό μας δημόσιο-ιδιωτικό αριθμό Στο παράδειγμα: υπάρχουν μόνο 11 πιθανοί ιδιωτικοί αριθμοί, οπότε θα ήταν εξαιρετικά εύκολο να «σπάσει» κανείς το σύστημα Αντίθετα, πραγματικές υλοποιήσεις του πρωτοκόλλου Diffie-Hellman χρησιμοποιούν μέγεθος ρολογιού με μερικές εκατοντάδες ψηφία, που δίνει τη δυνατότητα παραγωγής εξαιρετικά μεγάλου πλήθους ιδιωτικών αριθμών (παραπάνω από τρισεκατομμύρια τρισεκατομμυρίων…) Ακόμα και τότε, οι δημόσιοι αριθμοί πρέπει να επιλέγονται με προσοχή, ώστε να έχουν τις σωστές μαθηματικές ιδιότητες …
8 9 28mod11=3 3 6 29mod11=6 68mod11= 4 39mod11= 4 11,2 Στόχος τους είναι να βρουν το 4… Για να το κάνουν αυτό χρειάζονται να βρουν το 9… Πρέπει να λύσουν την εξίσωση: 2Χmod11=6 Σε λίγα λεπτά με χρήση EXCEL έφτιαξα το διπλανό πίνακα και προσδιόρισα ότι το ζητούμενο Χ είναι το 9… Αν αντί για 11 χρησιμοποιούσα π.χ., το 47????
Όταν επιλέγεται μέγεθος ρολογιού και βάση για το πρωτόκολλο Diffie-Hellman, πρέπει να πληρούνται συγκεκριμένες μαθηματικές ιδιότητες… Ιδιότητα 1 (πολύ σημαντική): το μέγεθος του ρολογιού πρέπει να είναι πρώτος αριθμός – ώστε να μην έχει άλλους διαιρέτες εκτός από τον εαυτό του και το 1 (για να υπάρχει μεγάλος χώρος διαθέσιμων μηνυμάτων) Ιδιότητα 2: η βάση πρέπει να είναι πρωτοβάθμια ρίζα (primitive root) του μεγέθους του ρολογιού, δηλ., οι δυνάμεις της βάσης πρέπει τελικά να λαμβάνουν όλες τις δυνατές τιμές για κάθε πιθανό μέγεθος ρολογιού (για να μπορεί να αξιοποιηθεί ο μεγάλος χώρος διαθέσιμων μηνυμάτων)
Όταν επιλέγεται μέγεθος ρολογιού και βάση για το πρωτόκολλο Diffie-Hellman, πρέπει να πληρούνται συγκεκριμένες μαθηματικές ιδιότητες… Οι 2 και 6 είναι και οι δύο πρωτοβάθμιες ρίζες του 11, αλλά ο 3 δεν είναι – οι δυνάμεις του 3 κάνουν κύκλους στις τιμές 3,9,5,4,1 αλλά χάνουν τις τιμές 2,6,7,8 και 10
Πώς βρίσκω πρωτοβάθμιες ρίζες του μεγέθους του ρολογιού; Γενικά είναι δύσκολο πρόβλημα το καλύτερο που μπορώ να κάνω είναι εξαντλητική αναζήτηση Για να κάνω αναζήτηση σε λιγότερα στοιχεία κάνω το εξής: Έστω μέγεθος ρολογιού = 11 Υπολογίζω το 11-1=10 Παραγοντοποιώ το 10=2*5 Υπολογίζω τα πηλίκα: 10/2=5, 10/5=2 Για να είναι ένας αριθμός α είναι πρωτοβάθμια ρίζα του 11, θα πρέπει: α5mod111 και α2mod111 Οπότε δοκιμάζω α=1,2,3,4,5,6,…
αριθμός που έχει μοναδικούς διαιρέτες τον εαυτό του και τη μονάδα Όταν επιλέγεται μέγεθος ρολογιού και βάση για το πρωτόκολλο Diffie-Hellman, πρέπει να πληρούνται συγκεκριμένες μαθηματικές ιδιότητες… Πρώτος αριθμός αριθμός που μπορεί να γραφτεί σα γινόμενο μόνο του εαυτού του και της μονάδας - ή εναλλακτικά – αριθμός που έχει μοναδικούς διαιρέτες τον εαυτό του και τη μονάδα Π.χ., 2=1x2, 3=1x3, 5=1x5, 7=1x7, κοκ Αριθμοί που δεν είναι πρώτοι καλούνται σύνθετοι Π.χ., 4=2x2, 6=2x3, 8=2x4, 9=3x3, κοκ
Μπορώ να στείλω μόνο 2 κρυπτογραφημένα Το παρόν υλικό είναι μόνο για όσους ενδιαφέρονται για παραπάνω λεπτομέρειες. Δεν αποτελεί εξεταστέα ύλη για το μάθημα. ΠΡΟΒΛΗΜΑ: Μπορώ να στείλω μόνο 2 κρυπτογραφημένα μηνύματα τα 1 και 3…και κατά συνέπεια μόνο 2 μηνύματα τα 1 και 2 (όλα τα άλλα στέλνονται με την ίδια κωδικοποίηση…) f(x)=3xmod8 Αποστολέας Παραλήπτης 3 1
Μονόδρομες (ή μη αντιστρέψιμες) συναρτήσεις Το παρόν υλικό είναι μόνο για όσους ενδιαφέρονται για παραπάνω λεπτομέρειες. Δεν αποτελεί εξεταστέα ύλη για το μάθημα. Μονόδρομες (ή μη αντιστρέψιμες) συναρτήσεις Δεδομένου του x είναι εύκολο να υπολογιστεί το f(x) αλλά δεδομένου του f(x) είναι δύσκολο να υπολογιστεί το x (κατ’ αναλογία με την ανάμειξη χρωμάτων) Π.χ., διακριτός λογάριθμος: το να βρω για ποιο x ισχύει f(x)=αxmodβ (ύψωση σε δύναμη) Υποθέστε ότι α=2 και β=7 Δεδομένο: x=2, εύκολα υπολογίζουμε την f(x)=22mod7=4 Δεδομένο: f(x)=4, είναι δύσκολο να υπολογιστεί το x (αν είναι 1, 2, 3, 4, 5, 6) Δεν υπάρχει απόδειξη ότι το πρόβλημα είναι NP-complete αλλά δεν έχει προταθεί ακόμα πολυωνυμικός αλγόριθμος για το πρόβλημα x=??? f(x) 4 4 x 2 f(x) αxmodβ 2xmod7 αxmodβ 2xmod7 ΕΥΚΟΛΟ (ύψωση σε δύναμη) ΔΥΣΚΟΛΟ (διακριτός λογάριθμος)
Μονόδρομες (ή μη αντιστρέψιμες) συναρτήσεις Το παρόν υλικό είναι μόνο για όσους ενδιαφέρονται για παραπάνω λεπτομέρειες. Δεν αποτελεί εξεταστέα ύλη για το μάθημα. Μονόδρομες (ή μη αντιστρέψιμες) συναρτήσεις Δεδομένου του x είναι εύκολο να υπολογιστεί το f(x) αλλά δεδομένου του f(x) είναι δύσκολο να υπολογιστεί το x (κατ’ αναλογία με την ανάμειξη χρωμάτων) Π.χ., παραγοντοποίηση: να βρω ποιοι πρώτοι αριθμοί p και q δίνουν το f(p,q)=p*q (πολλαπλασιασμός) Δεδομένο: p=11 και q=13, εύκολα υπολογίζουμε την f(x)=11*13=143 Δεδομένο: f(p,q)=143, είναι δύσκολο να αναλύσουμε το 143 σε γινόμενο πρώτων παραγόντων (11*13)… Ο μόνος διαθέσιμος τρόπος είναι με δοκιμές σε μεγάλο πλήθος υποψήφιων παραγόντων Δεν υπάρχει απόδειξη ότι το πρόβλημα είναι NP-complete αλλά δεν έχει προταθεί ακόμα πολυωνυμικός αλγόριθμος για το πρόβλημα x=??? f(p,q) p,q=??? 143 p,q f(p,q) 11,13 143 p*q 11*13 factorize(p*q) factorize(143) ΕΥΚΟΛΟ (γινόμενο ακεραίων) ΔΥΣΚΟΛΟ (παραγοντοποίηση)
Η Eve έστω κι αν γνωρίζει τα Α=gb mod p, Β=ga mod p, p, g δεν μπορεί να υπολογίσει γρήγορα τα a και b (διακριτός λογάριθμος) ώστε να πάρει το s γιατί ο μόνος τρόπος να το κάνει απαιτεί να ψάξει «όλους» τους πιθανούς εκθέτες a ή b… (που είναι οι τιμές από 1 έως p-1 λόγω του mod) Το παρόν υλικό είναι μόνο για όσους ενδιαφέρονται για παραπάνω λεπτομέρειες. Δεν αποτελεί εξεταστέα ύλη για το μάθημα.
Ο αλγόριθμος (πρωτόκολλο) Diffie-Hellman για ανταλλαγή κλειδιού Άλλοι αλγόριθμοι που χρησιμοποιούν δημόσιο κλειδί δουλεύουν διαφορετικά και επιτρέπουν την απευθείας κρυπτογράφηση μηνυμάτων προς συγκεκριμένο παραλήπτη, με χρήση δημόσιας πληροφορίας που ανακοινώνει ο παραλήπτης Αντίθετα, ένας αλγόριθμος ανταλλαγής κλειδιού μάς επιτρέπει τη δημιουργία ενός διαμοιραζόμενου μυστικού με χρήση δημόσιας πληροφορίας από τον παραλήπτη, αλλά η ίδια η κρυπτογράφηση γίνεται μέσω της ιδέας της πρόσθεσης Στο μεγαλύτερο μέρος για επικοινωνία στο internet χρησιμοποιείται η τεχνική που περιγράψαμε επειδή απαιτεί λιγότερο επικοινωνιακό κόστος Υπάρχουν εφαρμογές που απαιτούν πλήρη κρυπτογράφηση με χρήση δημοσίου κλειδιού Από τις πιο ενδιαφέρουσες τέτοιες εφαρμογές είναι οι ψηφιακές υπογραφές όπου μυστική πληροφορία “αναμειγνύεται” δημόσια με μαθηματικά, με μη αναστρέψιμο τρόπο, όπως μη αναστρέψιμα αναμειγνύονται και τα χρώματα…
Ο αλγόριθμος RSA για κρυπτογράφηση με χρήση δημοσίου κλειδιού Το πιο γνωστό σύστημα κρυπτογράφησης με χρήση δημοσίου κλειδιού είναι το RSA, που ονομάστηκε έτσι από τα αρχικά των επωνύμων των δημιουργών του: Ronald Rivest, Adi Shamir, και Leonard Adleman Ο RSA είναι βασικό συστατικό των ψηφιακών υπογραφών
Ο αλγόριθμος RSA για κρυπτογράφηση με χρήση δημοσίου κλειδιού Το πιο γνωστό σύστημα κρυπτογράφησης με χρήση δημοσίου κλειδιού είναι το RSA, που ονομάστηκε έτσι από τα αρχικά των επωνύμων των δημιουργών του: Ronald Rivest, Adi Shamir, και Leonard Adleman Ο RSA είναι βασικό συστατικό των ψηφιακών υπογραφών
Αλγόριθμοι Diffie-Hellman και RSA Ο αλγόριθμος Diffie-Hellman: αλγόριθμος ανταλλαγής κλειδιού (key-exchange algorithm) βασίζεται στη δυσκολία του προβλήματος διακριτού λογαρίθμου Να βρεθεί x για το οποίο ισχύει f(x)=axmodb χρησιμοποιείται για τη δημιουργία διαμοιραζόμενου μυστικού δημόσια Το διαμοιραζόμενο μυστικό (private key) θα χρησιμοποιηθεί αργότερα για κρυπτογράφηση (symmetric encryption) Ομάδα χρηστών συμφωνούν δημόσια σε ένα κοινό μυστικό κλειδί και με αυτό κρυπτογραφούν όλη την επικοινωνία τους μετέπειτα RSA: αλγόριθμος κρυπτογράφησης (asymmetric encryption algorithm) και αλγόριθμος για παραγωγή ψηφιακών υπογραφών βασίζεται στη δυσκολία του προβλήματος παραγοντοποίησης ακεραίων Να βρεθούν p, q για τα οποία ισχύει f(p,q)=p*q χρησιμοποιείται για τη δημιουργία ζεύγους δημόσιου/ιδιωτικού κλειδιού Το δημόσιο κλειδί (public key) χρησιμοποιείται για κρυπτογράφηση (asymmetric encryption) Ο αποστολέας κρυπτογραφεί το μήνυμά του (με το δημόσιο κλειδί του παραλήπτη) Μόνο ο παραλήπτης μπορεί να αποκρυπτογραφήσει το κρυπτογραφημένο μήνυμα (με το ιδιωτικό του κλειδί)
Αλγόριθμοι Diffie-Hellman και RSA Asymmetric encryption ανταλλαγή κλειδιού Κάνοντας asymmetric encryption κάνω ανταλλαγή κλειδιού Παράγω τυχαίο συμμετρικό κλειδί και το κρυπτογραφώ με το δημόσιο κλειδί του παραλήπτη Με ανταλλαγή κλειδιού μπορώ να κάνω asymmetric encryption Χρησιμοποιώ το κλειδί που προκύπτει από την ανταλλαγή για να κρυπτογραφήσω δεδομένα μέσω ενός συμμετρικού αλγορίθμου, π.χ., AES Ο αλγόριθμος Diffie-Hellman χρησιμοποιείται για ανταλλαγή κλειδιού σε έναν κύκλο επικοινωνίας
Αλγόριθμοι Diffie-Hellman και RSA http://www.mat-d.com/site/rsa-diffie-hellman-explained-in-3-minutes/ http://www.cs.miami.edu/home/burt/learning/Pol599-Cryptotalk/cryptotalk.html
Αλγόριθμοι Diffie-Hellman και RSA
Ο αλγόριθμος RSA για κρυπτογράφηση με χρήση δημοσίου κλειδιού Η ιστορία του παρασκηνίου της δημιουργίας αυτών των αλγορίθμων κρυπτογράφησης με χρήση δημοσίου κλειδιού είναι εντυπωσιακή και περίπλοκη Οι Diffie και Hellman ήταν πράγματι οι πρώτοι που δημοσίευσαν τη μέθοδο Diffie-Hellman το 1976 Οι Rivest, Shamir, Adleman ήταν πράγματι οι πρώτοι που δημοσίευσαν τον αλγόριθμο RSA το 1978 Αλλά η ιστορία δεν σταματάει εδώ: ανακαλύφθηκε εκ των υστέρων ότι η Βρετανική κυβέρνηση γνώριζε ήδη για πολλά χρόνια παραπλήσια συστήματα αλλά – δυστυχώς - οι δημιουργοί αυτών των ιδεών-προγόνων της τεχνικής Diffie-Hellman και του RSA ήταν μαθηματικοί που δούλευαν για τη Βρετανική κυβέρνηση (εργαστήρια επικοινωνιών GCHQ) και τα αποτελέσματα της δουλειάς τους είχαν καταγραφεί σε απόρρητα έγγραφα που δημοσιοποιήθηκαν το 1997…
Ο αλγόριθμος RSA για κρυπτογράφηση με χρήση δημοσίου κλειδιού Οι αλγόριθμοι RSA, Diffie-Hellman και άλλοι αλγόριθμοι κρυπτογράφησης που κάνουν χρήση δημοσίου κλειδιού δεν είναι μόνο εκπληκτικές ιδέες αλλά έχουν εξελιχθεί σε εμπορικές τεχνολογίες και πρότυπα στο internet με εξαιρετική σημασία για επιχειρήσεις και πρόσωπα Η συντριπτική πλειοψηφία των online συναλλαγών που πραγματοποιούμε καθημερινά δεν θα μπορούσαν να ολοκληρωθούν με ασφάλεια χωρίς κρυπτογράφηση δημοσίου κλειδιού Οι δημιουργεί του RSA έκαναν το σύστημά τους πατέντα τη δεκαετία του 1970 η οποία δημοσιοποιήθηκε το 2000 οπότε και πραγματοποιήθηκε δεξίωση στο Great American Music Hall στο San Francisco (τη βραδιά που έληξε η πατέντα)…
Σύνοψη Για αιώνες η Κρυπτογραφία βασιζόταν σε πρωτόκολλα που έκαναν χρήση ιδιωτικού κλειδιού (private-key protocols): Η Alice και ο Bob συναντιούνταν από πριν και διάλεγαν μαζί έναν μυστικό κωδικό με χρήση του οποίου κρυπτογραφούσαν κάθε μελλοντική τους επικοινωνία Η μόνη ελπίδα για την κακιά υποκλοπέα Eve ήταν να συλλέξει κωδικοποιημένα μηνύματα και να τα χρησιμοποιήσει για να εντοπίσει αναλύοντάς τα – τουλάχιστον μερικώς – το μυστικό κωδικό Τεχνικές κρυπτογράφησης με χρήση δημόσιου κλειδιού (public-key schemes) όπως ο αλγόριθμος RSA είναι σαφώς εξυπνότερες: επιτρέπουν στην Alice να στείλει στο Bob ένα μήνυμα χωρίς να απαιτείται να γνωρίζονται από πριν… και η κακιά υποκλοπέας Eve να μη μπορεί να καταλάβει το μήνυμα… Η κεντρική ιδέα του συστήματος κρυπτογράφησης RSA βασίζεται στη σημαντική αντίθεση μεταξύ της ευκολίας εύρεσης μεγάλων πρώτων αριθμών και της δυσκολίας παραγοντοποίησης (factoring) του γινομένου δύο μεγάλων πρώτων αριθμών Ο Bob μπορεί να φτιάξει μια ψηφιακή «κλειδαριά» για την οποία να έχει μόνο αυτός το κλειδί, να την ανακοινώσει δημόσια και να δώσει έτσι στην Alice έναν τρόπο να του στέλνει με ασφάλεια μηνύματα που μόνος αυτός θα μπορεί να ξεκλειδώσει Αυτό ακριβώς συμβαίνει όταν – για παράδειγμα - κάνουμε αγορές στο Internet, και θέλουμε να στείλουμε τον αριθμό της πιστωτικής μας κάρτας σε κάποια εταιρεία Με βάση τον αλγόριθμο RSA, ο Bob πρέπει να κάνει πολύ απλές πράξεις όπως πολλαπλασιασμό για να υλοποιήσει την ψηφιακή κλειδαριά και, επίσης, και η Alice και ο Bob πρέπει να κάνουν πολύ απλές πράξεις για να κλειδώσουν και να ξεκλειδώσουν (αντίστοιχα) τα μηνύματα Αντίθετα, για να ξεκλειδώσει η Eve ένα κλειδωμένο μήνυμα ΧΩΡΙΣ ΝΑ ΕΧΕΙ ΤΟ ΚΛΕΙΔΙ πρέπει να κάνει πολύ δύσκολες υπολογιστικά πράξεις όπως η ανάλυση μεγάλων αριθμών σε γινόμενα πρώτων παραγόντων οι οποίες απαιτούν υπολογιστική ισχύ μεγαλύτερη από αυτή του ισχυρότερου υπαρκτού υπολογιστή…