Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Κρυπτογραφία Κρυπτογραφικές Συναρτήσεις Χρήστος Ξενάκης
Ψευδοτυχαίες ακολουθίες Η επιλογή τυχαίων αριθμών είναι ένα βασικό σημείο στην ασφάλεια των κρυπτοσυστημάτων Δημιουργία κλειδιών Επιλογή ποσοτήτων που καθορίζουν τα κλειδιά (πρώτος αριθμός) Δεν μπορούμε να χαρακτηρίσουμε έναν αριθμό σαν τυχαίο Π.χ 3526 είναι τυχαίος αριθμός? Οι αριθμοί 5 κ 7 είναι τυχαίοι?? Αναφερόμαστε στην πηγή η οποία παράγει μια ακολουθία αριθμών Στην κρυπτογραφία μας ενδιαφέρει η αξιόπιστη παραγωγή τυχαίων ακολουθιών Κρυπτοαλγόριθμους ροής γεννήτρια κλειδοροής 2
Ψευδοτυχαίες ακολουθίες Μια ακολουθία αριθμών είναι ψευδοτυχαία όταν 1. Περνά όλους τους στατιστικούς ελέγχους περί τυχαιότητας (στατιστική απαίτηση) 2. Η ακολουθία είναι απρόβλεπτη Δηλαδή, δοθέντος ενός τμήματος της ακολουθίας είναι υπολογιστικά αδύνατο για τον αντίπαλο να καθορίσει τον αμέσως επόμενο αριθμό (κρυπτογραφική απαίτηση) Μια ακολουθία αριθμών είναι πραγματικά τυχαία όταν Ικανοποιεί τα 1, κ 2 Δεν μπορεί να αναπαραχθεί με αξιοπιστία 3
Ψευδοτυχαίες ακολουθίες Στατιστικοί έλεγχοι τυχαιότητας Έλεγχος συχνότητας (frequency test) Το πλήθος των άσσων n1 και των μηδενικών n0 είναι το ίδιο Η κατανομή x 2 μπορεί να χρησιμοποιηθεί για να ελεγχθεί η υπόθεση n0 = n1, για έναν βαθμό ελευθερίας x ( n0 2 = n n1) Αν no n1 η πηγή είναι πολωμένη no > n1 πολωμένη προς το μηδέν n1 > n0 πολωμένη προς το ένα 2 Η πόλωση μπορεί να δώσει πληροφορία στον αντίπαλο 4
Ψευδοτυχαίες ακολουθίες Στατιστικοί έλεγχοι τυχαιότητας Σειριακός έλεγχος (serial test) Εξετάζεται η κατανομή των συμβόλων στην ακολουθία (εναλλαγή 0, 1) Η ακολουθία [00001111] περνάει τον έλεγχο συχνότητας αλλά δεν θεωρείται ψευδοτυχαία Έστω n00, n01, n10 κ n11 το πλήθος των 00, 01, 10 κ 11 Θα πρέπει n00 = n01 = n10 = n11 (n-1)/4 H κατανομή x 2 για δύο βαθμούς ελευθερίας προσεγγίζεται από την παρακάτω ποσότητα x 2 4 n 1 1 1 1 2 2 nij i i= 0 j= 0 n n i= 0 2 + 1 5
Ψευδοτυχαίες ακολουθίες Στατιστικοί έλεγχοι τυχαιότητας Έλεγχος της αυτοσυσχέτισης (autocorrelation test) Ελέγχει αν τα δυαδικά σύμβολα είναι τυχαία διασπαρμένα μέσα στη δυαδική ακολουθία Έστω η ακολουθία [a 1 a 2 a n ], ορίζεται η συνάρτηση A(d) n d n ( n 1 A( d) = a a μ = i i+ d 2 = i 1 n 2 d), Αν τα 0 κ 1 είναι τυχαία διεσπαρμένα μέσα στην ακολουθία Τότε Α(d) = μ, όπου n 1 το πλήθος των άσσων και d 0 6
Ψευδοτυχαίες ακολουθίες Στατιστικοί έλεγχοι τυχαιότητας Έλεγχος της αυτοσυσχέτισης Ο ορισμός του A(d) προέρχεται από το γενικό ορισμό της αυτοσυσχέτισης C( d) = lim c T N 1 ( d) = Τ 1 N Τ i= 1 N i= 1 aiai+ d aiai+ d και για περίοδο Τ Οι τιμές των a i ορίζονται από την αντιστοιχία (0,1) (-1, 1) (πολλαπλασιασμό) Με βάση τα παραπάνω ο Golomb (1984) έθεσε τρία κριτήρια που πρέπει να πληροί μια ακολουθία προκειμένου να χαρακτηριστεί ΨΕΥΔΟΥΧΑΙΑ 7
Ψευδοτυχαίες ακολουθίες Στατιστικοί έλεγχοι τυχαιότητας Έλεγχος της αυτοσυσχέτισης κριτήρια Golomb 1 ο Η διαφορά μεταξύ του πλήθους των 0 κ 1 να είναι η μικρότερη δυνατή 2 ο Διαδρομή: η σειρά ομοίων συμβόλων η οποία περιβάλλεται από διαφορετικά σύμβολα Σε μια περίοδο της ακολουθίας Το 1/2 των διαδρομών έχουν μήκος 1, το 1/4 μήκος 2, το 1/8 μήκος 3, κοκ. Το παραπάνω ισχύει μέχρι ο αριθμών των διαδρομών να είναι 2 l (l : μήκος διαδρομής 3 ο Για T d η αυτοσυσχέτιση σταθερή Για d = 0 ή T = d η αυτοσυσχέτιση = 1 8
Ψευδοτυχαίες ακολουθίες Έλεγχος της αυτοσυσχέτισης κριτήρια Golomb Παράδειγμα Έστω η ακολουθία [110100111101000] Η περίοδος = μήκος ακολουθίας, Τ = 15 Ο αρ. των 1 = 8 κ των 0 = 7 1 ο κριτήριο 8-7 = 1 η μικρότερη δυνατή διαφορά Από τις 8 διαδρομές: το 1/2 (4) έχουν μήκος 1, το ¼ μήκος 2, το 1/8 μήκος 3 Για τη διαδρομή μήκους 4 δεν γίνεται έλεγχος (8 < 2 4 = 16) Για d = 0, C T (d) = 1, για d T, C T (d) = -1/5 σταθερή 9
Ψευδοτυχαίες ακολουθίες Γεννήτριες ψευδοτυχαίων ακολουθιών Καταχωρητές ολίσθησης με ανάδραση Δυνατότητα αποθήκευσης n δυαδικών στοιχείων (μνήμη n bits) Συνάρτηση ανάδρασης f:{0,1} n {0,1} F(x 1, x 2, x n ) = c 1 x 1 +c 2 x 2 + + c n x n mod 2 Καταχωρητής ολίσθησης με γραμμική ανάδραση (linear feedback shift register) 10
Ψευδοτυχαίες ακολουθίες Γεννήτριες ψευδοτυχαίων ακολουθιών Στην κρυπτογραφία προτιμώνται οι καταχωρητές ολίσθησης με γραμμική ανάδραση έναντι των μη γραμμικών παράγουν ακολουθίες με μέγιστη περίοδο Μέγιστη περίοδο (μνήμη n bits) 2 n 1 (εκτός την 000...0) Αν εμφανιστεί η κατάσταση (0,0...0) η γεννήτρια κλειδώνει παράγει μόνο 0 Για να μην κλειδώσει θα πρέπει να ισχύουν : Η αρχική τιμή του καταχωρητή να είναι διαφορετική της (0,0,...0) Να επιλεγεί συνάρτηση ανάδρασης τέτοια ώστε για οποιαδήποτε είσοδο χ (0,0,...0) η f(x) να μην παράγει n μηδενικά στη σειρά 11
Ψευδοτυχαίες ακολουθίες Γεννήτριες ψευδοτυχαίων ακολουθιών Καθορισμός χαρακτηριστικού πολυωνύμου γραμμικής συνάρτησης ανάδρασης (n = 5) c 1 = 1, c 2 = 0, c 3 = 0, c 4 = 1 c 5 = 1 F(x) = 1 + x + x 4 + x 5 Ο μέγιστος εκθέτης του πολυωνύμου καθορίζει το βαθμό του 12
Ψευδοτυχαίες ακολουθίες Γεννήτριες ψευδοτυχαίων ακολουθιών Για να παράγει ένας καταχωρητής ολίσθησης με γραμμική ανάδραση την ακολουθία με τη μέγιστη περίοδο (2 n 1) Θα πρέπει το χαρακτηριστικό πολυώνυμο της συνάρτησης ανάδρασης να πληροί τα ακόλουθα: Να έχει βαθμό ίσο με το μέγεθος του καταχωρητή n Να είναι ανάγωγο Να διαιρεί το χ κ + 1, για κ = 2 n 1 και Να μη διαιρεί χ κ + 1, για οποιοδήποτε κ < 2 n 1 Τότε το πολυώνυμο ονομάζεται πρωτεύον 13
Ψευδοτυχαίες ακολουθίες Γεννήτριες ψευδοτυχαίων ακολουθιών Γραμμική πολυπλοκότητα: Μέτρηση η οποία εφαρμόζεται στις γεννήτριες Βασίζονται σε καταχωρητές ολίσθησης με γραμμική ανάδραση Έστω μια ακολουθία a = [a 1, a 2, ], a n τα πρώτα n bits Γραμμική πολυπλοκότητα της a n ονομάζουμε τον ελάχιστο αριθμό στοιχείων ( LC(a n ) ) ενός καταχωρητή ολίσθησης που απαιτούνται για να παραχθεί η a n 14
Ψευδοτυχαίες ακολουθίες Γεννήτριες ψευδοτυχαίων ακολουθιών Γραμμική πολυπλοκότητα Για n 1, ισχύει 0 LC(a n ) n Αν a = [0,0,0, ] τότε LC(a n ) = 0, για κάθε n 1 LC(a n ) = 0 αν και μόνο αν a n = [0,0,0,...,0,1] Αν δεν υπάρχει καταχωρητής ολίσθησης με γραμμική ανάδραση ο οποίος να μπορεί να παράγει την ακολουθία LC(a n ) τότε LC(a n ) = Αν μια ακολουθία α είναι περιοδική με περίοδο Τ, τότε LC(a n ) Τ Η γραμμική πολυπλοκότητα εξαρτάται από το χαρακτηριστικό πολυώνυμο της γραμμικής συνάρτησης ανάδρασης Αν το πολυώνυμο είναι ανάγωγο ίση με το βαθμό του πολυωνύμου 15
Μονόδρομες hash συναρτήσεις Στις hash συναρτήσεις βασίζονται οι μηχανισμοί ελέγχου της ακεραιότητας και αυθεντικοποίησης Hash h: F* G n αντιστοιχίζει ένα στοιχείο χ є F* αυθαίρετου μήκος, στο y є G n μήκους n y=h(x), σύνοψη μηνύματος 16
Μονόδρομες hash συναρτήσεις Ιδιότητες μιας hash συνάρτησης 1. Δοθέντος y, είναι υπολογιστικά αδύνατο να βρεθεί χ τέτοιο ώστε h(x)=y 2. Δοθέντων x, h(x) είναι υπολογιστικά αδύνατο να βρεθεί x τέτοιο ώστε h(x ) = h(x) 3. Είναι υπολογιστικά αδύνατο να βρεθούν x1, x2 є F* τέτοια ώστε h(x1)=h(x2) Οι (1) κ (2) χαρακτηρίζουν μονόδρομες hash συναρτήσεις (one-way hash functions) Οι (2) κ (3) χαρακτηρίζουν ανθεκτικές σε συγκρούσεις hash συναρτήσεις (collision resistance hash functions) H (3) «ισχυρή αντίσταση σε συγκρούσεις» περιλαμβάνει την (2) «ασθενής αντίσταση σε συγκρούσεις» Η ύπαρξη πραγματικών μονόδρομων συναρτήσεων δεν έχει αποδειχθεί 17
Μονόδρομες hash συναρτήσεις Η έννοια του κλειδιού στις μονόδρομες hash συναρτήσεις h κ : F* G n, k є K Δημιουργία μονόδρομης hash συνάρτησης με κλειδί h κ (x) = h(x k) or h κ (x) = h(k x) Υπηρεσίες ασφάλειας που παρέχουν οι συναρτήσεις hash Κώδικας αυθεντικοποίησης μηνύματος (Message Authentication Code - MAC) Μονόδρομη συνάρτηση hash με κλειδί Δοθέντων x, h κ (x) είναι υπολογιστικά αδύνατο να βρεθεί x τέτοιο ώστε h κ (x ) = h κ (x) Κώδικας ανίχνευσης τροποποίησης (Modification Detection Code - MDC) Μονόδρομη συνάρτηση hash άνευ κλειδιού Δοθέντων x, h(x) είναι υπολογιστικά αδύνατο να βρεθεί x τέτοιο ώστε h(x ) = h(x) 18
Μονόδρομες hash συναρτήσεις Έλεγχος ακεραιότητας με MAC 19
Μονόδρομες hash συναρτήσεις Η χρήση του MDC συναντάται σε ασύμμετρη επικοινωνία Ένας στέλνει ένα μήνυμα σε πολλούς (λήψη ηλεκτρονικών αγαθών, ηλεκτρονικά βιβλία, λογισμικό, κτλ) Ο αποστολέας δημοσιεύει το MDC O «πελάτης» προμηθεύεται το αγαθό (μέσω διαδικτύου) και υπολογίζει το MDC Συγκρίνει το δικό του MDC με αυτό που έχει δημοσιευτεί Δεν υπάρχει κλειδί οπότε ο καθένας μπορεί να υπολογίσει το MDC 20
Μονόδρομες hash συναρτήσεις Ταξινόμηση στόχων και ικανοτήτων του αντιπάλου 21
Μονόδρομες hash συναρτήσεις Συνδυάζοντας αυθεντικοποίηση και εμπιστευτικότητα Κρυπτογραφική μονόδρομη hash συνάρτηση h( ) Κρυπτοαλγόριθμο e k ( ) 22
Μονόδρομες hash συναρτήσεις Εναλλακτικές συνδυασμού αυθεντικοποίηση και εμπιστευτικότητα Το κρυπτοσύστημα είναι συμμετρικό 23
Μονόδρομες hash συναρτήσεις Επαναληπτικές κρυπτογραφικές μονόδρομες hash συναρτήσεις Στην πράξη δέχονται για είσοδο μηνύματα πεπερασμένου μήκους (θεωρητικά αυθαίρετου...!) Κατάτμηση του μηνύματος εισόδου και επαναληπτική εφαρμογή της συνάρτησης g: Z m Z n, τότε το s i έχει μήκος m n bits Διάνυσμα αρχικοποίησης (Initialization vector) 24
Μονόδρομες hash συναρτήσεις Επαναληπτική μονόδρομη hash βασισμένη σε κρυπτοαλγόρυθμο τμήματος 25
Μονόδρομες hash συναρτήσεις MD5 (Message-Digest algorithm 5 ) Στόχοι ασφάλειας Ασφάλεια: θα πρέπει να είναι υπολογιστικά αδύνατο να βρεθούν δύο μηνύματα τα οποία να δίνουν το ίδιο αποτέλεσμα Άμεση ασφάλεια: ο αλγόριθμος δεν βασίζεται σε υποθέσεις π.χ., δυσκολία παραγοντοποίησης ακεραίων Απλότητα και κατάληψη χώρου: ο αλγόριθμος είναι απλός και δεν απαιτεί μεγάλους πίνακες αντικατάστασης τιμών ή μεγάλα σε μήκος προγράμματα Εύνοια αρχιτεκτονικής little-endian: (intel x386, το λιγότερο σημαντικό bit σε χαμηλή διεύθυνση μνήμης) χρησιμοποιεί απευθείας τις αποθηκευμένες λέξεις (αντίθετο big-endian, Sparc) 26
Μονόδρομες hash συναρτήσεις MD5 (Message-Digest algorithm 5 ) Είσοδο: μήνυμα αυθαίρετου μήκους Έξοδο: 128 bits Η επεξεργασία γίνεται σε τμήματα των 512 bits Αρχικά στο μήνυμα προστίθενται bits ώστε το μέγεθός του να είναι ίσο με (448 mod 512) Προστίθενται ακόμα 64 bits τα οποία παρουσιάζουν το μέγεθος του αρχικού μηνύματος Τα 512 bits απαιτούν 16 δυαδικές λέξεις των 32 bits Οι ενδιάμεσες τιμές καθώς και το αποτέλεσμα της σύνοψης αποθηκεύεται σε 4 καταχωρητές A,B,C,D (αλυσιδωτές μεταβλητές chaining variables) 27
Μονόδρομες hash συναρτήσεις MD5 (Message-Digest algorithm 5 ) Κατά την εκκίνηση οι A,B,C,D παίρνουν τις ακόλουθες τιμές Α=(67452301) 16 Β=(EFCDAB89) 16 C=(98BADCFE) 16 D=(10325476) 16 Η συνάρτηση συμπίεσης αποτελείται από 4 γύρους και κάθε γύρος εκτελεί 16 πράξεις Κάθε πράξη εκτελεί μία μη γραμμική συνάρτηση μεταξύ των τριών από τα A,B,C,D και προσθέτει το αποτέλεσμα σε μία από τις αλυσιδωτές μεταβλητές Τέλος το αποτέλεσμα αποθηκεύεται σε μία από τις αλυσιδωτές μεταβλητές 28
Μονόδρομες hash συναρτήσεις MD5 Μια MD5 εκτέλεση = 64 επαναλήψεις = 4 κύκλους των 16 F μη γραμμική συνάρτηση Μ i 32-bit τμήμα της εισόδου T i, S i σταθερές 29
Μονόδρομες hash συναρτήσεις SHA (Secure Hash Algorithm) Είσοδο: όχι μεγαλύτερη του 2 64 Bits Έξοδο: 160 bits Η επεξεργασία γίνεται σε τμήματα των 512 bits Αρχικά στο μήνυμα προστίθενται bits ώστε το μέγεθός του να είναι ίσο με (448 mod 512) Προστίθενται ακόμα 64 bits τα οποία παρουσιάζουν το μέγεθος το αρχικού μηνύματος Λόγω του μεγαλύτερου μήκους της σύνοψης έχουμε 5 καταχωρητές A,B,C,D,Ε (αλυσιδωτές μεταβλητές chaining variables) 30
SHA Μονόδρομες hash συναρτήσεις Κατά την εκκίνηση οι A,B,C,D,E παίρνουν τις ακόλουθες τιμές Α=(67452301) 16 Β=(EFCDAB89) 16 C=(98BADCFE) 16 D=(10325476) 16 E=(C3D 2E1F0) 16 Όμοια με την MD5 το κάθε τμήμα υποβάλλεται σε 4 γύρους και κάθε γύρος αποτελείται από μια μη γραμμική πράξη που εφαρμόζεται 20 φορές Τα 512 bits του τμήματος επεκτείνονται σε 2560 bits (80 δυαδικές λέξεις των 32 bits) 31
Μονόδρομες hash συναρτήσεις SHA CV q 160 Y q 512 A B C D 32 E f 1, K, W[0...19] 20 βήματα A B C D E f 2, K, W[20...39] 20 βήματα A B C D E f 3, K, W[40...59] 20 βήματα A B C D E f 4, K, W[60...79] 20 βήματα + + + + + 160 CV q+1 32
Δίκτυα Αντικατάστασης Μετάθεσης (ΔΑΜ) Substitution Permutation Networks Έχουν σα στόχο την υψηλή διάχυση και σύγχυση Η υψηλή διάχυση επιτυγχάνεται από στάδια μετάθεσης Συναρτήσεις μετάθεσης Η υψηλή σύγχυση επιτυγχάνεται από στάδια αντικατάστασης Κουτιά αντικατάστασης (substitution boxes) τα οποία εισάγουν μη γραμμικότητα Οι παράμετροι ενός ΔΑΜ Το μήκος εισόδου n, ο αριθμός των γύρων r, το μέγεθος των κουτιών αντικατάστασης m x m 33
Δίκτυα Αντικατάστασης Μετάθεσης Για n = 16, r = 4 και m = 4 34
Δίκτυα Αντικατάστασης Μετάθεσης (ΔΑΜ) Κουτιά αντικατάστασης Ένα κουτί αντικατάστασης αντιστοιχίζει m bits εισόδου σε n bits εξόδου Τα σχετικά μικρά κουτιά υλοποιούνται με πίνακες Είσοδος: δείκτης του πίνακα, Έξοδος: περιεχόμενο Κουτί αντικατάστασης {0,1} 3 {0,1} 4 35
Δίκτυα Αντικατάστασης Μετάθεσης (ΔΑΜ) Κριτήρια που θα πρέπει να πληρούν τα κουτιά αντικατάστασης Μη γραμμικότητα: ένα κουτί αντικατάστασης το οποίο είναι γραμμικό μπορεί εύκολα να κρυπτοαναλυθεί (γραμμική κρυπτοανάλυση) Αμφίεση (bijection) : είναι απαραίτητο για να ορίζεται μονοσήμαντα η αποκρυπτογράφηση (δεν ισχύει στις hash functions) Αυστηρή χιονοστιβάδα: η αντιστροφή οποιουδήποτε bit εισόδου έχει τη δυνατότητα να προκαλέσει την αντιστροφή οποιουδήποτε bit εξόδου με πιθανότητα 0,5 (σύγχυση διάχυση) Ανεξαρτησία των bits της εξόδου: η ύπαρξη αυτοσυσχέτησης μεταξύ δύο η περισσοτέρων Bits εξόδου μειώνει το χώρο αναζήτησης 36
Δίκτυα Feistel Κρυπτογραφική πράξη τύπου Feistel Πλήρης ελευθερία στην επιλογή της F (συνάρτηση γύρου) Ορίζεται πάντα η αντίστροφη σχέση ακόμα και αν η f δεν είναι ενριπτική (1 προς 1) Σε ορισμένες περιπτώσεις ένα δίκτυο Feistel είναι αποδείξιμα ασφαλές Σε κάθε γύρο i Είσοδο L i-1, R i-1 Έξοδο L i, R i Ki πρόγραμμα κλειδιού Απλό κείμενο L 0, R 0 Κρυπτοκείμενο r γύρους L r, R r 37
Δίκτυα Feistel Κρυπτογραφική πράξη τύπου Feistel Απαιτούνται τουλάχιστον 3 γύροι προκειμένου το κρυπτοσύστημα να αποκρύψει το απλό κείμενο Ο αριθμός των γύρων και η κρυπτογραφική δύναμη του κρυπτοσυστήματος εξαρτώνται από την F Αν n L κ n R το μέγεθος του αριστερού κ δεξιού τμήματος αντίστοιχα F: {0,1} nr {0,1} nl Αν n L = n R = n/2 τότε το δίκτυο ισορροπημένο e i ki ( L i, R i ) = L i 1 ( f ( R i 1 R, k i ) L i 1 ), 0 < i r 38
Δίκτυα Feistel Μια αντιστοίχηση F1 ( μη αντιστρέψιμη) Δύο μεταθέσεις h1 κ h2 ( αντιστρέψιμες) 39