Σάββατο 23 Μαρτίου 2013

Το Πρότυπο Κρυπτογράφησης AES

Εισαγωγικά

Το πρότυπο κρυπτογράφησης AES (Advanced Encryption Standard) περιγράφει μια διαδικασία κρυπτογράφησης ηλεκτρονικής πληροφορίας βασισμένη στην λογική της κωδικοποίησης ομάδων δεδομένων με κάποιο μυστικό κλειδί. Έχει προτυποποιηθεί από το NIST (National Institute of Technology) τον Νοέμβριο του 2001, αντικαθιστώντας το πρότυπο DES (Data Encryption Standard) και πλέον αποτελεί τον προτεινόμενο αλγόριθμο για εφαρμογές κρυπτογράφησης.


1. Μια εισαγωγή στην κρυπτογράφηση μυστικού κλειδιού

Η κρυπτογράφηση μυστικού κλειδιού (secret key cryptography) βασίζεται στην χρήση μιας μυστικής πληροφορίας που ονομάζεται κλειδί για την κρυπτογράφηση και αποκρυπτογράφηση δεδομένων. Αν κάποιος θέλει να αποστείλει σε έναν τρίτο ένα κωδικοποιημένο μήνυμα, τότε χρησιμοποιεί το μυστικό κλειδί για να κρυπτογραφήσει την πληροφορία (στην ορολογία της κρυπτογραφίας η μη κρυπτογραφημένη πληροφορία αναφέρεται ως plaintext). To αποτέλεσμα της κρυπτογράφησης είναι να προκύψει μια κωδικοποιημένη πληροφορία (που ονομάζεται ciphertext) και η οποία αποστέλεται. Για να μπορέσει κάποιος να ανακτήσει την αρχική πληροφορία, θα πρέπει να γνωρίζει το ίδιο μυστικό κλειδί που χρησιμοποιήθηκε για την κωδικοποίηση της. Επειδή το ίδιο ακριβώς κλειδί χρησιμοποιείται τόσο για την κρυπτογράφηση όσο και αποκρυπτογράφηση των δεδομένων, η διαδικασία κρυπτογράφησης μυστικού κλειδιού ονομάζεται και συμμετρική κρυπτογράφηση (symmetric cipher).

Σχήμα 1. Στην κρυπτογράφηση μυστικού κλειδιού, το ίδιο κλειδί χρησιμοποιείται και για την κρυπτογράφηση και για την αποκρυπτογράφηση των δεδομένων.


Οι τρόποι κρυπτογράφησης μυστικού κλειδιού τυπικά χωρίζονται σε 2 κατηγορίες. Η πρώτη περιλαμβάνει διαδικασίες κρυπτογράφησης που εφαρμόζονται πάνω σε ένα μοναδικό bit (ή byte ή word) και υλοποιούν κάποιο μηχανισμό ανατροφοδότησης έτσι ώστε το κλειδί να αλλάζει συνεχώς. Για αυτό και ονομάζονται κρυπτογράφοι ροής (stream ciphers). Η δεύτερη κατηγορία (κρυπτογράφοι μπλοκ - block ciphers) αποτελείται από αλγορίθμους κρυπτογράφησης που λειτουργούν πάνω σε ομάδες δεδομένων κάθε χρονική στιγμή χρησιμοποιώντας το ίδιο κλειδί για κάθε ομάδα. Έτσι στην γενική περίπτωση, όταν το ίδιο μυστικό κλειδί χρησιμοποιείται, η ίδια ομάδα δεδομένων ενός plaintext θα κρυπτογραφηθεί στο ίδιο ciphertext όταν η κρυπτογράφηση γίνεται με έναν αλγόριθμο κρυπτογράφησης μπλοκ αλλά σε διαφορετικό ciphertext όταν χρησιμοποιηθεί ένας κρυπτογράφος ροής.
Για τους κρυπτογράφους μπλοκ, έχουν επινοηθεί αρκετοί τρόποι λειτουργίας (modes) ώστε να βελτιωθούν κάποια χαρακτηριστικά τους όπως η ασφάλεια που προσφέρουν ή να γίνουν πιο κατάλληλοι για διάφορες εφαρμογές. Τέσσερις είναι οι κυριότεροι τρόποι λειτουργίας :
Electronic Codebook (ECB)
Αυτός ο τρόπος λειτουργίας είναι ο απλούστερος και ο πλέον προφανής. Το μυστικό κλειδί χρησιμοποιείται για την κρυπτογράφηση κάθε μπλοκ δεδομένων του plaintext. Κατά συνέπεια με την χρήση του ίδιου κλειδιού, το ίδιο plaintext μπλοκ θα μετατρέπεται πάντα στο ίδιο ciphertext μπλοκ. Είναι ο πλέον κοινός τρόπος λειτουργίας των κρυπτογράφων μπλοκ γιατί είναι ο απλούστερος και άρα ο πιο εύκολα υλοποιήσιμος και συνάμα ο πιο γρήγορος καθώς δεν χρησιμοποιείται κάποιου είδους ανατροφοδότηση. Μειονέκτημα του είναι ότι είναι ο πιο ευάλωτος τρόπος κρυπτογράφησης σε επιθέσεις τύπου brute-force (ως επίθεση brute-force θεωρείται η προσπάθεια εύρεσης του μυστικού κλειδιού με την εξαντλητική δοκιμή πιθανών κλειδιών).
Cipher Block Chaining (CBC)
Χρησιμοποιώντας την CBC λειτουργία, προστίθεται σε έναν κρυπτογράφο μπλοκ ένας μηχανισμός ανατροφοδότησης. Ο τρόπος αυτός λειτουργίας ορίζει ότι πρωτού να γίνει η κρυπτογράφηση ενός νέου μπλοκ plaintext, γίνεται XOR (αποκλειστικό-Ή) του μπλοκ αυτού και του ciphertext μπλοκ που μόλις πριν έχει παραχθεί. Με τον τρόπο αυτό, 2 ταυτόσημα μπλοκ plaintext δεν κρυπτογραφούνται ποτέ στο ίδιο ciphertext. Σε σχέση με τον ECB προσφέρεται μεγαλύτερη ασφάλεια, με κόστος όμως κυρίως στην ταχύτητα κρυπτογράφησης καθώς για να ξεκινήσει η επεξεργασία ενός μπλοκ plaintext είναι απαραίτητο να έχει ολοκληρωθεί πλήρως η κρυπτογράφηση του προηγούμενου μπλοκ. Αποτρέπεται έτσι η χρήση τεχνικών pipelining (software ή hardware) που μπορούν να επιταχύνουν την διαδικασία.
Cipher Feedback (CFB)
Ο τρόπος αυτός λειτουργίας επιτρέπει σε έναν κρυπτογράφο μπλοκ να συμπεριφερθεί σαν ένας κρυπτογράφος ροής. Αυτό είναι θεμιτό όταν πρέπει να κρυπτογραφούνται δεδομένα που μπορεί να έχουν μέγεθος μικρότερο από ένα μπλοκ. Παράδειγμα τέτοιας εφαρμογής μπορεί να είναι η διαδικασία κρυπτογράφησης ενός terminal session. Περιληπτικά, κατά την CFB λειτουργία χρησιμοποιείται ένας shift καταχωρητής στο μέγεθος του block μέσα στον οποίο τοποθετούνται τα δεδομένα προς κρυπτογράφηση. Όλος ο καταχωρητής κρυπτογραφείται και αυτό που προκύπτει είναι το ciphertext. Η ποσότητα των δεδομένων που μπαίνουν μέσα στον shift καταχωρητή καθορίζεται από την εφαρμογή.
Output Feedback (OFB)
Στόχος και αυτού του τρόπου λειτουργίας των μπλοκ κρυπτογράφων είναι να εξασφαλίσει ότι το ίδιο plaintext μπλοκ δεν μπορεί να παράγει το ίδιο ciphertext μπλοκ. Σε σχέση με το CBC, χρησιμοποιείται και εδώ ένας μηχανισμός ανατροφοδότησης παρόλα αυτά είναι εσωτερικός και ανεξάρτητος από τα plaintext και ciphertext δεδομένα.
Σημαντικοί αλγόριθμοι αυτής της κατηγορίας είναι οι DES (Data Encryption Standard), 3DES, DESX, o AES (Advanced Encryption Standard), οι RC2, RC4, RC5 και IDEA (International Data Encryption Algorithm). Οι αλγόριθμοι της σειράς DES είναι οι πλέον χρησιμοποιούμενοι σήμερα αλγόριθμοι, αν και πλέον αντικαθιστούνται από τον AES. Επινοήθηκαν από την ΙΒΜ την δεκαετία του '70 και υιοθετήθηκαν από το National Bureau of Standards (νυν NIST) των ΗΠΑ. Οι DES αλγόριθμοι χρησιμοποιούν κλειδιά μήκους 56 bits (ο 3DES και ο DESX επεκτείνουν κατάλληλα αυτόν τον αριθμό χρησιμοποιώντας περισσότερα κλειδιά) και επεξεργάζονται μπλοκ των 64 bits. O AES αλγόριθμος είναι το πρότυπο που καθιερώθηκε από το NIST ως διάδοχος του DES και πλέον αποτελεί τον προτεινόμενο αλγόριθμο κρυπτογράφησης για εφαρμογές υψηλής ασφάλειας. Οι αλγόριθμοι RC είναι αλγόριθμοι μεταβλητού κλειδιού από την RSA Security ενώ ο IDEA χρησιμοποιείται στο πρότυπο PGP (Pretty Good Privacy).

2. H Διαδικασία Κρυπτογράφησης AES - Μια ιστορική αναδρομή

Όπως αναφέρθηκε παραπάνω, ο αλγόριθμος επιλογής του NIST για κρυπτογράφηση μυστικού κλειδιού ήταν ο DES. Παρόλα αυτά, λόγω της παλαιότητας του αλλά και της αλματώδους ανάπτυξης της υπολογιστικής ισχύος, έγινε εμφανές ότι ένας νέος αλγόριθμος απαιτούνταν. Τον Ιανουάριο του 1997 το NIST ανακοίνωσε ότι αναζητά έναν νέο αλγόριθμο κρυπτογράφησης για τον σχηματισμό ενός νέου προηγμένου προτύπου (AES - Advanced Encryption Standard). Τον Σεπτέμβριο του ίδιου έτους, ανακοινώθηκε η επίσημη διαδικασία πρότασης αλγορίθμων.
Η διαδικασία επιλογής χωρίστηκε σε αρκετούς γύρους με ένα δημόσιο συνέδριο (workshop) στο τέλος κάθε γύρου. Ο πρώτος γύρος ολοκληρώθηκε τον Αύγουστο του 1998, οπότε και επιλέχθηκαν 15 αλγόριθμοι ως υποψήφιοι για το νέο πρότυπο. Η αξιολόγηση των αλγορίθμων στους γύρους που ακολούθησαν αφορούσε τα χαρακτηριστικά τους ως προς την ασφάλεια, το κόστος υλοποίησης και την ταχύτητα (σε s/w και h/w).
Τον Απρίλιο του 1999 (δεύτερος γύρος) ανακοινώθηκε ότι από τους 15 υποψήφιους αλγορίθμους επιλέχθηκαν 5. Οι αλγόριθμοι αυτοί ήταν : MARS (Multiplication, Addition, Rotation and Substitution) από την IBM, Rijndael (από τα αρχικά των δημιουργών του) από τους Βέλγους Joan Daemen και Vincent Rijmen, Serpent από μια ομάδα Βρετανών, Ισραηλινών και Νορβηγών, RC6 από τον Ronald Rivest και TwoFish από τον Bruce Schneier.
H ανάλυση των αλγορίθμων οδήγησε σε λεπτομερή καταγραφή των ιδιοτήτων καθενός. Έτσι, στο τρίτο workshop για τον AES όπου παρουσιάστηκαν τα αποτελέσματα (Απρίλιος 2000), φάνηκε ότι ο πλέον δημοφιλής αλγόριθμος ήταν ο Rijndael. H απόφαση αυτή επισημοποιήθηκε τον Οκτώβριο του 2000 οπότε και το NIST ανακοίνωσε ότι αυτός θα ήταν ο αλγόριθμος για το πρότυπο AES.
Tον Φεβρουάριο του 2001, το NIST εξέδωσε τις draft προδιαγραφές του AES. Ο AES χρησιμοποιεί ένα υποσύνολο των δυνατοτήτων του Rijndael αλγορίθμου και στις επίσημες προδιαγραφές του NIST μια ελαφρώς διαφορετική ονοματολογία έχει επιλεγεί. Το τελικό κείμενο με τις προδιαγραφές του προτύπου εκδόθηκε προς το τέλος του 2001, ως FIPS-PUB-197 (Federal Information Processing Standard Publication).

 Το Πρότυπο AES

To πρότυπο AES περιγράφει μια συμμετρική μπλοκ διαδικασία κρυπτογράφησης μυστικού κλειδιού. Το πρότυπο υποστηρίζει την χρήση κλειδιών μήκους 128, 192 και 256 bits. Ανάλογα με το ποιο μήκος κλειδιού χρησιμοποιείται, συνήθως χρησιμοποιείται η συντόμευση AES-128, AES-192 και AES-256 αντίστοιχα. Ανεξάρτητα από το μήκος κλειδιού, ο αλγόριθμος επενεργεί πάνω σε μπλοκ δεδομένων μήκους 128 bits. Η διαδικασία κρυπτογράφησης είναι επαναληπτική. Αυτό σημαίνει ότι σε κάθε μπλοκ δεδομένων γίνεται μια επεξεργασία η οποία επαναλαμβάνεται έναν αριθμό από φορές ανάλογα με το μήκος κλειδιού. Κάθε επανάληψη ονομάζεται γύρος (round). Στον πρώτο γύρο επεξεργασίας ως είσοδος είναι ένα plaintext μπλοκ και το αρχικό κλειδί, ενώ στους γύρους που ακολουθούν ως είσοδος είναι το μπλοκ που έχει προκύψει από τον προηγούμενο γύρο καθώς και ένα κλειδί που έχει παραχθεί από το αρχικό με βάση κάποια διαδικασία που ορίζει ο αλγόριθμος. Το τελικό προϊόν της επεξεργασίας είναι το κρυπτογραφημένο μπλοκ (ciphertext). Το μπλοκ αυτό πρέπει να σημειωθεί ότι έχει ακριβώς το ίδιο μέγεθος (128 bits) με το plaintext μπλοκ.

Περρισσότερα εδώ