Συναρτήσεις Σύνοψης Ασύμμετρη Κρυπτογραφία Διάλεξη στις 11.03.2010 Δρ. Χρήστος Αναγνωστόπουλος (bleu@di.uoa.gr)
Αυθεντικοποίηση Συμμετρικής Κρυπτογραφίας Κώδικας Αυθεντικοποίησης Μηνυμάτων (Message Authentication Code – MAC). Η τεχνική αυτή απαιτεί τη χρήση ενός μυστικού κλειδιού, ώστε να παραχθεί ένα μικρό τμήμα δεδομένων το οποίο προσαρτάται στο μήνυμα. Παράδειγμα: έστω δύο οντότητες (α) και (π) που επιθυμούν να επικοινωνήσουν και γνωρίζουν ένα μυστικό κλειδί (δ). Όταν ο (α) επιθυμεί να αποστείλει ένα μήνυμα (μ) στο (π) υπολογίζει το MAC, ως συνάρτηση του μηνύματος (μ) και του μυστικού κλειδιού (δ) : MAC=h(δ,μ). Το MAC επισυνάπτεται στο μήνυμα και αποστέλλεται στο (π). Ο (π) πραγματοποιεί τον ίδιο υπολογισμό στο μήνυμα που έλαβε, χρησιμοποιώντας το ίδιο μυστικό κλειδί (δ) και παράγει ένα νέο MAC. Το MAC που παραλήφθηκε συγκρίνεται με αυτό που έχει υπολογιστεί.
Αυθεντικοποίηση Συμμετρικής Κρυπτογραφίας Εάν υποτεθεί ότι μόνον ο (π) και ο (α) γνωρίζουν το μυστικό κλειδί και εάν τα MAC είναι ίσα, τότε συνάγονται τα ακόλουθα: Ο (π) επιβεβαιώνει ότι το μήνυμα δεν έχει τροποποιηθεί κατά τη διάρκεια της μετάδοσης. Εάν ένας επιτιθέμενος (κ) τροποποιήσει το μήνυμα, τότε κατά τον υπολογισμό του MAC από τον (π) θα προκύψει διαφορά με το αντίστοιχο MAC του (α). Επειδή ο επιτιθέμενος (κ) δε γνωρίζει το μυστικό κλειδί, δεν μπορεί να αλλάξει το MAC ώστε να ανταποκρίνεται στις αλλαγές του μηνύματος. Ο (π) επιβεβαιώνει ότι το (μ) προέρχεται από το συγκεκριμένο (α). Αυτή η διαβεβαίωση πηγάζει από το γεγονός ότι κανείς, πλην του (α) και του νόμιμα εξουσιοδοτημένου (π), δε γνωρίζει το μυστικό κλειδί, συνεπώς κανένας άλλος δεν μπορεί να προετοιμάσει ένα μήνυμα με το κατάλληλο MAC. Εάν το (μ) περιλαμβάνει αριθμό ακολουθίας, όπως αυτοί που χρησιμοποιούνται στα πρωτόκολλα X.25, HDLC και TCP, τότε ο (π) μπορεί να επιβεβαιώσει την ορθότητα της σωστής ακολουθίας, επειδή ο επιτιθέμενος (κ) δεν μπορεί να τροποποιήσει επιτυχώς έναν αριθμό ακολουθίας
Συνάρτηση Σύνοψης Σκοπός μίας συνάρτησης σύνοψης είναι η δημιουργία ενός ψηφιακού αποτυπώματος (digital fingerprint) ενός αρχείου, ενός μηνύματος (μ) ή άλλης μορφής δεδομένων. Μια συνάρτηση σύνοψης h για να είναι χρήσιμη στην αυθεντικοποίηση μηνυμάτων πρέπει να ικανοποιεί τις ακόλουθες απαιτήσεις: Η συνάρτηση h πρέπει να μπορεί να εφαρμοστεί σε τμήμα δεδομένων οποιουδήποτε μεγέθους. Η συνάρτηση h πρέπει να παράγει έξοδο συγκεκριμένου μικρού σταθερού μήκους. Η συνάρτηση h(μ) πρέπει να είναι εύκολα υπολογίσιμη για δοθέν (μ), καθιστώντας πρακτική την υλοποίηση είτε με λογισμικό είτε με υλικό. Για οποιοδήποτε δοθέν y πρέπει να είναι υπολογιστικά ανέφικτο να βρεθεί (μ), τέτοιο ώστε h(μ)=y. Για δοθέν τμήμα δεδομένων (ξ), πρέπει να είναι υπολογιστικά ανέφικτο να βρεθεί κάποιο y ≠ ξ, τέτοιο ώστε h(y)=h(ξ). Πρέπει να είναι υπολογιστικά ανέφικτο να βρεθεί ζεύγος (μ, ξ) τέτοιο ώστε h(μ) = h(ξ). Η σύνοψη h(μ) πρέπει να μπορεί να αποστέλλεται μαζί με το μήνυμα (μ).
Συνάρτηση Σύνοψης Οι τρεις πρώτες ιδιότητες αποτελούν τυπικές απαιτήσεις για την πρακτική εφαρμογή μιας συνάρτησης σύνοψης στην αυθεντικοποίηση μηνυμάτων. Η τέταρτη ιδιότητα αποτελεί τυπικό χαρακτηριστικό μιας μονόδρομης συνάρτησης (one-way). Πρέπει να είναι εύκολο να παραχθεί η σύνοψη δοθέντος μηνύματος (μ) , αλλά ουσιαστικά να είναι αδύνατο να παραχθεί το μήνυμα δοθείσας της σύνοψης h. Αυτή η ιδιότητα είναι πολύ σημαντική εάν η τεχνική αυθεντικοποίησης εμπεριέχει τη χρήση μυστικής τιμής salt: password, ημερομηνία γέννησης…. Η μυστική τιμή salt δεν αποστέλλεται αυτόνομη. Ωστόσο εάν η συνάρτηση σύνοψης δεν ήταν μονόδρομη, ένας επιτιθέμενος θα μπορούσε εύκολα να ανακαλύψει τη μυστική τιμή salt, με βάση την ακόλουθη διαδικασία: Εάν ο επιτιθέμενος μπορούσε να παρατηρήσει ή να ανακόψει τη πορεία μετάδοσης ενός μηνύματος, τότε ο επιτιθέμενος θα αποκτούσε το μήνυμα (μ) και τον κωδικό σύνοψης MAC = h(μ|salt). Ο επιτιθέμενος στη συνέχεια θα αντέστρεφε τη συνάρτηση σύνοψης για να αποκτήσει το μ|salt = h-1 (MAC). Επειδή, όμως, ο επιτιθέμενος διατηρούσε και το (μ) και το (μ|salt), θα ήταν εύκολο πλέον να ανακαλύψει το salt.
Συνάρτηση Σύνοψης Η πέμπτη ιδιότητα εξασφαλίζει το γεγονός ότι είναι αδύνατο να βρεθεί εναλλακτικό μήνυμα που να παράγει την ίδια τιμή σύνοψης με το δοθέν μήνυμα. Το γεγονός αυτό αποτρέπει την πλαστογράφηση κατά τη χρήση ενός κρυπτογραφημένου κωδικού σύνοψης. Εάν αυτή η ιδιότητα δεν ίσχυε, ο επιτιθέμενος (κ) θα ήταν σε θέση να πραγματοποιήσει διαδοχικά τις εξής ενέργειες: αρχικά να παρατηρήσει ή να υποκλέψει ένα μήνυμα και την κρυπτογραφημένη σύνοψη, στη συνέχεια να δημιουργήσει μία μη κρυπτογραφημένη σύνοψη από το μήνυμα και ακολούθως να δημιουργήσει εναλλακτικό μήνυμα με την ίδια σύνοψη. Μία συνάρτηση σύνοψης που ικανοποιεί τις πέντε πρώτες ιδιότητες ονομάζεται αδύναμη συνάρτηση σύνοψης (weak hash function).
Συνάρτηση Σύνοψης Εάν ικανοποιείται και η έκτη ιδιότητα ονομάζεται ισχυρή συνάρτηση σύνοψης (strong hash function). Η ιδιότητα αυτή προστατεύει τόσο τον (α) όσο και τον (π) από ιδιαίτερα έξυπνες κλάσεις επιθέσεων, γνωστές ως επιθέσεις τύπου γενεθλίων (birthday attack)*. Με την παροχή αυθεντικοποίησης, η μέθοδος αυτή παρέχει υπηρεσία ακεραιότητας δεδομένων: Αν κάποια bits στο μήνυμα τροποποιηθούν κατά τη διάρκεια της μετάδοσης, τότε η σύνοψη που θα έχει επισυναφθεί στο τέλος του μηνύματος δε θα αντιστοιχεί με το μήνυμα. *Stallings W., Cryptography and Network Security: Principles and Practice, 2nd edition, Prentice Hall, 1999
Συνάρτηση Σύνοψης Έστω n ο αριθμός των ατόμων σε μια αίθουσα. Τότε η πιθανότητα 1-p(n) ένα ζευγάρι (α, π) να έχει την ίδια μέρα του χρόνου γενέθλια είναι πάνω από 50% για τουλάχιστον 23 άτομα! …η πιθανότητα το 2ο άτομο να μην έχει τα ίδια γενέθλια με το πρώτο είναι (364/365), το τρίτο άτομο να μην έχει τα ίδια γενέθλια με τα δύο πρώτα είναι (363/365), κτλ. Έτσι: Συνδυασμός 7 ατόμων να έχουν την ίδια μέρα γενέθλια: 23,417,361,992,539,211,425 με 1-p(n) = 7.4%
Συνάρτηση Σύνοψης Αλγόριθμοι Σύνοψης: SHA-1, NIST(1994) RIPEMD-160 MD5 (Message Digest, Rivest 1991) Είσοδος μηνύματος (μ) αυθαίρετου μήκους. Έξοδος σύνοψης 128-bits Αμφισβητούμενη ασφάλεια SHA-1, NIST(1994) Είσοδος μήνυμα μήκους 264bit Έξοδος σύνοψης 160,224,256,384,512-bits (SHA-2) Εφαρμογές: TLS, SSL, PGP, S/MIME και IPSec. Περισσότερο γρήγορος από MD5 RIPEMD-160 Σύνοψη 160, 256,320-bits Ασφαλέστερος από MD5 HMAC
Συνάρτηση Σύνοψης: Χρήση (salt) 2 σύνοψη σύνοψη 5 (μ) (μ) (μ) 1 h(μ,salt) (salt) 4 h(μ,salt) 6 7 σύνοψη 8 3 σύνοψη Ακεραιότητα και αυθεντικοποίηση αποστολής από τον (α) Αποστολέας (α) Παραλήπτης (π)
Ασύμμετρη Κρυπτογραφία
Εισαγωγή Ιδέα των Diffiee & Hellman, 1976 Σχήμα κρυπτογραφίας όπου υπάρχει ένα ζεύγος δημόσιου (Δ)-ιδιωτικού κλειδιού (Ι), έτσι ώστε το κλειδί Δ γίνεται δημόσια διαθέσιμο και Το κλειδί Ι είναι μυστικό Απαιτείται να είναι υπολογιστικά ανέφικτο να προσδιοριστεί το Ι γνωρίζοντας μόνο το Δ. Τυπικό σχήμα RSA (Rivest, Shamir, Adleman, 1978).
Εισαγωγή Σχέση με Συμμετρική κρυπτογραφία Δεν μπορεί να την αντικαταστήσει. Δεν είναι ούτε περισσότερο ούτε λιγότερο ασφαλής σε κρυπτανάλυση. Η διανομή κλειδιών δεν είναι και πολύ απλή διαδικασία. Εμπλέκονται περισσότερες οντότητες. Η διαχείριση κλειδιών (π.χ., παραγωγή, διαφύλαξη, ενημέρωση, διανομή) είναι δύσκολη.
Συνιστώσες Αρχικό μήνυμα -plaintext Αλγόριθμος κρυπτογράφησης Δημόσιο (Δ) και Ιδιωτικό (Ι) κλειδί: Ζεύγος κλειδιών, που έχει επιλεγεί με τρόπον ώστε, το κλειδί Δ του παραλήπτη (Δπ) να χρησιμοποιηθεί για κρυπτογράφηση και το κλειδί Ι του παραλήπτη (Ιπ) για αποκρυπτογράφηση. Οι ακριβείς μετασχηματισμοί πραγματοποιούνται από τον αλγόριθμο κρυπτογράφησης / αποκρυπτογράφησης, εξαρτώμενοι από τις τιμές του Δ και Ι κλειδιού που παρέχονται ως είσοδοι.
Συνιστώσες Κρυπτογραφημένο μήνυμα: Το μήνυμα που παράγεται από τον αλγόριθμο κρυπτογράφησης ως έξοδος. Εξαρτάται από το αρχικό μήνυμα και το δημόσιο κλειδί Δπ του παραλήπτη. Για ένα συγκεκριμένο μήνυμα (μ) από δύο διαφορετικά κλειδιά (Δπ) και (Δπ’) παράγονται από τη συνάρτηση κρυπτογράφησης δύο διαφορετικά κρυπτογραφημένα κείμενα. Αλγόριθμος αποκρυπτογράφησης: ο αλγόριθμος που δέχεται ως είσοδο το κρυπτογραφημένο μήνυμα (μ) και το ιδιωτικό κλειδί (Ιπ) και παράγει το πρωτότυπο αρχικό μήνυμα.
Βασικές Υπηρεσίες Ασύμμετρης Κρυπτογραφίας Κρυπτογράφηση & Αποκρυπτογράφηση Ο αποστολέας (α) κρυπτογραφεί το μήνυμα (μ) με το δημόσιο κλειδί (Δπ) του παραλήπτη. Ο παραλήπτης (π) αποκρυπτογραφεί το κρυπτογραφημένο μήνυμα με το ιδιωτικό του κλειδί (Ιπ) που μόνον αυτός το κατέχει. Παρέχεται: Εμπιστευτικότητα και Ακεραιότητα Ψηφιακή Υπογραφή Ο αποστολέας (α) κρυπτογραφεί ή υπογράφει το μήνυμα με το ιδιωτικό του κλειδί (Ια) που μόνο αυτός το κατέχει. Ο παραλήπτης (π) αποκρυπτογραφεί το κρυπτογραφημένο μήνυμα με το δημόσιο κλειδί (Δα) του αποστολέα. Παρέχεται: Αυθεντικοποίηση Ανταλλαγή κλειδιών Τόσο ο αποστολέας όσο και ο παραλήπτης συνεργάζονται για να ανταλλάξουν τα κλειδιά σε μία ή περισσότερες συνόδους (sessions). Ενδέχεται να εμπλέκονται κατά την ανταλλαγή και τα ιδιωτικά κλειδιά τους.
Απλό Σενάριο Εμπιστευτικότητας Κάθε οντότητα (α) και (π) παράγει ένα ζεύγος κλειδιών (Δα, Ια) και (Δπ, Ιπ), το οποίο θα χρησιμοποιηθεί για την κρυπτογράφηση και αποκρυπτογράφηση των μηνυμάτων. Κάθε οντότητα τοποθετεί το δημόσιο κλειδί του σε μία βάση δεδομένων ενός φορέα ή σε κάποιο άλλο προσβάσιμο αρχείο. Το άλλο κλειδί, το ιδιωτικό, διαφυλάσσεται διατηρώντας τη μυστικότητα. Για επίτευξη στοιχειώδους λειτουργικότητας, απαιτείται κάθε οντότητα να είναι σε θέση με ευκολία να ανακτήσει τα δημόσια κλειδιά των άλλων (π.χ., μέσω πιστοποιητικών,…). Εάν ο (α) επιθυμεί να στείλει ένα μήνυμα στον (π) και απαιτεί διασφάλιση της εμπιστευτικότητας του μηνύματος, τότε o (α) κρυπτογραφεί το μήνυμά του (μ) με το δημόσιο κλειδί Δπ του (π). Ο (π) λαμβάνει το μήνυμα (μ) και το αποκρυπτογραφεί με το ιδιωτικό κλειδί του Ιπ. Κανένας άλλος δεν μπορεί να αποκρυπτογραφήσει το μήνυμα, αφού μόνον ο (π) γνωρίζει το ιδιωτικό του κλειδί Ιπ, που σχετίζεται μοναδικά με το αντίστοιχο δημόσιο κλειδί Δπ που χρησιμοποιήθηκε για την κρυπτογράφηση από τον (α).
Απλό Σενάριο Εμπιστευτικότητας Προϋπόθεση αυτής της προσέγγισης είναι όλοι οι συμμετέχοντες να έχουν πρόσβαση στα δημόσια κλειδιά, ενώ τα ιδιωτικά κλειδιά να παράγονται τοπικά για τον κάθε συμμετέχοντα ώστε να διασφαλίζεται αυστηρά η μυστικότητα τους. Οποιαδήποτε στιγμή, ένας χρήστης μπορεί να τροποποιήσει το ιδιωτικό του κλειδί και ταυτοχρόνως να δημοσιεύσει το αντίστοιχο νέο δημόσιο κλειδί, έτσι ώστε να αντικατασταθεί το προηγούμενο μη ισχύον πλέον δημόσιο κλειδί.
Απλό Σενάριο Εμπιστευτικότητας (Δα, Ια) (Δπ, Ιπ) (μ) 3 cipher-text 1 αποκρυπτογράφηση f-1(Ιπ, f(Δπ, μ)) κρυπτογράφηση f(Δπ, μ) (μ) 4 2 cipher-text
Απλό Σενάριο Αυθεντικοποίησης (Δα, Ια) (Δπ, Ιπ) (μ) 3 σύνοψη 1 αποκρυπτογράφηση f-1(Δα, f(Ια, μ)) κρυπτογράφηση f(Ια, μ) (μ) 4 2 σύνοψη
Απλό Σενάριο Αυθεντικοποίησης και Ψηφιακής Υπογραφής (Δα, Ια) (Δπ, Ιπ) 5.Ι υπογραφή υπογραφή (μ) (μ) (μ) 1 4 5.ΙΙ αποκρυπτογράφηση f-1(Δα, f(Ια, μ)) h(μ) 5.ΙV 2 h(μ) σύνοψη σύνοψη κρυπτογράφηση f(Ια, μ) σύνοψη 6 Ακεραιότητα και αυθεντικοποίηση αποστολής από τον (α) 3 5.ΙΙΙ υπογραφή
Σενάριο Χρήσης Συμμετρικής Κρυπτογραφίας βάσει Δημόσιου και Ιδιωτικού κλειδιού Σε ένα συμμετρικό κρυπτοσύστημα προκειμένου να επικοινωνήσουν δύο χρήστες πρέπει να διαμοιράζονται τη γνώση ενός κοινού μυστικού κλειδιού (δ). Υποτίθεται ότι ο (α) θέλει να δημιουργήσει μία εφαρμογή που θα του παρέχει τη δυνατότητα να ανταλλάσσει μηνύματα (μ) με χρήση υπηρεσίας ηλεκτρονικού ταχυδρομείου με τον (π), χρησιμοποιώντας συμμετρικό κρυπτοσύστημα. Θα πρέπει να βρεθεί ένας τρόπος να αποστείλει ο (α) στον (π) το μυστικό κλειδί (δ). Ένας πολύ διαδεδομένος τρόπος είναι η αξιοποίηση ψηφιακού φακέλου (digital envelope): δηλαδή να χρησιμοποιήσει ο (α) ασύμμετρο κρυπτοσύστημα για την αποστολή του μυστικού κλειδιού. Προφανώς απαιτείται η χρήση πιστοποιητικών και η λειτουργία Public Key Infrastructure, ώστε να εξασφαλίζεται η αυθεντικότητα του αποστολέα (α) και η ακεραιότητα του μηνύματος (μ).
Συμμετρική Κρυπτογραφία βάσει Δημόσιου και Ιδιωτικού κλειδιού (Ψηφιακός Φάκελος) Τα βήματα που θα πρέπει να ακολουθηθούν σε μία τέτοια περίπτωση είναι τα ακόλουθα: Ο (α) ετοιμάζει το προς αποστολή μήνυμα (μ). Ο (α) κρυπτογραφεί το μήνυμα με συμβατικό κρυπτοσύστημα f(), χρησιμοποιώντας ένα μυστικό κλειδί (δ) που ο ίδιος δημιούργησε. Ο (α) κρυπτογραφεί το μυστικό κλειδί (δ) με το δημόσιο κλειδί του παραλήπτη Δπ, παράγοντας το κρυπτογραφημένο κλειδί (ξ). Ο (α) επισυνάπτει το κρυπτογραφημένο κλειδί (ξ) στο κρυπτογραφημένο μήνυμα (μ) και το αποστέλλει στον (π) – ψηφιακός φάκελος. Ο (π) είναι ο μόνος που μπορεί να αποκρυπτογραφήσει το μήνυμα (ξ, μ) και να λάβει το κρυπτογραφημένο κείμενο και το κρυπτογραφημένο κλειδί (ξ) με χρήση του ιδιωτικού του κλειδιού Ιπ. Αν ο (α) έχει ανακτήσει το δημόσιο κλειδί Δπ του (π) μέσω πιστοποιητικού από κάποια Έμπιστη Τρίτη Οντότητα, τότε ο (π) είναι σίγουρος ότι το μυστικό κλειδί είναι ορθό. Ο (π) αποκρυπτογραφεί το κρυπτογραφημένο μήνυμα (μ) με το αποκρυπτογραφημένο κλειδί (δ).
Σενάριο Χρήσης Συμμετρικής Κρυπτογραφίας βάσει Δημόσιου και Ιδιωτικού κλειδιού 4: ψηφιακός φάκελος 5 (Δπ, Ιπ) (Δα, Ια) cipher (ψ) (μ) κρυπτο- γραφημένο κλειδί (ξ) αποκρυπτογράφηση f-1(Ιπ, f(Δπ, δ)) κρυπτο- γραφημένο κλειδί (ξ) 1 cipher (ψ) 6 κρυπτογράφηση g(μ, δ) αποκρυπτογράφηση μ= g-1(ψ, δ) 2 cipher (ψ) (μ) 3 κρυπτογράφηση f(Δπ, δ) 7 κρυπτογραφημένο κλειδί (ξ)
Απαιτήσεις Ασύμμετρης Κρυπτογραφίας Είναι υπολογιστικά εφικτό για μια οντότητα (ο) να παράγει ένα ζεύγος κλειδιών Δο και Ιο. Είναι υπολογιστικά εφικτό για έναν αποστολέα (α), που γνωρίζει το δημόσιο κλειδί του παραλήπτη Δπ και το μήνυμα (μ) να δημιουργεί το αντίστοιχο κρυπτογραφημένο μήνυμα f(μ, Δπ) Είναι υπολογιστικά εφικτό για έναν παραλήπτη (π) που γνωρίζει το ιδιωτικό κλειδί του και λαμβάνει το f(μ, Δπ) να ανακτήσει το αρχικό μήνυμα (μ) βάσει του ιδιωτικού κλειδιού Ιπ και μόνον. Είναι υπολογιστικά ανέφικτο γνωρίζοντας μόνο το δημόσιο κλειδί Δο να προσδιοριστεί το ιδιωτικό κλειδί Ιο. Είναι υπολογιστικά ανέφικτο γνωρίζοντας το δημόσιο κλειδί Δο και το κρυπτογραφημένο μήνυμα f(μ, Δπ) να αποκρυπτογραφηθεί το μήνυμα (μ). Οποιοδήποτε από τα δύο κλειδιά μπορεί να χρησιμοποιηθεί για την κρυπτογράφηση και το άλλο για την αποκρυπτογράφηση και αντίστροφα.
Αλγόριθμοι Ασύμμετρης Κρυπτογραφίας και Διανομής
Αλγόριθμος Κρυπτογραφίας: RSA Ένα από τα πρώτα ασύμμετρα κρυπτοσυστήματα αναπτύχθηκε το 1977 από τους R. Rivest, A. Shamir και L. Adleman στο ΜΙΤ και δημοσιεύτηκε για πρώτη φορά το 1978. Από εκείνη τη στιγμή το RSA κυριάρχησε ως η πλέον αποδεκτή και εύκολα υλοποιήσιμη προσέγγιση για ασύμμετρα κρυπτοσυστήματα. Ο RSA είναι αλγόριθμος κρυπτογράφησης στον οποίο το αρχικό και το κρυπτογραφημένο κείμενο (μ) είναι ακέραιοι αριθμοί με τιμές μεταξύ 0 και n-1, για κάποιο n.
Αλγόριθμος Κρυπτογραφίας: RSA Η κρυπτογράφηση και η αποκρυπτογράφηση για ένα κείμενο (μ) και για το αντίστοιχο κρυπτογραφημένο (ξ) συμβολίζονται ως ακολούθως: ξ = μe mod n μ = ξd mod n = (μe)d mod n = μed mod n Τόσο ο αποστολέας όσο και ο παραλήπτης θα πρέπει να γνωρίζουν τις τιμές των n και e. Αντιθέτως, την τιμή του d πρέπει να γνωρίζει μόνον ο παραλήπτης. Ο RSA είναι ένας αλγόριθμος για ασύμμετρο κρυπτοσύστημα με δημόσιο κλειδί Δ={e, n} και ιδιωτικό κλειδί Ι ={d, n}. Για να είναι ικανοποιητικός ο αλγόριθμος αυτός θα πρέπει να ικανοποιούνται οι ακόλουθες απαιτήσεις: Είναι δυνατόν να βρεθούν τιμές για τα e, d, n, τέτοιες ώστε να ισχύει: μed = μ mod n, για κάθε μ < n. Είναι σχετικά εύκολο να υπολογιστούν τα μe και ξ, για κάθε μ < n. Είναι αδύνατο να προσδιοριστεί το d, δοθέντων των e και n. Οι δύο πρώτες απαιτήσεις ικανοποιούνται εύκολα. Η τρίτη απαίτηση μπορεί να ικανοποιηθεί μόνο για μεγάλες τιμές των e και n
Αλγόριθμος Κρυπτογραφίας: RSA Αρχικά επιλέγονται δύο πρώτοι αριθμοί p, q και υπολογίζεται το γινόμενό τους (p)(q) = n, το οποίο είναι βασικός παράγοντας στη διαδικασία κρυπτογράφησης και αποκρυπτογράφησης. Ακολούθως χρησιμοποιείται η τιμή της συνάρτησης φ(n), γνωστή ως συνάρτηση του Euler για το n, ήτοι φ(n) =(p-1)(q-1), η οποία δείχνει το “πλήθος των θετικών ακεραίων που είναι μικρότεροι από n και πρώτοι με αυτόν”. Επιλέγεται ένας ακέραιος αριθμός e, ο οποίος είναι πρώτος αριθμός ως προς το φ(n), δηλαδή ο μέγιστος κοινός διαιρέτης του e και του φ(n) να είναι το 1. Υπολογίζεται ο d, ως ο φυσικός αντίστροφος αριθμός του e mod φ(n), από τη σχέση d = e-1 mod φ(n). Μπορεί να αποδειχθεί ότι το d και το e πληρούν τις απαιτούμενες ιδιότητες.
Αλγόριθμος Κρυπτογραφίας: RSA Υποθέτουμε ότι ο χρήστης (π) έχει δημοσιεύσει το δημόσιο κλειδί του Δπ και ο χρήστης (α) επιθυμεί να στείλει ένα μήνυμα (μ) στο (π). Τότε ο (α) υπολογίζει την παράσταση ξ = μe mod n και μεταδίδει το ξ. Για την αποκρυπτογράφηση του μηνύματος, ο χρήστης (π) υπολογίζει την παράσταση μ = ξd mod n. Παράδειγμα: Επιλέγονται δύο πρώτοι αριθμοί, p=7 και q=17 Υπολογίζεται η τιμή του n = pq =7*17 = 119 Υπολογίζεται η τιμή του φ(n) = (p-1)(q-1) = 96 Επιλέγεται το e, το οποίο είναι πρώτος αριθμός ως προς το φ(n) = 96 και μικρότερο του φ(n). Στην περίπτωση αυτή e = 5. Προσδιορίζεται το d έτσι, ώστε de = 1 mod 96 και d < 96. Η σωστή τιμή του d είναι 77, γιατί 77*5 = 385 = 4*96+1. Δημόσιο κλειδί Δ = {e, n} Ιδιωτικό κλειδί Ι = {d, n}
Αλγόριθμος Κρυπτογραφίας: RSA Κρυπτογράφηση: Μήνυμα (μ) < n ξ = μe mod n Αποκρυπτογράφηση: Κρυπτογράφημα ξ Μήνυμα μ = ξd mod n. Στο παράδειγμα: Με τη διαδικασία αυτή υπολογίσθηκε το δημόσιο κλειδί {5, 119} και το ιδιωτικό κλειδί {77, 119} για ένα αρχικό κείμενο με μ=19. Για την κρυπτογράφηση, το 19 υψώνεται στην 5η δύναμη δίνοντας αποτέλεσμα 2476099. Διαιρούμενο με το 119 δίνει υπόλοιπο 66. Ακολούθως, 195 = 66 mod 199 και το κρυπτογραφημένο κείμενο είναι ξ = 66. Για την αποκρυπτογράφηση προκύπτει ότι 6677 = 9 mod 119.
Αλγόριθμος Κρυπτογραφίας: RSA Η προσέγγιση της εξαντλητικής αναζήτησης: Δοκιμάζονται όλα τα πιθανά ιδιωτικά κλειδιά. Όσο μεγαλύτερο πλήθος bits χρησιμοποιείται για τα e, d τόσο πιο ασφαλής είναι ο αλγόριθμος. Παρόλα αυτά, επειδή απαιτούνται πολύπλοκοι υπολογισμοί τόσο κατά τη δημιουργία των κλειδιών όσο και κατά την κρυπτογράφηση και αποκρυπτογράφηση, όσο μεγαλύτερο είναι το μέγεθος των κλειδιών τόσο βραδύτερος θα είναι ο ρυθμός λειτουργίας του συστήματος. Έχει επικεντρωθεί στη διαδικασία ανεύρεσης δύο πρώτων αριθμών που να είναι παράγοντες του n. Για ένα μεγάλο αριθμό n, η διαδικασία αυτή αποτελεί δύσκολο πρόβλημα αλλά όχι σε τόσο μεγάλο βαθμό όσο ήταν τα προηγούμενα χρόνια.
Αλγόριθμος Κρυπτογραφίας: RSA Τον Ιανουάριο του 1977 οι σχεδιαστές του RSA ζήτησαν από τους αναγνώστες του περιοδικού Scientific American να αποκρυπτογραφήσουν ένα κρυπτογραφημένο μήνυμα που είχαν δημοσιεύσει σε στήλη του περιοδικού. Προσέφεραν αμοιβή $100 για μία μόνο πρόταση του αποκρυπτογραφημένου κειμένου, γεγονός που εκτιμούσαν πως δεν είναι δυνατό να συμβεί στα επόμενα 40 τετράκις εκατομμύρια χρόνια. Όμως τον Απρίλιο του 1994, μια ερευνητική ομάδα που εργαζόταν αξιοποιώντας την υπολογιστική ισχύ περισσότερων από 1600 υπολογιστές στο Internet κέρδισε το βραβείο μετά από 8 μήνες προσπάθεια. Στην περίπτωση αυτή, χρησιμοποιήθηκε δημόσιο κλειδί μεγέθους 129 δεκαδικών ψηφίων (μήκος του n), δηλαδή περίπου 428 bits. Επιπλέον, το 1996 αναλύθηκε σε γινόμενο πρώτων παραγόντων ένας αριθμός 130 ψηφίων με 10 φορές λιγότερες πράξεις από όσες είχαν απαιτηθεί κατά την ανάλυση του αριθμού με 129 ψηφία. Τα αποτελέσματα αυτά με κανένα τρόπο δε μειώνουν τις δυνατότητες του RSA. Απλώς σημαίνουν ότι πρέπει να χρησιμοποιούνται μεγαλύτερα μεγέθη κλειδιών. Ένα κλειδί μεγέθους 2048 bits θεωρείται ισχυρό για όλες τις σημερινές τυπικές εφαρμογές.
Αλγόριθμος Διανομής Κλειδιών: Diffie Hellman Σκοπός του αλγορίθμου είναι να καταστήσει εφικτή και ασφαλή μεταξύ δύο χρηστών την ανταλλαγή ενός μυστικού κλειδιού, το οποίο ακολούθως θα χρησιμοποιηθεί για κρυπτογράφηση μηνυμάτων. Ο αλγόριθμος περιορίζεται ακριβώς στην ανταλλαγή των κλειδιών. Η αποτελεσματικότητά του αλγορίθμου Diffie-Hellman βασίζεται στη δυσκολία υπολογισμού διακριτών λογαρίθμων. Συνοπτικά, ο διακριτός λογάριθμος ορίζεται ως εξής: Αρχικά προσδιορίζεται μία πρωτογενής ρίζα ενός πρώτου αριθμού p τέτοιου, ώστε οι δυνάμεις του να παράγουν όλους τους ακέραιους από το 0 ως το p-1. Έτσι, αν a είναι μία ρίζα του πρώτου αριθμού p, τότε οι αριθμοί: a mod p, a2 mod p, …, ap-1 mod p αποτελούν τους ακεραίους από το 1 έως το p-1 με κάποια μετάθεση. Για οποιοδήποτε ακέραιο b και για μια πρωτογενή ρίζα a ενός πρώτου αριθμού p μπορεί να βρεθεί ένας μοναδικός πρώτος αριθμός j τέτοιος ώστε b = aj mod p όπου 0≤ j ≤ (p-1). Ο εκθέτης j αναφέρεται ως ο διακριτός λογάριθμος ή δείκτης του b για βάση το a mod p που συμβολίζεται ως j = inda,p(b).
Αλγόριθμος Διανομής Κλειδιών: Diffie Hellman Ένας πρώτος αριθμός q και ένας ακέραιος a που είναι η πρωτογενής ρίζα του q. Έστω ότι οι (α) και (π) επιθυμούν να ανταλλάξουν ένα κλειδί (δ). Ο (α) επιλέγει ένα τυχαίο ακέραιο Χ(α) με Χ(α) < q και υπολογίζει το Y(α) = aΧ(α) mod q. Ομοίως, ο (π) επιλέγει ανεξάρτητα από τον (α) έναν τυχαίο ακέραιο Χ(π) με Χ(π) < q και υπολογίζει το Y(π) = aΧ(α) mod q. Κάθε πλευρά κρατά μυστική την αντίστοιχη τιμή του Χ, δηλαδή τα Χ(α), Χ(π) και θέτει την αντίστοιχη ποσότητα Υ δημοσίως διαθέσιμη στην άλλη πλευρά. Ο (α) υπολογίζει το κλειδί σύμφωνα με τη σχέση δ = (Y(π))Χ(α) mod q, όπως επίσης και ο (π) σύμφωνα με τη σχέση δ = (Y(α))Χ(π) mod q. Όπως αποδεικνύεται παρακάτω, αυτές οι δύο σχέσεις παράγουν το ίδιο αποτέλεσμα, δηλαδή δ = (Y(π))Χ(α) mod q = (Y(α))Χ(π) mod q.
Αλγόριθμος Διανομής Κλειδιών: Diffie Hellman Με τη διαδικασία αυτή, οι δύο πλευρές επιτυγχάνουν την ανταλλαγή ενός μυστικού κλειδιού (δ). Εφόσον τα Χ(α) και Χ(π) είναι μυστικά, ένας επιτιθέμενος έχει μόνον τα ακόλουθα στοιχεία για να αποπειραθεί να κρυπταναλύσει τον αλγόριθμο: q, a, Y(α), Y(π). Έτσι είναι αναγκασμένος να υπολογίσει ένα διακριτό λογάριθμο, για να κατορθώσει να υπολογίσει το κλειδί. Για παράδειγμα, αν επιτεθεί στην πλευρά του (π) θα πρέπει να υπολογίσει την ποσότητα Χ(π) =inda,q(Y(π)). Ο επιτιθέμενος στη συνέχεια, θα μπορεί να υπολογίσει το κλειδί (δ) με τον ίδιο τρόπο που το υπολογίζει και ο (π). Η ασφάλεια της ανταλλαγής κλειδιού κατά Diffie-Hellman έγκειται στο γεγονός ότι ενώ είναι υπολογιστικά εύκολο να υπολογιστεί η ποσότητα «δύναμη mod πρώτου αριθμού», είναι πολύ δύσκολο να υπολογιστούν οι διακριτοί λογάριθμοι. Για μεγάλους πρώτους αριθμούς το πρόβλημα θεωρείται ανέφικτο να επιλυθεί.
Diffie Hellman: Παράδειγμα Η ανταλλαγή κλειδιών βασίζεται στη χρήση του πρώτου αριθμού q = 71 και μιας πρωτογενούς ρίζας του 71, έστω την a = 7. Οι (α) και (π) επιλέγουν ως ιδιωτικά κλειδιά, αντιστοίχως, Χ(α) = 5 και Χ(π) = 12. Τα δημόσια κλειδιά υπολογίζονται χωριστά από κάθε επικοινωνούντα ως ακολούθως: Y(α)= 75 = 51 mod 71 Y(π) = 712 = 4 mod 71 Μετά τον υπολογισμό των δημόσιων κλειδιών, κάθε πλευρά μπορεί να υπολογίσει το κοινό μυστικό κλειδί ως ακολούθως: δ = (Y(π))Χ(α) mod 71 = 45 = 30 mod 71 δ = (Y(α))Χ(π) mod 71 = 5112 = 30 mod 71 Από τη γνώση των {51, 4} ένας επιτιθέμενος δεν μπορεί εύκολα να υπολογίσει το κοινό μυστικό κλειδί 30.
Diffie Hellman: Παράδειγμα Έστω ότι ο (α) επιθυμεί να επιθυμεί να εγκαταστήσει μια επικοινωνία με τον (π) και χρησιμοποιεί ένα μυστικό κλειδί ώστε να κρυπτογραφεί τα μηνύματα σε αυτή τη σύνδεση. Ο (α) μπορεί να παράγει ένα ιδιωτικό κλειδί Χ(α). Στη συνέχεια υπολογίζει το Y(α) και το στέλνει στον (π). Ο (π) απαντά παράγοντας το μυστικό κλειδί Χ(π), υπολογίζοντας το Υ(π) και αποστέλλοντας το στον (α). Και οι δύο χρήστες μπορούν πλέον να υπολογίσουν το κοινό μυστικό κλειδί (δ). Τα απαραίτητα δημόσια στοιχεία q και a θα πρέπει να είναι γνωστά από την αρχή. Εναλλακτικά, ο (α) θα μπορούσε να διαλέξει τιμές για τα q και a και να τα συμπεριλάβει στο πρώτο μήνυμα.