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




