Data Encryption Standard

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια

Ο Data Encryption Standard είναι κρυπταλγόριθμος ο οποίος ξεκίνησε από τις ΗΠΑ ως επίσημο ομοσπονδιακό πρότυπο.

Ιστορικά[Επεξεργασία | επεξεργασία κώδικα]

Ο DES είναι ο κρυπταλγόριθμος ο οποίος είχε επιλεγεί ως επίσημο Ομοσπονδιακό Πρότυπο Επεξεργασίας Πληροφοριών (Federal Information Processing Standard - FIPS) για τις Ηνωμένες Πολιτείες το 1976. Ο DES στη συνέχεια χρησιμοποιήθηκε διεθνώς. Ο αλγόριθμος αρχικά ήταν αμφισβητούμενος, με απόρρητα τα στοιχεία του σχεδιασμού του και ένα σχετικά μικρού μήκους κλειδί. Υπήρχαν υποψίες πως η δημιουργία του DES αποσκοπούσε στη δημουργία backdoor (κερκόπορτας) για την παραβίαση της ασφάλειας της Υπηρεσίας Εθνικής Ασφάλειας (NSA) των Ηνωμένων Πολιτειών. Ο DES υπέστη έντονη ακαδημαϊκή διερεύνηση και αποτέλεσε το κίνητρο για την κατανόηση των κρυπταλγόριθμων συμμετρικού κλειδιού (block ciphers) και την ανάλυσή τους.

Ο DES θεωρείται πλέον ανασφαλής για πολλές εφαρμογές. Αυτό οφείλεται κυρίως στο μικρό μέγεθος του κλειδιού του, που έχει μήκος 64 μπιτ. Τον Ιανουάριο του 1999 οι εταιρείες "Distributed.net" και "Electronic Frontier Foundation", κατόπιν συνεργασίας, “έσπασαν” δημοσίως ένα κλειδί του DES μέσα σε 22 ώρες και 15 λεπτά. Υπάρχουν, επίσης, ορισμένα αναλυτικά αποτελέσματα που καταδεικνύουν θεωρητικές αδυναμίες στον κρυπταλγόριθμο, αν και είναι ανέφικτο να υλοποιηθούν στην πράξη. Θεωρείται πως ο αλγόριθμος είναι πρακτικά ασφαλής υπό τη μορφή του τριπλού DES (triple DES), αν και υπάρχουν θεωρητικές αμφισβητήσεις. Τα τελευταία χρόνια ο κρυπταλγόριθμος DES έχει εκτοπιστεί από τo Προηγμένo Πρότυπo Κρυπτογράφησης (Advanced Encryption Standard - AES).

Η προέλευση του DES βρίσκεται στις αρχές της δεκαετίας του 1970. Το 1972, μετά την ολοκλήρωση μελέτης για την ασφάλεια των υπολογιστών της κυβέρνησης, το σώμα προτύπων των Η.Π.Α., γνωστό ως NBS (National Bureau of Standards) – που τώρα ονομάζεται NIST (National Institute of Standards and Technology) - επισήμανε την ανάγκη για ένα Κυβερνητικό πρότυπο με το οποίο θα μπορούσαν να κρυπτογραφηθούν μη απόρρητες, ευαίσθητες πληροφορίες. Στις 15 Μαΐου του 1973, μετά από διαβούλευση με την NSA, η NBS κάνει προτάσεις για έναν κρυπταλγόριθμο που θα ανταποκρίνεται σe κριτήρια αυστηρού σχεδιασμού. Εντούτοις, καμία από τις προτάσεις που υποβλήθηκαν δεν αποδείχθηκε κατάλληλη. Δημοσιεύθηκε μια δεύτερη πρόταση εκδήλωσης ενδιαφέροντος στις 27 Αυγούστου του 1974. Αυτή τη φορά, η IBM υπέβαλε έναν αλγόριθμο, ο οποίος κρίθηκε αποδεκτός: Ήταν κρυπταλγόριθμος που αναπτύχθηκε κατά τη διάρκεια της περιόδου 1973-1974 βασιζόμένος σε προϋπάρχοντα. Αυτός ήταν ο κρυπταλγόριθμος "Lucifer", τον οποίο δημιούργησε ο Χορστ Φάιστελ (Horst Feistel). Η ομάδα της ΙΒΜ συνέχισε τον σχεδιασμό και την ανάλυση κρυπταλγόριθμων με τη βοήθεια των Feistel, Walter Tuchman, Don Coppersmith, Alan Konheim, Carl Meyer, Mike Matyas, Roy Adler, Edna Grossman, Bill Notz, Lynn Smith και Bryart Tuckerman.

Η ανάμειξη της NSA στον σχεδιασμό[Επεξεργασία | επεξεργασία κώδικα]

Στις 17 Μαρτίου του 1975 ο προτεινόμενος DES δημοσιεύθηκε στον Ομοσπονδιακό κατάλογο (Federal Register). Ζητήθηκαν δημόσια σχόλια και, στο έτος που ακολούθησε, δύο ανοικτά εργαστήρια κλήθηκαν για να συζητήσουν τα προτεινόμενα πρότυπα. Υπήρξε κριτική από διάφορα μέλη, ανάμεσα στους οποίους ήταν και οι πρωτοπόροι στην κρυπτογραφία δημοσίου κλειδιού Μάρτιν Χέλμαν (Martin Hellman) και Ουίτφιλντ Ντίφι (Whitfield Diffie), οι οποίοι ανέφεραν μικρότερο μήκος κλειδιού για τον DES καθώς και τα μυστήρια "S-boxes" ως στοιχεία ανάρμοστης παρέμβασης από την NSA. Η υποψία ήταν ότι ο αλγόριθμος ήταν συγκεκαλυμμένα αποδυναμωμένος από την Κεντρική Υπηρεσία Πληροφοριών (CIA) έτσι, ώστε μόνον αυτή να μπορεί εύκολα να διαβάσει τα κρυπτογραφημένα μηνύματα. Ο Άλαν Κόνχαϊμ (Alan Konheim), ένας από τους σχεδιαστές του DES, ανέφερε στα σχόλιά του:

Στείλαμε τα s-boxes στην Ουάσιγκτον. Επέστρεψαν και ήταν όλα διαφορετικά.

Η Επιτροπή Αντικατασκοπείας της Γερουσίας των ΗΠΑ (United States Senate Select Committee on Intelligence) αναθεώρησε τις ενέργειες της NSA, ώστε να καθορίσει εάν υπήρξε οποιαδήποτε ανάρμοστη συμμετοχή. Στην αταξινόμητη περίληψη των συμπερασμάτων της, που δημοσιεύθηκε το 1978, η Επιτροπή έγραψε:

Στην ανάπτυξη του DES, η NSA έπεισε την IBM ότι ένα μειωμένο μήκος κλειδιού ήταν ικανοποιητικό. Έμμεσα βοηθούμενη στην ανάπτυξη των δομών S-box και διαβεβαίωσαν ότι ο τελικός αλγόριθμος DES ήταν ό,τι καλύτερο διέθεταν, απαλλαγμένος από οποιαδήποτε στατιστική ή μαθηματική αδυναμία.

Εν τούτοις, η Επιτροπή ανακάλυψε και ανέφερε, επίσης, ότι:

Η NSA δεν πείραξε το σχέδιο του αλγορίθμου από καμιά άποψη. Η ΙΒΜ εφηύρε και σχεδίασε τον αλγόριθμο, έλαβε όλες τις σχετικές αποφάσεις αναγνωρίζοντας την αξία του αλγόριθμου και συμφώνησε ότι το μέγεθος του κλειδιού ήταν περισσότερο από επαρκές για όλες τις εμπορικές εφαρμογές, για τις οποίες προοριζόταν ο DES.

Ένα άλλο μέλος της ομάδας DES, ο Walter Tuchman, αναφέρεται πως είπε:

Αναπτύξαμε τον αλγόριθμο DES εξ ολοκλήρου μέσα στην ΙΒΜ χρησιμοποιώντας IBMers. Η NSA δεν δικτύωσε ούτε ένα καλώδιο!

Ορισμένες από τις υποψίες σχετικά με τις κρυφές αδυναμίες στα S-boxes είχαν εξαλειφθεί το 1990, με την ανεξάρτητη ανακάλυψη και την ανοικτή δημοσίευση της Διαφορικής Κρυπτανάλυσης από τους Eli Biham και Adi Shamir. Τα S-boxes του DES ήταν πολύ πιο ανθεκτικά στην επίθεση απ' ό,τι αν είχαν επιλεγεί τυχαία, γεγονός που υποδηλώνει έντονα ότι η IBM γνώριζε για την τεχνική που εφαρμόζονταν στη δεκαετία του 1970. Αυτή ήταν πράγματι η υπόθεση, το 1994, όταν ο Don Coppersmith δημοσίευσε τον αυθεντικό σχεδιασμό των κριτηρίων για τα S-boxes. Σύμφωνα με τον Steven Levi, οι ερευνητές της IBM Watson ανακάλυψαν διαφορικές κρυπταναλυτικές επιθέσεις το 1974 και ζητήθηκε από την NSA να κρατήσει την τεχνική μυστική. Ο Coppersmith εξηγεί την απόρρητη απόφαση της ΙΒΜ λέγοντας πως:

Αυτό συνέβη επειδή η Διαφορική κρυπτανάλυση μπορεί να αποτελέσει ένα πολύ ισχυρό εργαλείο, που μπορεί να χρησιμοποιηθεί εναντίον πολλών συστημάτων-σχημάτων και υπήρχε ανησυχία ότι τέτοιες πληροφορίες στο δημόσιο τομέα θα μπορούσαν να επηρεάσουν δυσμενώς την εθνική ασφάλεια.

Ο Levy ανέφερε στον Walter Tuchman:

Μας ζητήθηκε να σφραγιστούν όλα τα εμπιστευτικά μας έγγραφα... Πρέπει όντως να βάλουμε έναν αριθμό για κάθε ένα έγγραφο και να τα κλειδώσουμε σε χρηματοκιβώτια, επειδή θεωρήθηκαν απόρρητα έγγραφα της Αμερικανικής κυβέρνησης. Μου είπαν να το κάνω και έτσι το έκανα.

Ο Shamir σχολίασε πως, σε αντίθεση με το τι πιστεύουν μερικοί άνθρωποι, δεν υπάρχουν ενδείξεις χειραγώγησης του DES, έτσι ώστε ο βασικός σχεδιασμός να εξασθενήσει.

Η άλλη κριτική - ότι το μήκος του κλειδιού ήταν πολύ μικρό - ενισχύεται από το γεγονός ότι η αιτιολογία που δόθηκε από την NSA για τη μείωση του μήκους του κλειδιού από τα 64 bits στα 56 bits ήταν ότι τα υπόλοιπα 8 bits θα μπορούσαν να χρησιμεύσουν ως bits ισοτιμίας (parity), πράγμα που έμοιαζε αληθοφανές. Ήταν ευρέως πιστευτό ότι η απόφαση της NSA τροποποιήθηκε λόγω της πιθανότητας να είναι σε θέση (η NSA) να κάνει επιτυχείς επιθέσεις τύπου "brute force" σε κλειδί της τάξης μεγέθους των 56 bits αρκετά χρόνια πριν από τον υπόλοιπο κόσμο.

Ο αλγόριθμος DES ως πρότυπο[Επεξεργασία | επεξεργασία κώδικα]

Παρά τις επικρίσεις, ο DES εγκρίθηκε ως ομοσπονδιακό πρότυπο τον Νοέμβριο του 1976 και δημοσιεύθηκε στις 15 Ιανουαρίου του 1977 ως FIPS PUB 46 και η χρήση του ήταν επιτρεπτή σε όλα τα μη απόρρητα δεδομένα. Στη συνέχεια επιβεβαιώθηκε ως πρότυπο το 1983, το 1988 (αναθεωρήθηκε ως FIPS-46-1), το 1993 (ως FIPS-46-2) και πάλι το 1999 (ως FIPS-46-3). Ο τελευταίος ορισμός ήταν ο Triple DES. Στις 26 Μαΐου του 2002 ο DES τελικά εκτοπίστηκε από τον Advanced Encryption Standard (AES) κατόπιν δημόσιου διαγωνισμού. Στις 19 Μαΐου του 2005 ο FIPS 46-3 είχε επισήμως αποσυρθεί, αλλά το Εθνικό Ινστιτούτο Προτύπων και Τεχνολογίας (National Institute of Standards and Technology - NIST) ενέκρινε τον Triple DES στο έτος 2003 για τις ευαίσθητες πληροφορίες της κυβέρνησης. Μια άλλη θεωρητική επίθεση, η γραμμική κρυπτανάλυση, δημοσιεύθηκε το 1994, αλλά ήταν μια επίθεση brute force το 1998 που αναπαράστησε/απέδειξε ότι μπορεί κάποιος θα μπορούσε πρακτικά να επιτεθεί στον DES και τονίστηκε η ανάγκη για αντικατάσταση του αλγόριθμου. Αυτές και άλλες μέθοδοι κρυπτανάλυσης εξετάζονται λεπτομερώς.

Η εισαγωγή του DES θεωρείται ότι ήταν καταλύτης για την ακαδημαϊκή μελέτη της κρυπτογραφίας, ιδιαίτερα των μεθόδων για να "σπάζουν" block κρυπταλγόριθμους, σύμφωνα με αναδρομή στο NIST για τον DES.

Μπορεί να ειπωθεί ότι το "αρχικό άλμα" του DES ξεπέρασε τις στρατιωτικές μελέτες και την ανάπτυξη των αλγορίθμων κρυπτογράφησης. Στην δεκαετία του 1970 υπήρχαν πολύ λίγοι κρυπτογράφοι, εκτός εκείνων των στρατιωτικών ή των μυστικών οργανώσεων, και ελάχιστη ήταν η ακαδημαϊκή έρευνα της κρυπτογραφίας. Υπάρχουν τώρα πολλοί δραστήριοι ακαδημαϊκοί κρυπτολόγοι και τμήματα μαθηματικών με ισχυρά προγράμματα στην κρυπτογραφία και την ασφάλεια των πληροφοριών και των εμπορικών εταιρειών και συμβούλων. Μια γενεά κρυπταναλυτών έχει αναλύσει εξονυχιστικά τον αλγόριθμο DES προσπαθώντας να τον "σπάσουν". Ανέφεραν πως ο DES έκανε περισσότερα για να γαλβανίσει τον τομέα της κρυπτανάλυσης από οτιδήποτε άλλο γιατί έτσι υπήρχε ένας αλγόριθμος για μελέτη. Ένα εκπληκτικό μερίδιο της ανοιχτής βιβλιογραφίας στην κρυπτογραφία κατά τη δεκαετία του 1970 και του 1980 ασχολήθηκε με τον DES και ο DES είναι πρότυπο ενάντια σε όλους τους αλγόριθμους συμμετρικού κλειδιού μετά από σύγκριση.

Χρονολογικά[Επεξεργασία | επεξεργασία κώδικα]

Περιγραφή του DES[Επεξεργασία | επεξεργασία κώδικα]

[1] Η Data Encryption Standard (DES), είναι το όνομα της Federal Information Processing Standard (FIPS) 46-3, το οποίο περιγράφει τον αλγόριθμο κρυπτογράφησης δεδομένων (DEA). Ο DEA επίσης ορίζεται με το πρότυπο ANSI X3.92. επίσης είναι μια βελτίωση του αλγορίθμου Lucifer που αναπτύχθηκε από την IBM στις αρχές του 1970. Η IBM, η Υπηρεσία Εθνικής Ασφάλειας (NSA) και το Εθνικό Γραφείο Προτύπων (NBS ,σήμερα Εθνικό Ινστιτούτο Προτύπων και Τεχνολογίας NIST) ήταν οι υπηρεσίες που ανέπτυξαν τον αλγόριθμο. Το DES έχει μελετηθεί εκτενώς από τη δημοσίευσή του και είναι ο πιο ευρέως χρησιμοποιούμενος Συμμετρικός αλγόριθμος στον κόσμο. Το DES είναι 64-bit και χρησιμοποιεί ένα 56-bit κλειδί κατά τη διάρκεια της εκτέλεσης (έχει 8 bits ισοτιμίας από το πλήρες κλειδί 64-bit).Ο DES είναι ένα συμμετρικό κρυπτογραφικό σύστημα, και συγκεκριμένα ένα 16-γύρο cipher Feistel. Όταν χρησιμοποιείται για την επικοινωνία, τόσο αποστολέας και ο παραλήπτης πρέπει να γνωρίζει το ίδιο μυστικό κλειδί, το οποίο μπορεί να χρησιμοποιηθεί για την κρυπτογράφηση και την αποκρυπτογράφηση του μηνύματος, ή για τη δημιουργία και την επαλήθευση ενός κώδικα ταυτότητας μηνυμάτων (MAC). Ο DES μπορεί επίσης να χρησιμοποιηθεί για μεμονωμένους χρήστες κρυπτογράφησης, όπως για την αποθήκευση αρχείων σε έναν σκληρό δίσκο σε κρυπτογραφημένη μορφή.

[1] Ο DES είναι αρχετυπικός block cipher, δηλαδή, ένας πρωτότυπος κρυπταλγόριθμος συμμετρικού κλειδιού, που λαμβάνει μια σειρά από bits απλού κειμένου (plaintext bits) σταθερού μήκους και την μετατρέπει, μέσω μιας σειράς πολύπλοκων ενεργειών, σε μια άλλη σειρά bits, το κρυπτοκείμενο (chiphertext) με το ίδιο μήκος. Στην περίπτωση του DES το μέγεθος μπλοκ (block size: Η σειρά των bits σταθερού μήκους) είναι 64 bits. Ο DES χρησιμοποιεί, επίσης, ένα κλειδί για να προσαρμόσει την μετατροπή, ώστε η αποκρυπτογράφηση να μπορεί, υποθετικά, να πραγματοποιηθεί μόνο από εκείνους που γνωρίζουν το συγκεκριμένο κλειδί που χρησιμοποιήθηκε για την κρυπτογράφηση. Το κλειδί φαινομενικά αποτελείται από 64 bits. Ωστόσο, στην πραγματικότητα μόνο 56 από αυτά χρησιμοποιήθηκαν από τον αλγόριθμο. Τα υπόλοιπα 8 bits χρησιμοποιούνται αποκλειστικά για τον έλεγχο της ισοτιμίας (parity) και στη συνέχεια απορρίπτονται (αυτά καλούνται parity bits), εξ ου και αναφέρεται συνήθως ως κλειδί μήκους 56 bits. Όπως οι άλλοι block αλγόριθμοι κρυπτογράφησης, έτσι και ο DES από μόνος του δεν είναι ασφαλής τρόπος κρυπτογράφησης αλλά, αντίθετα, πρέπει να χρησιμοποιηθεί με ειδικό τρόπο λειτουργίας (mode of operation). Ο FIPS-81 ορίζει πολλούς τρόπους χρήσης του DES. Περαιτέρω παρατηρήσεις σχετικά με τη χρήση του DES περιέχονται στο FIPS-74.

Γενική δομή[Επεξεργασία | επεξεργασία κώδικα]

[2] • ΕCB (Electronic Code Book) o Αυτή είναι η τακτική του αλγορίθμου DES. o Τα δεδομένα είναι χωρισμένα σε 64-bit μπλοκ και κάθε μπλοκ είναι κρυπτογραφημένο, ένα κάθε φορά. o Ξεχωριστή κρυπτογράφηση με διαφορετικά μπλοκ είναι εντελώς ανεξάρτητα μεταξύ τους. o Αυτό σημαίνει ότι εάν τα δεδομένα μεταδίδονται μέσω δικτύου ή τηλεφωνικής γραμμής, σφάλματα μετάδοσης θα επηρεάσουν μόνο το μπλοκ που περιέχει το σφάλμα. o Αυτό σημαίνει επίσης, ωστόσο, ότι το μπλοκ μπορεί να τροποποιηθεί, και η δράση αυτή θα περνάει απαρατήρητη. o ΕΚΤ είναι ο πιο αδύναμος των διαφόρων μέσων, επειδή δεν απαιτούνται πρόσθετα μέτρα ασφαλείας που εφαρμόζονται, εκτός από το βασικό αλγόριθμο DES. o Ωστόσο, η ΕΚΤ είναι ο γρηγορότερος και ευκολότερος για την εφαρμογή, καθιστώντας την πιο κοινή λειτουργία του DES.

• CBC (Cipher Block Chaining) o Σε αυτόν τον τρόπο λειτουργίας του, κάθε μπλοκ της ΕΚΤ κρυπτογραφημένη ciphertext είναι XORed με το επόμενο μπλοκ plaintext είναι κρυπτογραφημένη, έτσι ώστε όλα τα μπλοκ εξαρτώνται από όλα τα προηγούμενα μπλοκ. o Αυτό σημαίνει ότι για να βρει το plaintext ενός συγκεκριμένου μπλοκ, θα πρέπει να γνωρίζει το ciphertext, το κλειδί, και το κρυπτογράφημα του προηγούμενου μπλοκ. o Το πρώτο μπλοκ για να είναι κρυπτογραφημένο δεν έχει προηγούμενο ciphertext, έτσι ώστε το plaintext είναι XORed με έναν αριθμό 64-bit που ονομάζεται Initialization Vector ή IV για συντομία. o Έτσι, αν τα δεδομένα μεταδίδονται μια γραμμή δικτύου ή τηλεφώνου και υπάρχει ένα σφάλμα μετάδοσης, το σφάλμα θα μεταφερθεί σε όλα τα επόμενα μπλοκ από το κάθε μπλοκ εξαρτάται από το τελευταίο. o Αυτός ο τρόπος λειτουργίας είναι πιο ασφαλής από ΕΚΤ, διότι το επιπλέον βήμα XOR προσθέτει ένα ακόμη στρώμα στη διαδικασία κρυπτογράφησης.

• CFB (Cipher Feedback) o Σε αυτή τη λειτουργία, μπλοκ plaintext που είναι λιγότερο από 64 bits μήκος μπορεί να είναι κρυπτογραφημένα. o Κανονικά, ειδική επεξεργασία, πρέπει να χρησιμοποιηθεί για να χειριστεί τα αρχεία των οποίων το μέγεθος δεν είναι ένα τέλειο πολλαπλάσιο των 8 bytes, αλλά αυτή η λειτουργία αφαιρεί ότι η αναγκαιότητα (Stealth χειρίζεται αυτή την περίπτωση, με την προσθήκη πολλών bytes ομοίωμα στο τέλος ενός αρχείου πριν την κρυπτογράφηση αυτού). o Η plaintext από μόνη της δεν είναι στην πραγματικότητα αλλά πέρασε μέσω του αλγορίθμου DES, απλώς XORed με ένα μπλοκ εξόδου από αυτήν, με τον ακόλουθο τρόπο: Ένας 64-bit μπλοκ που ονομάζεται Μητρώο Shift χρησιμοποιείται ως plaintext συμβολή DES. Αυτό έχει αρχικά οριστεί σε κάποια αυθαίρετη τιμή, και κρυπτογραφημένη με τον αλγόριθμο DES. Η ciphertext στη συνέχεια διέρχεται από ένα επιπλέον στοιχείο που ονομάζεται Μ-box, το οποίο απλά επιλέγει την άκρως αριστερή M bits του ciphertext, όπου m είναι ο αριθμός των bits στο μπλοκ που θέλουμε για την κρυπτογράφηση. Η τιμή αυτή είναι XORed με το πραγματικό απλό, και η έξοδος του ότι είναι ο τελικός ciphertext. Τέλος, το ciphertext ανατροφοδοτεί το Μητρώο Shift, και χρησιμοποιείται ως σπόρος plaintext για το επόμενο μπλοκ ώστε να είναι κρυπτογραφημένα. o Όπως και με τρόπο CBC, ένα λάθος σε ένα μπλοκ επηρεάζει όλες τις επόμενες μπλοκ κατά τη διάρκεια της μετάδοσης δεδομένων. o Αυτός ο τρόπος λειτουργίας είναι παρόμοια με τη διασυνοριακή συνεργασία και είναι πολύ ασφαλές, αλλά είναι πιο αργή από ότι ΕΚΤ χάρη στην επιπλέον πολυπλοκότητα.

• OFB (Output Feedback) o Αυτό είναι παρόμοιο σε λειτουργία CFB, εκτός από το ότι η παραγωγή του ciphertext DES είναι για να ανατροφοδοτεί το Μητρώο Shift, και όχι η πραγματική τελική ciphertext. o Το μητρώο Shift έχει οριστεί σε μια αυθαίρετη αρχική τιμή, και πέρασε μέσα από τον αλγόριθμο DES. o Η έξοδος από την DES διέρχεται μέσα από το M-box και στη συνέχεια να ανατροφοδοτεί το Shift για να προετοιμαστεί για το επόμενο μπλοκ. o Η τιμή αυτή είναι συνέχεια XORed με το πραγματικό απλό (το οποίο μπορεί να είναι μικρότερο των 64 bits σε μήκος, όπως η λειτουργία CFB), και το αποτέλεσμα είναι το τελικό ciphertext. o Σημειώστε ότι σε αντίθεση με CFB και CBC, ένα σφάλμα μετάδοσης σε ένα μπλοκ δεν θα επηρεάσει τα επόμενα μπλοκ γιατί από τη στιγμή που ο παραλήπτης έχει την αρχική τιμή Εγγραφή Shift, θα συνεχίσει να παράγει νέα Shift Εγγραφή, απλό κείμενο χωρίς καμία περαιτέρω εισαγωγή δεδομένων. o Αυτός ο τρόπος λειτουργίας είναι λιγότερο ασφαλής από ότι CFB λειτουργία, επειδή μόνο το πραγματικό προϊόν ciphertext και DES ciphertext είναι απαραίτητο για να βρείτε το απλό κείμενο του πιο πρόσφατου μπλοκ. o Η γνώση του κλειδιού δεν είναι απαραίτητη. Ενσωματωμένο λογισμικό βιβλιοθηκών VOCAL περιλαμβάνουν μια πλήρη γκάμα ETSI / ITU / IEEE αλγορίθμων συμβατό, εκτός από πολλά άλλα τυποποιημένα και αλγορίθμους. Το λογισμικό μας έχει βελτιστοποιηθεί για εκτέλεση σε ANSI C και οδηγώντας αρχιτεκτονικών DSP (TI, ADI, AMD, ARM, MIPS, CEVA, LSI Logic ZSP, κλπ.). Οι βιβλιοθήκες αυτές είναι ευέλικτες και μπορούν να εκτελεστούν ως ένα ενιαίο έργο κάτω από μια ποικιλία λειτουργικών συστημάτων ή αυτόνομα με δικό του μικρο πυρήνα.

Η γενική δομή του αλγορίθμου παρουσιάζεται στην Εικόνα 1: Υπάρχουν 16 πανομοιότυπα στάδια επεξεργασίας, που καλούνται Γύροι. Υπάρχει, επίσης ,μια αρχική και μια τελική μεταλλαγή που καλούνται IP και FP (ή IP-1) αντίστοιχα, οι οποίες είναι Αντίστροφες Συναρτήσεις (η IP "ανατρέπει" τη δράση του FP και αντίστροφα). Η IP και η FP δεν έχουν σχεδόν καμία κρυπτογραφική σημασία, αλλά συμπεριλήφθηκαν, προφανώς, προκειμένου να διευκολύνουν τα block φόρτωσης μέσα και έξω από το υλικό των μέσων της δεκαετίας του 1970, καθώς επίσης και για να κάνουν τον DES να "τρέχει" πιο αργά σε λογισμικό.

Πριν από τους κύριους γύρους, το block είναι διηρημένο σε δύο 32bit ήμισυ και επεξεργασμένο διαδοχικά. Αυτή η σταυροειδής διάταξη είναι γνωστή ως σχήμα Feistel (Feistel scheme). Η δομή Feistel εξασφαλίζει ότι η αποκρυπτογράφηση και η κρυπτογράφηση είναι παρόμοιες διαδικασίες. Η μόνη διαφορά είναι ότι τα υποκλείδια ή δευτερεύοντα κλειδιά (subkeys) εφαρμόζονται σε αντίστροφη διάταξη, όταν εκτελείται η πράξη της αποκρυπτογράφησης. Το υπόλοιπο του αλγορίθμου είναι ίδιο. Αυτό απλοποιεί πολύ την εφαρμογή, ιδιαίτερα στο υλικό, δεδομένου ότι δεν υπάρχει καμία ανάγκη για ξέχωρους αλγορίθμους κρυπτογράφησης και αποκρυπτογράφησης. Το κόκκινο το σύμβολο δείχνει την αποκλειστική OR (XOR) λειτουργία. Η F συνάρτηση αναμιγνύει το μισό τμήμα του block μαζί με ένα μέρος από το κλειδί. Η έξοδος από την συνάρτηση F συνδυάζεται έπειτα με το άλλο μισό του block και τα ήμισυ ανταλλάσσονται πριν από τον επόμενο κύκλο. Μετά από τον τελικό γύρο, τα μισά δεν ανταλλάσσονται, αυτό είναι ένα χαρακτηριστικό γνώρισμα της δομής Feistel που κάνει την κρυπτογράφηση και την αποκρυπτογράφηση παρόμοιες διαδικασίες.

Η συνάρτηση Feistel (F)[Επεξεργασία | επεξεργασία κώδικα]

Η συνάρτηση F, που απεικονίζεται στην Εικόνα 2, λειτουργεί με μισό block (32 μπιτ) τη φορά και αποτελείται από τέσσερα στάδια:

Επέκταση → Το μισό block των 32 bits έχει επεκταθεί σε 48 bits χρησιμοποιώντας την επεκτατική μεταλλαγή (expansion permutation) – η οποία υπάρχει με την ονομασία Ε (γαλάζιο ορθογώνιο) στην Εικόνα 2 – αντιγράφοντας ορισμένα από τα μπιτ.

Ανάμειξη κλειδιών → Το αποτέλεσμα αναμιγνύεται με ένα υποκλειδί με τη χρήση μιας XOR πράξης. Δεκαέξι κλειδιά, μεγέθους 48 bits το καθένα – ένα για κάθε γύρο -, προέρχονται από το κύριο κλειδί χρησιμοποιώντας το χρονοδιάγραμμα / πρόγραμμα κλειδιού (key schedule) το οποίο θα περιγραφεί παρακάτω.

Αντικατάσταση → Μετά την ανάμειξη με το υποκλειδί, το block διαιρείται σε οκτώ τμήματα των 6 bits πριν να τύχει επεξεργασίας από τα S-boxes (Substitution boxes – κουτιά αντικατάστασης). Κάθε ένα από τα οκτώ S-boxes αντικαθιστά τις εξάμπιτες εισόδους του με εξόδους των τεσσάρων μπιτ σύμφωνα με ένα μη γραμμικό μετασχηματισμό, που παρέχεται με τη μορφή ενός πίνακα αναζήτησης (lookup table). Τα S-boxes παρέχουν τον πυρήνα της ασφάλειας του DES – χωρίς αυτά, ο κρυπταλγόριθμος θα ήταν γραμμικός και κοινότοπα εύθραυστος.

Μεταλλαγή → Τέλος, οι 32 έξοδοι από τα S-boxes διακανονίζονται σύμφωνα με μια σταθερή μεταλλαγή, το P-box.

Η εναλλαγή της αντικατάστασης από τα S-boxes και τη μεταλλαγή των bits από το P-box και την E-επέκταση (expansion ), παρέχει τη λεγόμενη “σύγχυσηκαι διάχυση” αντίστοιχα, μια έννοια που προσδιορίστηκε από τον Κλοντ Σάνον (Claude Shannon) τη δεκαετία του 1940 ως απαραίτητη προϋπόθεση για ασφαλή και πρακτικό πλέον κρυπταλγόριθμο.

Το πρόγραμμα κλειδιού[Επεξεργασία | επεξεργασία κώδικα]

Η Εικόνα 3 απεικονίζει το πρόγραμμα κλειδιού για την κρυπτογράφηση — ο αλγόριθμος που δημιουργεί τα υποκλειδιά. Αρχικά, 56 μπιτ του κλειδιού επιλέγονται από τα αρχικά 64 από τη μεταλλαγμένη επιλογή 1 (Permuted Choice 1 : PC-1) — τα υπόλοιπα οκτώ μπιτ είτε απορρίπτονται είτε χρησιμοποιούνται ως parity bits (για τον έλεγχο ισοτιμίας). Τα 56 μπιτ διαιρούνται έπειτα σε δύο τμήματα των 28 και κάθε μισό αντιμετωπίζεται έκτοτε χωριστά. Στους διαδοχικούς γύρους και τα δύο μισά περιστρέφονται αριστερά κατά ένα ή δύο μπιτ (που διευκρινίζονται για κάθε γύρο) και έπειτα, 48 μπιτ του υποκλειδιού επιλέγονται από τη μεταλλαγμένη επιλογή 2 (Permuted Choice 2 : PC-2) — 24 μπιτ από το αριστερό μισό και 24 από το μπιτ μισό. Οι περιστροφές (που δείχνονται από το <<< στην Εικόνα 3) σημαίνουν ότι ένα διαφορετικό σετ από μπιτ χρησιμοποιείται σε κάθε υποκλειδί. Κάθε μπιτ χρησιμοποιείται σε περίπου 14 από τα 16 υποκλειδιά.

Το πρόγραμμα κλειδιού για την αποκρυπτογράφηση είναι παρόμοιο — τα υποκλειδιά είναι σε αντίστροφη διάταξη έναντι αυτή της κρυπτογράφησης. Αν, δηλαδή, κατά την κρυπτογράφηση το πρόγραμμα κλειδιού είναι {k1, k2, k3 ... k16}, τότε το πρόγραμμα κλειδιού της αποκρυπτογράφησης θα είναι {k16 ... k3, k2, k1}. Πέραν αυτής της αλλαγής, η διαδικασία είναι η ίδια όπως για την κρυπτογράφηση.

Ασφάλεια και κρυπτανάλυση[Επεξεργασία | επεξεργασία κώδικα]

Αν και οι περισσότερες πληροφορίες που έχουν δημοσιευθεί αφορούν στην κρυπτανάλυση του DES απ' ότι οποιουδήποτε άλλου block cipher, η πρακτικότερη επίθεση μέχρι και σήμερα είναι ακόμα η προσέγγιση brute force (ωμής βίας). Είναι γνωστές διάφορες δευτερεύουσες κρυπταναλυτικές ιδιότητες και τρεις θεωρητικές επιθέσεις είναι δυνατές˙ που ακόμα κι αν έχουν μια θεωρητική πολυπλοκότητα μικρότερη από την επίθεση brute force, απαιτείται να φέρουν ιλιγγιώδες μέγεθος γνωστών ή προεπιλεγμένων plaintext και δεν αποτελούν, στην πράξη, πηγή ανησυχίας.

Επίθεση brute-force (ωμής βίας)[Επεξεργασία | επεξεργασία κώδικα]

Για οποιοδήποτε κρυπταλγόριθμο, η πιο βασική μέθοδος επίθεσης είναι η brute force — δοκιμάζοντας συνεχόμενα κάθε πιθανό κλειδί. Το μήκος του κλειδιού καθορίζει το πλήθος των πιθανών κλειδιών και ως εκ τούτου την δυνατότητα πραγματοποίησης αυτής της προσέγγισης. Τέθηκαν από νωρίς ερωτήσεις για την επάρκεια του μήκους κλειδιού του DES, πριν ακόμα υιοθετηθεί ως πρότυπο. Το μικρό μήκος κλειδιού ήταν αυτό που, στην ουσία, υπαγόρευση την ανάγκη για την αντικατάσταση του αλγόριθμου, παρά η θεωρητική κρυπτανάλυση. Είναι γνωστό ότι η NSA ενθάρρυνε, αν δεν έπεισε, την ΙΒΜ για να μειώσει το μήκος του κλειδιού από τα 128 στα 64 bits και από εκεί σε 56 bits. Αυτό λαμβάνεται συχνά ως ένδειξη ότι η NSA σκέφτηκε ότι θα ήταν σε θέση να “σπάσει” κλειδιά αυτού του μήκους ακόμη και στα μέσα της δεκαετίας του '70.

Στον ακαδημαϊκό κόσμο έγιναν διάφορες προηγμένες προτάσεις για μια μηχανή που θα αποσκοπούσε στο να “σπάει” τον DES. Το 1977, οι Diffie και Hellman πρότειναν μια μηχανή που θα στοίχιζε, κατ' εκτίμηση, 20 εκατομμύρια δολάρια, η οποία θα μπορούσε να βρει ένα κλειδί DES σε μία και μόνο ημέρα. Μέχρι το 1993, ο Wiener είχε προτείνει μια μηχανή αναζήτησης κλειδιού με κοστολόγηση 1 εκατομμύριο δολάρια, που θα έβρισκε ένα κλειδί μέσα σε 7 ώρες. Εντούτοις, καμία από αυτές τις πρόωρες προτάσεις δεν εφαρμόστηκε˙ τουλάχιστον καμία εφαρμογή δεν αναγνωρίστηκε δημόσια. Η ευπάθεια του DES επιδείχθηκε πρακτικά προς το τέλος της δεκαετίας του '90. Το 1997, η εταιρεία RSA Security υποστήριξε μια σειρά διαγωνισμών με βραβείο $10.000 στην πρώτη ομάδα που θα “έσπαζε” ένα μήνυμα, το οποίο είχε κρυπτογραφηθεί με τον DES. Τον διαγωνισμό κέρδισε το πρόγραμμα DESCHALL, που δημιουργήθηκε από τους Rocke Verser, Matt Curtin, και Justin Dolske, χρησιμοποιώντας τον χρόνο που βρίσκονταν σε αδράνεια, χιλιάδων υπολογιστών σε ολόκληρο το Διαδίκτυο. Η δυνατότητα πραγματοποίησης του “σπασίματος” του DES καταδείχθηκε γρήγορα το 1998 όταν φτιάχτηκε μια ρουτίνα "σπασίματος" του DES από την EFF (Electronic Frontier Foundation), μια ομάδα αστικών δικαιωμάτων του Κυβερνοχώρου, με κόστος περίπου $250,000 (Εικόνα 4). Το κίνητρό τους ήταν να δείξουν ότι ο DES ήταν το ίδιο εύθραυστος στην πράξη όπως και στην θεωρία:

Υπάρχουν πολλοί άνθρωποι που δεν θα πιστέψουν μια αλήθεια έως ότου μπορούν να τη δουν με τα μάτια τους. Δείχνοντάς τους μία φυσική μηχανή που μπορεί να “σπάσει” τον DES σε μερικές ημέρες είναι ο μόνος τρόπος να πειστούν μερικοί άνθρωποι ότι δεν μπορούν να εμπιστευθούν την ασφάλειά τους στον DES.

Η μηχανή εμφάνισε ένα κλειδί με χρήση brute force σε κάτι περισσότερο από 2 ημέρες. Περίπου στον ίδιο χρόνο ένας πληρεξούσιος του αμερικανικού Υπουργείου Δικαιοσύνης ανήγγελλε ότι ο DES δεν ήταν δυνατό να παραβιαστεί.

Η μόνη άλλη επιβεβαιωμένη μηχανή που “έσπαζε” τον DES ήταν η μηχανή COPACOBANA (σύντμηση του βέλτιστου κόστους και παράλληλα ενός code breaker) που δημιουργήθηκε πιο πρόσφατα από τις ομάδες των πανεπιστημίων του Μπόχουμ και του Κίελου της Γερμανίας. Αντίθετα από τη μηχανή της EFF, η COPACOBANA αποτελείται από εμπορικά διαθέσιμα, ανασχηματισμένα ολοκληρωμένα κυκλώματα. 120 αυτών των FPGAs του τύπου XILINX Spartan3-1000 τρέχουν σε παράλληλη σύνδεση. Ομαδοποιούνται σε 20 DIMM ενότητες, που κάθε μια περιέχει 6 FPGAs. Η χρήση των ανασχηματισμένων υλικών κάνει την μηχανή να βρίσκει εφαρμογή και σε άλλες λειτουργίες για “σπάσιμο” κωδικών. Η Εικόνα 5 δείχνει μία πλήρη μηχανή COPACOBANA. Μια από τις πιο ενδιαφέρουσες πτυχές COPACOBANA είναι ο παράγοντας του κόστους της. Μια μηχανή μπορεί να κατασκευαστεί με κόστος περίπου $10.000. Η μείωση κόστους από έναν, κατά προσέγγιση, παράγοντα της τάξης του 25% από αυτή της μηχανής της EFF είναι ένα εντυπωσιακό παράδειγμα για τη συνεχή βελτίωση του ψηφιακού υλικού. Κατά ενδιαφέροντα τρόπο, ο νόμος του Moore προβλέπει μια βελτίωση της τάξης περίπου 32%, δεδομένου ότι περίπου οκτώ έτη έχουν μεσολαβήσει μεταξύ του σχεδιασμού των δύο μηχανών, πράγμα το οποίο επιτρέπει περίπου πέντε διπλασιασμούς της ισχύος των υπολογιστών (ή 5 μειώσεις τις τάξεως του 50% του κόστους για τον ίδιο υπολογισμό).

Επιθέσεις ταχύτερες από την brute - force[Επεξεργασία | επεξεργασία κώδικα]

Υπάρχουν τριων ειδών επιθέσεις που είναι γνωστό ότι μπορούν να “σπάσουν” ΚΑΙ τους δέκα έξι γύρους του DES με λιγότερη πολυπλοκότητα από μια αναζήτηση brute force:

  • Η Διαφορική Κρυπτανάλυση (Differential Cryptanalysis – DC)
  • Η Γραμμική Κρυπτανάλυση (Linear Cryptanalysis - LC) και τέλος
  • Η επίθεση του Davie (Davies' Attack)

Εντούτοις, οι επιθέσεις είναι θεωρητικές και είναι αδύνατο να εφαρμοστούν στην πράξη. Τέτοιου είδους επιθέσεις καλούνται μερικές φορές Certificational Weaknesses.

Παραπομπές[Επεξεργασία | επεξεργασία κώδικα]

  1. 1,0 1,1 Vocal technologies. «Data Encryption Standard (DES)». Data Encryption Standard (DES). Ανακτήθηκε στις 24 Ιανουαρίου 2012. 
  2. Vocal technologies. «Modes of Operation». Data Encryption Standard (DES). Ανακτήθηκε στις 24 Ιανουαρίου 2012. 

Εξωτερικοί σύνδεσμοι[Επεξεργασία | επεξεργασία κώδικα]