Εισαγωγή στην Κρυπτογραφία Πιστοποίηση μηνύματος (Message authentication) - Πιστοποίηση ταυτότητας αποστολέα (Entity authentication)
2 Επιπρόσθετες απαιτήσεις στην κρυπτογραφία Επιβεβαίωση ότι το μήνυμα που αποκρυπτογραφείται είναι το αυθεντικό (data integrity) Επιβεβαίωση ότι ο αποστολέας είναι αυτός που ισχυρίζεται (identification ή entity authentication)
3 Επιπρόσθετες απαιτήσεις στην κρυπτογραφία Data integrity : Τα δεδομένα δεν έχουν υποστεί αλλαγή από μη εξουσιοδοτημένα μέρη. Data origin authentication : Πιστοποίηση ότι τα δεδομένα έχουν προέλθει από μια συγκεκριμένη πηγή η οποία δεν έχει μεταβληθεί. Message authentication : Έμμεσα εξασφαλίζει και data origin authentication αφού αλλαγή του περιεχομένου του μηνύματος υπονοεί και αλλαγή της πηγής. Η Πιστοποίηση μηνύματος είναι απαραίτητη οποτεδήποτε έχουμε κίνδυνο από ηθελημένη ή αθέλητη τροποποίηση των δεδομένων. (πχ κανάλι με θόρυβο ή εσκεμμένη αλλαγή μηνύματος)
4 Πιστοποίηση μηνύματος (Message authentication) Στόχος: Προστασία έναντι «ενεργών» επιθέσεων Τροποποίησης του περιεχομένου του μηνύματος Τροποποίησης του συγχρονισμού και της αλληλουχίας της σειράς του μηνύματος (Timing and/or Sequencing modification) Μια τεχνική βασίζεται στις συναρτήσεις κατακερματισμού
5 Συναρτήσεις κατακερματισμού (hash functions) Συναρτήσεις κατακερματισμού : Είναι υπολογιστικά εφικτές συναρτήσεις που αντιστοιχίζουν σειρές bits μεταβλητού μεγέθους σε σειρές bits σταθερού μήκους. Oι συναρτήσεις κατακερματισμού βρίσκουν χρήση σε αρκετές εφαρμογές ( πχ κρυπτογραφία, διαχείριση αρχείων, κτλ ) Οι κυριότερες χρήσεις των συναρτήσεων κατακερματισμού στην κρυπτογραφία είναι Ψηφιακές υπογραφές ( Digital signatures ) Ακεραιότητα δεδομένων ( Data integrity ) Πρωτόκολλα αναγνώρισης ( Identification protocols )
6 Συναρτήσεις κατακερματισμού (hash functions) Δέχονται είσοδο οσουδήποτε μήκους και παράγουν έξοδο σταθερού μήκους (ίσου ή μικρότερου του μεγέθους της εισόδου) – (συμπίεση) Η τιμή της συνάρτησης για οποιαδήποτε είσοδό της υπολογίζεται εύκολα Η συνάρτηση δεν είναι αντιστρεπτή (είναι δηλαδή μίας κατεύθυνσης) – για οποιοδήποτε y, δεν μπορεί να βρεθεί x ώστε h(x)=y. (αντίσταση προαπεικόνισης, preimage resistance) Δεν μπορεί να υπολογιστεί εναλλακτική είσοδος για να παραχθεί η ίδια έξοδος που δίνει μία άλλη δεδομένη είσοδος – με άλλα λόγια, για οποιοδήποτε δοθέν Μ, είναι υπολογιστικά δύσκολη η εύρεση M ' με την ιδιότητα h(M) = h(M ' ) (αντίσταση 2 ης προαπεικόνισης, 2 nd -preimage resistance) Δεν μπορούν να υπολογιστούν δύο διαφορετικές είσοδοι M, M’ που να δίνουν την ίδια έξοδο, δηλαδή h(M)=h(M’) (αντίσταση συγκρούσεων, collision resistance) Χωρίζονται σε δύο κατηγορίες – σε αυτές που υπεισέρχεται και κάποιο κλειδί στον υπολογισμό τους (keyed hash functions) και σε αυτές που όχι (unkeyed hash functions) Αν M το μήνυμα και H η συνάρτηση κατακερματισμού, τότε το H(M) αποκαλείται αποτύπωμα (fingerprint) ή σύνοψη του μηνύματος (Message Digest – MD)
7 Μία απλή συνάρτηση κατακερματισμού Bitwise-XOR Όχι καλή: Δεν ικανοποιεί το 2 nd preimage resistance.
8 Άλλα παραδείγματα συναρτήσεων κατακερματισμού Η συνάρτηση ελέγχου άθροισης mod-32 είναι εύκολα υπολογίσιμη, αλλά δεν έχει αντίσταση προαπεικόνισης, preimage h(x) = x 2 mod n, χωρίς να είναι γνωστή η παραγοντοποίηση n=pq του n. Δεν ικανοποιεί το 2 nd preimage resistance: για δοθέν x, προφανώς το –x δίνει την ίδια έξοδο. O DES (όπως και κάθε block αλγόριθμος) μπορεί να οδηγήσει σε συνάρτηση κατακερματισμού ως εξής:h(x) = E k (x) x για γνωστό σταθερό κλειδί k. ‘Eχει αντίσταση προαπεικόνισης και αντίσταση 2 ης προαπεικόνισης, αλλά δεν παρέχει συμπίεση.
9 Επιπρόσθετες ιδιότητες των μονόδρομων συναρτήσεων κατακερματισμού 1.Μη-συσχέτισης: τα bit εισόδου και εξόδου δεν πρέπει να είναι συσχετισμένα 2.Αντίσταση κοντινής σύγκρουσης: θα πρέπει να είναι δύσκολο να βρεθούν δύο είσοδοι x, x’ ώστε οι h(x), h(x’) να διαφέρουν σε ένα μικρό πλήθος bits 3.Αντίσταση μερικής προαπεικόνισης (ή τοπική μονοδρομικότητα): θα πρέπει να είναι το ίδιο δύσκολο να ανακτήσουμε οποιαδήποτε υποσειρά χαρακτήρων, όσο και μια ολόκληρη είσοδο.
10 Κατηγορίες αλγορίθμων με συναρτήσεις κατακερματισμού – MDCs και MACs Κώδικες ανίχνευσης τροποποίησης (MDC - Modification Detection Codes) Κατακερματισμός ενός μηνύματος έτσι ώστε να πληροί συγκεκριμένες ιδιότητες. Στόχος τους, σε συνδυασμό με άλλες τεχνικές, η εξασφάλιση της γνησιότητας του μηνύματος. Δεν υπεισέρχεται κανένα κλειδί Κώδικες πιστοποίησης μηνύματος (MAC - Message Authentication Codes) Στόχος τους, χωρίς τη βοήθεια επιπρόσθετων τεχνικών, η εξασφάλιση τόσο της ακεραιότητας του μηνύματος όσο και της γνησιότητας της πηγής του μηνύματος. Στην είσοδό τους υπεισέρχεται επιπρόσθετα και ένα μυστικό κλειδί. Και στις δύο περιπτώσεις η συνάρτηση κατακερματισμού είναι δημοσίως γνωστή.
11 Κατηγορίες αλγορίθμων με συναρτήσεις κατακερματισμού – MDCs και MACs
12 Birthday attack Ανήκει στις επιθέσεις ωμής βίας. Είναι ανεξάρτητη του αλγορίθμου και μπορεί να εφαρμοστεί για εύρεση οποιασδήποτε συνάρτησης κατακερματισμού. Στηρίζεται στο μαθηματικό «παράδοξο των γενεθλίων». Σύμφωνα με αυτό αν μια συνάρτηση παράγει μία τιμή μεταξύ n διαφορετικών τιμών με την ίδια πιθανότητα και το n είναι αρκετά μεγάλο,τότε υπολογίζοντας την συνάρτηση για ένα πλήθος περίπου 1,2 √n διαφορετικών εισόδων περιμένουμε να βρούμε ένα ζεύγος εισόδων x1 και x2 τέτοια ώστε f(x1)=f(x2). Η προηγούμενη όμως παρατήρηση παραβιάζει το 2 nd preimage resistance ! «παράδοξο των γενεθλίων». Αν έχω σε ένα δωμάτιο 23 ανθρώπους τότε υπάρχει μεγάλη πιθανότητα δύο από αυτούς να έχουν γενέθλια την ίδια μέρα. Συγκεκριμένα αποδεικνύεται ότι η πιθανότητα αυτή (δεχόμενοι ότι έχουμε 365 διαφορετικές επιλογές ) είναι 0,507. Αν είχα 22 ανθρώπους στο δωμάτιο η αντίστοιχη πιθανότητα θα ήταν 0,059. Η πιθανότητα αυτή αυξάνει ραγδαία με το n, π.χ., για n=30 η πιθανότητα είναι 0,706. Γενικά P(m,n)=1-(m(m-1)…(m-n+1)/m n ). «Εφαρμογή» στην κρυπτογραφία Το παραπάνω εφαρμόζεται στην γενική του μορφή στις συναρτήσεις κατακερματισμού όπου ο αριθμός n των κατακερματισμών που μπορείς να κάνεις πριν πέσεις σε σύγκρουση είναι 2^(n/2) και όχι 2^n
13 H Birthday Attack του Yuval σε συναρτήσεις κατακερματισμού Επιθέσεις τετραγωνικής ρίζας: όταν επιλέγονται στοιχεία τυχαία, με αντικατάσταση από ένα σύνολο Ν στοιχείων, το επαναλαμβανόμενο στοιχείο θα συναντηθεί μετά από Ο(√Ν) επιλογές. Αλγόριθμος της Birthday Attack του Yuval Είσοδος: γνήσιο μήνυμα x 1, δόλιο μήνυμα x 2, m-bit μονόδρομη συνάρτηση κατακερματισμού h. Έξοδος: x 1 ’, x 2 ’ που προκύπτουν από μικρο-τροποποιήσεις των x 1, x 2 με h(x 1 ’)=h(x 2 ’) Έτσι η υπογραφή πάνω στο x 1 ’ χρησιμεύει ως υπογραφή πάνω στο x 2 ’ 1. Παράγετε t=2 m/2 μικρο-τροποποιήσεις x 1 ’ του x Κατακερματίστε κάθε τροποποιημένο μήνυμα x 1 ’ και αποθηκεύστε τις τιμές κατακερματισμού {x 1 ’, h(x 1 ’)}, ώστε να αναζητούνται μεταγενέστερα (σε χρόνο Ο(t) με συμβατό κατακερματισμό). 3. Παράγετε μικρο-τροποποιήσεις x 2 ’ του x 2, υπολογίζοντας το h(x 2 ’) για κάθε μια και ελέγχοντας για ταίριασμα με κάθε x 1 ’. Συνεχίστε μέχρι να βρεθεί κάποιο ταίριασμα (μετά από περίπου t υποψήφιες x 2 ’).
14 Εφαρμογή της Birthday Attack Η επίθεση αυτή μπορεί να χρησιμοποιηθεί από έναν ανέντιμο υπογράφοντα που παρέχει την υπογραφή του στο x 1 ’ σε ένα ανυποψίαστο άτομο και στη συνέχεια αρνείται ότι το υπέγραψε, ισχυριζόμενος ότι το μήνυμα που υπέγραψε ήταν το x 2 ’. Η επίθεση αυτή μπορεί επίσης να χρησιμοποιηθεί από έναν ανέντιμο επαληθευτή που μπορεί να πείσει ένα ανυποψίαστο άτομο να υπογράψει ένα προετοιμασμένο έγγραφο x 1 ’ και μετά να ισχυρίζεται ότι το άτομο υπέγραψε το x 2 ’. Η επίθεση αυτή γενικεύεται σε όλες τις περιπτώσεις στις οποίες ένα κατακερματισμένο μήνυμα h(m) περνιέται σαν το ίδιο το μήνυμα m.
15 Τρόποι πιστοποίησης μηνύματος Κλασική κρυπτογράφηση Έγκειται στην ασφάλεια που παρέχει το κλειδί και μόνο (προϋποθέτει ότι κανείς τρίτος δεν διαθέτει το κλειδί) Message Authentication Code (MAC) Χρήση αλγορίθμου κατακερματισμού, όπου υπεισέρχεται και κλειδί Συνάρτηση κατακερματισμού Μία δημόσια συνάρτηση κατακερματισμού μετατρέπει το μήνυμα σε μία ετικέτα πιστοποίησης
16 Πιστοποίηση μηνύματος με χρήση MAC Σύγκριση μετάδοση ΑποστολέαςΠαραλήπτης μήνυμα
17 Ιδιότητες MAC Το μήνυμα είναι γνήσιο Αν κάποιος «εισβολέας» τροποποιήσει το μήνυμα, θα φανεί στη σύγκριση που κάνει ο δέκτης Η πηγή του μηνύματος είναι γνήσια Κανείς άλλος δεν έχει το ίδιο κλειδί για να δημιουργήσει το ίδιο MAC Εξασφαλίζεται η σωστή αλληλουχία του μηνύματος Πρέπει να τοποθετείται timestamp στο μήνυμα, πριν τον υπολογισμό του MAC Οποιοσδήποτε κρυπτογραφικός αλγόριθμος (π.χ. DES) μπορεί να χρησιμοποιηθεί για τη δημιουργία του MAC
18 Πιστοποίηση μηνύματος με χρήση συνάρτησης κατακερματισμού (MDC) Μία συνάρτηση κατακερματισμού εφαρμόζεται στο μήνυμα – το αποτέλεσμα προστίθεται στο τέλος του μηνύματος και όλο το νέο μπλοκ κρυπτογραφείται και μεταδίδεται Ο δέκτης αποκωδικοποιεί και κάνει σύγκριση ανάλογη με την περίπτωση του MAC
19 Πιστοποίηση ταυτότητας (entity authentication) Ανάγκη επιβεβαίωσης ότι αυτός που με τον οποίο μιλάει κανείς είναι πραγματικά αυτός που ισχυρίζεται Η διαφορά με τις διάφορες μεθόδους επιβεβαίωσης της ταυτότητας του συνομιλητή που αναφέρθηκαν παραπάνω στα πλαίσια της πιστοποίησης μηνύματος (π.χ. MAC), είναι ότι μιλάμε πια για πιστοποίηση ταυτότητας σε πραγματικό χρόνο καθώς και το γεγονός ότι δεν μεταφέρεται κάποιο ουσιαστικό μήνυμα
20 Χαρακτηριστικά πρωτοκόλλου Ένα πρωτόκολλο πιστοποίησης ταυτότητας πρέπει να διέπεται από τα ακόλουθα χαρακτηριστικά, δηλαδή πρέπει να μας εξασφαλίζει τα ακόλουθα: oΑν οι Α, Β είναι ειλικρινείς, ο A πρέπει να μπορεί να αποδείξει την ταυτότητά του στον Β o Να μην διαρρέουν οι “μυστικές πληροφορίες” του Α, δηλ. (1) Ο Β να μην μπορεί να αποσπάσει κάποια πληροφορία που χρησιμοποίησε ο A για να αποδείξει την ταυτότητά του, έτσι ώστε να προσποιηθεί σε κάποιον τρίτο C ότι είναι ο A (transferability) (2) Να μην υπάρχει η δυνατότητα σε κάποιον τρίτο C ξεγελάσει τον B ότι είναι ο A (impersonation) oΤα παραπάνω να ισχύουν για όσο μεγάλο πλήθος φορών κι αν εκτελεστεί το πρωτόκολλο μεταξύ των A, B, ακόμα κι αν ένας εισβολέας C έχει παρακολουθήσει όλες τις συνομιλίες των A, B. ( υψηλή παροχή ασφάλειας )
21 Κατηγοριοποίηση τεχνικών πιστοποίησης ταυτότητας Οι τεχνικές αυτές μπορούν να χωριστούν σε 3 κατηγορίες ανάλογα με το που βασίζεται η ασφάλεια. ΚΑΤΙ ΠΟΥ ΓΝΩΡΙΖΟΥΜΕ : passwords, PINS, μυστικά-ιδιωτικά κλειδιά που χρησιμοποιούνται σε challenge-response πρωτόκολλα ΚΑΤΙ ΠΟΥ ΚΑΤΕΧΟΥΜΕ : π.χ. πιστωτικές, smart cards, password generators ΦΥΣΙΚΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ : αναγνώριση φωνής, ίριδος, δακτυλικών αποτυπωμάτων
22 Ασθενής πιστοποίηση ταυτότητας - Password Ο B περιμένει από τον A συγκεκριμένο password, για να πειστεί ότι είναι αυτός Συχνά, τα passwords για τον κάθε χρήστη κρατούνται κρυπτογραφημένα σε κάποιο αρχείο, από συνάρτηση μίας κατεύθυνσης: έτσι, ακόμα κι αν κάποιος εισβολέας αποκτήσει πρόσβαση στο αρχείο, δεν μπορεί να ανακαλύψει τα passwords (Unix) Τα passwords πρέπει να είναι μεγάλου μήκους, έτσι ώστε να μη μπορούν να ανακαλυφθούν με εξαντλητική αναζήτηση Για να είναι ανθεκτικά σε «επιθέσεις λεξικού» (dictionary attacks) εφαρμόζονται διάφορες τεχνικές (π.χ. Salting)
23 Salting Passwords Προσθήκη ενός τυχαίου t-bit string (διαφορετικού κάθε φορά) στο τέλος του password Εφαρμογή της one-way function που μας δίνει το encrypted “salted” password. Αυτό δυσκολεύει το έργο των dictionary attacks ( αύξηση απαιτήσεων σε μνήμη και χρόνο) καθώς για κάθε υποψήφιο password έχουμε 2 t παραλλαγές.
24 Ισχυρή πιστοποίηση ταυτότητας – «απάντηση σε πρόκληση» (challenge response identification) Βασική ιδέα: Ένας χρήστης Α (claimant) αποδεικνύει την ταυτότητά του σε κάποιον άλλο Β (verifier) αποδεικνύοντάς του ότι κατέχει μία μυστική γνώση, χωρίς όμως να αποκαλύπτει τη γνώση αυτή. Αυτό επιτυγχάνεται με το να απαντά σε μία «ερώτηση-πρόκληση» του verifier, η απάντηση της οποίας εξαρτάται, εκτός από την ερώτηση, και από τη μυστική γνώση. Πρωτόκολλα με αυτά τα χαρακτηριστικά ονομάζονται μηδενικής γνώσης (zero-knowledge (ZK))
25 Γενικά χαρακτηριστικά πρωτοκόλλων ZK (ΖΚ τριών κινήσεων) O Α (claimant) από το ιδιωτικό του κλειδί (μυστική πληροφορία που την κατέχει μόνο αυτός), παράγει τυχαία μία πληροφορία-βεβαίωση (witness). O Α στέλνει την βεβαίωση στον B (verifier). Κάθε φορά ο Α επιλέγει ένα διαφορετικό ιδιωτικό κλειδί.Αυτό παρέχει μια αρχική τυχαιότητα από επόμενες κλήσεις του πρωτοκόλλου. (το r στο πρωτόκολλο του Fiat – Shamir ) Με βάση την βεβαίωση, ο B κάνει μία ερώτηση- πρόκληση (challenge) στον A. To πρωτόκολλο πρέπει να είναι έτσι σχεδιασμένο ώστε μόνο κάποιος που κατέχει το μυστικό κλειδί του A να μπορεί να απαντήσει σωστά σε όλες τις προκλήσεις, ενώ επίσης να μην μπορεί να εξαχθεί καμία πληροφορία για το ιδιωτικό κλειδί του A από τις απαντήσεις. Ο Α στέλνει στον B την απάντηση (response) στην πρόκληση. Ο B πρέπει να είναι σε θέση να επιβεβαιώσει την ορθότητα της απάντησης.
26 Αυτό το βήμα εκτελείται μόνο ΜΙΑ φορά στην αρχή του πρωτοκόλλου Έστω N=p q, όπου p,q είναι πολύ μεγάλοι πρώτοι αριθμοί (το N τουλάχιστον 512 bits) (το N παράγεται από έναν «διαιτητή», αποδεκτό από όλους – τα p,q κρατούνται μυστικά) Ο claimant Α επιλέγει τυχαία s μικρότερο του N με (s,N)=1 και υπολογίζει υ τέτοιο ώστε: υ = s 2 (mod N) Δημόσιο κλειδί : N, υ ιδιωτικό κλειδί : s Σχήμα πιστοποίησης ταυτότητας Fiat-Shamir
27 Fiat-Shamir (II) Claimant (C) Verifier (V) s N, s, υ N, υ Επιλογή τυχαίου αριθμού r < N Ορισμός x = r 2 mod N (witness) x Ερώτηση (e) = 0 =1 y = r y = r s mod N έλεγχος: y 2 =x mod N y 2 =xυ mod N Το βήμα αυτό εκτελείται t φορές. Όσες περισσότερες είναι αυτές τόσο πιο ασφαλές το πρωτόκολλο Α Β
28 Fiat – Shamir (III) H παραπάνω διαδικασία επαναλαμβάνεται πολλές φορές Σε κάθε βεβαίωση r, o V στέλνει μία πρόκληση e, είτε 0 είτε 1, και ο C απαντά με το y=rs e (mod N). O V ελέγχει αν ισχύει y 2 =xυ e (mod N) Ένας επιτιθέμενος που θέλει να προσποιηθεί ότι είναι ο C, μπορεί να επιλέξει τυχαίο r, να στείλει x=r 2 /υ και σε κάθε πρόκληση e=1 να απαντά y=r, κάτι που ο V θα το ανιχνεύει ως σωστή απάντηση. Όμως δεν θα μπορεί να απαντήσει σωστά για e=0. ( Απαιτεί την τετραγωνική ρίζα του x mod n )
29 Ισχυρή πιστοποίηση ταυτότητας με χρήση συνάρτησης κατακερματισμού 2. O V στέλνει την πρόκληση Πρόκληση Claimant (C) Verifier (V) 1. Ο V δημιουργεί το μήνυμα – Πρόκληση (Challenge Message) Ο C έχει ένα password το οποίο γνωρίζει ο V
30 3. Ο C παράγει το μήνυμα-απάντηση με τον εξής τρόπο: (a)Επισυνάπτει το password στο μήνυμα-πρόκληση (b) Κατακερματίζει το αποτέλεσμα (χωρίς κρυπτογράφηση) (c) Το κατακερματισμένο μήνυμα είναι η απάντηση (Response Message) ChallengePassword Response Κατακερματισμός (χωρίς κρυπτογράφηση) Ισχυρή πιστοποίηση ταυτότητας με χρήση συνάρτησης κατακερματισμού (II)
31 4. Ο C στέλνει την απάντηση, χωρίς να την κρυπτογραφήσει Απάντηση (challenge response) Ισχυρή πιστοποίηση ταυτότητας με χρήση συνάρτησης κατακερματισμού (III) Claimant (C) Verifier (V)
32 ChallengePassword Αναμενόμενη απάντηση Κατακερματισμός 5. Ο V επισυνάπτει το password στο μήνυμα που έστειλε και κατακερματίζει το αποτέλεσμα. Αυτό που προκύπτει είναι η αναμενόμενη απάντηση από τον C Ισχυρή πιστοποίηση ταυτότητας με χρήση συνάρτησης κατακερματισμού (IV)
33 Αναμενόμενη απάντησηΜεταδιδόμενη απάντηση =? 6. Αν η ληφθείσα απάντηση ταυτίζεται με την αναμενόμενη, τότε Ο V συμπεραίνει ότι o C ξέρει το σωστό password. Ισχυρή πιστοποίηση ταυτότητας με χρήση συνάρτησης κατακερματισμού (V) Στην παραπάνω ανάλυση δεν χρησιμοποιήθηκε καθόλου κρυπτογράφηση, παρά μόνο κατακερματισμός