Μοιάζει με χασίς. Hash - τι είναι; Ορισμός, νόημα, μετάφραση

Εργαλείο 02.05.2019
Επισκόπηση προγράμματος Η έκδοση υπολογιστή του Microsoft Excel Viewer θα επιτρέψει...

ChercherΕργαλείο

Τι είναι το hash;Η ανάλυση με χρήση συναρτήσεων κατακερματισμού χρησιμοποιείται συχνά για την επαλήθευση της ακεραιότητας σημαντικά αρχεία λειτουργικό σύστημα, σημαντικά προγράμματα, σημαντικά δεδομένα. Ο έλεγχος μπορεί να πραγματοποιηθεί είτε ανάλογα με τις ανάγκες είτε σε τακτική βάση.

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

Ποια χαρακτηριστικά πρέπει να έχει μια συνάρτηση κατακερματισμού;

  • πρέπει να είναι σε θέση να εκτελεί μετασχηματισμούς δεδομένων αυθαίρετο μήκοςνα διορθωθεί?
  • πρέπει να έχει ανοιχτό αλγόριθμο ώστε να μπορεί να διερευνηθεί η κρυπτογραφική του ισχύς.
  • πρέπει να είναι μονόπλευρη, δηλαδή να μην είναι μαθηματικά δυνατός ο προσδιορισμός από το αποτέλεσμα δεδομένα πηγής;
  • πρέπει να «αντέχει» σε συγκρούσεις, δηλαδή να μην παράγει τις ίδιες τιμές για διαφορετικά δεδομένα εισόδου.
  • δεν θα πρέπει να απαιτεί μεγάλους υπολογιστικούς πόρους.
  • με την παραμικρή αλλαγή στα δεδομένα εισόδου, το αποτέλεσμα θα πρέπει να αλλάξει σημαντικά.

Ποιοι είναι οι δημοφιλείς αλγόριθμοι κατακερματισμού;Επί του παρόντος χρησιμοποιούνται οι ακόλουθες συναρτήσεις κατακερματισμού:

  • CRC – κυκλικός κωδικός πλεονασμού ή άθροισμα ελέγχου. Ο αλγόριθμος είναι πολύ απλός, έχει μεγάλο αριθμόδιακυμάνσεις ανάλογα με το απαιτούμενο μήκος εξόδου. Όχι κρυπτογραφικό!
  • Ο MD 5 είναι ένας πολύ δημοφιλής αλγόριθμος. Σαν αυτόν προηγούμενη έκδοση MD 4 είναι κρυπτογραφική λειτουργία. Το μέγεθος κατακερματισμού είναι 128 bit.
  • Το SHA -1 είναι επίσης μια πολύ δημοφιλής συνάρτηση κρυπτογράφησης. Το μέγεθος κατακερματισμού είναι 160 bit.
  • Το GOST R 34.11-94 είναι ένα ρωσικό κρυπτογραφικό πρότυπο για υπολογισμούς συνάρτησης κατακερματισμού. Το μέγεθος κατακερματισμού είναι 256 bit.

Πότε μπορεί ένας διαχειριστής συστήματος να χρησιμοποιήσει αυτούς τους αλγόριθμους;Συχνά, κατά τη λήψη οποιουδήποτε περιεχομένου, για παράδειγμα, προγραμμάτων από τον ιστότοπο του κατασκευαστή, μουσική, ταινίες ή άλλες πληροφορίες, υπάρχει μια τιμή αθροίσματος ελέγχου που υπολογίζεται χρησιμοποιώντας έναν συγκεκριμένο αλγόριθμο. Για λόγους ασφαλείας, μετά τη λήψη, πρέπει να υπολογίσετε ανεξάρτητα τη συνάρτηση κατακερματισμού και να συγκρίνετε την τιμή με αυτό που υποδεικνύεται στον ιστότοπο ή στο συνημμένο στο αρχείο. Το έχεις κάνει ποτέ αυτό;

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

Τι είναι το ρωσικό;Όπως αναφέρθηκε παραπάνω, στη Ρωσία υπάρχει ένα πρότυπο κατακερματισμού GOST R 34.11-94, το οποίο χρησιμοποιείται ευρέως από πολλούς κατασκευαστές εργαλείων ασφάλειας πληροφοριών. Ένα από αυτά τα εργαλεία είναι το πρόγραμμα στερέωσης και ελέγχου αρχική κατάσταση πακέτο λογισμικού"ΔΙΟΡΘΩΝΩ". Αυτό το πρόγραμμα είναι ένα μέσο παρακολούθησης της αποτελεσματικότητας της χρήσης της ασφάλειας πληροφοριών.

ΕΠΙΔΙΟΡΘΩΣΗ (έκδοση 2.0.1) για Windows 9x/NT/2000/XP

  • Υπολογισμός αθροισμάτων ελέγχου καθορισμένων αρχείων χρησιμοποιώντας έναν από τους 5 αλγόριθμους που εφαρμόζονται.
  • Στερέωση και επακόλουθη παρακολούθηση της αρχικής κατάστασης του πακέτου λογισμικού.
  • Σύγκριση εκδόσεων πακέτων λογισμικού.
  • Στερέωση και έλεγχος καταλόγων.
  • Έλεγχος αλλαγών σε καθορισμένα αρχεία(κατάλογοι).
  • Δημιουργία αναφορών σε Μορφές TXT, HTML, SV.
  • Το προϊόν διαθέτει πιστοποιητικό FSTEC για NDV 3 Νο. 913 έως την 1η Ιουνίου 2013.

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

Επί του παρόντος, πολλές εφαρμογές ηλεκτρονικό εμπόριοσας επιτρέπει να αποθηκεύσετε το μυστικό κλειδί του χρήστη σε μια ιδιωτική περιοχή διακριτικών (ruToken, eToken) χωρίς τεχνικής σκοπιμότηταςβγάζοντάς το από εκεί. Το ίδιο το διακριτικό έχει μια πολύ περιορισμένη περιοχή μνήμης, μετρημένη σε kilobyte. Για να υπογράψετε ένα έγγραφο, δεν υπάρχει τρόπος να μεταφέρετε το έγγραφο στο ίδιο το διακριτικό, αλλά είναι πολύ απλό να μεταφέρετε τον κατακερματισμό του εγγράφου στο διακριτικό και να λάβετε ως αποτέλεσμα μια ηλεκτρονική ψηφιακή υπογραφή.

Για την επίλυση του προβλήματος της εύρεσης του απαιτούμενου στοιχείου μεταξύ μεγάλων δεδομένων, προτάθηκε ένας αλγόριθμος κατακερματισμός (κατακερματισμός- μίξη), στα οποία δημιουργούνται κλειδιά που ορίζουν τα δεδομένα του πίνακα και, στη βάση τους, τα δεδομένα εγγράφονται σε έναν πίνακα που ονομάζεται πίνακας κατακερματισμού . Τα πλήκτρα εγγραφής καθορίζονται χρησιμοποιώντας τη λειτουργία i = h(κλειδί) , κάλεσε συνάρτηση κατακερματισμού . Ο αλγόριθμος κατακερματισμού καθορίζει τη θέση του στοιχείου που αναζητήθηκε στον πίνακα κατακερματισμού με βάση την τιμή του κλειδιού του που λαμβάνεται από τη συνάρτηση κατακερματισμού.

Εννοια κατακερματισμός- Αυτή είναι η κατάτμηση ενός κοινού (βασικού) συνόλου μοναδικών κλειδιών στοιχείων δεδομένων σε χωριστά σύνολα με μια συγκεκριμένη ιδιότητα.

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

Στην πραγματικότητα, ο κατακερματισμός είναι μια ειδική μέθοδος αντιμετώπισης δεδομένων για γρήγορη αναζήτηση απαραίτητες πληροφορίες με κλειδιά .

Αν βασικό σετπεριέχει Νστοιχεία, τότε μπορεί να χωριστεί σε 2 Νδιάφορα υποσύνολα.

Πίνακας κατακερματισμού και συναρτήσεις κατακερματισμού

Μια συνάρτηση που αντιστοιχίζει τα κλειδιά των στοιχείων δεδομένων σε ένα σύνολο ακεραίων αριθμών (ευρετήρια σε πίνακα - πίνακας κατακερματισμού ), κάλεσε λειτουργία κατακερματισμού , ή συνάρτηση κατακερματισμού :

εγώ = η(κλειδί);

Οπου κλειδί– μετατρέψιμο κλειδί, εγώ– το προκύπτον ευρετήριο πίνακα, δηλ. το κλειδί αντιστοιχίζεται σε ένα σύνολο ακεραίων αριθμών ( κατακερματισμένες διευθύνσεις ), τα οποία στη συνέχεια χρησιμοποιούνται για την πρόσβαση στα δεδομένα.

Ωστόσο, μια συνάρτηση κατακερματισμού για πολλαπλές βασικές τιμές μπορεί να παράγει την ίδια τιμή θέσης εγώστον πίνακα. Καλείται η κατάσταση στην οποία δύο ή περισσότερα κλειδιά μοιράζονται το ίδιο ευρετήριο (διεύθυνση κατακερματισμού). σύγκρουση κατά τον κατακερματισμό.

Μια καλή συνάρτηση κατακερματισμού είναι μια συνάρτηση που ελαχιστοποιεί τις συγκρούσεις και κατανέμει τα δεδομένα ομοιόμορφα σε όλο τον πίνακα και μια τέλεια συνάρτηση κατακερματισμού είναι μια συνάρτηση που δεν δημιουργεί συγκρούσεις:

Υπάρχουν δύο μέθοδοι για την επίλυση συγκρούσεων κατακερματισμού:

– ανοικτή μέθοδος διευθυνσιοδότησης με γραμμική δοκιμή.

– μέθοδος αλυσίδας.

Τραπέζι κατακερματισμού

Ένας πίνακας κατακερματισμού είναι ένας κανονικός πίνακας με ασυνήθιστη διευθυνσιοδότηση που καθορίζεται από μια συνάρτηση κατακερματισμού.

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

Υπάρχουν πολλά σχήματα κατακερματισμού, που διαφέρουν στην επιλογή μιας επιτυχημένης λειτουργίας η(κλειδί), και έναν αλγόριθμο επίλυσης συγκρούσεων. Η αποτελεσματικότητα της επίλυσης ενός πραγματικού πρακτικού προβλήματος θα εξαρτηθεί σημαντικά από την επιλεγμένη στρατηγική.

Παραδείγματα συναρτήσεων κατακερματισμού

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

Μέθοδος διαίρεσης. Τα αρχικά δεδομένα είναι κάποιο ακέραιο κλειδί κλειδίκαι μέγεθος τραπεζιού m. Το αποτέλεσμα αυτής της συνάρτησης είναι το υπόλοιπο όταν αυτό το κλειδί διαιρείται με το μέγεθος του πίνακα. Γενική άποψηΧαρακτηριστικά:

int h (πλήκτρο int, int m) (

κλειδί επιστροφής % m; // Αξίες

Για m= 10 συνάρτηση κατακερματισμού επιστρέφει το λιγότερο σημαντικό ψηφίο του κλειδιού.

Για m= 100 συνάρτηση κατακερματισμού επιστρέφει τα λιγότερο σημαντικά δύο ψηφία του κλειδιού.

Προσθετική μέθοδος, στο οποίο βρίσκεται το κλειδί συμβολοσειρά χαρακτήρων. Σε μια συνάρτηση κατακερματισμού, μια συμβολοσειρά μετατρέπεται σε ακέραιο αθροίζοντας όλους τους χαρακτήρες και επιστρέφοντας το υπόλοιπο μετά τη διαίρεση με m(συνήθως μέγεθος τραπεζιού m= 256).

int h(char *key, int m) (

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

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

int h(char *key, int m) (

int len ​​= strlen(κλειδί), s = 0;

αν (λεν< 2) // Если длина ключа равна 0 или 1,

s = κλειδί; // κλειδί επιστροφής

s = κλειδί + κλειδί;

Σε αυτήν την περίπτωση, οι συγκρούσεις θα συμβούν μόνο σε γραμμές, για παράδειγμα, αλφάβητοΚαι amc.

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

Για παράδειγμα, το κλειδί είναι ένας ακέραιος αριθμός 32 bit και η συνάρτηση κατακερματισμού επιστρέφει τα μέσα 10 bit του τετραγώνου της:

int h (κλειδί int) (

κλειδί >>= 11; // Απορρίψτε 11 λιγότερο σημαντικά bit

κλειδί επιστροφής % 1024; // Επιστρέψτε 10 λιγότερο σημαντικά bit

Αποκλειστική μέθοδος ORγια πλήκτρα σειρών (συνήθως μέγεθος πίνακα m=256). Αυτή η μέθοδος είναι παρόμοια με την προσθετική μέθοδο, αλλά διακρίνει παρόμοιες λέξεις. Η μέθοδος είναι ότι η πράξη «αποκλειστική Ή» εφαρμόζεται διαδοχικά στα στοιχεία της συμβολοσειράς.

ΣΕ πολλαπλασιαστική μέθοδος Επιπλέον, χρησιμοποιείται ένας τυχαίος πραγματικός αριθμός rαπό το διάστημα . Εάν αυτό το γινόμενο πολλαπλασιαστεί με το μέγεθος του πίνακα m, τότε το ακέραιο μέρος του προϊόντος που προκύπτει θα δώσει μια τιμή στην περιοχή από 0 έως m–1.

int h (πλήκτρο int, int m) (

διπλό r = κλειδί * rnd();

r = r – (int)r; // Επιλεγμένο κλασματικό μέρος

ΣΕ γενική περίπτωσησε μεγάλες αξίες mοι δείκτες που δημιουργούνται από τη συνάρτηση κατακερματισμού έχουν μεγάλη εξάπλωση. Επιπλέον, η μαθηματική θεωρία δηλώνει ότι η κατανομή είναι πιο ομοιόμορφη αν mείναι πρώτος αριθμός.

Στα παραδείγματα που εξετάστηκαν, η συνάρτηση κατακερματισμού εγώ = η(κλειδί) καθορίζει μόνο τη θέση από την οποία θα αναζητήσετε (ή θα τοποθετήσετε αρχικά στον πίνακα) μια εγγραφή με ένα κλειδί κλειδί. Επομένως, το σύστημα κατακερματισμού πρέπει να περιλαμβάνει αλγόριθμος επίλυσης συγκρούσεων , που καθορίζει τη σειρά των ενεργειών εάν η θέση εγώ = η(κλειδί) αποδεικνύεται ότι έχει ήδη καταληφθεί από μια εγγραφή με διαφορετικό κλειδί.

Μέθοδοι συμπίεσης δεδομένων που έχουν μετατραπεί με βάση τις μονόδρομες συναρτήσεις Hash

Μια συνάρτηση κατακερματισμού (hash, hash-function) είναι ένας μετασχηματισμός που λαμβάνει μια ορισμένη τιμή (συνέλιξη) ενός σταθερού μήκους από δεδομένα αυθαίρετου μήκους. Τα πιο απλά παραδείγματα είναι τα αθροίσματα ελέγχου (π.χ. crc32). Υπάρχουν:

· κρυπτογραφικοί κατακερματισμοί.

· Hashes προγραμματιστή.

Κρυπτογραφικό κατακερματισμόδιαφέρει από του προγραμματιστή στις ακόλουθες δύο ιδιότητες: μη αναστρέψιμη και ελευθερία από συγκρούσεις. Ας υποδηλώσουμε:

m - αρχικά δεδομένα,

Το h(m) είναι μια συνάρτηση κατακερματισμού από αυτά.

Μη αναστρεψιμότητα σημαίνει ότι εάν ο αριθμός h0 είναι γνωστός, τότε είναι δύσκολο να επιλέξουμε m έτσι ώστε h(m) = h0.

Χωρίς σύγκρουση σημαίνει ότι είναι δύσκολο να βρεθούν m1 και m2 έτσι ώστε το m1 να μην είναι ίσο με m2, αλλά h(m1) = h(m2).

Οι κρυπτογραφικές συναρτήσεις κατακερματισμού χωρίζονται σε δύο κατηγορίες:

Λειτουργίες κατακερματισμού χωρίς κλειδί (κωδικοί MDC (Κωδικός εντοπισμού τροποποίησης (χειραγώγησης)),

Λειτουργίες κατακερματισμού με ένα κλειδί (κωδικοί MAC (Message Authentication Code)).

Οι συναρτήσεις κατακερματισμού χωρίς κλειδί χωρίζονται σε δύο υποκατηγορίες: αδύναμες συναρτήσεις κατακερματισμού και συναρτήσεις ισχυρού κατακερματισμού.

Μια αδύναμη συνάρτηση κατακερματισμού είναι μια μονόδρομη συνάρτηση H(x) που ικανοποιεί τις ακόλουθες συνθήκες:

1. Το όρισμα x μπορεί να είναι μια συμβολοσειρά bit αυθαίρετου μήκους.

2. Η τιμή του h(x) πρέπει να είναι μια συμβολοσειρά bit σταθερού μήκους.

3. Η τιμή του h(x) είναι εύκολο να υπολογιστεί.

4. για οποιοδήποτε σταθερό x είναι υπολογιστικά αδύνατο να βρεθεί άλλο x" ≠ x έτσι ώστε h(x")=h(x).

Το ζεύγος x" ≠ x όταν h(x")=h(x) ονομάζεται σύγκρουση συνάρτησης κατακερματισμού.

Μια ισχυρή συνάρτηση κατακερματισμού είναι μια μονόδρομη συνάρτηση h(x) που ικανοποιεί τις συνθήκες 1-4 για μια ασθενή συνάρτηση κατακερματισμού και την ιδιότητα 5:

5. Είναι υπολογιστικά αδύνατο να βρεθεί οποιοδήποτε ζεύγος x" ≠ x έτσι ώστε h(x")=h(x).
Εφόσον από τις ιδιότητες 1-2 προκύπτει ότι το σύνολο ορισμών μιας συνάρτησης κατακερματισμού είναι πολύ ευρύτερο από το σύνολο των τιμών, πρέπει να υπάρχουν συγκρούσεις. Η ιδιότητα 4 απαιτεί να τα βρείτε δεδομένη αξίαΤο x ήταν σχεδόν αδύνατο. Η απαίτηση 5 λέει ότι είναι υπολογιστικά αδύνατο για μια ισχυρή συνάρτηση κατακερματισμού να βρει οποιαδήποτε σύγκρουση.

Υπάρχουν αρκετοί αλγόριθμοι για τον υπολογισμό των συναρτήσεων κατακερματισμού

Το MD2 (Message Digest) είναι ένας αλγόριθμος κρυπτογραφικής μείωσης. Παράγει ένα μπλοκ 128-bit από ένα μήνυμα αυθαίρετου μήκους. Γενικό σχήμαΤο MD2 λειτουργεί:

ένα. πλήρωση κειμένου μηνύματος σε μήκος που είναι πολλαπλάσιο των 128 bit.

σι. Υπολογισμός 16 bit άθροισμα ελέγχου, τα πιο σημαντικά bits απορρίπτονται.

ντο. προσθήκη ενός αθροίσματος ελέγχου στο κείμενο.

ρε. επανυπολογισμός του αθροίσματος ελέγχου.

Ο αλγόριθμος MD2 είναι πολύ αργός, επομένως χρησιμοποιούνται συχνότερα τα MD4, MD5, SHA (Secure Hash Algorithm). Ο κατακερματισμός που προκύπτει έχει μήκος 160 bit.



GOST R34.11-94. Ρωσικός αλγόριθμος. Το μήκος της συνέλιξης είναι 256 bit (πολύ βολικό για τη δημιουργία κλειδιού για το GOST 28147-89 χρησιμοποιώντας κωδικό πρόσβασης).

Το Εθνικό Ινστιτούτο Προτύπων και Τεχνολογίας των ΗΠΑ (NIST) στον ιστότοπό του http://www.nist.gov/sha/ δημοσίευσε προδιαγραφές για τους νέους αλγόριθμους κατακερματισμού SHA-256, SHA-384 και SHA-512, σκοπός των οποίων είναι να παρέχει ένα επίπεδο κρυπτογραφικής ισχύος κατακερματισμού , που αντιστοιχεί στα μήκη κλειδιών του νέου προτύπου κρυπτογράφησης DES.

Θυμηθείτε ότι ένας κατακερματισμός n-bit είναι μια αντιστοίχιση ενός μηνύματος αυθαίρετου μήκους σε μια ψευδοτυχαία ακολουθία n-bit (τιμή κατακερματισμού). Ένας κρυπτογραφικός κατακερματισμός, ως ειδικός τύπος τέτοιας συνάρτησης, είναι ένας κατακερματισμός n-bit που έχει τις ιδιότητες της «μονοκατευθυντικότητας» και της «αντίστασης σε σύγκρουση».

Μέχρι τώρα, οι πιο δημοφιλείς συναρτήσεις κατακερματισμού ήταν οι MD4 και MD5, που δημιουργήθηκαν από την Raivist, οι οποίες παράγουν κωδικούς κατακερματισμού μήκους n=128, και ο αλγόριθμος SHA-1, που αναπτύχθηκε από την NSA των ΗΠΑ, ο οποίος δημιουργεί κωδικούς κατακερματισμού μήκους n=160 .

GOST R34.10-94 «Διαδικασίες για την ανάπτυξη και την επαλήθευση ηλεκτρονικών ψηφιακή υπογραφήβασίζεται σε έναν ασύμμετρο κρυπτογραφικό αλγόριθμο».

Ερωτήσεις:

1. Η έννοια της συνάρτησης κατακερματισμού.

2.Χρήση αλγόριθμους μπλοκκρυπτογράφηση για να σχηματίσει μια συνάρτηση κατακερματισμού.

3. Ανασκόπηση αλγορίθμων δημιουργίας συναρτήσεων κατακερματισμού.

1. Η έννοια της συνάρτησης κατακερματισμού

Λειτουργία κατακερματισμού(συνάρτηση κατακερματισμού) είναι μια μαθηματική ή άλλη συνάρτηση που, για μια συμβολοσειρά αυθαίρετου μήκους, υπολογίζει κάποια ακέραια τιμή ή κάποια άλλη συμβολοσειρά σταθερού μήκους. Μαθηματικά μπορεί να γραφτεί ως εξής:

η = H(M) ,

Οπου Μ – το αρχικό μήνυμα, που μερικές φορές ονομάζεται πρωτότυπο , Α η – το αποτέλεσμα, που ονομάζεται τιμή κατακερματισμού (και επίσης κωδικός κατακερματισμούή σύνοψη μηνύματος(από τα αγγλικά σύνοψη μηνύματος)).

Η έννοια της συνάρτησης κατακερματισμού είναι να προσδιοριστεί το χαρακτηριστικό γνώρισμα της προεικόνας - η τιμή της συνάρτησης κατακερματισμού. Αυτή η έννοια έχει συνήθως μια ορισμένη σταθερό μέγεθοςπχ 64 ή 128 bit. Ο κωδικός κατακερματισμού μπορεί να αναλυθεί περαιτέρω για να λυθεί οποιοδήποτε πρόβλημα. Για παράδειγμα, ο κατακερματισμός μπορεί να χρησιμοποιηθεί για τη σύγκριση δεδομένων: εάν δύο πίνακες δεδομένων έχουν διαφορετικούς κωδικούς κατακερματισμού, οι πίνακες είναι εγγυημένο ότι είναι διαφορετικοί. αν είναι ίδιοι, οι πίνακες είναι πιθανότατα ίδιοι. Γενικά, δεν υπάρχει αντιστοιχία ένα προς ένα μεταξύ των δεδομένων πηγής και του κωδικού κατακερματισμού, λόγω του γεγονότος ότι ο αριθμός των τιμών συνάρτησης κατακερματισμού είναι πάντα μικρότερος από τον αριθμό των επιλογών δεδομένων εισαγωγής. Κατά συνέπεια, υπάρχουν πολλά μηνύματα εισόδου που δίνουν τους ίδιους κωδικούς κατακερματισμού (τέτοιες καταστάσεις ονομάζονται συγκρούσεις ). Η πιθανότητα συγκρούσεων παίζει σημαντικό ρόλο στην αξιολόγηση της ποιότητας των συναρτήσεων κατακερματισμού.

Οι συναρτήσεις κατακερματισμού χρησιμοποιούνται ευρέως στη σύγχρονη κρυπτογραφία.

Το πιο απλό συνάρτηση κατακερματισμούμπορεί να συντεθεί χρησιμοποιώντας τη λειτουργία "sum modulo 2" ως εξής: παίρνουμε τη συμβολοσειρά εισόδου, προσθέτουμε όλα τα byte modulo 2 και επιστρέφουμε το byte αποτέλεσμα ως τιμή συνάρτησης κατακερματισμού. Το μήκος της τιμής της συνάρτησης κατακερματισμού σε αυτήν την περίπτωση θα είναι 8 bit, ανεξάρτητα από το μέγεθος του μηνύματος εισόδου.

Για παράδειγμα, αφήστε το αρχικό μήνυμα να μεταφραστεί ψηφιακή προβολή, ήταν ως εξής (σε δεκαεξαδικό):

2 σι1 4 Α9 5 φάμι4

Ας μετατρέψουμε το μήνυμα σε δυαδική μορφή, γράψουμε τα byte το ένα κάτω από το άλλο και προσθέτουμε τα bit σε κάθε στήλη modulo 2:

0010 1011

0001 0100

1010 1001

0101 1111

1110 0100

——————-

0010 1101

Αποτέλεσμα: 0010 1101 ή 2 ρεκαι θα είναι η τιμή της συνάρτησης κατακερματισμού.

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

Επομένως, η εξεταζόμενη συνάρτηση κατακερματισμού δεν είναι κατάλληλη για κρυπτογραφικές εφαρμογές. Στην κρυπτογραφία, μια συνάρτηση κατακερματισμού θεωρείται καλή εάν είναι δύσκολο να δημιουργηθούν δύο προεικόνες την ίδια τιμήσυνάρτηση κατακερματισμού και επίσης εάν η έξοδος συνάρτησης δεν έχει ρητή εξάρτηση από την είσοδο.

Ας διατυπώσουμε τις βασικές απαιτήσεις για κρυπτογραφικές συναρτήσεις κατακερματισμού:

· Η συνάρτηση κατακερματισμού πρέπει να είναι εφαρμόσιμη σε μήνυμα οποιουδήποτε μεγέθους.

· Ο υπολογισμός της τιμής της συνάρτησης πρέπει να εκτελείται αρκετά γρήγορα.

· Δεδομένης μιας γνωστής τιμής συνάρτησης κατακερματισμού, θα πρέπει να είναι δύσκολο (σχεδόν αδύνατο) να βρεθεί ένα κατάλληλο πρωτότυπο Μ ;

· με γνωστό μήνυμα Μ πρέπει να είναι δύσκολο να βρεις άλλη ανάρτηση Μ' με την ίδια τιμή κατακερματισμού με το αρχικό μήνυμα.

· Θα πρέπει να είναι δύσκολο να βρείτε οποιοδήποτε ζευγάρι τυχαίων διάφορα μηνύματαμε την ίδια τιμή κατακερματισμού.

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

Επί του παρόντος, στην πράξη, οι συναρτήσεις κατακερματισμού είναι συναρτήσεις που επεξεργάζονται το μπλοκ εισαγόμενου μηνύματος και υπολογίζουν την τιμή κατακερματισμού η i για κάθε μπλοκ Μ ι εισαγωγή μηνύματος με βάση τις εξαρτήσεις της φόρμας

h i = H(M i,h i-1),

Οπου h i-1 – το αποτέλεσμα που προκύπτει κατά τον υπολογισμό της συνάρτησης κατακερματισμού για το προηγούμενο μπλοκ δεδομένων εισόδου.

Ως αποτέλεσμα, η έξοδος της συνάρτησης κατακερματισμού είναι h n είναι συνάρτηση όλων n μπλοκ μηνυμάτων εισαγωγής.

2. Χρήση αλγορίθμων κρυπτογράφησης μπλοκ για τη δημιουργία συνάρτησης κατακερματισμού.

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

Ο απλούστερος τρόπος για να χρησιμοποιήσετε έναν αλγόριθμο μπλοκ για να αποκτήσετε έναν κωδικό κατακερματισμού είναι να κρυπτογραφήσετε το μήνυμα σε λειτουργία CBC ( Αλυσίδα μπλοκ κρυπτογράφησης – Λειτουργία αλυσίδας μπλοκ κρυπτογραφημένου κειμένου). Σε αυτήν την περίπτωση, το μήνυμα αναπαρίσταται ως μια ακολουθία μπλοκ, το μήκος των οποίων είναι ίσο με το μήκος του μπλοκ αλγορίθμου κρυπτογράφησης. Εάν είναι απαραίτητο, το τελευταίο μπλοκ συμπληρώνεται στα δεξιά με μηδενικά για να δημιουργηθεί ένα μπλοκ απαιτούμενο μήκος. Η τιμή κατακερματισμού θα είναι το τελευταίο κρυπτογραφημένο μπλοκ κειμένου. Με την προϋπόθεση ότι χρησιμοποιείται ένας αξιόπιστος αλγόριθμος κρυπτογράφησης μπλοκ, η προκύπτουσα τιμή κατακερματισμού θα έχει τις ακόλουθες ιδιότητες:

· Είναι σχεδόν αδύνατο να υπολογιστεί μια τιμή κατακερματισμού για μια δεδομένη ανοιχτή σειρά πληροφοριών χωρίς να γνωρίζετε το κλειδί κρυπτογράφησης.

· Είναι πρακτικά αδύνατο χωρίς γνώση του κλειδιού κρυπτογράφησης να επιλέξετε ανοιχτά δεδομένα καθορισμένη τιμήσυναρτήσεις κατακερματισμού.

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

Η καθορισμένη διαδικασία λήψης και χρήσης απομίμησης ενθέτων περιγράφεται στο εγχώριο πρότυπο GOST 28147-89. Το πρότυπο προτείνει τη χρήση των χαμηλότερων 32 bit του μπλοκ που λαμβάνεται στην έξοδο ολόκληρης της λειτουργίας κρυπτογράφησης μηνυμάτων στη λειτουργία αλυσίδας μπλοκ κρυπτογράφησης για τον έλεγχο της ακεραιότητας του μεταδιδόμενου μηνύματος. Με τον ίδιο τρόπο, οποιοσδήποτε αλγόριθμος συμμετρικής κρυπτογράφησης μπλοκ μπορεί να χρησιμοποιηθεί για τη δημιουργία ενός εικονικού ένθετου.

Σε άλλους πιθανός τρόποςεφαρμογές μπλοκ κρυπτογράφησηγια να δημιουργήσετε τον κωδικό κατακερματισμού είναι το εξής. Το αρχικό μήνυμα επεξεργάζεται διαδοχικά σε μπλοκ. Το τελευταίο μπλοκ συμπληρώνεται με μηδενικά, αν χρειάζεται, μερικές φορές το μήκος του μηνύματος προστίθεται στο τελευταίο μπλοκ της φόρμας δυάδικος αριθμός. Σε κάθε στάδιο, κρυπτογραφούμε την τιμή κατακερματισμού που λήφθηκε στο προηγούμενο στάδιο, χρησιμοποιώντας το τρέχον μπλοκ μηνυμάτων ως κλειδί. Η τελευταία κρυπτογραφημένη τιμή που ελήφθη θα είναι το τελικό αποτέλεσμα κατακερματισμού.

Έτσι, εάν το συνηθισμένο σχήμα κρυπτογράφησης μηνυμάτων Μ χρησιμοποιώντας έναν κρυπτογράφηση μπλοκ φά στο κλειδί ΝΑ καταγράψαμε ως E= f(M,K) , στη συνέχεια το σχήμα για τη λήψη του κωδικού κατακερματισμού η χρησιμοποιώντας τον αλγόριθμο που περιγράφεται παραπάνω μπορεί να αναπαρασταθεί ως

η i = φά ( η i -1 , Μ )

Ως αρχικός κωδικός κατακερματισμού ω 0 πάρε κάποια σταθερά. Η κρυπτογράφηση εκτελείται σε λειτουργία απλής αντικατάστασης. Κατά τη χρήση την καθορισμένη μέθοδοτο μέγεθος του μπλοκ είναι το ίδιο με το μήκος του κλειδιού και το μέγεθος της τιμής κατακερματισμού θα είναι το μήκος του μπλοκ.

Ένας άλλος τρόπος χρήσης ενός κωδικού μπλοκ σε λειτουργία απλής αντικατάστασης είναι επίσης δυνατός: τα στοιχεία του μηνύματος κρυπτογραφούνται με τις τιμές κατακερματισμού που ελήφθησαν στο προηγούμενο βήμα:

η i = φά ( Μ , η i -1 ,)

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

Σε όλα αυτά τα σχήματα, το μήκος της παραγόμενης τιμής κατακερματισμού είναι ίσο με το μήκος του μπλοκ κρυπτογράφησης. Όλα αυτά, καθώς και ορισμένα άλλα σχήματα για τη χρήση ενός αλγόριθμου κρυπτογράφησης μπλοκ για τον υπολογισμό των τιμών κατακερματισμού, μπορούν να χρησιμοποιηθούν στην πράξη.

Το κύριο μειονέκτημα των συναρτήσεων κατακερματισμού που έχουν σχεδιαστεί με βάση αλγόριθμους μπλοκ είναι το σχετικό χαμηλή ταχύτηταεργασία. Η απαιτούμενη κρυπτογραφική ισχύς μπορεί να επιτευχθεί με λιγότερες λειτουργίες στα δεδομένα εισόδου. Υπάρχουν περισσότερα γρήγορους αλγόριθμουςκατακερματισμός (τα πιο συνηθισμένα από αυτά είναι τα MD5, SHA-1, SHA-2 και GOST R 34.11-94).

3. Ανασκόπηση αλγορίθμων δημιουργίας συναρτήσεων κατακερματισμού.

Επί του παρόντος, έχουν προταθεί και χρησιμοποιούνται πρακτικά διάφοροι ειδικοί αλγόριθμοι για τον υπολογισμό της συνάρτησης κατακερματισμού. Οι πιο γνωστοί αλγόριθμοι είναι οι MD5, SHA-1, SHA-2 και άλλες εκδόσεις του SHA, καθώς και εγχώριος αλγόριθμος, ορίζεται στο GOST R 34.11-94.

Αλγόριθμος MD5εμφανίστηκε στις αρχές της δεκαετίας του '90 του εικοστού αιώνα ως αποτέλεσμα της βελτίωσης του αλγορίθμου για τη δημιουργία της συνάρτησης κατακερματισμού MD4. Οι χαρακτήρες στο όνομα "MD" αντιπροσωπεύουν το Message Digest – περίληψημηνύματα. Ο συγγραφέας των αλγορίθμων MD4 και MD5 είναι ο R. Rivest. Η χρήση του MD5 για ένα αυθαίρετο μήνυμα παράγει μια τιμή κατακερματισμού 128 bit. Τα δεδομένα εισόδου υποβάλλονται σε επεξεργασία σε μπλοκ των 512 bit. Ο αλγόριθμος χρησιμοποιεί στοιχειώδη λογικές πράξεις(αναστροφή, σύνδεσμος, συντελεστής πρόσθεσης 2, κυκλικές μετατοπίσεις κ.λπ.), καθώς και συνηθισμένη αριθμητική πρόσθεση. Η πολύπλοκη επανάληψη αυτών των βασικών λειτουργιών του αλγορίθμου διασφαλίζει ότι το αποτέλεσμα μετά την επεξεργασία είναι καλά αναμεμειγμένο. Επομένως, είναι απίθανο δύο μηνύματα που επιλέγονται τυχαία να έχουν τον ίδιο κωδικό κατακερματισμού. Ο αλγόριθμος MD5 έχει επόμενο ακίνητο: Κάθε bit της τιμής κατακερματισμού που προκύπτει είναι συνάρτηση κάθε bit της εισόδου. Το MD5 θεωρείται ότι είναι η ισχυρότερη συνάρτηση κατακερματισμού για μια τιμή κατακερματισμού 128-bit.

Αλγόριθμος SHA( Ασφαλής αλγόριθμος κατακερματισμού – Ασφαλής αλγόριθμος κατακερματισμού) αναπτύχθηκε από το Εθνικό Ινστιτούτο Προτύπων και Τεχνολογίας των ΗΠΑ (NIST) και δημοσιεύτηκε ως Αμερικανικό Ομοσπονδιακό Πρότυπο Πληροφοριών το 1993. Το SHA-1, όπως και το MD5, βασίζεται στον αλγόριθμο MD4. Το SHA-1 δημιουργεί μια τιμή κατακερματισμού 160 bit επεξεργάζοντας το αρχικό μήνυμα σε μπλοκ 512 bit. Ο αλγόριθμος SHA-1 χρησιμοποιεί επίσης απλά Boolean και αριθμητικές πράξεις. Η πιο σημαντική διαφορά μεταξύ SHA-1 και MD5 είναι ότι ο κατακερματισμός SHA-1 είναι 32 bit μεγαλύτερος από τον κατακερματισμό MD5. Υποθέτοντας ότι και οι δύο αλγόριθμοι είναι ίσοι σε δυσκολία για κρυπτανάλυση, τότε ο SHA-1 είναι ο ισχυρότερος αλγόριθμος. Χρησιμοποιώντας μια επίθεση brute force (brute force attack), είναι πιο δύσκολο να δημιουργήσετε ένα αυθαίρετο μήνυμα που έχει έναν δεδομένο κωδικό κατακερματισμού και είναι επίσης πιο δύσκολο να δημιουργήσετε δύο μηνύματα που έχουν τον ίδιο κωδικό κατακερματισμού.

Το 2001, το Εθνικό Ινστιτούτο Προτύπων και Τεχνολογίας των ΗΠΑ υιοθέτησε τρεις συναρτήσεις κατακερματισμού με μεγαλύτερο μήκος κωδικού κατακερματισμού από το SHA-1 ως πρότυπο. Αυτές οι συναρτήσεις κατακερματισμού ονομάζονται συχνά SHA-2 ή SHA-256, SHA-384 και SHA-512 (το όνομα υποδεικνύει το μήκος του κωδικού κατακερματισμού που δημιουργείται από τους αλγόριθμους). Αυτοί οι αλγόριθμοι διαφέρουν όχι μόνο στο μήκος του κωδικού κατακερματισμού που δημιουργήθηκε, αλλά και στις εσωτερικές λειτουργίες που χρησιμοποιούνται και στο μήκος του επεξεργασμένου μπλοκ (το SHA-256 έχει μήκος μπλοκ 512, ενώ το SHA-384 και το SHA-512 έχει ένα μπλοκ μήκος 1024 bit). Σταδιακές βελτιώσεις στον αλγόριθμο SHA οδηγούν σε αύξηση της κρυπτογραφικής του ισχύος. Παρά τις διαφορές μεταξύ των εξεταζόμενων αλγορίθμων μεταξύ τους, είναι όλοι περαιτέρω ανάπτυξηΤα SHA-1 και MD4 έχουν και τα δύο παρόμοια δομή.

Η Ρωσία έχει υιοθετήσει το GOST R34.11-94, το οποίο είναι το εγχώριο πρότυπο για τις λειτουργίες κατακερματισμού. Η δομή του είναι αρκετά διαφορετική από τη δομή των αλγορίθμων SHA-1,2 ή MD5, οι οποίοι βασίζονται στον αλγόριθμο MD4. Το μήκος του κωδικού κατακερματισμού που δημιουργήθηκε από τον αλγόριθμο GOST R 34.11-94 είναι 256 bit. Ο αλγόριθμος επεξεργάζεται διαδοχικά το αρχικό μήνυμα σε μπλοκ των 256 bit από τα δεξιά προς τα αριστερά. Η παράμετρος αλγορίθμου είναι το διάνυσμα έναρξης κατακερματισμού - μια αυθαίρετη σταθερή τιμή μήκους επίσης 256 bit. Ο αλγόριθμος GOST R 34.11-94 χρησιμοποιεί τις πράξεις μετάθεσης, μετατόπισης, αριθμητικής προσθήκης, προσθήκης modulo 2 Ως βοηθητική συνάρτηση, το GOST 34.11-94 χρησιμοποιεί τον αλγόριθμο σύμφωνα με το GOST 28147-89 σε λειτουργία απλής αντικατάστασης.

4. Απαιτήσεις για συναρτήσεις κατακερματισμού

Μια συνάρτηση κατακερματισμού είναι μια μονόδρομη συνάρτηση που έχει σχεδιαστεί για να λαμβάνει μια σύνοψη ή "δαχτυλικό αποτύπωμα" ενός αρχείου, μηνύματος ή κάποιου μπλοκ δεδομένων.

Ο κωδικός κατακερματισμού δημιουργείται από τη συνάρτηση Ν :

h = H(M)

Οπου Μ είναι ένα μήνυμα αυθαίρετης διάρκειας και η είναι ένας κωδικός κατακερματισμού σταθερού μήκους.

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

Λειτουργία κατακερματισμού Ν , που χρησιμοποιείται για τον έλεγχο ταυτότητας μηνυμάτων, πρέπει να έχει τις ακόλουθες ιδιότητες:

1. Λειτουργία κατακερματισμού Ν πρέπει να εφαρμοστεί σε ένα μπλοκ δεδομένων οποιουδήποτε μήκους.

2. Λειτουργία κατακερματισμού Ν δημιουργεί μια έξοδο σταθερού μήκους.

3. Ν (Μ) σχετικά εύκολο (σε πολυωνυμικό χρόνο) να υπολογιστεί για οποιαδήποτε τιμή Μ .

4. Για οποιαδήποτε δεδομένη τιμή κωδικού κατακερματισμού η υπολογιστικά αδύνατο να βρεθεί Μ τέτοια που Η (Μ) = h .

5. Για κάθε δεδομένο Χ είναι υπολογιστικά αδύνατο να το βρεις

H (y) = H(x).

6. Είναι υπολογιστικά αδύνατο να βρεθεί ένα αυθαίρετο ζευγάρι ( Χ , y ) έτσι ώστε H(y) = H(x) .

Οι τρεις πρώτες ιδιότητες απαιτούν από τη συνάρτηση κατακερματισμού να παράγει έναν κωδικό κατακερματισμού για οποιοδήποτε μήνυμα.

Η τέταρτη ιδιότητα ορίζει την απαίτηση να είναι μονόπλευρη η συνάρτηση κατακερματισμού: είναι εύκολο να δημιουργηθεί ένας κωδικός κατακερματισμού από ένα δεδομένο μήνυμα, αλλά είναι αδύνατο να αναδημιουργηθεί το μήνυμα από έναν δεδομένο κωδικό κατακερματισμού. Αυτή η ιδιότητα είναι σημαντική εάν περιλαμβάνει έλεγχο ταυτότητας κατακερματισμού μυστικό νόημα. Η ίδια η μυστική τιμή ενδέχεται να μην σταλεί, ωστόσο, εάν η συνάρτηση κατακερματισμού δεν είναι μονόδρομη, ένας αντίπαλος μπορεί εύκολα να αποκαλύψει τη μυστική τιμή ως εξής. Όταν μια μετάδοση υποκλαπεί, ο εισβολέας λαμβάνει ένα μήνυμα Μ και κωδικός κατακερματισμού C = H (SAB || M) . Εάν ένας εισβολέας μπορεί να αντιστρέψει τη συνάρτηση κατακερματισμού, τότε μπορεί να αποκτήσει SAB || M=H-1(C) . Αφού ο επιθετικός πλέον γνωρίζει και Μ Και SAB || Μ , πάρε SAB αρκετά απλό.

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

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

5. Απλές συναρτήσεις κατακερματισμού

Όλες οι λειτουργίες κατακερματισμού εκτελούνται ως εξής. Η τιμή εισόδου (μήνυμα, αρχείο κ.λπ.) θεωρείται ως ακολουθία n -μπλοκ bit. Η τιμή εισόδου επεξεργάζεται διαδοχικά μπλοκ προς μπλοκ και α m -Τιμή κωδικού κατακερματισμού bit.

Ένα από τα πιο απλά παραδείγματα μιας συνάρτησης κατακερματισμού είναι να XOR κάθε μπλοκ κατά bit:

Γ i - εγώ το κομμάτι του κωδικού κατακερματισμού, 1 <= i <= n .

κ - αριθμός n -μπλοκ εισόδου bit.

b ij εγώ το μπιτ μέσα ι -ο μπλοκ.

Στη συνέχεια, ολόκληρο το μήνυμα κρυπτογραφείται, συμπεριλαμβανομένου του κωδικού κατακερματισμού, σε λειτουργία CBC για τη δημιουργία κρυπτογραφημένων μπλοκ Y1, Y2, ..., YN+1. Εξ ορισμού του SHS έχουμε:

Αλλά το XN+1 είναι ένας κωδικός κατακερματισμού:

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

Το αρχικό πρότυπο που προτάθηκε από το NIST χρησιμοποιούσε απλό XOR, το οποίο εφαρμόστηκε σε μπλοκ μηνυμάτων 64-bit και στη συνέχεια ολόκληρο το μήνυμα κρυπτογραφήθηκε χρησιμοποιώντας τη λειτουργία CBC.

"Το παράδοξο των γενεθλίων"

Πριν εξετάσουμε πιο σύνθετες συναρτήσεις κατακερματισμού, είναι απαραίτητο να αναλύσουμε μια συγκεκριμένη επίθεση σε απλές συναρτήσεις κατακερματισμού.

Το λεγόμενο «παράδοξο των γενεθλίων» έχει ως εξής. Ας υποθέσουμε τον αριθμό των τιμών εξόδου της συνάρτησης κατακερματισμού Ν ισοδυναμεί n . Ποιος πρέπει να είναι ο αριθμός; κ ώστε για μια συγκεκριμένη τιμή Χ και αξίες Υ1, ,Υκ η πιθανότητα ότι για τουλάχιστον ένα Yi η ισότητα

H(X) = H(Y)

θα ήταν μεγαλύτερο από 0,5.

Για ένα Υ η πιθανότητα ότι H(X) = H(Y) , είναι ίσο 1/n .

Αντίστοιχα, η πιθανότητα ότι , είναι ίσο 1 – 1/n .

Αν δημιουργήσετε κ τιμές, τότε η πιθανότητα να μην υπάρχουν αντιστοιχίες για κανένα από αυτά είναι ίση με το γινόμενο των πιθανοτήτων που αντιστοιχούν σε μία τιμή, δηλ. (1 – 1/n)k .

Επομένως, η πιθανότητα τουλάχιστον ενός αγώνα είναι

1 - (1 - 1/n)k

Έτσι, ανακαλύψαμε ότι για m -Κωδικός κατακερματισμού bit είναι αρκετός για να διαλέξετε 2μ-1 μηνύματα έτσι ώστε η πιθανότητα αντιστοίχισης κωδικών κατακερματισμού να είναι μεγαλύτερη από 0,5.

Τώρα εξετάστε το ακόλουθο πρόβλημα: ας υποδηλώσουμε P(n,k) η πιθανότητα ότι στο σύνολο των κ στοιχεία, καθένα από τα οποία μπορεί να πάρει n τιμές, υπάρχουν τουλάχιστον δύο με τις ίδιες τιμές. Με τι πρέπει να είναι ίσο; κ , να P(n,k) θα ήταν περισσότερο 0,5 ?

Ο αριθμός των διαφορετικών τρόπων επιλογής στοιχείων με τέτοιο τρόπο ώστε να μην υπάρχουν διπλότυπα είναι ίσος με

n(n-1) ... (n-k+1)=n!/(n-k)!

Οι συνολικοί δυνατοί τρόποι επιλογής στοιχείων είναι n k

Η πιθανότητα να μην υπάρχουν διπλότυπα είναι ίση με n!/(n-k)!n k

Η πιθανότητα να υπάρχουν διπλότυπα είναι αντίστοιχα ίση με

1 - n!/(n-k)!nk P(n, k) = 1 - n! / ((n-k)! x nk) = 1 - (n x (n-1) x ... x (n-k-1)) / nk = 1 - [ (n-1)/n x (n-2)/n x ... x (n-k+1)/n] = 1 - [(1- 1/n) x (1 - 2/n) x ... x (1 - (k-1)/n)]

Εάν ο κωδικός κατακερματισμού έχει μήκος m bit, δηλ. δέχεται αξίες λοιπόν

Αυτό το αποτέλεσμα ονομάζεται «παράδοξο των γενεθλίων» γιατί, σύμφωνα με το παραπάνω σκεπτικό, για να είναι μεγαλύτερη από 0,5 η πιθανότητα δύο ατόμων να έχουν τα ίδια γενέθλια, πρέπει να υπάρχουν μόνο 23 άτομα στην ομάδα. Αυτό το αποτέλεσμα φαίνεται εκπληκτικό, ίσως επειδή για οποιοδήποτε άτομο σε μια ομάδα, η πιθανότητα τα γενέθλιά του να συμπέσουν με τα γενέθλια κάποιου άλλου στην ομάδα είναι πολύ μικρή.

Ας επιστρέψουμε στην εξέταση των ιδιοτήτων των συναρτήσεων κατακερματισμού. Ας υποθέσουμε ότι χρησιμοποιείται ένας κωδικός κατακερματισμού 64-bit. Μπορούμε να θεωρήσουμε ότι αυτό είναι επαρκές και επομένως ασφαλές μήκος για έναν κωδικό κατακερματισμού. Για παράδειγμα, εάν ο κρυπτογραφημένος κωδικός κατακερματισμού ΜΕ μεταδίδεται με το αντίστοιχο μη κρυπτογραφημένο μήνυμα Μ , τότε ο εχθρός θα χρειαστεί να βρει Μ' τέτοια που

N (M") = N (M) ,

προκειμένου να αντικαταστήσει το μήνυμα και να εξαπατήσει τον παραλήπτη. Κατά μέσο όρο, ένας αντίπαλος πρέπει να αναζητήσει 263 μηνύματα για να βρει ένα του οποίου ο κωδικός κατακερματισμού είναι ίσος με το μήνυμα που υποκλαπεί.

Ωστόσο, είναι δυνατοί διάφοροι τύποι επιθέσεων με βάση το παράδοξο γενεθλίων. Η ακόλουθη στρατηγική είναι δυνατή:

1. Ο εχθρός δημιουργεί 2 m/2 επιλογές μηνυμάτων, καθεμία από τις οποίες έχει κάποιο συγκεκριμένο νόημα. Ο αντίπαλος προετοιμάζει τον ίδιο αριθμό μηνυμάτων, καθένα από τα οποία είναι ψεύτικο και προορίζεται να αντικαταστήσει το πραγματικό μήνυμα.

2. Τα δύο σύνολα μηνυμάτων συγκρίνονται για να βρεθεί ένα ζευγάρι μηνυμάτων που έχουν τον ίδιο κωδικό κατακερματισμού. Η πιθανότητα επιτυχίας σύμφωνα με το «παράδοξο των γενεθλίων» είναι μεγαλύτερη από 0,5. Εάν δεν βρεθεί ένα ζεύγος που ταιριάζει, τότε δημιουργούνται επιπλέον πρωτότυπα και ψεύτικα μηνύματα μέχρι να βρεθεί ένα ζεύγος.

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

Έτσι, εάν χρησιμοποιείται ένας κωδικός κατακερματισμού 64-bit, η απαιτούμενη υπολογιστική πολυπλοκότητα είναι της τάξης του 232.

Τέλος, σημειώστε ότι το μήκος του κωδικού κατακερματισμού πρέπει να είναι αρκετά μεγάλο. Ένα μήκος 64 bit δεν θεωρείται επί του παρόντος ασφαλές. Είναι προτιμότερο το μήκος να είναι της τάξης των 100 bit.

Χρησιμοποιώντας μια κρυπτογραφημένη αλυσίδα μπλοκ

Υπάρχουν διάφορες συναρτήσεις κατακερματισμού που βασίζονται στη δημιουργία μιας αλυσίδας κρυπτογραφημένων μπλοκ, αλλά χωρίς τη χρήση μυστικού κλειδιού. Μια τέτοια συνάρτηση κατακερματισμού προτάθηκε από τον Rabin. Μήνυμα Μ χωρίζεται σε μπλοκ σταθερού μήκους Μ1, Μ2, . . . , MN και χρησιμοποιεί έναν αλγόριθμο συμμετρικής κρυπτογράφησης όπως το DES για τον υπολογισμό του κωδικού κατακερματισμού σολ ως εξής:

H 0 - αρχική τιμή N i = E Mi σολ = H N

Αυτό είναι παρόμοιο με τη χρήση κρυπτογράφησης CBC, αλλά σε αυτήν την περίπτωση δεν υπάρχει μυστικό κλειδί. Όπως με κάθε απλή συνάρτηση κατακερματισμού, αυτός ο αλγόριθμος είναι επιρρεπής σε μια "επίθεση γενεθλίων" και εάν ο αλγόριθμος κρυπτογράφησης είναι DES και δημιουργείται μόνο ένας κωδικός κατακερματισμού 64-bit, τότε το σύστημα θεωρείται αρκετά ευάλωτο.

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

· Χρησιμοποιώντας τον αλγόριθμο που περιγράφεται παραπάνω, υπολογίστε τον μη κρυπτογραφημένο κωδικό κατακερματισμού σολ .

· Δημιουργήστε ένα ψεύτικο μήνυμα στη φόρμα Q1, Q2, . . . , QN-2 .

· Υπολογίστε N i = E Qi Για 1 <= i <= N-2 .

· Δημιουργία 2 m/2 τυχαία μπλοκ Χ και για κάθε τέτοιο μπλοκ Χ υπολογίζω Ε Χ . Δημιουργήστε επιπλέον 2 m/2 τυχαίο μπλοκ Υ και για κάθε μπλοκ Υ υπολογίζω D Y [G] , Πού ρε – αντίστοιχη λειτουργία αποκωδικοποίησης μι . Με βάση το παράδοξο των γενεθλίων, είναι πολύ πιθανό αυτή η ακολουθία να περιέχει μπλοκ Χ Και Υ τέτοια που E X = D Y [Y] .

· Δημιουργήστε ένα μήνυμα Q1, Q2, . . . , QN-2, X, Y . Αυτό το μήνυμα έχει έναν κωδικό κατακερματισμού σολ και επομένως μπορεί να χρησιμοποιηθεί σε συνδυασμό με έναν κρυπτογραφημένο έλεγχο ταυτότητας.

Αυτή η μορφή επίθεσης είναι γνωστή ως επίθεση "συνάντηση στη μέση". Διάφορες μελέτες προτείνουν πιο λεπτές μεθόδους για την ενίσχυση της προσέγγισης που βασίζεται σε blockchain. Για παράδειγμα, οι Davis και Price περιέγραψαν τα εξής:

Μια άλλη επιλογή είναι δυνατή:

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

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

Λειτουργία κατακερματισμού MD5

Εξετάστε τον αλγόριθμο σύνοψης μηνυμάτων MD5 (RFC 1321) που αναπτύχθηκε από τον Ron Rivest του MIT.

Λογική εκτέλεσης MD5

Ο αλγόριθμος λαμβάνει ένα μήνυμα αυθαίρετου μήκους ως είσοδο και παράγει μια σύνοψη μηνύματος 128 bit ως έξοδο. Ο αλγόριθμος αποτελείται από τα ακόλουθα βήματα:

Ρύζι. 8.1.Λογική εκτέλεσης MD5

Βήμα 1: Προσθέστε bits που λείπουν

Το μήνυμα συμπληρώνεται έτσι ώστε το μήκος του να γίνει 448 modulo 512(). Αυτό σημαίνει ότι το μήκος του επισυναπτόμενου μηνύματος είναι 64 bit μικρότερο από ένα πολλαπλάσιο του 512. Η προσάρτηση γίνεται πάντα, ακόμα κι αν το μήνυμα έχει το σωστό μήκος. Για παράδειγμα, εάν ένα μήνυμα έχει μήκος 448 bit, συμπληρώνεται με 512 bit για να γίνει 960 bit. Έτσι, ο αριθμός των bit που προστίθενται κυμαίνεται από 1 έως 512.

Η πρόσθεση αποτελείται από ένα ακολουθούμενο από τον απαιτούμενο αριθμό μηδενικών.

Βήμα 2: Προσθήκη μήκους

Μια αναπαράσταση 64-bit του μήκους του αρχικού (πριν από την προσάρτηση) μηνύματος σε bit προστίθεται στο αποτέλεσμα του πρώτου βήματος. Εάν το αρχικό μήκος είναι μεγαλύτερο από 2 64, τότε χρησιμοποιούνται μόνο τα τελευταία 64 bit. Έτσι, το πεδίο περιέχει το μήκος του αρχικού modulo μηνύματος 2 64.

Τα δύο πρώτα βήματα παράγουν ένα μήνυμα του οποίου το μήκος είναι πολλαπλάσιο των 512 bit. Αυτό το εκτεταμένο μήνυμα αναπαρίσταται ως μια ακολουθία μπλοκ 512 bit Y 0 , Y 1 , . . ., Y L-1, με το συνολικό μήκος του εκτεταμένου μηνύματος να είναι L * 512 bit. Έτσι, το μήκος του ληφθέντος εκτεταμένου μηνύματος είναι πολλαπλάσιο των δεκαέξι λέξεων των 32 bit.

Ρύζι. 8.2.Εκτεταμένη Δομή Μηνυμάτων

Βήμα 3: Εκκίνηση MD Buffer

Χρησιμοποιείται buffer 128 bit για την αποθήκευση των ενδιάμεσων και τελικών αποτελεσμάτων της συνάρτησης κατακερματισμού. Το buffer μπορεί να αναπαρασταθεί ως τέσσερις καταχωρητές 32-bit (A, B, C, D). Αυτοί οι καταχωρητές αρχικοποιούνται με τους ακόλουθους δεκαεξαδικούς αριθμούς:

A = 01234567 B = 89ABCDEF C = FEDCBA98 D = 76543210

Βήμα 4: Επεξεργαστείτε μια ακολουθία μπλοκ 512 bit (16 λέξεων).

Η βάση του αλγορίθμου είναι μια ενότητα που αποτελείται από τέσσερις κυκλικές επεξεργασίες, που ορίζονται ως HMD5. Οι τέσσερις βρόχοι έχουν παρόμοια δομή, αλλά κάθε βρόχος χρησιμοποιεί μια διαφορετική στοιχειώδη λογική συνάρτηση, που συμβολίζεται με f F , f G , f H , και f I , αντίστοιχα.

Ρύζι. 8.3.Επεξεργασία του επόμενου μπλοκ 512-bit

Κάθε βρόχος λαμβάνει ως είσοδο το τρέχον μπλοκ 512 bit Y q που υφίσταται επεξεργασία και την τιμή 128 bit του buffer ABCD, που είναι η ενδιάμεση τιμή σύνοψης, και τροποποιεί τα περιεχόμενα αυτού του buffer. Κάθε βρόχος χρησιμοποιεί επίσης το ένα τέταρτο του πίνακα 64 στοιχείων T, που δημιουργήθηκε από τη συνάρτηση sin. Το i-ο στοιχείο του T, που συμβολίζεται με T[i], έχει τιμή ίση με το ακέραιο μέρος του 2 32 * abs (sin (i)), το i δίνεται σε ακτίνια. Δεδομένου ότι το abs(sin(i)) είναι ένας αριθμός μεταξύ 0 και 1, κάθε στοιχείο του T είναι ένας ακέραιος αριθμός που μπορεί να αναπαρασταθεί με 32 bit. Ο πίνακας παρέχει ένα "τυχαίο" σύνολο τιμών 32-bit που θα πρέπει να εξαλείψει οποιαδήποτε κανονικότητα στα δεδομένα εισόδου.

Για να ληφθεί MD q+1, η έξοδος των τεσσάρων βρόχων προστίθεται modulo 2 32 στο MD q . Η προσθήκη εκτελείται ανεξάρτητα για καθεμία από τις τέσσερις λέξεις στο buffer.

Η F είναι μια από τις στοιχειώδεις συναρτήσεις f F , f G , f H , f I .

Ένας πίνακας λέξεων X 32 bit περιέχει την τιμή του τρέχοντος μπλοκ εισόδου 512 bit που βρίσκεται υπό επεξεργασία. Κάθε βρόχος εκτελείται 16 φορές και εφόσον κάθε μπλοκ μηνύματος εισόδου υποβάλλεται σε επεξεργασία σε τέσσερις βρόχους, κάθε μπλοκ μηνύματος εισόδου επεξεργάζεται σύμφωνα με το σχήμα που φαίνεται στο Σχήμα. 4, 64 φορές. Αν σκεφτούμε ένα μπλοκ εισόδου 512 bit ως δεκαέξι λέξεις 32 bit, τότε κάθε λέξη εισόδου 32 bit χρησιμοποιείται τέσσερις φορές, μία φορά σε κάθε κύκλο, και κάθε στοιχείο του πίνακα T, που αποτελείται από 64 λέξεις 32 bit, είναι χρησιμοποιήθηκε μόνο μία φορά. Μετά από κάθε βήμα του βρόχου, οι τέσσερις λέξεις A, B, C και D περιστρέφονται προς τα αριστερά Σε κάθε βήμα, αλλάζει μόνο μία από τις τέσσερις λέξεις του buffer ABCD. Επομένως, κάθε λέξη του buffer τροποποιείται 16 φορές και στη συνέχεια μια 17η φορά στο τέλος για να παραχθεί η τελική έξοδος αυτού του μπλοκ.

σύνοψη.

2. Ταχύτητα: η εφαρμογή λογισμικού του αλγορίθμου πρέπει να είναι αρκετά γρήγορη. Συγκεκριμένα, ο αλγόριθμος πρέπει να είναι αρκετά γρήγορος σε αρχιτεκτονική 32 bit. Επομένως, ο αλγόριθμος βασίζεται σε ένα απλό σύνολο στοιχειωδών λειτουργιών σε λέξεις 32 bit.

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

4. Επιθυμητή είναι η αρχιτεκτονική των μικρών endian: Ορισμένες αρχιτεκτονικές επεξεργαστών (όπως η γραμμή Intel 80xxx) αποθηκεύουν τα αριστερά byte μιας λέξης στη θέση διεύθυνσης μικρού-ενδιάνικου byte. Άλλα (όπως το SUN Sparcstation) αποθηκεύουν τα δεξιά byte της λέξης στη θέση διεύθυνσης χαμηλού byte (δεν χρησιμοποιείται η μεγάλη πρόσθετη σταθερά MD4 στον πρώτο βρόχο. Μια παρόμοια πρόσθετη σταθερά χρησιμοποιείται για καθένα από τα βήματα του δεύτερου βρόχου Μια άλλη πρόσθετη σταθερά χρησιμοποιείται για κάθε ένα από τα βήματα στον τρίτο βρόχο. Είναι απίθανο να επιλέγονται τυχαία δύο μηνύματα, ακόμη και αν είναι σαφώς παρόμοια μοτίβα που παράγουν την ίδια τιμή εξόδου έχει ως αποτέλεσμα την ίδια έξοδο για δύο διαφορετικές τιμές εισόδου στο buffer ABCD. Δεν υπάρχει τρόπος να επεκταθεί αυτή η προσέγγιση σε μια επιτυχημένη επίθεση.

Είναι το ίδιο χασίσι "συνάρτηση κατακερματισμού"



, γνωστός και ως χασίσι, αυτή είναι η αγγλική λέξη hash, η οποία στα ρωσικά χρησιμοποιείται συχνότερα σε σύνθετες λέξεις "συνάρτηση κατακερματισμού", "άθροισμα κατακερματισμού" ή "αλγόριθμος κατακερματισμού". Ας προσπαθήσουμε να καταλάβουμε τι είναι και γιατί χρειάζεται.

Ο κατακερματισμός αναφέρεται στον ντετερμινιστικό (αδιαμφισβήτητο και επακριβώς γνωστό) υπολογισμό ενός συνόλου χαρακτήρων σταθερού μήκους που βασίζονται σε δεδομένα εισόδου αυθαίρετου μήκους. Σε αυτήν την περίπτωση, η αλλαγή τουλάχιστον ενός χαρακτήρα στα δεδομένα προέλευσης εγγυάται (με πιθανότητα κοντά στο 100%) ότι η προκύπτουσα σταθερή συμβολοσειρά θα είναι διαφορετική. Μπορούμε να πούμε ότι ο κατακερματισμός είναι «λήψη δακτυλικού αποτυπώματος» από ένα μεγάλο σύνολο δεδομένων.

Προς τι όλα αυτά; Ας δούμε ένα παράδειγμα: κατεβάσατε ένα μεγάλο αρχείο (ας πούμε ένα αρχείο zip) και θέλετε να βεβαιωθείτε ότι δεν υπάρχουν σφάλματα σε αυτό. Μπορείτε να μάθετε το “hash ποσό” (το ίδιο δακτυλικό αποτύπωμα) αυτού του αρχείου και να το συγκρίνετε με αυτό που δημοσιεύεται στον ιστότοπο. Εάν οι συμβολοσειρές αθροίσματος κατακερματισμού είναι διαφορετικές, τότε το αρχείο είναι σίγουρα "σπασμένο".

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


Είναι στη λίστα.



Συνιστούμε να διαβάσετε

Κορυφή