ΑΣΥΜΜΕΤΡΗ ΚΡΥΠΤΟΓΡΑΦΙΑ Lab 3
Η Aσύμμετρη Kρυπτογραφία ή Κρυπτογραφία Δημοσίου Κλειδιού χρησιμοποιεί δύο διαφορετικά κλειδιά για την κρυπτογράφηση και αποκρυπτογράφηση. Eπινοήθηκε στο τέλος της δεκαετίας του 1970 από τους Whitfield Diffie και Martin Hellman και παρέχει έναν εντελώς διαφορετικό μοντέλο διαχείρισης των κλειδιών κρυπτογράφησης.
Κάθε χρήστης έχει στην κατοχή του ένα ζεύγος κλειδιών, το ένα καλείται δημόσια κλείδα και το άλλο καλείται ιδιωτική κλείδα. Η δημόσια κλείδα δημοσιοποιείται, ενώ η ιδιωτική κλείδα κρατείται μυστική. Η ιδιωτική κλείδα δεν μεταδίδεται ποτέ στο δίκτυο και όλες οι επικοινωνίες βασίζονται στην δημόσια κλείδα.
Η ανάγκη ο αποστολέας και ο παραλήπτης να μοιράζονται το ίδιο κλειδί εξαφανίζεται και μαζί και πολλά προβλήματα που θα δούμε παρακάτω. Η μόνη απαίτηση της ασύμμετρης κρυπτογραφίας είναι η εμπιστεύσιμη και επιβεβαιωμένη συσχέτιση των δημόσιων κλείδων με τους κατόχους τους ώστε να μην είναι δυνατή η σκόπιμη ή μη πλαστοπροσωπία. Η ασύμμετρη κρυπτογράφηση μπορεί να χρησιμοποιηθεί όχι μόνο για κρυπτογράφηση, αλλά και για παραγωγή ψηφιακών υπογραφών.
Η ιδιωτική κλείδα είναι μαθηματικά συνδεδεμένη με την δημόσια κλείδα. Τυπικά, λοιπόν, είναι δυνατόν να νικηθεί ένα τέτοιο κρυπτοσύστημα ανακτώντας την ιδιωτική κλείδα από την δημόσια. Η επίλυση αυτού του προβλήματος είναι πολύ δύσκολη και συνήθως απαιτεί την παραγοντοποίηση ενός μεγάλου αριθμού.
Η κρυπτογράφηση με χρήση της ασύμμετρης κρυπτογραφίας γίνεται ως εξής: όταν ο χρήστης Α θέλει να στείλει ένα μυστικό μήνυμα στον χρήστη Β, χρησιμοποιεί την δημόσια κλείδα του Β για να κρυπτογραφήσει το μήνυμα και έπειτα το στέλνει στον Β. Ο χρήστης Β, αφού παραλάβει το μήνυμα, κάνει χρήση της ιδιωτικής του κλείδας για να το αποκρυπτογραφήσει.
Κανένας που "ακούει" την σύνδεση δεν μπορεί να αποκρυπτογραφήσει το μήνυμα. Οποιοσδήποτε έχει την δημόσια κλείδα του Β μπορεί να του στείλει μήνυμα και μόνο αυτός μπορεί να το διαβάσει γιατί είναι ο μόνο που γνωρίζει την ιδιωτική κλείδα.
Πλεονεκτήματα Λύση στο πρόβλημα μεταφοράς-διαχείρισης του ιδιωτικού κλειδιού των συμμετρικών αλγορίθμων Μόνο το μυστικό κλειδί πρέπει να κρατηθεί κρυφό Εύκολη διαχείριση κλειδιών με τη βοήθεια μιας τρίτης εμπιστευτικής οντότητας Είναι πιο αποτελεσματικοί σε ψηφιακές υπογραφές λόγω της διαχείρισης των κλειδιών και λόγω του μεγέθους του κλειδιού επιβεβαίωσης της υπογραφής. Μειονεκτήματα Είναι χαρακτηριστικά πιο αργά σε σχέση με τα συμμετρικά κρυπτοσυστήματα. Το μέγεθος των κλειδιών.
Το σύστημα RSA είναι ένα σύστημα ασύμμετρης κρυπτογραφίας που προσφέρει κρυπτογράφηση και ψηφιακές υπογραφές. Αναπτύχθηκε το 1977 από τους Ron Rivest, Adi Shamir και Leonard Adleman. Από τα αρχικά των επιθέτων τους προέρχεται το ακρωνύμιο RSA. Κλειδιά μεγέθους 1024-2048 bits, συνήθως.
Eίναι ένα αριθμητικό σύστημα για ακεραίους στο οποίο το αποτέλεσμα μίας πράξης δεν είναι δυνατό να είναι μεγαλύτερο από μια δεδομένη τιμή. Γνωστό παράδειγμα είναι η χρήση του 24ωρου ρολογιού, (αριθμητική modulo), οι ώρες αρχίζουν να ξαναμετράνε από την αρχή όταν φτάσουν στο 24
Το RSA λειτουργεί ως εξής: Παίρνουμε δύο μεγάλους πρώτους αριθμούς p,q. Στα μαθηματικά, πρώτος αριθμός είναι ένας φυσικός αριθμός που έχει ακριβώς 2 διαφορετικούς φυσικούς διαιρέτες: το 1 και τον εαυτό του Υπολογίζουμε το γινόμενο τους n = pq. Το n καλείται συντελεστής συστήματος. Διαλέγουμε ένα αριθμό e μικρότερο του n και τέτοιο, ώστε e και (p- 1)(q-1) να μην έχουν κοινούς διαιρέτες εκτός του 1. Βρίσκουμε έναν άλλο αριθμό d, ώστε (ed-1) να διαιρείται από το (p- 1)(q-1). Το d είναι το αντίστροφο του e mod(p-1)(q-1)
Τα ζευγάρια (n,e) και (n,d) καλούνται δημόσια κλείδα και ιδιωτική κλείδα, αντίστοιχα. Όλα τα μέρη του ιδιωτικού κλειδιού πρέπει να κρατηθούν μυστικά Τα p και q είναι ευαίσθητα καθώς από αυτά παράγεται το n και επιτρέπουν τον υπολογισμό του d δεδομένου του e
Είναι δύσκολο να βρεθεί η ιδιωτική κλείδα d από την δημόσια κλείδα e. Αυτό θα απαιτούσε την εύρεση των διαιρετέων του αριθμού n, δηλαδή των αριθμών p και q. Ο n είναι πολύ μεγάλος και επειδή είναι πρώτος, θα έχει μόνο δύο πρώτους διαιρέτες. Άρα η εύρεση των διαιρετέων είναι πολύ δύσκολη έως και αδύνατη. Στο δυσεπίλυτο αυτό πρόβλημα βασίζεται το σύστημα RSA. Η ανακάλυψη μιας εύκολης μεθόδου επίλυσης του προβλήματος θα αχρήστευε το RSA
Με το RSA η κρυπτογράφηση και η πιστοποίηση ταυτότητας πραγματοποιούνται χωρίς των κοινή χρήση ιδιωτικών κλείδων. Ο καθένας χρησιμοποιεί μόνο την δικιά του ιδιωτική κλείδα ή την δημόσια κλείδα οποιουδήποτε άλλου. Όλοι μπορούν να στείλουν ένα κρυπτογραφημένο μήνυμα ή να επαληθεύσουν μια υπογραφή, αλλά μόνο ο κάτοχος της σωστής ιδιωτικής κλείδας μπορεί να αποκρυπτογραφήσει ή να υπογράψει ένα μήνυμα.
Έστω ο χρήστης Α που θέλει να στείλει κρυπτογραφημένο στον χρήστη Β ένα έγγραφο: Ο Α κρυπτογραφεί το έγγραφο με την εξής εξίσωση: c = m e mod n, όπου (n,e) είναι η δημόσια κλείδα του Β. Ο Β, όταν παραλάβει το μήνυμα θα εφαρμόσει την εξής εξίσωση: m = c d mod n, όπου (n,d) η ιδιωτική κλείδα του Β. Η μαθηματική σχέση που συνδέει το e και το d εξασφαλίζει το γεγονός ότι ο Β αποκρυπτογραφεί το μήνυμα. Αφού μόνο ο Β ξέρει το d, μόνο αυτός μπορεί να αποκρυπτογραφήσει το μήνυμα.
Παραγωγή κλειδιού: Επιλογή πρώτων αριθμών: p=17 & q=11 Υπολογισμός του n = pq =17 11=187 Υπολογισμός του (p 1)(q-1)=16 10=160 Επιλογή του e τέτοιου ώστε Μ.Κ.Δ.(e,160)=1 Επιλογή e=7 Προσδιορισμός του d τέτοιου ώστε de=1 mod 160 και d < 160 Η τιμή είναι d=23 μιας και 23 7=161= 1 160+1 Δημόσιο κλειδί = {187, 7} Ιδιωτικό κλειδί = {187,23}
Κρυπτογράφηση/Αποκρυπτογράφηση Μηνύματος Δεδομένου μηνύματος M = 88 (88<187) Κρυπτογράφηση: C = 88 7 mod 187 = 11 Αποκρυπτογράφηση: M = 11 23 mod 187 = 88
Ας υποθέσουμε, τώρα, ότι ο Α θέλει να στείλει μήνυμα στον Β με τέτοιον τρόπο ώστε ο Β να είναι σίγουρος ότι το μήνυμα είναι αυθεντικό και δεν έχει μεταβληθεί. Ο Α υπογράφει το έγγραφο με ως εξής: s = m d mod n, όπου d και n είναι η ιδιωτική κλείδα του Α. Για να επαληθεύσει την υπογραφή ο Β εκτελεί την πράξη: m = s e mod n, όπου e και n η δημόσια κλείδα του Α.
Για τον RSA επιλέγουμε p=3, q=5 έτσι ώστε n=15. Έπειτα επιλέγουμε e=3. Θέλουμε να κρυπτογραφήσουμε τη λέξη CAT. Χρησιμοποιούμε ASCII για να γράψουμε τη λέξη CAT σαν σειρά από 21 bits. CAT 100001110000011010100 C 1000011 A 1000001 T 1010100
Χωρίζουμε τη σειρά που προκύπτει: 100001110000011010100...σε 7 μπλοκ των 3 bits: 100 001 110 000 011 010 100...και γράφουμε το καθένα από αυτά ως ακέραιο από το 0 εώς το 7: 100 001 110 000 011 010 100 4 1 6 0 3 2 4
Έχουμε: Δημόσιο κλειδί: (15, 3) Ιδιωτικό κλειδί: (15, 9) Κρυπτογράφηση: C = m e (mod n) Άρα: C = m e (mod n) = 4 3 (mod 15) = 4 1 3 (mod 15) = 1 6 3 (mod 15) = 6 0 3 (mod 15) = 0 3 3 (mod 15) = 12 2 3 (mod 15) = 2 4 3 (mod 15) = 4
Τελικά... Αρχικό: 4 1 6 0 3 2 4 Κρυπτογραφημένο: 4 1 6 0 12 2 4
Με τη χρήση του εργαλείου CryptTool να εκτελεστούν οι ακόλουθες ασκήσεις Δημιουργία ενός ασύμμετρου ζεύγους κλειδιών Κρυπτογράφηση του κειμένου που δημιουργήθηκε με τη χρήση του ασύμμετρου αλγορίθμου RSA. Αποκρυπτογράφηση του κρυπτογραφήματος που προέκυψε. RSA Demonstration