Ένα hash είναι μια συμβολοσειρά σταθερού μήκους (digest) που παράγεται από δεδομένα εισόδου οποιουδήποτε μεγέθους χρησιμοποιώντας μια συνάρτηση κατακερματισμού. Η διαδικασία είναι μονόδρομη—δεν μπορείτε να αποκρυπτογραφήσετε ή να αντιστρέψετε ένα hash για να λάβετε τα αρχικά δεδομένα. Γι' αυτό η "κρυπτογράφηση κατακερματισμού" είναι λανθασμένη ονομασία. Το hashing δεν είναι κρυπτογράφηση.
Δημοφιλείς αλγόριθμοι hash περιλαμβάνουν:
MD5 (παρωχημένο για λόγους ασφαλείας)
SHA-1 (καταργημένο)
SHA-256, SHA-512 (μέρος της οικογένειας SHA-2)
SHA-3
bcrypt, scrypt, Argon2 (για ασφαλή κατακερματισμό κωδικών πρόσβασης)
Το hashing εξυπηρετεί διάφορους σκοπούς στην κυβερνοασφάλεια και την ακεραιότητα των δεδομένων. Βασικοί λόγοι για τη χρήση του hashing περιλαμβάνουν:
Ακεραιότητα Δεδομένων: Διασφαλίζει ότι τα δεδομένα δεν έχουν τροποποιηθεί (π.χ., αθροίσματα ελέγχου αρχείων).
Αποθήκευση Κωδικών Πρόσβασης: Αποθηκεύει με ασφάλεια τους κωδικούς πρόσβασης συγκρίνοντας hashes αντί να αποθηκεύει τους πραγματικούς κωδικούς πρόσβασης.
Ψηφιακές Υπογραφές: Τα hashes είναι υπογεγραμμένα και όχι μεγάλα έγγραφα.
Αποδοτικότητα: Οι μικρές τιμές hash σταθερού μεγέθους είναι πιο γρήγορες στη σύγκριση από τα μεγάλα μπλοκ δεδομένων.
Επειδή τα hashes είναι ντετερμινιστικά και γρήγορα, είναι ιδανικά για εργασίες επαλήθευσης.
Χρήση ενός Η συνάρτηση κατακερματισμού περιλαμβάνει:
Εισαγωγή δεδομένων (π.χ., ένα αρχείο, μια συμβολοσειρά ή ένας κωδικός πρόσβασης).
Επεξεργασία των δεδομένων με έναν αλγόριθμο κατακερματισμού.
Λήψη ενός digest, το οποίο είναι μια συμβολοσειρά σταθερού μεγέθους που αντιπροσωπεύει μοναδικά την είσοδο.
Για προστασία με κωδικό πρόσβασης:
Συνδυάστε τον κωδικό πρόσβασης με ένα salt (τυχαία δεδομένα).
Εφαρμόστε μια ασφαλή συνάρτηση κατακερματισμού (π.χ., bcrypt ή Argon2).
Αποθηκεύστε με ασφάλεια το hash και το salt που προκύπτουν.
Εφόσον τα hashes δεν μπορούν να αντιστραφούν, επαληθεύετε την εισαγωγή (όπως έναν κωδικό πρόσβασης) κατακερματίζοντάς την ξανά και συγκρίνοντάς την με το νέο hashes με το αποθηκευμένο.
Το hashing πρέπει να χρησιμοποιείται όταν:
Πρέπει να επαληθευτεί η ακεραιότητα των δεδομένων (π.χ., έλεγχος για αλλοίωση ή παραβίαση).
Οι κωδικοί πρόσβασης πρέπει να αποθηκεύονται με ασφάλεια (όχι κρυπτογραφημένοι ή απλού κειμένου).
Περιλαμβάνονται ψηφιακές υπογραφές και πιστοποιητικά (το hashing διασφαλίζει την αυθεντικότητα του εγγράφου).
Η γρήγορη σύγκριση δεδομένων είναι απαραίτητη (π.χ., σε πίνακες hashes ή προσωρινές μνήμες).
Το hashing δεν είναι κατάλληλο όταν χρειάζεται να ανακτήσετε τα αρχικά δεδομένα αργότερα—γι' αυτό υπάρχει η κρυπτογράφηση.