Κεφάλαια 2&21 Συναρτήσεις κατακερματισμού Πιστοποίηση ταυτότητας μηνυμάτων
Ενεργητικές επιθέσεις Η κρυπτογράφηση παρέχει προστασία από παθητικές επιθέσεις (υποκλοπή). Μια διαφορετική απαίτηση είναι η προστασία από ενεργητικές επιθέσεις (παραποίηση δεδομένων και συναλλαγών). Η προστασία από αυτές τις επιθέσεις είναι γνωστή ως πιστοποίηση ταυτότητας μηνυμάτων (message authentication) ή δεδομένων (data authentication).
Ενεργητικές επιθέσεις Δύο τρόποι επίλυσης του προβλήματος: o Πιστοποίηση ταυτότητας μηνυμάτων o Μονόδρομη συνάρτηση κατακερματισμού (one-way hash function)
Πιστοποίηση ταυτότητας μηνυμάτων Παρέχει προστασία από ενεργητικές επιθέσεις Επαληθεύει την αυθεντικότητα του παραληφθέντος μηνύματος Μπορεί να χρησιμοποιεί συμβατική κρυπτογράφηση Τα περιεχόμενα δεν έχουν τροποποιηθεί Η προέλευση είναι αυθεντική Είναι επίκαιρο και έφτασε με τη σωστή σειρά Αποστολέας και παραλήπτης είναι οι μόνοι που μοιράζονται το κλειδί
Εικόνα 2.3 Πιστοποίηση ταυτότητας μηνυμάτων με χρήση κωδικού πιστοποίησης ταυτότητας μηνύματος (MAC)
Χαρακτηριστικά 1. Ο παραλήπτης βεβαιώνεται ότι το μήνυμα δεν έχει τροποποιηθεί. Αν κάποιος επιτιθέμενος τροποποιήσει το μήνυμα, αλλά δεν αλλάξει τον κωδικό, τότε ο κωδικός που θα υπολογίσει ο παραλήπτης θα διαφέρει από τον κωδικό τον οποίο παρέλαβε. Επειδή ο επιτιθέμενος υποτίθεται ότι δεν γνωρίζει το μυστικό κλειδί, δεν μπορεί να αλλάξει τον κωδικό με τρόπο που να αντιστοιχεί στις τροποποιήσεις του μηνύματος.
2. Ο παραλήπτης βεβαιώνεται ότι το μήνυμα προέρχεται πράγματι από τον σωστό αποστολέα. Επειδή κανένας άλλος δεν γνωρίζει το μυστικό κλειδί, κανένας άλλος δεν θα μπορούσε να δημιουργήσει ένα μήνυμα με τον κατάλληλο κωδικό. 3. Αν το μήνυμα περιέχει έναν αριθμό ακολουθίας όπως γίνεται στα πρωτόκολλα Χ.25, HDLC (High-level Data Link Control, Έλεγχος Συνδέσμου Δεδομένων Υψηλού Επιπέδου) και TCP τότε ο παραλήπτης μπορεί να βεβαιωθεί και για τη σωστή ακολουθία, επειδή ένας επιτιθέμενος δεν μπορεί να αλλάξει επιτυχώς τον αριθμό ακολουθίας.
Για τη δημιουργία του κωδικού θα μπορούσαν να χρησιμοποιηθούν αρκετοί αλγόριθμοι. Στην προδιαγραφή FIPS PUB 113 του NIST προτείνεται η χρήση του προτύπου DES. Το DES χρησιμοποιείται για την παραγωγή μιας κρυπτογραφημένης έκδοσης του μηνύματος, και τα τελευταία bit του κρυπτοκειμένου χρησιμοποιούνται ως κωδικός. Συνηθίζεται η χρήση κωδικού με μήκος 16 ή 32 bit.
Η διαδικασία είναι παρόμοια με την κρυπτογράφηση. Μία από τις διαφορές είναι ότι ο αλγόριθμος πιστοποίησης ταυτότητας δεν χρειάζεται να είναι αντιστρέψιμος, όπως έπρεπε να συμβαίνει στην αποκρυπτογράφηση. Αποδεικνύεται ότι, εξαιτίας των μαθηματικών ιδιοτήτων που έχει η συνάρτηση πιστοποίησης ταυτότητας, δεν «σπάει» τόσο εύκολα όσο η κρυπτογράφηση.
Κρυπτογραφική συνάρτηση κατακερματισμού
Εικόνα 2.4 Κρυπτογραφική συνάρτηση κατακερματισμού h = H(M).
Συνάρτηση κατακερματισμού Η συνάρτηση κατακερματισμού δέχεται ως είσοδο ένα μήνυμα M μεταβλητού μεγέθους και παράγει ως έξοδο μια σύνοψη μηνύματος (message digest) H(M) σταθερού μεγέθους. Το μήνυμα συμπληρώνεται μέχρι το μέγεθός του να γίνει ένας ακέραιος αριθμός πολλαπλάσιος κάποιου σταθερού μήκους (π.χ. 1024 bit). Η συμπλήρωση (padding) περιλαμβάνει την τιμή μήκους του αρχικού μηνύματος σε bit. Το πεδίο μήκους είναι ένα μέτρο ασφαλείας που έχει ως στόχο να δυσχεράνει την προσπάθεια του επιτιθέμενου να παραγάγει ένα εναλλακτικό μήνυμα με την ίδια τιμή κατακερματισμού.
Εικόνα 2.5 Πιστοποίηση ταυτότητας μηνυμάτων με χρήση μονόδρομης συνάρτησης κατακερματισμού η συνάρτηση κατακερματισμού δεν δέχεται ως είσοδο και κάποιο μυστικό κλειδί
Η σύνοψη του μηνύματος μπορεί να κρυπτογραφηθεί με συμμετρική κρυπτογράφηση αν υποθέσουμε ότι μόνο ο αποστολέας και ο παραλήπτης γνωρίζουν το κλειδί κρυπτογράφησης, τότε διασφαλίζεται η αυθεντικότητα. Η σύνοψη του μηνύματος μπορεί επίσης να κρυπτογραφηθεί με κρυπτογράφηση δημόσιου κλειδιού Η μέθοδος που βασίζεται σε δημόσιο κλειδί έχει δύο πλεονεκτήματα: Παρέχει όχι μόνο πιστοποίηση ταυτότητας των μηνυμάτων, αλλά και ψηφιακή υπογραφή, ενώ δεν απαιτεί τη διανομή κλειδιών στα επικοινωνούντα μέρη.
ΠΛΕΟΝΕΚΤΗΜΑ: απαιτείται μικρότερο πλήθος υπολογισμών. Ωστόσο, μια ακόμα πιο διαδεδομένη προσέγγιση είναι η χρήση κάποιας τεχνικής που αποφεύγει εντελώς την κρυπτογράφηση: Γιατί;
Μειονεκτήματα o Το λογισμικό κρυπτογράφησης είναι αρκετά αργό. Παρότι η ποσότητα των δεδομένων που κρυπτογραφούνται ανά μήνυμα είναι επίσης μικρή, ενδέχεται να υπάρχει ένα σταθερό ρεύμα μηνυμάτων από και προς το σύστημα. o Το κόστος του υλικού κρυπτογράφησης δεν είναι αμελητέο. Υπάρχουν υλοποιήσεις χαμηλού κόστους του αλγορίθμου DES σε τσιπ, όμως το κόστος αυξάνεται πολύ αν όλοι οι κόμβοι ενός δικτύου πρέπει να διαθέτουν αυτή τη δυνατότητα. o Το υλικό κρυπτογράφησης είναι βελτιστοποιημένο για μεγάλες ποσότητες δεδομένων. Για μικρά τμήματα δεδομένων, ένα μεγάλο ποσοστό του χρόνου σπαταλιέται στην ανάθεση αρχικών τιμών (initialization) και την κλήση των ρουτινών. o Οι αλγόριθμοι κρυπτογράφησης ενδέχεται να προστατεύονται από διπλώματα ευρεσιτεχνίας (patents).
Στην τρίτη τεχνική, η οποία ονομάζεται κατακερματισμένος κωδικός πιστοποίησης ταυτότητας μηνύματος με κλειδί (keyed hash MAC), υποθέτουμε ότι τα δύο επικοινωνούντα μέρη, έστω Α και Β, χρησιμοποιούν από κοινού το ίδιο μυστικό κλειδί K. Αυτό το μυστικό κλειδί ενσωματώνεται στη διαδικασία παραγωγής του κωδικού κατακερματισμού.
το μυστικό κλειδί χρησιμοποιείται τόσο ως πρόθεμα όσο και ως επίθεμα στο μήνυμα. Αν το μυστικό κλειδί χρησιμοποιηθεί μόνο ως πρόθεμα ή ως επίθεμα, το σχήμα κρυπτογράφησης είναι λιγότερο ασφαλές.
Απαιτήσεις συναρτήσεων κατακερματισμού Να μπορεί να εφαρμόζεται σε τμήματα δεδομένων οποιουδήποτε μεγέθους Να παράγει έξοδο σταθερού μήκους Να είναι σχετικά εύκολη στον υπολογισμό για οποιοδήποτε δεδομένο x Να είναι μονόδρομη ή ανθεκτική σε προεικόνες (pre-image resistant) Να είναι υπολογιστικά ανέφικτη η εύρεση μιας τιμής x τέτοιας ώστε να ισχύει H(x) = h Να είναι υπολογιστικά ανέφικτη η εύρεση μιας τιμής y x τέτοιας ώστε να ισχύει H(y) = H(x) Να είναι ανθεκτική σε συγκρούσεις ή να εμφανίζει ισχυρή ανθεκτικότητα σε συγκρούσεις Να είναι υπολογιστικά ανέφικτη η εύρεση οποιουδήποτε ζεύγους τιμών (x, y) τέτοιου ώστε να ισχύει H(x) = H(y)
Ασφάλεια συναρτήσεων κατακερματισμού Υπάρχουν δύο τρόποι επίθεσης εναντίον μιας ασφαλούς συνάρτησης κατακερματισμού: SHA: Ο αλγόριθμος κατακερματισμού που χρησιμοποιείται περισσότερο Άλλες εφαρμογές των συναρτήσεων κατακερματισμού: Κρυπτανάλυση Εκμετάλλευση των αδυναμιών του αλγορίθμου σε λογικό επίπεδο Κωδικοί πρόσβασης Το λειτουργικό σύστημα αποθηκεύει μια τιμή κατακερματισμού ενός κωδικού πρόσβασης Επίθεση ωμής βίας Η ανθεκτικότητα μιας συνάρτησης κατακερματισμού εξαρτάται αποκλειστικά από το μήκος του κωδικού κατακερματισμού που παράγει ο αλγόριθμος Ανίχνευση εισβολών Για κάθε αρχείο ενός συστήματος αποθηκεύονται οι τιμές H(F). Οι τιμές κατακερματισμού φυλάσσονται με ασφάλεια.
Ασφαλής Αλγόριθμος Κατακερματισμού (Secure Hash Algorithm, SHA)
Η μονόδρομη συνάρτηση κατακερματισμού (oneway hash function), ή ασφαλής συνάρτηση κατακερματισμού (secure hash function), είναι σημαντική όχι μόνο για την πιστοποίηση ταυτότητας μηνυμάτων αλλά και για τις ψηφιακές υπογραφές. Εδώ θα εξετάσουμε τον Ασφαλή Αλγόριθμο Κατακερματισμού (Secure Hash Algorithm, SHA).
Όλες οι συναρτήσεις κατακερματισμού λειτουργούν με βάση τις ακόλουθες γενικές αρχές: o Η είσοδος (μήνυμα, αρχείο, κ.λπ.) εκλαμβάνεται ως μια ακολουθία τμημάτων, καθένα από τα οποία έχει μήκος n bit. o Η επεξεργασία της εισόδου πραγματοποιείται ανά ένα τμήμα τη φορά με επαναληπτικό τρόπο ώστε να παραχθεί μια συνάρτηση κατακερματισμού των n bit. Μία από τις απλούστερες συναρτήσεις κατακερματισμού είναι η αποκλειστική διάζευξη (exclusive-or, XOR) bit προς bit κάθε τμήματος. C i = b i1 b i2 b im
Εικόνα 21.1 Απλή συνάρτηση κατακερματισμού με χρήση XOR σε επίπεδο bit
Απλή συνάρτηση κατακερματισμού παράγει μια απλή ισοτιμία (parity) για κάθε θέση bit και είναι γνωστή ως διαμήκης έλεγχος πλεονασμού (longitudinal redundancy check). Κάθε τιμή κατακερματισμού των n bit εμφανίζει την ίδια πιθανότητα. η πιθανότητα ένα σφάλμα δεδομένων να έχει ως αποτέλεσμα μια αμετάβλητη τιμή κατακερματισμού είναι ίση με 2 n. Αν τα δεδομένα χαρακτηρίζονται από μια πιο προβλέψιμη μορφοποίηση, η συνάρτηση είναι λιγότερο αποτελεσματική. Για παράδειγμα, στα περισσότερα φυσιολογικά αρχεία κειμένου, το bit υψηλής τάξης κάθε οκτάδας έχει πάντα την τιμή μηδέν. Άρα, αν χρησιμοποιείται μια τιμή κατακερματισμού των 128-bit, η αποτελεσματικότητα της συνάρτησης κατακερματισμού για τον συγκεκριμένο τύπο δεδομένων δεν είναι ίση με 2 128 αλλά με 2 112.
Ασφαλής Αλγόριθμος Κατακερματισμού (SHA) Αναπτύχθηκε αρχικά από το NIST Το 1993 δημοσιεύθηκε ως πρότυπο (FIPS 180) Το 1995 κυκλοφόρησε μια αναθεωρημένη έκδοσή του (SHA-1) o Παράγει τιμές κατακερματισμού των 160 bit Το 2002 το NIST προχώρησε στην αναθεώρηση του προτύπου (FIPS 180-2) o Προσθέτει τρεις νέες εκδόσεις του SHA o SHA-256, SHA-384, SHA-512 o Τιμές κατακερματισμού των 256/384/512 bit o Ίδια βασική δομή με την έκδοση SHA-1 αυξημένη ασφάλεια Το 2005 το NIST ανακοίνωσε την πρόθεσή του να αποσύρει σταδιακά την έγκριση της έκδοσης SHA-1 και να στηρίξει τις άλλες εκδόσεις του SHA έως το 2010
Πίνακας 21.1 Σύγκριση παραμέτρων SHA
Βήμα 1: Προσάρτηση bit συμπλήρωσης. Το μήνυμα συμπληρώνεται έτσι ώστε το μήκος του να είναι ισότιμο με 896 modulo 1024 [μήκος 896 (mod 1024)]. Η συμπλήρωση αποτελείται από ένα bit με τιμή 1 ακολουθούμενο από το απαραίτητο πλήθος bit με τιμή 0.
Βήμα 2: Προσάρτηση μήκους. Στο μήνυμα προσαρτάται ένα τμήμα των 128 bit. Το συγκεκριμένο τμήμα αντιμετωπίζεται ως μη προσημασμένος ακέραιος των 128 bit (με πρώτο το περισσότερο σημαντικό byte) και περιέχει το μήκος του αρχικού μηνύματος (πριν από τη συμπλήρωση).
Βήμα 3: Καθορισμός αρχικής κατάστασης για την περιοχή προσωρινής αποθήκευσης του κατακερματισμού. Στους καταχωρητές περιέχονται καθορισμένοι ακέραιοι, μήκους 64 bit ο καθένας
Βήμα 4: Επεξεργασία μηνύματος σε τμήματα των 1024 bit (128 λέξεων). Ο πυρήνας του αλγορίθμου είναι μια υπομονάδα που αποτελείται από 80 γύρους,
Βήμα 5: Έξοδος. Αφού ολοκληρωθεί η επεξεργασία όλων των N τμημάτων των 1024 bit, η έξοδος του N-οστού σταδίου αποτελεί τη σύνοψη μηνύματος των 512 bit.
Εικόνα 21.3 Επεξεργασία ενός τμήματος 1024 bit στην έκδοση SHA-512
Κάθε γύρος δέχεται ως είσοδο την τιμή abcdefgh της περιοχής προσωρινής αποθήκευσης (μια τιμή 512 bit), και ενημερώνει τα περιεχόμενα της περιοχής προσωρινής αποθήκευσης. Στην είσοδο του πρώτου γύρου, η περιοχή προσωρινής αποθήκευσης έχει την τιμή της ενδιάμεσης τιμής κατακερματισμού H i 1. Κάθε γύρος t κάνει χρήση μιας τιμής 64 bit, W t, η οποία προκύπτει από την επεξεργασία του τρέχοντος τμήματος των 1024 bit (M i ). Κάθε γύρος χρησιμοποιεί επίσης μια προσθετική σταθερά K t, όπου το 0 t 79 υποδεικνύει έναν από τους 80 γύρους. Αυτές οι λέξεις αναπαριστούν τα 64 πρώτα bit του δεκαδικού μέρους της κυβικής ρίζας για καθέναν από τους αρχικούς 80 πρώτους αριθμούς (prime numbers).
Οι σταθερές παρέχουν ένα «τυχαιοποιημένο» σύνολο ακολουθιών των 64 bit, οι οποίες εξαλείφουν τυχόν κανονικότητες των δεδομένων εισόδου. Οι ενέργειες που εκτελούνται κατά τη διάρκεια ενός γύρου αποτελούνται από κυκλικές ολισθήσεις και στοιχειώδεις λογικές (Boolean) συναρτήσεις που βασίζονται στις πράξεις AND, OR, NOT και XOR. Η έξοδος του ογδοηκοστού γύρου προστίθεται στην είσοδο του πρώτου γύρου (H i 1 ) προκειμένου να παραχθεί η τιμή H i. Η πρόσθεση εκτελείται ανεξάρτητα για καθεμία από τις οκτώ λέξεις που περιέχονται στην περιοχή προσωρινής αποθήκευσης, με καθεμία από τις αντίστοιχες λέξεις της H i 1, με χρήση πρόσθεσης modulo 2 64.
SHA-3 Ο αλγόριθμος SHA-2 έχει την ίδια δομή και στηρίζεται στις ίδιες μαθηματικές πράξεις με τους προκατόχους του, και αυτό εγείρει ανησυχίες Λόγω του χρόνου που θα χρειαζόταν για την αντικατάσταση του SHA-2 στην περίπτωση που εντοπιζόταν κάποια αδυναμία του, το 2007 το NIST ανακοίνωσε τη διεξαγωγή διαγωνισμού για τη δημιουργία της επόμενης γενιάς (SHA-3) Απαιτήσεις: Πρέπει να υποστηρίζει τιμές κατακερματισμού με μήκος 224, 256, 384 και 512 bit Ο αλγόριθμος πρέπει να επεξεργάζεται σχετικά μικρά τμήματα τη φορά αντί να απαιτεί την προσωρινή αποθήκευση ολόκληρου του μηνύματος στη μνήμη προτού το επεξεργαστεί
Κατακερματισμένος κωδικός πιστοποίησης ταυτότητας μηνύματος HMAC
HMAC Έχει αυξηθεί το ενδιαφέρον για την ανάπτυξη ενός κωδικού MAC ο οποίος θα προκύπτει από κάποιον κρυπτογραφικό κωδικό κατακερματισμού o Γενικά, οι κρυπτογραφικές συναρτήσεις κατακερματισμού εκτελούνται πιο γρήγορα o Υπάρχει ευρέως διαθέσιμος κώδικας βιβλιοθηκών o Η συνάρτηση SHA-1 δεν έχει σχεδιαστεί για χρήση ως κωδικός MAC επειδή δεν στηρίζεται σε μυστικό κλειδί Δημοσιεύθηκε στο έγγραφο RFC 2014 Έχει επιλεχθεί ως υποχρεωτικός κωδικός MAC για όλες τις υλοποιήσεις της Ασφάλειας IP (IPSec) o Χρησιμοποιείται και σε άλλα πρωτόκολλα Διαδικτύου, όπως η Ασφάλεια Επιπέδου Μεταφοράς (Transport Layer Security, TLS) και η Ασφαλής Ηλεκτρονική Συναλλαγή (Secure Electronic Transaction, SET)
Αντικειμενικοί στόχοι σχεδιασμού του HMAC Να χρησιμοποιεί, χωρίς τροποποιήσεις, διαθέσιμες συναρτήσεις κατακερματισμού Να διατηρεί την αρχική απόδοση της συνάρτησης κατακερματισμού χωρίς να επιφέρει σημαντική μείωση Να παρέχει δυνατότητα εύκολης αντικατάστασης της ενσωματωμένης συνάρτησης κατακερματισμού σε περίπτωση που ανακαλυφθούν ή απαιτηθούν πιο γρήγορες ή ασφαλείς συναρτήσεις κατακερματισμού Να χρησιμοποιεί και να χειρίζεται κλειδιά με απλό τρόπο Να διαθέτει μια πλήρως κατανοητή κρυπτογραφική ανάλυση της ισχύος του μηχανισμού πιστοποίησης ταυτότητας με βάση λογικές υποθέσεις για την ενσωματωμένη συνάρτηση κατακερματισμού
Εικόνα 21.4 Δομή του HMAC
1. Προσάρτηση μηδενικών στο αριστερό άκρο του K ώστε να δημιουργηθεί μια ακολουθία K + με b bit (π.χ. αν το K έχει μήκος 160 bit και b = 512, τότε στο K θα προσαρτηθούν 44 μηδενικά byte 0x00).
2. XOR (αποκλειστική διάζευξη σε επίπεδο bit) του K + με το ipad προκειμένου να παραχθεί το τμήμα S i μήκους b bit.
3. Προσάρτηση του M στο S i.
4. Εφαρμογή της H στο ρεύμα που παράγεται στο βήμα 3.
5. XOR (αποκλειστική διάζευξη) του K + με το opad προκειμένου να παραχθεί το τμήμα S o μήκους b bit.
6. Προσάρτηση στο S o του αποτελέσματος του κατακερματισμού από το βήμα 4 o.
7. Εφαρμογή της H στο ρεύμα που παράγεται στο βήμα 6 και επιστροφή του αποτελέσματος ως έξοδο.