Αυθεντικοποίηση μηνύματος και Κρυπτογραφία δημόσιου κλειδιού Μ. Αναγνώστου 13 Νοεμβρίου 2018 Συναρτήσεις κατακερματισμού Απλές συναρτήσεις κατακερματισμού Κρυπτογραφικές συναρτήσεις κατακερματισμού Secure Hash Algorithm Κατακερματισμός με τον SHA-2 HMAC RSA (Rivest, Shamir, Adleman) Ο αλγόριθμος Παραδείγματα Επιθέσεις Ανταλλαγή κλειδιών κατά Diffie-Hellman O αλγόριθμος Diffie - Hellman Η επίθεση του ενδιάμεσου
Λειτουργία απλών συναρτήσεων κατακερματισμού Το αρχικό κείμενο χωρίζεται σε τμήματα μήκους bits. Ας υποτεθεί ότι προκύπτουν τέτοια τμήματα. Μια απλή συνάρτηση κατακερματισμού προκύπτει κατασκευάζοντας «bits ισοτιμίας» από τα αντίστοιχα bits κάθε τμήματος: = 1 2..., = 1,..., bit 1 bit 2... bit Τμήμα 1 11 21 1 Τμήμα 2 12 22 2 Τμήμα 1 2 hash code 1 2 Ζητήματα σχετικά με την απλή συνάρτηση κατακερματισμού Με μήκος τμήματος = 128 υπάρχουν 2 128 = 3.4 10 38 διαφορετικές τιμές της συνάρτησης κατακερματισμού. Αν τα δεδομένα είναι τυχαία ώστε να προκύπτει οποιαδήποτε τιμή με ίση πιθανότητα, η πιθανότητα να έχουν συμβεί σφάλματα στο κείμενο και να βγει η ίδια τιμή είναι μόνο 2 128 = 3 10 39. Κανονικότητες στα τμήματα μπορεί να κατεβάσουν το πλήθος των δυνατών τιμών. Π.χ. ένα συνηθισμένο κείμενο έχει το πρώτο bit κάθε οκτάδας ίσο με μηδέν, οπότε από τα παραπάνω 128 bits τα 16 είναι μηδενικά, κατεβάζοντας τις δυνατές τιμές σε 2 112. Ένας απλός τρόπος επιδιόρθωσης είναι να ολισθαίνει το αποτέλεσμα αριστερά κατά ένα bit πριν από κάθε προσθήκη νέου τμήματος.
Προβλήματα της απλής συνάρτησης και παραλλαγές Η Trudy μπορεί να αλλοιώσει το μήνυμα, αρκεί να προσθέσει στο δικό της μήνυμα κατάλληλο τμήμα ώστε να προκύψει ο ίδιος κωδικός. M M M' H H K m m' K Σύγκριση E D M M M' H H PR a m m' PU a Σύγκριση E D Κρυπτογράφηση κειμένου + hash code Είναι χρήσιμη η απλή συνάρτηση (με ή χωρίς περιστροφή) αν προστατευθεί και το αρχικό κείμενο; Υπήρξε μια πρόταση του National Bureau of Standards για προστασία με CBC (cipher block chaining) mode: Δεδομένης ακολουθίας 64-μπιτων τμημάτων 1,...,, θέτουμε +1 = = 1 2... Στη συνέχεια κρυπτογραφείται η ακολουθία 1,..., +1 με CBC.
Cipher Block Chaining Mode Επίθεση στην προστασία με CBC Ισχύει στην αποκρυπτογράφηση CBC: 1 = (, 1 ) = 1 (, ), = 2,..., +1 = (, +1 ) Όμως +1 είναι η συνάρτηση κατακερματισμού. +1 = 1 2... = [ (, 1 )] [ 1 (, 2 )]... [ 1 (, )] Οι όροι της τελευταίας μπορούν να γίνουν XOR σε οποιαδήποτε σειρά, οπότε η συνάρτηση κατακερματισμού είναι αναίσθητη σε μεταθέσεις.
Κρυπτογραφικές συναρτήσεις κατακερματισμού λέγεται μια συνάρτηση κατακερματισμού (cryptographic hash function) όταν είναι πρακτικά αδύνατη η αντιστροφή της. Έχει τις εξής επιθυμητές ιδιότητες: Είναι εύκολος ο υπολογισμός της τιμής της για κάθε μήνυμα. Είναι αδύνατο να υπολογισθεί το μήνυμα από την τιμή κατακερματισμού. Είναι αδύνατο να αλλάξει το μήνυμα διατηρώντας την ίδια τιμή κατακερματισμού. Είναι αδύνατο να βρεθούν δύο μηνύματα με την ίδια τιμή. Secure Hash Algorithm SHA-1 Aναπτύχθηκε από το National Institute of Standards and Technology (NIST), τυποποιήθηκε το 1993, αναθεωρήθηκε το 1995. Δίνει ως αποτέλεσμα μια τιμή μήκους 160 bits. Ωστόσο ο εντοπισμός σύγκρουσης είναι δυνατός μόνο με 2 69 δοκιμές, αντί των 2 80. SHA-2 Το 2002 δημιουργήθηκαν τρεις νέες εκδόσεις με μήκος αποτελέσματος 256, 384 και 512 bits, που βασίζονται στην ίδια μαθηματική μέθοδο. SHA-3 Ο NIST προκήρυξε το 2007 νέο διαγωνισμό για αλγόριθμο κατακερματισμού και από 64 υποψηφιότητες επελέγη ο αλγόριθμος Keccak των G. Bertoni, J. Daemen, M. Peeters & G. Van Assche σε μια διαδικασία που ολοκληρώθηκε το 2012. O SHA-3 θεωρείται περισσότερο ως εναλλακτική επιλογή για πιο ελαφρές υλοποιήσεις, παρά ως αντικαταστάτης του SHA-2.
Πίνακας σύγκρισης SHA-1/2/3 SHA-1 SHA-2-256 SHA-2-384 SHA-2-512 SHA-3-224 SHA-3-256 SHA-3-384 SHA-3-512 Μέγεθος κατακερμ. τιμής 160 256 384 512 224 256 384 512 Μέγεθος μηνύματος <2 64 <2 64 <2 128 <2 128 χωρίς όριο χωρίς όριο χωρίς όριο χωρίς όριο Μέγεθος τμήματος 512 512 1024 1024 1152 1088 832 576 Μέγεθος λέξης 32 32 64 64 64 64 64 64 Αριθμός γύρων 80 64 80 80 24 24 24 24 Αντίσταση σε σύγκρουση 2 80 2 128 2 192 2 256 2 112 2 128 2 192 2 256 Κατακερματισμός με τον SHA-2-512 N χ L bits Μήνυμα 1024 bits 100..0 128 bits L(ength) 1024 bits 1024 bits 1024 bits 1024 M 1 M 2 1024 1024 M N IV= H 0 512 F H 1 H 2 + F + F + H N κωδικός κατακερματισμού + = πρόσθεση λέξη με λέξη mod 2 64
Φάση 1: Παραγέμισμα Φάση 1: Παραγέμισμα με 1 ως 1024 bits Έστω ότι το μήκος του μηνύματος είναι bits. Προστίθενται bits, όπου 1 1024, ώστε να γίνει ακριβώς ίσο με mod 1024 = + mod 1024 = 896 Εξ αυτών το πρώτο είναι 1, τα υπόλοιπα (αν υπάρχουν) είναι 0. Παρατήρηση: Αυτό γίνεται ακόμη και αν mod 1024 = 896. Τότε μάλιστα προστίθενται 1024 bits. Φάσεις 2 και 3 Φάση 2: Προσθήκη του μήκους Στο τελευταίο τμήμα, όπου χρειάζονται 128 bits για να γίνει μήκους ακριβώς 1024, προστίθεται ένας ακέραιος μήκους 128 bits που περιγράφει το του (αρχικού) μηνύματος. Φάση 3: Αρχικοποίηση Ως αρχική τιμή του καταχωρητή που κρατάει την τιμή της συνάρτησης κατακερματισμού δίνονται σε big-endian format οι οκτώ 64-μπιτοι αριθμοί,,,,,,,, που είναι τα πρώτα 64 bits του κλασματικού μέρους της τετραγωνικής ρίζας των πρώτων αριθμών 2,3,5,7,11,13,17,19.
Φάση 4: Επεξεργασία κάθε τμήματος σε 80 γύρους Κάθε γύρος παίρνει ως είσοδο τους 8 64-μπιτους αριθμούς... Πριν τον πρώτο γύρο έχουν τιμή την ως τώρα τιμή της συνάρτησης κατακερματισμού 1. Επίσης, κάθε γύρος παίρνει ως είσοδο μια ακολουθία από 64 bits, που προέρχεται από επεξεργασία των 1024 bits του τμήματος. Επίσης o γύρος χρησιμοποιεί μια μεταβλητή ( = 0,... 79), που περιέχει τα 64 πρώτα bits που κλασματικού μέρους της κυβικής ρίζας των πρώτων 80 πρώτων αριθμών. Σε κάθε γύρο γίνονται λογικές πράξεις AND, OR, NOT, XOR. Στην έξοδο του τελευταίου γύρου προστίθεται η είσοδος του πρώτου γύρου 1 προκειμένου να παραχθεί το. Η πρόσθεση γίνεται χωριστά για κάθε 64-μπιτη λέξη,..., χρησιμοποιώντας πρόσθεση mod2 64.
Αρχικές τιμές των,,,,,,, a = 6A09E667F3BCC908 b = BB67AE8584CAA73B c = 3C6EF372FE94F82B d = A54FF53A5F1D36F1 e = 510E527FADE682D1 f = 9B05688C2B3E6C1F g = 1F83D9ABFB41BD6B h = 5BE0CD19137E2179 Colu hex+(first8) hex2dec hex2dec/16^8 primes sqrt a 6a09e667 1779033703 0.414213562 2 1.414213562 b bb67ae85 3144134277 0.732050807 3 1.732050808 c 3c6ef372 1013904242 0.236067977 5 2.236067977 d a54ff53a 2773480762 0.645751311 7 2.645751311 e 510e527f 1359893119 0.31662479 11 3.31662479 f 9b05688c 2600822924 0.605551275 13 3.605551275 g 1f83d9ab 528734635 0.123105625 17 4.123105626 h 5be0cd19 1541459225 0.358898944 19 4.358898944 Φάση 5: Έξοδος Όταν τελειώσει η επεξεργασία και των 1024-μπιτων τμημάτων, η έξοδος είναι πλέον η 512-μπιτη τιμή της συνάρτησης κατακερματισμού. Ο αλγόριθμος SHA-512 έχει την ιδιότητα κάθε bit του αποτελέσματος (hash code) να είναι συνάρτηση του κάθε bit του αρχικού μηνύματος. Ακόμη και μηνύματα που παρουσιάζουν κανονικότητες ή ομοιότητες αποκλείεται να καταλήξουν στον ίδιο κωδικό μηνύματος. Η δυσκολία να βρεθούν δύο μηνύματα με τον ίδιο κωδικό κατακερματισμού είναι της τάξης των 2 256 υπολογισμών. Η δυσκολία να βρεθεί μήνυμα με δεδομένο κωδικό είναι της τάξης 2 512 υπολογισμών.
HMAC: Hash based Message Authentication Code Σκοπός είναι η δημιουργία ενός κωδικού επαλήθευσης μηνύματος (MAC) με χρήση κάποιας γνωστής συνάρτησης κατακερματισμού. Να είναι δυνατή η με απλό τρόπο. Να είναι δυνατή η εύκολη αντικατάσταση της συνάρτησης κατακερματισμού εφόσον βρεθεί καλύτερη ή εφόσον η υπάρχουσα αποδειχθεί ανεπαρκής. Να υπάρχει εκτίμηση για το πόσο ισχυρό είναι το αποτέλεσμα. Ο αλγόριθμος HMAC K Left pad to b bits K + + ipad= 00110110 repeated b/8 times b bits b bits M { b bits S i Y 0 Y 1 Y L-1 opad = 01011100 repeated b/8 times + K IV + b bits n bits n bits b bits Hash H Pad to bbits H(S i M) S o IV n bits Hash n bits HMAC(K, M)
Ασφάλεια του HMAC, σελ. I Μια επιτυχημένη επίθεση στον HMAC ισοδυναμεί με ένα από τα εξής [Bellare, 1996]: 1. Ο επιτιθέμενος είναι ικανός να υπολογίσει την έξοδο της συνάρτησης κατακερματισμού ακόμη κι αν το αρχικό διάνυσμα IV είναι τυχαίο, μυστικό και άγνωστο στον επιτιθέμενο. 2. Ο επιτιθέμενος μπορεί να βρει συγκρούσεις στη συνάρτηση κατακερματισμού ακόμη κι αν το IV είναι τυχαίο και μυστικό. Στο πρώτο είδος επίθεσης ο επιτιθέμενος πρέπει να υπολογίσει όλα τα δυνατά αποτελέσματα για όλα τα δυνατά κλειδιά μήκους bits, δηλαδή χρειάζεται 2 υπολογισμούς, ή 2 /2 εφόσον πρόκειται για «επίθεση γενεθλίων». Ωστόσο ο επιτιθέμενος έχει την επιπρόσθετη δυσκολία ότι δεν ξέρει το κλειδί, δηλαδή τα παραπάνω είναι δυνατά δεδομένου ενός. Ο αλγόριθμος RSA Ένας από τους πρώτους αλγόριθμους δημόσιου κλειδιού είναι ο RSA. Οφείλεται στους Ron Rivest, Adi Shamir & Len Adleman, 1977. Ο RSA επεξεργάζεται τμήματα, όπου τόσο το αρχικό κείμενο, όσο και το τελικό είναι ακέραιοι μεταξύ 0 και 1. Η κρυπτογράφηση γίνεται μέσω του τύπου Η αποκρυπτογράφηση γίνεται ως = mod = mod Αμφότεροι αποστολέας και παραλήπτης γνωρίζουν τα, ( =δημόσιο κλειδί παραλήπτη). Μόνο ο παραλήπτης γνωρίζει to (ιδιωτικό του κλειδί).
Προϋποθέσεις για τη λειτουργία του RSA 1. Είναι δυνατό να βρεθούν τιμές,, τέτοιες ώστε mod =, για κάθε < 2. Είναι σχετικά εύκολο να γίνουν οι υπολογισμοί και για <. 3. Είναι αδύνατο να βρεθεί το αν δοθούν τα,. Η σχέση mod = ισχύει αν modϕ( ) = 1 όπου ϕ( ) είναι η (Euler s totient function), που δίνει το πλήθος των φυσικών αριθμών, οι οποίοι είναι μικρότεροι ή ίσοι με το και οι οποίοι είναι πρώτοι προς το. Αυτό ισοδυναμεί με το να είναι οι, πρώτοι προς το ϕ( ). Αν, πρώτοι, ισχύει ϕ( ) = 1 και ϕ( ) = ϕ( )ϕ( ). Σύνοψη του αλγορίθμου παραγωγής των κλειδιών Διάλεξε δύο διαφορετικούς πρώτους αριθμούς.. Υπολόγισε το =. Υπολόγισε το ϕ( ) = ( 1)( 1). Διάλεξε ακέραιο που να είναι πρώτος προς το ϕ( ). Υπολόγισε ένα τέτοιο ώστε mod ϕ( ) = 1 (modular inverse of ). Το δημόσιο κλειδί είναι (, ). Το ιδιωτικό κλειδί είναι (, ).
Παράδειγμα 1 Επιλέγουμε δύο πρώτους, = 19, = 41, άρα = = 779 και ϕ( ) = 18 40 = 720. Ζητάμε ακέραιους, ώστε mod 720 = 1. Ας υποθέσουμε ότι κάνουν = 721. Αναλύουμε σε πρώτους το 721 = 7 103, άρα μπορούμε να βάλουμε = 7, = 103 (ή αντίστροφα). Έστω ότι ο αποστολέας θέλει να στείλει = 80 (< = 779). Υπολογίζει το = 80 103 mod 779 = 484 Ο παραλήπτης υπολογίζει = 484 7 mod 779 = 80, Παράδειγμα 2 Επιλέγουμε δύο πρώτους, = 521, = 971, άρα = = 505891 και ϕ( ) = 520 970 = 504400. Ζητάμε ακέραιους, ώστε mod 504400 = 1. Ας υποθέσουμε ότι κάνουν = 504401. Αναλύουμε σε πρώτους το 504401 = 31 53 307, άρα μπορούμε να βάλουμε = 31 53 = 1643, = 307. Έστω ότι ο αποστολέας θέλει να στείλει = 500000. Υπολογίζει το Ο παραλήπτης υπολογίζει = 500000 307 mod 505891 = 483217 = 483217 1643 mod 505891 = 500000,
Επίθεση στο προηγούμενο παράδειγμα Είναι δημοσιευμένα τα = 505891 και = 307. Μπορεί να βρεθεί το ; Ο επιτιθέμενος αναλύει το = 505891 = 521 971 και υπολογίζει ότι ϕ = 520 970 = 504400. Αναλύει τα ϕ + 1. Το πρώτο απ> αυτά, το 504401, διαιρείται με 307 δίνοντας 1643, το οποίο μπορεί να δοκιμάσει αν κάνει για. Επιθέσεις στον RSA Επιθέσεις με brute force Γίνεται εξαντλητική δοκιμή όλων των ιδιωτικών κλειδιών. Μαθηματικές επιθέσεις Όλες ισοδυναμούν με την παραγοντοποίηση του γινομένου δύο πρώτων αριθμών. Επιθέσεις χρονισμού Βασίζονται στο χρόνο εκτέλεσης του αλγορίθμου αποκρυπτογράφησης [Kocher, 1996]. Επιθέσεις με επιλεγμένο κρυπτογραφημένο κείμενο Επωφελούνται ιδιοτήτων του αλγορίθμου RSA.
Μαθηματικές επιθέσεις Παραγοντοποίηση του σε πρώτους αριθμούς,, ώστε να υπολογισθεί το ϕ( ) = ( 1)( 1) και εξ αυτού το 1 mod ϕ( ). Άμεσος υπολογισμός του ϕ( ) χωρίς να υπολογισθούν τα,. Άμεσος υπολογισμός του. Επιθέσεις παραγοντοποίησης Ο υπολογισμός του ϕ( ) από το είναι ισοδύναμος με την παραγοντοποίηση του [Ribenboim, 1996]. Από το 1991 ως το 2007 τα RSA Laboratories έκαναν μια σειρά από διαγωνισμούς παραγοντοποίησης. Μέχρι σήμερα έχουν παραγοντοποιηθεί αριθμοί ως 232 δεκαδικά ψηφία. Για τους αριθμούς που έχουν δοθεί προς παραγοντοποίηση και τα ως τώρα αποτελέσματα βλ. http://en.wikipedia.org/wiki/rsa_numbers. Οι δημιουργοί του αλγόριθμοι συνιστούν τα, να διαφέρουν μόνο κατά μικρό πλήθος ψηφίων, οι 1, 1 να περιέχουν από ένα μεγάλο πρώτο παράγοντα και το ελάχιστο κοινό πολλαπλάσιό τους να είναι μικρό.
Αρχική ρίζα (primitive root) πρώτου αριθμού Δεδομένου ενός πρώτου αριθμού, η αρχική του ρίζα είναι ένας αριθμός τέτοιος ώστε οι δυνάμεις 1, 2,..., 1 mod να είναι σε κάποια διάταξη ίσες με τους αριθμούς 1, 2,..., 1. Ο επόμενος πίνακας δείχνει πώς συμβαίνει αυτό για = 13, = 6. Κάθε γραμμή περιέχει το (,, mod ). 1 6 6 2 36 10 3 216 8 4 1296 9 5 7776 2 6 46656 12 7 279936 7 8 1679616 3 9 10077696 5 10 60466176 4 11 362797056 11 12 2176782336 1 O αλγόριθμος Diffie - Hellman 1. Δίνονται (δημόσια) ένας πρώτος αριθμός και μια αρχική του ρίζα. 2. Ο Bob επιλέγει ως ιδιωτικό κλειδί ακέραιο < και υπολογίζει το δημόσιο κλειδί του ως = mod. 3. Η Alice επιλέγει ως ιδιωτικό κλειδί ακέραιο < και υπολογίζει το δημόσιο κλειδί της ως = mod. 4. Ο Bob υπολογίζει το νέο κρυφό κλειδί = 5. Η Alice υπολογίζει το νέο κρυφό κλειδί = mod. mod. 6. Όμως = =, οπότε το μπορεί να χρησιμοποιηθεί ως γνωστό και στους δύο μυστικό κλειδί για συμμετρική κρυπτογράφηση.
Παρατηρήσεις στον αλγόριθμο Diffie - Hellman Ισχύει η ιδιότητα: ( mod ) mod = mod. Ισχύει επομένως ότι = mod = ( mod ) mod = ( ) mod Ομοίως = ( ) mod, άρα =. Η Trudy διαθέτει τα,,, και πρέπει να υπολογίσει μια λύση της = mod για να βρει το και εξ αυτού το (ή λύση της συμμετρικής της). Ο υπολογισμός αυτός είναι δύσκολος για μεγάλους ακέραιους. Αριθμητικό παράδειγμα I Δίνεται ο πρώτος αριθμός 13 και η αρχική του ρίζα 6. Ο Bob επιλέγει = 3 και υπολογίζει = 6 3 mod 13 = 216 mod 13 = 8. H Alice επιλέγει = 10 και υπολογίζει = 6 10 mod 13 = 60466176 mod 13 = 4. Ο Bob υπολογίζει το κοινό μυστικό κλειδί ως = mod 13 = 4 3 mod 13 = 64 mod 13 = 12 Η Alice υπολογίζει το κοινό μυστικό κλειδί ως = mod 13 = 8 10 mod 10 = 1073741824 mod 13 = 12
Αριθμητικό παράδειγμα II Δίνεται ο πρώτος αριθμός = 2341 με αρχική ρίζα = 255. Ο Bob επιλέγει = 1500 και υπολογίζει το δημόσιο κλειδί του ως = 255 1500 mod 2341 = 2322 H Alice επιλέγει = 1000 και υπολογίζει το δημόσιο κλειδί της ως = 255 1000 mod 2341 = 1823 Ο Bob υπολογίζει το κοινό μυστικό κλειδί ως = mod = 1823 1500 mod 2341 = 1660 Η Alice υπολογίζει το κοινό μυστικό κλειδί ως = mod = 2322 1000 mod 2341 = 1660 Επίθεση του ενδιάμεσου: Ανταλλαγή κλειδιών Alice Bob Trudy H Trudy ετοιμάζει δύο ζεύγη ( 1, 1 ), ( 2, 2 ). Η Alice στέλνει το στον Bob, αλλά η Trudy το αναχαιτίζει και στέλνει το 1 στον Bob. O Bob στέλνει το στην Alice, αλλά η Trudy το αναχαιτίζει και στέλνει το 2 στην Alice. Τελικά στην πραγματικότητα τα δύο ζεύγη Alice, Trudy και Trudy, Bob μοιράζονται διαφορετικά κλειδιά.
Επίθεση του ενδιάμεσου: Υπολογισμός των κοινών κλειδιών Alice Bob Trudy H Trudy υπολογίζει το 1 = 1 mod το οποίο ο Bob υπολογίζει ως 1 = ( 1 ) mod και νομίζει ότι το μοιράζεται με την Alice. H Trudy υπολογίζει το 2 = ( ) 2 mod το οποίο η Alice υπολογίζει ως 2 = ( 2 ) mod και νομίζει ότι το μοιράζεται με τoν Bob. Επίθεση του ενδιάμεσου: Επικοινωνία Το αποτέλεσμα της προηγούμενης φάσης είναι ότι οι μεν Bob & Alice νομίζουν ότι έχουν ανταλλάξει ένα μυστικό κλειδί, αλλά στην πραγματικότητα ο Bob και η Trudy μοιράζονται το 1, ενώ η Trudy και η Alice μοιράζονται το 2. Η επικοινωνία εξελίσσεται ως εξής: Η Alice στέλνει το κρυπτογραφημένο μήνυμα ( 2, ). Η Trudy το αποκρυπτογραφεί και παίρνει το. Η Trudy στέλνει στον Bob το ( 1, ) αν απλώς παρακολουθεί την επικοινωνία. Εναλλακτικά μπορεί να αντικαταστήσει το με άλλο μήνυμα. Το πρωτόκολλο είναι ευάλωτο σ> αυτή την επίθεση διότι δεν κάνει έλεγχο ταυτότητας των δύο πλευρών. Η αδυναμία αυτή μπορεί να διορθωθεί με τη χρήση ψηφιακών υπογραφών και πιστοποιητικών δημόσιου κλειδιού.
Βιβλιογραφία, σελ. I William Stallings, Cryptography and Network Security, Prentice Hall, 2013. William Stallings, Lawrie Brown, Computer Security: Principles and Practice, Pearson, 2014. Mihir Bellare, Ran Canetti, Hugo Krawczyk, Keying Hash Functions for Message Authentication,, Lecture Notes in Computer Science Vol. 1109, N. Koblitz ed., Springer-Verlag, 1996. http://cseweb.ucsd.edu/~mihir/papers/hmac.html Ribenboim, P., The New Book of Prime Number Records, New York: Springer- Verlag, 1996. Βιβλιογραφία, σελ. II Kocher, P., Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS, and Other Systems, CRYPTO 96, LNCS Vol. 1109, pp. 104-113, 1996. Τελευταία ενημέρωση: 13 Νοεμβρίου 2018 15:41