[Powered by Google Translate] [RSA] [Rob Bowden] [Tommy MacWilliam] [Πανεπιστήμιο του Χάρβαρντ] [Αυτό είναι CS50.] [CS50.TV] Ας ρίξουμε μια ματιά στο RSA, ένα ευρέως χρησιμοποιούμενο αλγόριθμο για την κρυπτογράφηση των δεδομένων. Αλγόριθμους κρυπτογράφησης, όπως Καίσαρα και Vigenere αλγόριθμους κρυπτογράφησης δεν είναι πολύ ασφαλείς. Με την Caesar cipher, ένας εισβολέας θα πρέπει μόνο να δοκιμάσετε 25 διαφορετικά κλειδιά για να πάρει μορφή απλού κειμένου του μηνύματος. Ενώ η κρυπτογράφηση Vigenere είναι πιο ασφαλής από ό, τι το Caesar cipher λόγω του μεγαλύτερου χώρου αναζήτησης για τα κλειδιά, όταν ένας εισβολέας γνωρίζει το μήκος του κλειδιού κρυπτογράφησης σε ένα Vigenere, η οποία μπορεί να προσδιοριστεί μέσω μιας ανάλυσης των προτύπων στο κρυπτογραφημένο κείμενο, το κρυπτογράφημα Vigenere δεν είναι ότι πολύ πιο ασφαλή από ό, τι το Caesar cipher. RSA, από την άλλη πλευρά, δεν είναι ευάλωτα σε επιθέσεις όπως αυτό. Το Caesar cipher και Vigenere κρυπτογράφησης χρησιμοποιούν το ίδιο κλειδί τόσο για την κρυπτογράφηση και αποκρυπτογράφηση ενός μηνύματος. Αυτή η ιδιότητα κάνει τις ciphers αλγόριθμους συμμετρικού κλειδιού. Ένα βασικό πρόβλημα με αλγόριθμους συμμετρικού κλειδιού είναι ότι στηρίζονται σε εκείνη την κρυπτογράφηση και την αποστολή του μηνύματος και η μία υποδοχή και την αποκρυπτογράφηση του μηνύματος να έχουν ήδη συμφωνήσει εκ των προτέρων για το κλειδί που θα χρησιμοποιήσει και τα δύο. Έχουμε, όμως, ένα κομμάτι από ένα πρόβλημα εκκίνησης εδώ. Πώς 2 υπολογιστές που θέλουν να επικοινωνήσουν δημιουργήσει ένα μυστικό κλειδί μεταξύ τους; Εάν το κλειδί πρέπει να είναι μυστική, τότε χρειάζεστε έναν τρόπο για να κρυπτογραφήσει και να αποκρυπτογραφήσει το κλειδί. Αν το μόνο που έχουμε είναι συμμετρικό κλειδί κρυπτογράφησης τότε έχουμε μόλις έρθει και πάλι στο ίδιο πρόβλημα. RSA, από την άλλη πλευρά, χρησιμοποιεί ένα ζεύγος κλειδιών, ένα για κρυπτογράφηση και ένα άλλο για αποκρυπτογράφηση. Ένα ονομάζεται το δημόσιο κλειδί, και το άλλο είναι το ιδιωτικό κλειδί. Το δημόσιο κλειδί χρησιμοποιείται για την κρυπτογράφηση μηνυμάτων. Όπως μπορείτε να μαντέψετε από το όνομα του, μπορούμε να μοιραστούμε το δημόσιο κλειδί μας με κάποιος που θέλουμε χωρίς να θέτει σε κίνδυνο την ασφάλεια του ένα κρυπτογραφημένο μήνυμα. Μηνύματα κρυπτογραφούνται χρησιμοποιώντας ένα δημόσιο κλειδί μπορεί να αποκρυπτογραφηθεί μόνο με το αντίστοιχο ιδιωτικό κλειδί του. Ενώ μπορείτε να μοιραστείτε το δημόσιο κλειδί σας, θα πρέπει να έχετε πάντα μυστικό ιδιωτικό κλειδί σας. Δεδομένου ότι το ιδιωτικό κλειδί πρέπει να κρατηθεί μυστικό και μόνο το ιδιωτικό κλειδί μπορεί να χρησιμοποιηθεί για να αποκρυπτογραφήσει τα μηνύματα, αν θέλετε 2 χρήστες να στέλνουν μηνύματα κρυπτογραφούνται με RSA εμπρός και πίσω και οι δύο χρήστες θα πρέπει να έχουν το δικό δημόσια και ιδιωτικά ζεύγος κλειδιών τους. Μηνύματα από το χρήστη 1 έως 2 χρησιμοποιούν χρήστη μόνο ζεύγος κλειδιών 2 του χρήστη, και τα μηνύματα από τον χρήστη 2 στο χρήστη 1 χρησιμοποιεί μόνο βασικό ζεύγος 1 χρήστη. Το γεγονός ότι υπάρχουν 2 ξεχωριστά κλειδιά για την κρυπτογράφηση και την αποκρυπτογράφηση μηνυμάτων κάνει ένα ασύμμετρο RSA κλειδί αλγόριθμο. Δεν χρειάζεται να κρυπτογραφήσετε το δημόσιο κλειδί για να το στείλετε σε άλλο υπολογιστή δεδομένου ότι το δημόσιο κλειδί είναι ούτως ή άλλως. Αυτό σημαίνει ότι η RSA δεν έχει το ίδιο πρόβλημα εκκίνησης ως αλγόριθμο συμμετρικού κλειδιού. Πώς 2 υπολογιστές που θέλουν να επικοινωνήσουν καθιερώσει ένα μυστικό κλειδί μεταξύ τους; Εάν το κλειδί πρέπει να είναι μυστική, τότε χρειάζεστε έναν τρόπο για να κρυπτογραφήσει και να αποκρυπτογραφήσει το κλειδί. Αν το μόνο που έχουμε είναι συμμετρικό κλειδί κρυπτογράφησης τότε έχουμε απλά έρχονται και πάλι στο ίδιο πρόβλημα. RSA, από την άλλη πλευρά, χρησιμοποιεί ένα ζεύγος κλειδιών, ένα για κρυπτογράφηση και ένα άλλο για αποκρυπτογράφηση. Ένα ονομάζεται το δημόσιο κλειδί, και το άλλο είναι το ιδιωτικό κλειδί. Το δημόσιο κλειδί χρησιμοποιείται για την κρυπτογράφηση μηνυμάτων. Όπως μπορείτε να μαντέψετε από το όνομα του, μπορούμε να μοιραστούμε το δημόσιο κλειδί μας με όποιον θέλουμε χωρίς να διακυβεύεται η ασφάλεια του ένα κρυπτογραφημένο μήνυμα. Μηνύματα κρυπτογραφούνται χρησιμοποιώντας ένα δημόσιο κλειδί μπορούν να αποκρυπτογραφηθούν μόνο με αντίστοιχο ιδιωτικό κλειδί του. Ενώ μπορείτε να μοιραστείτε το δημόσιο κλειδί σας, θα πρέπει να έχετε πάντα μυστικό ιδιωτικό κλειδί σας. Δεδομένου ότι το ιδιωτικό κλειδί πρέπει να κρατηθεί μυστικό και μόνο το ιδιωτικό κλειδί μπορεί να χρησιμοποιηθεί για αποκρυπτογράφηση μηνυμάτων 2 χρήστες αν θέλετε να στείλετε κρυπτογραφημένα μηνύματα με RSA εμπρός και πίσω και οι δύο χρήστες πρέπει να έχουν τη δική δημόσιου και ιδιωτικού κλειδιού τους. Μηνύματα από το χρήστη 1 έως χρήστη 2 χρησιμοποιείτε μόνο ζεύγος κλειδιών 2 του χρήστη, και τα μηνύματα από τον χρήστη 2 στο χρήστη 1 χρησιμοποιείτε μόνο το ζεύγος κλειδιών του χρήστη 1. Το γεγονός ότι υπάρχουν 2 ξεχωριστά κλειδιά για την κρυπτογράφηση και την αποκρυπτογράφηση μηνυμάτων κάνει ένα ασύμμετρο RSA κλειδί αλγόριθμο. Δεν χρειάζεται να κρυπτογραφήσετε το δημόσιο κλειδί για να το στείλετε σε άλλο υπολογιστή δεδομένου ότι το δημόσιο κλειδί είναι ούτως ή άλλως. Αυτό σημαίνει ότι η RSA δεν έχει το ίδιο πρόβλημα εκκίνησης οι αλγόριθμοι συμμετρικού κλειδιού. Έτσι, αν θέλετε να στείλετε ένα μήνυμα χρησιμοποιώντας RSA κρυπτογράφησης να Rob, θα πρέπει πρώτα δημόσιο κλειδί του Rob. Για να δημιουργήσετε ένα ζευγάρι κλειδιά, Rob πρέπει να πάρει 2 μεγάλα πρώτων αριθμών. Οι αριθμοί αυτοί θα χρησιμοποιηθούν τόσο στο δημόσιο όσο και ιδιωτικά κλειδιά, αλλά το δημόσιο κλειδί θα χρησιμοποιήσει μόνο το προϊόν αυτών των 2 αριθμών, όχι οι ίδιοι οι αριθμοί. Μόλις έχω το μήνυμα κρυπτογραφείται χρησιμοποιώντας το δημόσιο κλειδί του Rob Μπορώ να στείλετε το μήνυμα σε Rob. Για έναν υπολογιστή, οι αριθμοί factoring είναι ένα δύσκολο πρόβλημα. Το δημόσιο κλειδί, να θυμάστε, χρησιμοποιείται το προϊόν των 2 πρώτων αριθμών. Αυτό το προϊόν πρέπει να έχει τότε μόνο 2 παράγοντες, τα οποία τυχαίνει να είναι οι αριθμοί που συνθέτουν το ιδιωτικό κλειδί. Για να αποκρυπτογραφήσει το μήνυμα, RSA θα χρησιμοποιήσει αυτό το ιδιωτικό κλειδί ή οι αριθμοί πολλαπλασιάζονται μαζί με τη διαδικασία της δημιουργίας του δημόσιου κλειδιού. Επειδή είναι υπολογιστικά δύσκολο να συνυπολογίσει τον αριθμό χρησιμοποιείται σε ένα δημόσιο κλειδί στις 2 αριθμοί που χρησιμοποιούνται στο ιδιωτικό κλειδί Είναι δύσκολο για έναν εισβολέα να καταλάβω το ιδιωτικό κλειδί που θα είναι αναγκαία για να αποκρυπτογραφήσει το μήνυμα. Τώρα ας πάμε σε μερικά χαμηλότερο επίπεδο λεπτομέρειες της RSA. Ας δούμε πρώτα πώς μπορούμε να δημιουργήσουμε ένα ζευγάρι κλειδιά. Κατ 'αρχάς, θα χρειαστείτε 2 πρώτοι αριθμοί. Θα καλέσετε αυτά τα 2 αριθμούς p και q. Για να πάρει p και q, στην πράξη θα δημιουργήσει ψευδοτυχαία μεγάλους αριθμούς και στη συνέχεια χρησιμοποιήστε μια δοκιμή για να καθοριστεί εάν ή όχι αυτοί οι αριθμοί είναι κατά πάσα πιθανότητα prime. Μπορούμε να κρατήσει την παραγωγή τυχαίων αριθμών ξανά και ξανά μέχρι να έχουμε 2 primes που μπορούμε να χρησιμοποιήσουμε. Εδώ ας πάρει p = 23 και q = 43. Θυμηθείτε, στην πράξη, τα ρ και q πρέπει να είναι πολύ μεγαλύτερο αριθμό. Σε ό, τι γνωρίζουμε, όσο μεγαλύτερες είναι οι αριθμοί, τόσο πιο δύσκολο είναι για να σπάσουμε ένα κρυπτογραφημένο μήνυμα. Αλλά είναι επίσης πιο ακριβά για να κρυπτογραφήσει και να αποκρυπτογραφήσει τα μηνύματα. Σήμερα είναι συχνά συνιστάται ότι p και q είναι τουλάχιστον 1024 bits, που θέτει κάθε αριθμό σε πάνω από 300 δεκαδικά ψηφία. Αλλά θα πάρει αυτά τα μικρά τους αριθμούς για αυτό το παράδειγμα. Τώρα θα πολλαπλασιάσει p και q μαζί για να πάρει ένα 3ο αριθμό, το οποίο θα καλέσουμε n. Στην περίπτωσή μας, η = 23 * 43, η οποία = 989. Έχουμε n = 989. Στη συνέχεια θα πολλαπλασιαστούν p - 1 με q - 1 να αποκτήσουν ένα τέταρτο αριθμό, ο οποίος θα καλέσει m. Στην περίπτωσή μας, m = 22 * ​​42, η οποία = 924. Έχουμε m = 924. Τώρα θα χρειαστείτε ένα e αριθμός που είναι σχετικά πρώτοι με m και μικρότερο από πι. Δύο αριθμοί είναι σχετικά prime ή coprime αν ο μόνος θετικός ακέραιος που διαιρεί τους δύο ομοιόμορφα είναι 1. Με άλλα λόγια, ο μέγιστος κοινός διαιρέτης των e και πι πρέπει να είναι 1. Στην πράξη, είναι σύνηθες για το ηλεκτρονικό να είναι ο πρώτος αριθμός 65537 εφ 'όσον ο αριθμός αυτός δεν τυχαίνει να είναι ένας παράγοντας του m. Για τα κλειδιά μας, θα πάρει e = 5 από τις 5 είναι σχετικά prime σε 924. Τέλος, θα χρειαστείτε ένα περισσότερο τον αριθμό, ο οποίος θα καλέσει d. D πρέπει να είναι κάποια τιμή που ικανοποιεί την εξίσωση de = 1 (mod m). Αυτό σημαίνει m mod θα χρησιμοποιήσουμε κάτι που ονομάζεται αρθρωτή αριθμητική. Στην modular αριθμητική, όταν ένας αριθμός υψηλότερος από ό, τι παίρνει κάποιο άνω όριο θα γυρίσει πίσω γύρω στο 0. Ένα ρολόι, για παράδειγμα, χρησιμοποιεί modular αριθμητική. Ένα λεπτό μετά τη 1:59, για παράδειγμα, είναι 2:00, Δεν 1:60. Το λεπτό χέρι έχει τυλιγμένο γύρω στο 0 φτάνοντας ένα άνω φράγμα του 60. Έτσι, μπορούμε να πούμε 60 είναι ισοδύναμο με 0 (mod 60) και 125 είναι ισοδύναμο με 65 είναι ισοδύναμη με 5 (mod 60). Δημόσιο κλειδί μας θα είναι το e ζευγάρι και n όπου στην περίπτωση αυτή το e είναι 5 και το η είναι 989. Ιδιωτικό κλειδί μας θα είναι το ζεύγος d και n, που στην περίπτωσή μας είναι 185 και 989. Παρατηρήστε ότι η αρχική μας πρώτων p και q δεν εμφανίζονται οπουδήποτε σε ιδιωτικά ή δημόσια κλειδιά μας. Τώρα που έχουμε ζεύγος κλειδιών μας, ας ρίξουμε μια ματιά στο πώς μπορούμε να κρυπτογραφήσει και να αποκρυπτογραφήσει ένα μήνυμα. Θέλω να στείλω ένα μήνυμα προς τον Rob, έτσι θα είναι το ένα να δημιουργήσει αυτό το ζεύγος κλειδιών. Τότε εγώ θα ρωτήσω τον Rob για το δημόσιο κλειδί του, την οποία θα χρησιμοποιήσετε να κρυπτογραφήσει ένα μήνυμα να στείλει σ 'αυτόν. Θυμηθείτε, είναι εντελώς εντάξει για τον Rob να μοιραστεί το δημόσιο κλειδί του μαζί μου. Αλλά δεν θα ήταν εντάξει για να μοιραστεί το ιδιωτικό κλειδί του. Δεν έχω καμία ιδέα για το τι ιδιωτικό κλειδί του είναι. Μπορούμε να σπάσει μήνυμα m μας επάνω σε πολλά κομμάτια όλα μικρότερα από n και κατόπιν κρυπτογράφηση καθεμία από αυτές κομμάτια. Θα κρυπτογραφήσει το CS50 κορδόνι, το οποίο μπορεί να σπάσει σε 4 κομμάτια, μία ανά γράμμα. Για να κρυπτογραφήσει το μήνυμά μου, εγώ θα πρέπει να το μετατρέψει σε κάποια αριθμητική εκπροσώπηση. Ας ενώσετε τις τιμές ASCII με τους χαρακτήρες στο μήνυμα μου. Για να κρυπτογραφήσετε ένα συγκεκριμένο μήνυμα m Θα πρέπει να υπολογίσουμε c = m από το e (mod n). Αλλά m πρέπει να είναι μικρότερο από το η, ή αλλιώς το πλήρες μήνυμα δεν μπορεί να εκφραστεί modulo n. Μπορούμε να σπάσει μ επάνω σε πολλά κομμάτια, όλα από τα οποία είναι μικρότερα από ό, τι η, κρυπτογράφηση και κάθε ένα από αυτά κομμάτια. Η κρυπτογράφηση καθένα από αυτά τα κομμάτια, παίρνουμε c1 = 67 στο 5 (mod 989) οποίες = 658. Για το δεύτερο κομμάτι μας έχουμε 83 έως το 5 (mod 989) οποίες = 15. Για τρίτη κομμάτι μας έχουμε 53 έως το 5 (mod 989) που = 799. Και, τέλος, για το τελευταίο κομμάτι μας έχουμε 48 έως την 5 (mod 989) οποία = 975. Τώρα μπορούμε να στείλουμε σε αυτές τις αξίες σε κρυπτογραφημένη Rob. Ορίστε, Rob. Αν το μήνυμά μας είναι κατά την πτήση, ας ρίξουμε μια άλλη ματιά στο πώς φτάσαμε ότι η τιμή για το d. Δ αριθμός μας χρειάζεται για να ικανοποιήσει 5d = 1 (mod 924). Αυτό καθιστά d η πολλαπλασιαστικό αντίστροφο της 5 modulo 924. Δεδομένου 2 ακέραιοι, α και β, ο διευρυμένος Ευκλείδειος αλγόριθμος μπορεί να χρησιμοποιηθεί για να βρείτε τον μέγιστο κοινό διαιρέτη των 2 αυτών ακέραιοι. Επίσης, θα μας δώσει άλλα 2 αριθμούς, x και y, που ικανοποιούν την εξίσωση ax + by = το μέγιστο κοινό διαιρέτη των a και b. Πώς αυτό να μας βοηθήσει; Λοιπόν, συνδέοντας e = 5 για ένα και m = 924 για β γνωρίζουμε ήδη ότι οι αριθμοί αυτοί είναι coprime. Μέγιστο κοινό διαιρέτη τους είναι 1. Αυτό μας δίνει 5x + 924y = 1 ή 5x = 1 - 924y. Αλλά αν θέλουμε μόνο νοιάζονται για τα πάντα modulo 924 τότε μπορούμε να ρίξει το - 924y. Σκεφτείτε πίσω στο ρολόι. Αν ο λεπτοδείκτης είναι στις 1 και στη συνέχεια να περάσει ακριβώς 10 ώρες, γνωρίζουμε το λεπτοδείκτη θα εξακολουθεί να είναι στο 1. Εδώ θα ξεκινήσει στις 1 και στη συνέχεια τυλίξτε γύρω ακριβώς y φορές, έτσι θα εξακολουθεί να είναι στο 1. Έχουμε 5x = 1 (mod 924). Και εδώ το x είναι το ίδιο με το δ ψάχναμε για πριν, έτσι αν χρησιμοποιήσουμε τον διευρυμένο Ευκλείδειο αλγόριθμο για να πάρει αυτό το x αριθμό, αυτός είναι ο αριθμός θα πρέπει να χρησιμοποιήσουμε ως d μας. Τώρα, ας τρέξει τον διευρυμένο Ευκλείδειο αλγόριθμο για ένα = 5 και b = 924. Θα χρησιμοποιήσουμε μια μέθοδο που ονομάζεται η μέθοδος πίνακα. Τραπέζι μας θα έχουν 4 στήλες, x, y, d, και k. Τραπέζι μας ξεκινά με 2 σειρές. Στην πρώτη σειρά έχουμε 1, 0, τότε η αξία μας α, η οποία είναι 5, και δεύτερη σειρά μας είναι 0, 1, και η αξία μας για το β, η οποία είναι 924. Η αξία της τέταρτης στήλης, k, θα είναι το αποτέλεσμα χωρίζοντας την τιμή του d στη γραμμή πάνω από αυτό με την τιμή του d στην ίδια γραμμή. Έχουμε 5 διαιρείται με 924 είναι 0 με κάποια υπόλοιπο. Αυτό σημαίνει ότι έχουμε k = 0. Τώρα η αξία κάθε άλλο κύτταρο θα είναι η αξία των κυττάρων 2 σειρές παραπάνω μείον την αξία της γραμμής πάνω από το k φορές. Ας ξεκινήσουμε με το δ στην 3η σειρά. Έχουμε 5-924 * 0 = 5. Στη συνέχεια έχουμε 0 - 1 * 0 η οποία είναι 0 και 1 - 0 * 0 το οποίο είναι 1. Δεν είναι και τόσο άσχημα, οπότε ας περάσουμε στην επόμενη σειρά. Πρώτα χρειαζόμαστε αξία μας κ. 924 διαιρείται με 5 = 184 με κάποιο υπόλοιπο, έτσι αξία μας για το k είναι 184. Τώρα, 924 - 5 * 184 = 4. 1-0 * 184 είναι 1 και 0 - 1 * 184 είναι -184. Εντάξει, ας κάνουμε την επόμενη σειρά. Αξία μας κ θα είναι 1, επειδή 5 διαιρούμενο με 4 = 1 με κάποιο υπόλοιπο. Ας συμπληρώστε τα άλλα στήλες. 5 - 4 * 1 = 1. 0-1 * 1 = -1. Και 1 - 184 * 1 είναι 185. Ας δούμε ποιο είναι το επόμενο μας αξία του k θα είναι. Λοιπόν, φαίνεται σαν να έχετε 4 διαιρείται με 1, η οποία είναι 4. Σε αυτή την περίπτωση όπου είμαστε διαιρώντας με 1 τέτοια ώστε το k είναι ίσο προς η τιμή του d στην παραπάνω γραμμή σημαίνει ότι τελειώσαμε με τον αλγόριθμο μας. Μπορούμε να δούμε ότι εδώ έχουμε x = 185 και y = -1 στην τελευταία γραμμή. Ας επανέλθω στο αρχικό μας στόχο. Είπαμε ότι η τιμή του x ως αποτέλεσμα της λειτουργίας αυτόν τον αλγόριθμο θα είναι το πολλαπλασιαστικό αντίστροφο της (mod β). Αυτό σημαίνει ότι 185 είναι το πολλαπλασιαστικό αντίστροφο της 5 (mod 924) πράγμα που σημαίνει ότι έχουμε μια τιμή για το δ 185. Το γεγονός ότι το d = 1 στην τελευταία σειρά επαληθεύει ότι το e coprime σε m. Αν δεν ήταν 1 τότε θα πρέπει να επιλέξετε ένα νέο e. Ας δούμε τώρα αν ο Rob έχει λάβει το μήνυμά μου. Όταν κάποιος μου στείλει ένα κρυπτογραφημένο μήνυμα εφ 'όσον έχω παραμένει ιδιωτικό κλειδί μου ένα μυστικό Είμαι ο μόνος που μπορεί να αποκρυπτογραφήσει το μήνυμα. Για να αποκρυπτογραφήσετε ένα κομμάτι γ μπορώ να υπολογίσω το αρχικό μήνυμα είναι ίσο με το κομμάτι να δ ισχύς (mod n). Να θυμάστε ότι d και n είναι από το ιδιωτικό κλειδί μου. Για να πάρετε μια πλήρη μήνυμα από κομμάτια του θα αποκρυπτογραφήσει κάθε κομμάτι και τη συγκέντρωση των αποτελεσμάτων. Ακριβώς πόσο ασφαλές είναι RSA; Η αλήθεια είναι, δεν ξέρουμε. Ασφάλεια με βάση το πόσο καιρό θα έπαιρνε έναν εισβολέα να σπάσουμε ένα μήνυμα κρυπτογραφούνται με RSA. Θυμηθείτε ότι ένας εισβολέας έχει πρόσβαση στο δημόσιο κλειδί σας, το οποίο περιέχει τόσο το ηλεκτρονικό και n. Αν ο εισβολέας καταφέρει να συνυπολογίσει n σε 2 πρώτους αριθμούς του, p και q, τότε θα μπορούσε να υπολογίσει δ χρησιμοποιώντας το διευρυμένο Ευκλείδειο αλγόριθμο. Αυτό της δίνει το ιδιωτικό κλειδί, το οποίο μπορεί να χρησιμοποιηθεί για να αποκρυπτογραφήσει κάποιο μήνυμα. Αλλά πόσο γρήγορα μπορούμε να παράγοντα ακέραιοι; Και πάλι, δεν γνωρίζουμε. Κανείς δεν έχει βρει ένα γρήγορο τρόπο για να γίνει αυτό, πράγμα που σημαίνει ότι δίνεται αρκετά μεγάλο n θα χρειαζόταν έναν εισβολέα εξωπραγματικά μεγάλο να συνυπολογίσει τον αριθμό. Αν κάποιος αποκάλυψε ένα γρήγορο τρόπο από παραγοντοποίηση ακεραίων RSA θα σπάσει. Αλλά ακόμα και αν παραγοντοποίηση ακεραίου είναι εγγενώς αργή η RSA αλγόριθμος θα μπορούσε να έχει ακόμη κάποιο ελάττωμα σε αυτό που επιτρέπει την εύκολη αποκρυπτογράφηση των μηνυμάτων. Κανείς δεν έχει βρεθεί και αποκάλυψε ένα τέτοιο ελάττωμα ακόμα, αλλά αυτό δεν σημαίνει ότι δεν υπάρχει τέτοιο στοιχείο. Θεωρητικά, κάποιος θα μπορούσε να είναι εκεί έξω διαβάζει όλα τα δεδομένα κρυπτογραφούνται με RSA. Υπάρχει ένα άλλο κομμάτι του ζητήματος της ιδιωτικής ζωής. Αν ο Tommy κρυπτογραφεί κάποιο μήνυμα με το δημόσιο κλειδί μου και ένας εισβολέας κρυπτογραφεί το ίδιο μήνυμα με το δημόσιο κλειδί μου ο εισβολέας θα δείτε ότι τα 2 μηνύματα είναι πανομοιότυπα και επομένως να γνωρίζουν τι Tommy κρυπτογραφούνται. Για να αποφευχθεί αυτό, τα μηνύματα είναι συνήθως παραγεμισμένο με τυχαία bits πριν κρυπτογραφούνται, έτσι ώστε το ίδιο μήνυμα κρυπτογραφείται πολλές φορές θα έχει διαφορετική εμφάνιση όσο το παραγέμισμα στο μήνυμα είναι διαφορετική. Αλλά να θυμάστε πως πρέπει να χωριστεί σε κομμάτια μηνύματα έτσι ώστε κάθε κομμάτι είναι μικρότερο από n; Padding τα κομμάτια που σημαίνει ότι μπορεί να έχουμε για να χωρίσει τα πράγματα σε ακόμη περισσότερα κομμάτια αφού το παραγεμισμένο κομμάτι πρέπει να είναι μικρότερη από n. Κρυπτογράφησης και αποκρυπτογράφησης είναι σχετικά ακριβά με την RSA, και έτσι να χρειάζεται να σπάσει ένα μήνυμα σε πολλά κομμάτια μπορεί να είναι πολύ δαπανηρή. Εάν ένας μεγάλος όγκος των δεδομένων θα πρέπει να είναι κρυπτογραφημένη και αποκρυπτογραφούνται μπορούμε να συνδυάσουμε τα πλεονεκτήματα των αλγορίθμων συμμετρικού κλειδιού με εκείνες της RSA για να πάρει τόσο την ασφάλεια και την αποτελεσματικότητα. Αν και δεν θα μπω σε αυτό εδώ, AES είναι ένα συμμετρικό κλειδί αλγόριθμο, όπως το Vigenere και τους αλγόριθμους κρυπτογράφησης του Καίσαρα αλλά πολύ πιο δύσκολο να σπάσει. Φυσικά, δεν μπορούμε να χρησιμοποιήσουμε AES χωρίς τη θέσπιση ενός κοινού μυστικού κλειδιού μεταξύ των 2 συστημάτων, και είδαμε το πρόβλημα με αυτό πριν. Αλλά τώρα μπορούμε να χρησιμοποιήσουμε για τη δημιουργία RSA το κοινό μυστικό κλειδί μεταξύ των 2 συστημάτων. Θα καλέσετε τον υπολογιστή την αποστολή των δεδομένων από τον αποστολέα και ο υπολογιστής που λαμβάνει τα δεδομένα του δέκτη. Ο δέκτης έχει ένα ζεύγος κλειδιών RSA και στέλνει το δημόσιο κλειδί του αποστολέα. Ο αποστολέας δημιουργεί ένα κλειδί AES, κρυπτογραφεί με RSA δημόσιο κλειδί του παραλήπτη, και στέλνει το κλειδί AES στο δέκτη. Ο δέκτης αποκρυπτογραφεί το μήνυμα με το ιδιωτικό κλειδί RSA του. Τόσο ο αποστολέας όσο και ο παραλήπτης έχουν τώρα ένα κοινό κλειδί AES μεταξύ τους. AES, η οποία είναι πολύ πιο γρήγορα σε κρυπτογράφησης και αποκρυπτογράφησης του RSA, μπορούν πλέον να χρησιμοποιηθούν για την κρυπτογράφηση των μεγάλων όγκων δεδομένων και να τα στείλει στο δέκτη, ο οποίος μπορεί να αποκρυπτογραφήσει χρησιμοποιώντας το ίδιο κλειδί. AES, η οποία είναι πολύ πιο γρήγορα σε κρυπτογράφησης και αποκρυπτογράφησης του RSA, μπορούν πλέον να χρησιμοποιηθούν για την κρυπτογράφηση των μεγάλων όγκων δεδομένων και να τα στείλει στο δέκτη, ο οποίος μπορεί να αποκρυπτογραφήσει χρησιμοποιώντας το ίδιο κλειδί. Χρειαζόμασταν απλά RSA για να μεταφέρετε το κοινόχρηστο κλειδί. Εμείς δεν χρειάζεται πλέον να χρησιμοποιούν RSA καθόλου. Φαίνεται σαν να έχω ένα μήνυμα. Δεν έχει σημασία αν κάποιος διαβάσει τι είναι στο αεροπλάνο χαρτί πριν το αλιεύονται επειδή είμαι ο μόνος με το ιδιωτικό κλειδί. Ας αποκρυπτογράφηση κάθε ένα από τα κομμάτια στο μήνυμα. Το πρώτο κομμάτι, 658, θα αυξηθεί στο δ δύναμη, η οποία είναι 185, mod n, η οποία είναι 989, είναι ίση με 67, το οποίο είναι το γράμμα C σε ASCII. Τώρα, πάνω στο δεύτερο κομμάτι. Το δεύτερο κομμάτι έχει αξία 15, η οποία θα αυξήσει την δύναμη 185ος, mod 989, και αυτό είναι ίσο με 83 το οποίο είναι το γράμμα S σε ASCII. Τώρα για το τρίτο κομμάτι, το οποίο έχει αξία 799, θα αυξηθεί σε 185, mod 989, και αυτό είναι ίσο με 53, η οποία είναι η τιμή του χαρακτήρα 5 σε ASCII. Τώρα για το τελευταίο κομμάτι, το οποίο έχει αξία 975, θα αυξηθεί σε 185, mod 989, και αυτό είναι ίσο με 48, η οποία είναι η τιμή της 0 χαρακτήρα σε ASCII. Το όνομά μου είναι Rob Bowden, και αυτό είναι CS50. [CS50.TV] RSA καθόλου. RSA καθόλου. [Γέλια] Σε όλα.