Μια κρυπτογραφική συνάρτηση κατακερματισμού (CHF) είναι ένας αλγόριθμος που μπορεί να εκτελεστεί σε δεδομένα όπως ένα μεμονωμένο αρχείο ή έναν κωδικό πρόσβασης για την παραγωγή μιας τιμής που ονομάζεται άθροισμα ελέγχου.
Η κύρια χρήση ενός CHF είναι η επαλήθευση της γνησιότητας ενός τμήματος δεδομένων. Δύο αρχεία μπορούν να θεωρηθούν πανομοιότυπα μόνο εάν τα αθροίσματα ελέγχου που δημιουργούνται από κάθε αρχείο, χρησιμοποιώντας την ίδια κρυπτογραφική συνάρτηση κατακερματισμού, είναι πανομοιότυπα.
Ορισμένες συνήθως χρησιμοποιούμενες συναρτήσεις κατακερματισμού κρυπτογράφησης περιλαμβάνουν MD5 και SHA-1, αν και υπάρχουν και πολλές άλλες. Αυτές αναφέρονται συχνά ως "συναρτήσεις κατακερματισμού", αλλά αυτό δεν είναι τεχνικά σωστό. Η συνάρτηση κατακερματισμού είναι ένας γενικός όρος που περιλαμβάνει CHF μαζί με άλλα είδη αλγορίθμων όπως κυκλικούς ελέγχους πλεονασμού.
Συναρτήσεις κατακερματισμού κρυπτογράφησης: Περίπτωση χρήσης
Ας υποθέσουμε ότι κατεβάσατε την πιο πρόσφατη έκδοση του προγράμματος περιήγησης Firefox. Για κάποιο λόγο, χρειάστηκε να το κατεβάσετε από ιστότοπο διαφορετικό από αυτόν της Mozilla. Επειδή δεν φιλοξενείται σε ιστότοπο που έχετε μάθει να εμπιστεύεστε, θα θέλατε να βεβαιωθείτε ότι το αρχείο εγκατάστασης που μόλις κατεβάσατε είναι ακριβώς το ίδιο με αυτό που προσφέρει η Mozilla.
Χρησιμοποιώντας έναν υπολογιστή αθροίσματος ελέγχου, υπολογίζετε ένα άθροισμα ελέγχου χρησιμοποιώντας μια συγκεκριμένη συνάρτηση κατακερματισμού κρυπτογράφησης, όπως η SHA-2, και στη συνέχεια τη συγκρίνετε με αυτήν που δημοσιεύτηκε στον ιστότοπο της Mozilla. Εάν είναι ίσες, μπορείτε να είστε βέβαιοι ότι η λήψη που έχετε είναι αυτή που η Mozilla είχε σκοπό να έχετε.
Μπορούν να αντιστραφούν οι κρυπτογραφικές συναρτήσεις κατακερματισμού;
Οι κρυπτογραφικές συναρτήσεις κατακερματισμού έχουν σχεδιαστεί για να αποτρέπουν τη δυνατότητα αντιστροφής των αθροισμάτων ελέγχου που δημιουργούν στα αρχικά κείμενα. Ωστόσο, παρόλο που είναι σχεδόν αδύνατο να αντιστραφούν, δεν είναι 100 τοις εκατό εγγυημένο για την προστασία των δεδομένων.
Οι χάκερ μπορούν να χρησιμοποιήσουν έναν πίνακα ουράνιου τόξου για να καταλάβουν το απλό κείμενο ενός αθροίσματος ελέγχου. Οι πίνακες Rainbow είναι λεξικά που απαριθμούν χιλιάδες, εκατομμύρια ή ακόμα και δισεκατομμύρια αθροίσματα ελέγχου μαζί με την αντίστοιχη τιμή απλού κειμένου τους.
Αν και αυτό δεν αντιστρέφει τεχνικά τον κρυπτογραφικό αλγόριθμο κατακερματισμού, μπορεί επίσης να είναι, δεδομένου ότι είναι τόσο απλό να γίνει. Στην πραγματικότητα, δεδομένου ότι κανένας πίνακας ουράνιου τόξου δεν μπορεί να απαριθμήσει κάθε πιθανό άθροισμα ελέγχου που υπάρχει, είναι συνήθως χρήσιμοι μόνο για απλές φράσεις όπως αδύναμους κωδικούς πρόσβασης.
Ακολουθεί μια απλοποιημένη έκδοση ενός πίνακα ουράνιου τόξου για να δείξει πώς θα λειτουργούσε κάποιος όταν χρησιμοποιούσε την κρυπτογραφική συνάρτηση κατακερματισμού SHA-1:
Παράδειγμα πίνακα Rainbow | |
---|---|
Plaintext | SHA-1 Άθροισμα ελέγχου |
12345 | 8cb2237d0679ca88db6464eac60da96345513964 |
password1 | e38ad214943daad1d64c102faec29de4afe9da3d |
ilovemydog | a25fb3505406c9ac761c8428692fbf5d5ddf1316 |
Jenny400 | 7d5eb0173008fe55275d12e9629eef8bdb408c1f |
dallas1984 | c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2 |
Ένας χάκερ πρέπει να γνωρίζει ποιος αλγόριθμος κρυπτογραφικού κατακερματισμού χρησιμοποιήθηκε για τη δημιουργία των αθροισμάτων ελέγχου για να υπολογίσει τις τιμές.
Για πρόσθετη προστασία, ορισμένοι ιστότοποι που αποθηκεύουν κωδικούς πρόσβασης χρηστών εκτελούν πρόσθετες λειτουργίες στον κρυπτογραφικό αλγόριθμο κατακερματισμού μετά τη δημιουργία της τιμής αλλά πριν την αποθήκευσή της. Αυτή η διαδικασία παράγει μια νέα τιμή που καταλαβαίνει μόνο ο διακομιστής web και η οποία δεν ταιριάζει με το αρχικό άθροισμα ελέγχου.
Για παράδειγμα, μετά την εισαγωγή ενός κωδικού πρόσβασης και τη δημιουργία του αθροίσματος ελέγχου, μπορεί να διαχωριστεί σε πολλά μέρη και να αναδιαταχθεί πριν αποθηκευτεί στη βάση δεδομένων κωδικών πρόσβασης ή ορισμένοι χαρακτήρες ενδέχεται να αντικατασταθούν με άλλους. Όταν επιχειρείται έλεγχος ταυτότητας την επόμενη φορά που θα συνδεθεί ο χρήστης, ο διακομιστής αντιστρέφει αυτήν την πρόσθετη λειτουργία και το αρχικό άθροισμα ελέγχου δημιουργείται ξανά για να επαληθευτεί ότι ο κωδικός πρόσβασης ενός χρήστη είναι έγκυρος.
Η λήψη αυτών των βημάτων περιορίζει τη χρησιμότητα ενός hack όπου κλέβονται όλα τα αθροίσματα ελέγχου. Η ιδέα είναι να εκτελέσετε μια λειτουργία που είναι άγνωστη, επομένως εάν ο χάκερ γνωρίζει τον κρυπτογραφικό αλγόριθμο κατακερματισμού αλλά όχι τον προσαρμοσμένο, τότε το να γνωρίζει τα αθροίσματα ελέγχου κωδικών πρόσβασης δεν είναι χρήσιμο.
Κωδικοί πρόσβασης και κρυπτογραφικές συναρτήσεις κατακερματισμού
Μια βάση δεδομένων αποθηκεύει τους κωδικούς πρόσβασης χρήστη με τρόπο παρόμοιο με έναν πίνακα ουράνιου τόξου. Όταν εισαγάγετε τον κωδικό πρόσβασής σας, δημιουργείται το άθροισμα ελέγχου και συγκρίνεται με αυτό που έχει καταχωρηθεί με το όνομα χρήστη σας. Στη συνέχεια, σας εκχωρείται πρόσβαση εάν τα δύο είναι ίδια.
Δεδομένου ότι ένα CHF παράγει ένα μη αναστρέψιμο άθροισμα ελέγχου, είναι ασφαλές για εσάς να κάνετε τον κωδικό πρόσβασής σας τόσο απλό όσο 12345, αντί για 12@34 $5, απλώς και μόνο επειδή τα ίδια τα αθροίσματα ελέγχου δεν μπορούν να γίνουν κατανοητά; Όχι, και να γιατί.
Αυτοί οι δύο κωδικοί πρόσβασης είναι αδύνατο να αποκρυπτογραφηθούν κοιτάζοντας απλώς τα αθροίσματα ελέγχου:
MD5 για 12345: 827ccb0eea8a706c4c34a16891f84e7b
MD5 για 12@34$5: a4d3cc004f487b18b2ccd4853053818b
Με την πρώτη ματιά, μπορεί να πιστεύετε ότι είναι καλό να χρησιμοποιήσετε έναν από αυτούς τους κωδικούς πρόσβασης. Αυτό ισχύει εάν ένας εισβολέας προσπάθησε να βρει τον κωδικό πρόσβασής σας μαντεύοντας το άθροισμα ελέγχου MD5, κάτι που κανείς δεν το κάνει, αλλά δεν ισχύει εάν εκτελεστεί επίθεση ωμής δύναμης ή λεξικού, που είναι μια κοινή τακτική.
Συμβαίνει μια επίθεση ωμής βίας όταν γίνονται πολλαπλές τυχαίες μαχαιριές κατά την εικασία ενός κωδικού πρόσβασης. Σε αυτήν την περίπτωση, θα ήταν εύκολο να μαντέψει κανείς το 12345, αλλά πολύ δύσκολο να καταλάβει τυχαία το άλλο. Μια επίθεση λεξικού είναι παρόμοια στο ότι ο εισβολέας μπορεί να δοκιμάσει κάθε λέξη, αριθμό ή φράση από μια λίστα κοινών (και όχι και τόσο συνηθισμένων) κωδικών πρόσβασης και ο 12345 είναι ένας από αυτούς τους συνηθισμένους κωδικούς πρόσβασης.
Ακόμη κι αν οι κρυπτογραφικές συναρτήσεις κατακερματισμού παράγουν αθροίσματα ελέγχου που είναι δύσκολο έως αδύνατον να μαντέψουν, θα πρέπει να χρησιμοποιείτε έναν σύνθετο κωδικό πρόσβασης για όλους τους διαδικτυακούς και τοπικούς λογαριασμούς χρηστών σας.
Περισσότερες πληροφορίες σχετικά με τις κρυπτογραφικές συναρτήσεις κατακερματισμού
Μπορεί να φαίνεται ότι οι κρυπτογραφικές συναρτήσεις κατακερματισμού σχετίζονται με την κρυπτογράφηση, αλλά και οι δύο λειτουργούν με διαφορετικούς τρόπους.
Η κρυπτογράφηση είναι μια αμφίδρομη διαδικασία όπου κάτι κρυπτογραφείται για να γίνει μη αναγνώσιμο και στη συνέχεια αποκρυπτογραφείται αργότερα για να χρησιμοποιηθεί ξανά κανονικά. Μπορείτε να κρυπτογραφήσετε τα αρχεία που έχετε αποθηκεύσει έτσι ώστε οποιοσδήποτε έχει πρόσβαση σε αυτά να μην μπορεί να τα χρησιμοποιήσει ή μπορείτε να χρησιμοποιήσετε κρυπτογράφηση μεταφοράς αρχείων για να κρυπτογραφήσετε αρχεία που μετακινούνται μέσω δικτύου, όπως αυτά που ανεβάζετε ή κατεβάζετε στο διαδίκτυο.
Οι κρυπτογραφικές συναρτήσεις κατακερματισμού λειτουργούν διαφορετικά, δεδομένου ότι τα αθροίσματα ελέγχου δεν προορίζονται να αντιστραφούν με έναν ειδικό κωδικό πρόσβασης αφαίρεσης κατακερματισμού. Ο μόνος σκοπός που εξυπηρετούν τα CHF είναι η σύγκριση δύο τμημάτων δεδομένων, όπως κατά τη λήψη αρχείων, την αποθήκευση κωδικών πρόσβασης και την αφαίρεση δεδομένων από μια βάση δεδομένων.
Είναι δυνατό μια κρυπτογραφική συνάρτηση κατακερματισμού να παράγει το ίδιο άθροισμα ελέγχου για διαφορετικά κομμάτια δεδομένων. Όταν συμβαίνει αυτό, ονομάζεται σύγκρουση, το οποίο είναι ένα τεράστιο πρόβλημα, δεδομένου ότι το όλο θέμα της συνάρτησης είναι να γίνονται μοναδικά αθροίσματα ελέγχου για κάθε εισαγωγή δεδομένων σε αυτήν.
Οι συγκρούσεις μπορεί να συμβούν επειδή κάθε CHF παράγει μια τιμή σταθερού μήκους ανεξάρτητα από τα δεδομένα εισόδου. Για παράδειγμα, η κρυπτογραφική συνάρτηση κατακερματισμού MD5 δημιουργεί 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983 και e10adc3949baF08e75 για συνολικά διαφορετικά δεδομένα
Το πρώτο άθροισμα ελέγχου είναι από 12345. Το δεύτερο δημιουργήθηκε από περισσότερα από 700 γράμματα και αριθμούς και το τρίτο είναι από 123456. Και οι τρεις είσοδοι έχουν διαφορετικά μήκη, αλλά τα αποτελέσματα έχουν πάντα μόνο 32 χαρακτήρες, αφού χρησιμοποιήθηκε άθροισμα ελέγχου MD5.
Δεν υπάρχει όριο στον αριθμό των αθροισμάτων ελέγχου που θα μπορούσαν να δημιουργηθούν, επειδή κάθε μικροσκοπική αλλαγή στην είσοδο υποτίθεται ότι παράγει ένα εντελώς διαφορετικό άθροισμα ελέγχου. Επειδή υπάρχει ένα όριο στον αριθμό των αθροισμάτων ελέγχου που μπορεί να παράγει ένα CHF, υπάρχει πάντα η πιθανότητα να αντιμετωπίσετε μια σύγκρουση.
Γι' αυτό δημιουργήθηκαν άλλες συναρτήσεις κατακερματισμού κρυπτογράφησης. Ενώ το MD5 δημιουργεί μια τιμή 32 χαρακτήρων, το SHA-1 δημιουργεί 40 χαρακτήρες και το SHA-2 (512) δημιουργεί 128. Όσο μεγαλύτερος είναι ο αριθμός των χαρακτήρων που έχει το άθροισμα ελέγχου, τόσο μικρότερη είναι η πιθανότητα να συμβεί σύγκρουση.