Συμμετρική Κρυπτογραφία ΙΙ Τμήμα Μηχ. Πληροφορικής ΤΕΙ Κρήτης Συμμετρική Κρυπτογραφία ΙΙ 1
Συμβατική κρυπτογραφία Συμμετρική Κρυπτογραφία ΙΙ 2
Triple DES Χρειαζόταν αντικαταστάτης του DES Θεωρητικές επιθέσεις που μπορούν να σπάσουν DES Είχαν επιδειχθεί πολλές εξαντλητικές επιθέσεις αναζήτησης κλειδιού Ο απλός DES είχε αποδοκιμαστεί Εναλλακτικά: κρυπτογραφούμε πολλαπλές φορές με το DES, με αποτέλεσμα να αυξάνουμε το μήκος του κλειδιού Ο Triple-DES επιλέχθηκε ως ο απλούστερος τρόπος να μεγαλώσουμε το κλειδί χωρίς να χρειαστεί να πάμε σε κάποιο καινούργιο αλγόριθμο Σιγά-σιγά σταμάτησε η χρήση του TDES, κυρίως εξ αιτίας του πετυχημένου αλγόριθμου AES Παρόλαυτα σε συγκεκριμένες εφαρμογές ο TDES παραμένει ενεργός για περεταίρω χρήση στο μέλλον Συμμετρική Κρυπτογραφία ΙΙ 3
Γιατί όχι Double DES? Το μέγεθος του κλειδιού είναι 56 x 2 = 112 bits C = E K2 [E K1 [P]] P = D K1 [D K2 [C]] Meet-in-the-Middle Attack Σημείωση: X = E K1 [P] = D K2 [C] Βήμα 1: κρυπτογραφούμε το P με όλα τα κλειδιά K 1 και αποθηκεύουμε το X Βήμα 2: αποκρυπτογραφούμε το C με όλα τα κλειδιά K 2 και κοιτάμε τις τιμές του X Αν D Ka (C) = E Kb (P), τότε μπορεί a = K2, b = K1 Συμμετρική Κρυπτογραφία ΙΙ 4
Γιατί όχι Double DES? Meet-in-the-Middle Attack Χρειάζονται O(2 56 ) βήματα, όχι πολύ περισσότερα από τον DES που έχει O(2 55 ) Για να γίνει η παραπάνω δοκιμή απαιτείται πολύ μνήμη Στην πράξη, φτιάχνουμε μία λίστα για δύο διαφορετικά ζευγάρια plaintext και ciphertext Συχνά το επαναλαμβάνουμε 2 φορές Κάνοντας το παραπάνω, χρειαζόμαστε (2*2 56 )(2)(64) bits αποθηκευτικού χώρου = 2 64 Κατά προσέγγιση είναι 2 δισεκατομμύρια gigabytes Όχι πρακτική επίθεση, αλλά ικανό να θεωρείται ο 2DES ύποπτος/αδύναμος Συμμετρική Κρυπτογραφία ΙΙ 5
Γιατί όχι Double DES? Συμμετρική Κρυπτογραφία ΙΙ 6
Triple DES Triple-DES Ορίζεται από το NIST το 1999, μέρος του FIPS 46-3 standard http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf Ειδική δημοσίευση NIST 800-67 (2004) http://csrc.nist.gov/publications/nistpubs/800-67/sp800-67.pdf Κληρονομεί τα αδύναμα κλειδιά από τον DES Τα τμήματα μεγέθους 64-bit περιορίζουν το μέγεθος των δεδομένων που μπορούμε να κρυπτογραφήσουμε με ένα ενιαίο κλειδί Είναι αργός Συμμετρική Κρυπτογραφία ΙΙ 7
Triple DES με δύο κλειδιά 3 κρυπτογραφήσεις με 2 κλειδιά (112 bits) C = E K1 [D K2 [E K1 [P]]] P = D K1 [E K2 [D K1 [C]]] K2 χρησιμοποιείται στο στάδιο αποκρυπτογράφησης Αν K1=K2 τότε 3DES μπορεί να αποκρυπτογραφεί σαν τον απλό DES (συμβατότητα προς τα πίσω) Καμία γνωστή επίθεση μέχρι σήμερα Συμμετρική Κρυπτογραφία ΙΙ 8
Triple DES με τρία κλειδιά Αν και δεν υπάρχουν αποτελεσματικές επιθέσεις στον Triple-DES με δύο κλειδιά Μπορούμε να χρησιμοποιήσουμε τον Triple-DES με 3 κλειδιά για να αποφύγουμε οποιεσδήποτε αμφιβολίες 168 bit κλειδί C = E K3 [D K2 [E K1 [P]]] Υιοθετήθηκε από κάποιες εφαρμογές στο Internet e.g., PGP, S/MIME Ο NIST συστήνει να χρησιμοποιούνται 3 ξεχωριστά κλειδιά http://csrc.nist.gov/publications/nistpubs/800-57/sp800-57-part1.pdf Συμμετρική Κρυπτογραφία ΙΙ 9
AES Αναγκαιότητα να αντικατασταθεί ο DES Θεωρητικές επιθέσεις ικανές να τον σπάσουν Επίδειξη brute force επιθέσεων στο κλειδί Triple-DES αργός στα μικρά block US NIST ζήτησε νέες προτάσεις - 1997 15 υποψήφιοι έγιναν δεκτοί 06/1998 5 επιλέχθηκαν - 08/1999 Ο Rijndael αναδείχθηκε νικητής - 10/2000 Έγινε standard (FIPS PUB 197) - 11/2001 Συμμετρική Κρυπτογραφία ΙΙ 10
AES Χαρακτηριστικά Block cipher συμμετρικού κλειδιού 128-bit data, 128/192/256-bit keys Πιο δυνατός/γρήγορος από Triple-DES Ενεργή διάρκεια 20-30 έτη (+ αρχειοθέτηση) Το NIST έχει δημοσιοποιήσει όλες τις προδιαγραφές και τις λεπτομέρειες γύρω από τον σχεδιασμό του αλγόριθμου καθώς και όλες τις δημοσιεύσιμες αναλύσεις από τρίτους τόσο για το νικητή όσο και για τους υπόλοιπους αλγόριθμους Υλοποιήσεις σε C & Java Συμμετρική Κρυπτογραφία ΙΙ 11
AES Κριτήρια Επιλογής Ασφάλεια Ανθεκτικός σε όλες τις γνωστές μεθόδους κρυπτανάλυσης αλγόριθμων Μικρό υπολογιστικό κόστος Απλότητα στο σχεδιασμό Ευκολία στην υλοποίηση σε software & hardware Ικανότητα να τρέχει σε διαφορετικά CPUs (π.χ. 8bit/32bit CPU) Ταχύτητα Συμμετρική Κρυπτογραφία ΙΙ 12
AES Κατασκευή παρόμοια με του DES π.χ. S-boxes, XORs, προδιαγραφές κλειδιού, αλλά πραγματικά διαφορετικός Όχι ένας Feistel block cipher, Νέα Μαθηματικά Μία πλήρη κρυπτογράφηση αποτελείται από 10-14 γύρους εξαρτώμενη από το μέγεθος του κλειδιού (για να επιτρέπει ικανοποιητικό ανακάτεμα) Πλεονεκτήματα / Μειονεκτήματα Κάθε βήμα αποτελείται από ένα διαφορετικό αριθμό διαδικασιών που μπορούν να εκτελεστούν παράλληλα, κάτι που διευκολύνει τις γρήγορες εφαρμογές Η λειτουργία της κρυπτογράφησης είναι σημαντικά διαφορετική από τη λειτουργία της αποκρυπτογράφησης Συμμετρική Κρυπτογραφία ΙΙ 13
Παραδείγματα Συμμετρικών Αλγορίθμων Υποψήφιοι για τον AES Serpent Από τους Ross Anderson, Eli Biham, and Lars Knudsen. Ο πιο συντηρητικός όλων των υποψηφίων του AES Περίπου το ένα τρίτο της ταχύτητας του AES Bit slice υλοποίηση (όλες οι λειτουργίες μπορούν να εκτελεστούν παράλληλα) Twofish Από τον Bruce Schneier et al Ένας συμβιβασμός μεταξύ του AES και του Serpent Επίσης πολύ γρήγορος αλλά το κρυπτογράφημα είναι περίπλοκο Συγγενικός με προηγούμενο block cipher (Blowfish) Χρησιμοποιεί βήματα που συνδυάζουν τα δεδομένα με μέρη του κλειδιού πριν τον πρώτο γύρο και μετά τον τελευταίο γύρο της κρυπτογράφησης Συμμετρική Κρυπτογραφία ΙΙ 14
Παραδείγματα Συμμετρικών Αλγορίθμων Υποψήφιοι για τον AES RC6 Από τους Ron Rivest, Matt Robshaw, Ray Sidney και Yiqun Lisa Yin Προέρχεται από τον RC5 Πολύ πιο γρήγορος από τον 3DES βελτιστοποιημένος για απόδοση Μπορεί να παραμετροποιηθεί για να υποστηρίζει διαφορετικού μήκους κλειδιά και αριθμό επαναλήψεων Το μήκος κλειδιού μπορεί να φτάσει τα 2040 bits MARS Η υποψηφιότητα της IBM Μέλος της σχεδιαστικής ομάδας ήταν και ο Don Coppersmith, ο οποίος συμμετείχε στη δημιουργία του Data Encryption Standard (DES) 20 χρόνια νωρίτερα Έχει ένα τμήμα μεγέθους 128 bit και μία ποικιλία μήκους κλειδιών μεταξύ 128 και 448 bits (αυξάνονται κατά 32-bit) Συμμετρική Κρυπτογραφία ΙΙ 15
Παραδείγματα Συμμετρικών Αλγορίθμων Άλλοι συμμετρικοί αλγόριθμοι IDEA Σχεδιάστηκε από τον Xuejia Lai και James Massey του ETH Zurich το 1991 Κλειδί μήκους 128-bit, 64-bit block δεδομένων, 8.5 περίπλοκες επαναλήψεις Ασφαλής αλλά αργός και πατενταρισμένος Στις πρώτες εκδόσεις τον χρησιμοποιούσε το PGP FEAL NTT, Ιαπωνία, 1987 Πιο περίπλοκος ανά επανάληψη από τον DES, έτσι έχει λιγότερες επαναλήψεις FEAL-4 σπασμένος με 5 γνωστά plaintexts, FEAL-8, N, NX όλοι σπασμένοι Συμμετρική Κρυπτογραφία ΙΙ 16
Παραδείγματα Συμμετρικών Αλγορίθμων Άλλοι συμμετρικοί αλγόριθμοι GOST Σοβιετικός DES standard με κλειδί 256-bit, 32 επαναλήψεις Αρχικά Top Secret Μετά τη διάλυση της ΕΣΣΔ, αποχαρακτηρίστηκε από απόρρητος και δόθηκε στο κοινό Δεν υπάρχει αρκετή δημοσιευμένη κρυπτανάλυση του GOST, αλλά φαίνεται ασφαλής (Schneier, 1996) Skipjack Κλειδί μήκους 80-bit, 64-bit block δεδομένων, 32 επαναλήψεις Ανεπτυγμένος από την NSA το 1987, αρχικά απόρρητος Συμμετρική Κρυπτογραφία ΙΙ 17
Παραδείγματα Συμμετρικών Αλγορίθμων RC5 Από τον Ron Rivest το 1994 Μεταβλητού μεγέθους τμήματα cipher Μέγεθος κλειδιού 40-2048 bites Η RSA Security, που έχει πατεντάρει τον αλγόριθμο προσφέρει $10,000 σε όποιον σπάσει κρυπτογραφήματα του RC5 Ένας αριθμός από τέτοιες προκλήσεις αντιμετωπίζονται χρησιμοποιώντας distributed computing, οργανωμένα από την Distributed.net Links http://www.rsasecurity.com/rsalabs/node.asp?id=2100 http://www.distributed.net/rc5/ Συμμετρική Κρυπτογραφία ΙΙ 18
Ποιός είναι ο καλύτερος αλγόριθμος? Η ασφαλέστερη επιλογή είναι ο AES Το επίσημο standard, με την άδεια της κυβέρνησης της Αμερικής Nobody gets fired for buying IBM Αν είστε παρανοϊκοί με την ασφάλεια και η ταχύτητα δεν είναι σημαντική, τότε διαλέξτε Serpent Υπάρχουν περιπτώσεις στις οποίες ο 3DES είναι ακόμα η καλύτερη επιλογή Συμβατότητα προς τα πίσω Μέγεθος τμήματος σταθερό στα 64-bit Όλοι οι υποψήφιοι για τον AES υποστηρίζουν κλειδί μήκους 128, 192 and 256 bits Χρησιμοποιείστε κλειδιά των 256-bit Μπορεί να υπάρχει απαίτηση να χρησιμοποιήσετε μικρότερο κλειδί για λόγους απόδοσης Συμμετρική Κρυπτογραφία ΙΙ 19
Block Ciphers - Τρόποι εφαρμογής Οι block ciphers κωδικοποιούν τμήματα συγκεκριμένου μεγέθους Ο DES κωδικοποιεί 64 bits με 56 bit key Στην πράξη χρειαζόμαστε ευελιξία 4 τρόποι εφαρμογής ορίζονται στο standard ANSI X3.106-1983 Modes of Use ECB CBC CFB OFB Συμμετρική Κρυπτογραφία ΙΙ 20
Electronic Code Book (ECB) Το μήνυμα χωρίζεται σε ανεξάρτητα τμήματα τα οποία και κωδικοποιούνται ανεξάρτητα μεταξύ τους C i = DES K1 (P i ) Εφαρμογή Aσφαλής μετάδοση μεμονωμένων τιμών Συνιστάται η χρήση του μόνο για κρυπτογράφηση μηνυμάτων του ενός μπλοκ Πρόβλημα Eπαναλήψεις στο plaintext είναι δυνατό να ανιχνευτούν στο ciphertext Ίδια μπλοκς κειμένου δίνουν ίδια κρυπτογραφήματα (χρησιμοποιώντας το ίδιο κλειδί) Συμμετρική Κρυπτογραφία ΙΙ 21
ECB Συμμετρική Κρυπτογραφία ΙΙ 22
ECB Το ECB αποκαλύπτει ομοιομορφίες στο plaintext Η μεσαία εικόνα είναι η ECB κρυπτογράφηση της αριστερής εικόνας Η δεξιά εικόνα είναι το αποτέλεσμα της CBC κρυπτογράφησης, ακριβώς όπως θα έπρεπε να είναι, τυχαίος θόρυβος Το Phantasy Star Online: Blue Burst online video παιγνίδι χρησιμοποιεί ECB κρυπτογράφηση Απατεώνες έστελναν κατ επανάληψη κρυπτογραφημένα "monster killed" μηνύματα, ώστε αντικανονικά να κερδίσουν πόντους γρηγορότερα http://en.wikipedia.org/wiki/block_cipher_modes_of_operation Συμμετρική Κρυπτογραφία ΙΙ 23
ECB Συμμετρική Κρυπτογραφία ΙΙ 24
ECB ECB can reveal patterns in the plaintext Suppose the plaintext is an alphabetically sorted list of employees and salaries Assume each line is 64 bytes long and the blocks happen to be divided in the salary field between the 1000 s and the 10000 s digit An eavesdropper can figure out which sets of employees have identical salaries and which have salaries in the same $10000 ranges If the eavesdropper is one of the employees, he can alter the message to change his own salary to match that of any other employee Συμμετρική Κρυπτογραφία ΙΙ 25
Cipher Block Chaining (CBC) Δημιουργείται μία σχέση μεταξύ των blocks κατά τη διάρκεια της κωδικοποίησης Σε κάθε επανάληψη το τρέχον plaintext block γίνεται XOR με το προηγούμενο ciphertext block πριν την κωδικοποίηση Μία αλλαγή στο αρχικό μήνυμα επηρεάζει όλα τα blocks που ακολουθούν Χρήση Initial Vector (IV) στο ξεκίνημα Το IV πρέπει να προστατεύεται όπως το κλειδί C i = DES K1 (P i XOR C i-1 ) C -1 = IV Εφαρμογή Kωδικοποίηση μεγάλου όγκου δεδομένων Συμμετρική Κρυπτογραφία ΙΙ 26
CBC Συμμετρική Κρυπτογραφία ΙΙ 27
Cipher Block Chaining (CBC) Ίδια μπλοκς κρυπτογραφήματος δίνουν ίδια μπλοκς κειμένου μόνο όταν έχουν κρυπτογραφηθεί χρησιμοποιώντας το ίδιο κλειδί και το ίδιο διάνυσμα αρχικοποίησης Αλλάζοντας το κλειδί, το IV, ή πρώτο μπλοκ κειμένου δίνει διαφορετικό κρυπτογράφημα Ο μηχανισμός αλυσίδας έχει ως αποτέλεσμα το κρυπτογράφημα c j να εξαρτάται από το x j και όλα τα προηγούμενα μπλοκς Εάν αλλαχτεί η σειρά των μπλοκς κρυπτογραφήματος θα επηρεαστεί και η αποκρυπτογράφηση Συμμετρική Κρυπτογραφία ΙΙ 28
CBC Συμμετρική Κρυπτογραφία ΙΙ 29
Διανομή Συμμετρικού Κλειδιού Τα συμμετρικά σχήματα απαιτούν τα συμβαλλόμενα μέλη να μοιράζονται ένα κοινό μυστικό κλειδί Σε ένα κατανεμημένο σύστημα, οποιοδήποτε μηχάνημα ή εφαρμογή μπορεί να χρειάζεται να επικοινωνήσει με πολλά άλλα μηχανήματα ή εφαρμογές Αν ένα κλειδί απαιτείται για κάθε ζευγάρι οντοτήτων, τότε για Ν οντότητες ο αριθμός κλειδιών που χρειάζεται είναι [Ν(Ν-1)]/2 Ένα ζήτημα είναι πώς να μειωθεί ο αριθμός κλειδιών που απαιτούνται Ένα άλλο ζήτημα είναι πώς θα διανέμονται τα κλειδιά με ασφάλεια 1,000 κόμβοι χρειάζονται περίπου 500,000 κλειδιά Συχνές αλλαγές στο κλειδί είναι επιθυμητές για να περιορίζεται το πλήθος των δεδομένων που θα εκτεθούν αν ένας επιτιθέμενος μάθει το κλειδί Συχνά τα ασφαλή συστήματα αποτυγχάνουν λόγω ενός ρήγματος στο σχέδιο διανομής κλειδιών Συμμετρική Κρυπτογραφία ΙΙ 30
Διανομή Συμμετρικού Κλειδιού Συμμετρική Κρυπτογραφία ΙΙ 31
Διανομή Συμμετρικού Κλειδιού Τα συμβαλλόμενα μέρη A και B έχουν πολλές εναλλακτικές λύσεις για τη διανομή του κλειδιού 1. Ο A μπορεί να επιλέξει το κλειδί και να το δώσει χέρι με χέρι στον B 2. Αν ο A & ο B έχουν επικοινωνήσει στο παρελθόν μπορούν να χρησιμοποιήσουν ένα παλιό κλειδί για να κρυπτογραφήσουν το νέο 3. Κάποιος τρίτος μπορεί να επιλέξει και να διανείμει το κλειδί στον A & B 4. Αν ο A & ο B έχουν ασφαλή επικοινωνία με έναν τρίτο C, τότε ο C μπορεί να αναμεταδώσει το κλειδί ανάμεσα στον A & B Ένα τυπικό σενάριο διανομής κλειδιών χρησιμοποιεί ένα κέντρο διανομής κλειδιών (KDC) Ιεραρχίες από KDCs απαιτούνται για μεγάλα δίκτυα Πρέπει να εμπιστεύεται το ένα το άλλο Όλοι οι συμμετέχοντες πρέπει να είναι on-line Συμμετρική Κρυπτογραφία ΙΙ 32
Ιεραρχία Κλειδιών Συνήθως η επικοινωνία μεταξύ 2 σημείων για μία συγκεκριμένη σύνδεση κωδικοποιείται με ένα προσωρινό κλειδί (session key) Τα κλειδιά αυτά διανέμονται στους τελικούς χρήστες από ένα Κέντρο Διανομής Κλειδιών (Key Distribution Center KDC) κωδικοποιημένα με ένα κύριο κλειδί (master key) Για την επικοινωνία μεταξύ Ν κόμβων απαιτούνται μόνο Ν master keys, και τα οποία χρησιμοποιούνται για την διανομή των [Ν(Ν-1)]/2 session keys Συμμετρική Κρυπτογραφία ΙΙ 33
Ιεραρχία Κλειδιών Συμμετρική Κρυπτογραφία ΙΙ 34
Διανομή Συμμετρικών Κλειδιών με KDC Συμμετρική Κρυπτογραφία ΙΙ 35
Διανομή Συμμετρικών Κλειδιών με KDC Υποθέτουμε Ο Α και το KDC έχουν ένα κοινό κλειδί Ka (master key) Ο B και το KDC έχουν ένα κοινό κλειδί Kb (master key) Ο Α θέλει να επικοινωνήσει με τον Β Το KDC είναι έμπιστο και καλά προστατευμένο από επιθέσεις Συμμετρική Κρυπτογραφία ΙΙ 36
Διανομή Συμμετρικών Κλειδιών με KDC O A ζητά από το KDC ένα session key για να επικοινωνήσει με τον Β Το KDC απαντά με ένα μήνυμα κωδικοποιημένο με το Ka O A αποθηκεύει το session key και προωθεί στον Β το κομμάτι του μηνύματος του KDC που αναφέρεται στον Β Σε αυτό το σημείο το session key έχει παραληφθεί με ασφάλεια από το Α και το Β Συμμετρική Κρυπτογραφία ΙΙ 37
Ιεραρχία διανομέων κλειδιών Στην πράξη και τα KDC υλοποιούνται ιεραρχικά με τα παρακάτω πλεονεκτήματα Ελαχιστοποίηση του κόστους διανομής master keys λόγω του ότι οι περισσότερες συναλλαγές περιορίζονται σε κάποια περιοχή Ελαχιστοποίηση της ζημιάς από ένα χαλασμένο ή παραβιασμένο KDC Συμμετρική Κρυπτογραφία ΙΙ 38
Σενάριο Ανταλλαγής Κλειδιών ΙΙ Συμμετρική Κρυπτογραφία ΙΙ 39
Αποκεντρωμένη διανομή κλειδιών Σε μία περιορισμένη περιοχή οι κόμβοι, έχει νόημα, να μοιράζονται [(Ν(Ν-1)]/2 master keys Η διανομή session keys μπορεί να γίνει O A ζητά από τον Β ένα session key O B απαντά με ένα μήνυμα κωδικοποιημένο με το master key που μοιράζονται οι Α και Β Ο Α επιβεβαιώνει στον Β την λήψη του κλειδιού Συμμετρική Κρυπτογραφία ΙΙ 40