Φανταστείτε ότι μπορείτε να πάρετε οποιοδήποτε δεδομένο — μια λέξη, ένα μυθιστόρημα, ένα βίντεο 4 GB — και να το μετατρέψετε σε μια σύντομη σειρά χαρακτήρων σταθερού μήκους που το ταυτοποιεί μοναδικά. Αλλάξτε ένα μόνο κόμμα στο πρωτότυπο και η σειρά γίνεται εντελώς διαφορετική. Και δεν υπάρχει τρόπος να αντιστρέψετε τη διαδικασία για να ανακτήσετε τα αρχικά δεδομένα.
Αυτό ακριβώς κάνει μια κρυπτογραφική συνάρτηση κατακερματισμού. Είναι ένα από τα πιο θεμελιώδη δομικά στοιχεία της σύγχρονης ασφάλειας, και προστατεύει σιωπηλά σχεδόν τα πάντα στην καθημερινή σας δραστηριότητα στο διαδίκτυο.
Η μεταφορά του δακτυλικού αποτυπώματος
Ένα hash λειτουργεί σαν ψηφιακό δακτυλικό αποτύπωμα. Το δακτυλικό σας αποτύπωμα σας ταυτοποιεί μοναδικά, αλλά κανείς δεν μπορεί να ανακατασκευάσει το πρόσωπό σας από αυτό. Παρόμοια, ένα κρυπτογραφικό hash ταυτοποιεί μοναδικά ένα κομμάτι δεδομένων χωρίς να αποκαλύπτει τι είναι αυτά τα δεδομένα.
Τροφοδοτήστε οποιαδήποτε είσοδο σε μια συνάρτηση κατακερματισμού και λαμβάνετε ένα digest (επίσης γνωστό ως τιμή hash ή checksum) — μια σειρά δεκαεξαδικών χαρακτήρων σταθερού μήκους. Ο SHA-256, ένας από τους πιο κοινούς αλγόριθμους, παράγει πάντα 64 χαρακτήρες ανεξαρτήτως μεγέθους εισόδου.
| Είσοδος | SHA-256 digest (πρώτοι 16 χαρακτήρες) |
|---|---|
Hello |
185f8db32271fe25... |
hello |
2cf24dba5fb0a30e... |
| Ολόκληρο dump της Wikipedia | (ακόμα 64 χαρακτήρες) |
Οι τέσσερις βασικές ιδιότητες
Μια συνάρτηση θεωρείται κρυπτογραφική hash μόνο αν ικανοποιεί αυτές τις ιδιότητες:
- Ντετερμινιστική. Η ίδια είσοδος παράγει πάντα την ίδια έξοδο, σε οποιοδήποτε μηχάνημα, οποιαδήποτε στιγμή.
- Μονόδρομη (αντοχή σε εύρεση προεικόνας). Δεδομένου ενός hash, είναι υπολογιστικά ανέφικτο να βρεθεί η αρχική είσοδος. Δεν μπορείτε να «ξε-κατακερματίσετε» δεδομένα.
- Αντοχή σε συγκρούσεις. Είναι πρακτικά αδύνατο να βρεθούν δύο διαφορετικές είσοδοι που παράγουν το ίδιο digest. Για τον SHA-256, οι πιθανότητες τυχαίας σύγκρουσης είναι περίπου 1 στα 2^128 — αριθμός μεγαλύτερος από τα άτομα στο παρατηρήσιμο σύμπαν.
- Φαινόμενο χιονοστιβάδας. Η αλλαγή ενός μόνο bit στην είσοδο αναστρέφει περίπου τα μισά bits της εξόδου. Δεν υπάρχει ανιχνεύσιμο μοτίβο ή σχέση μεταξύ παρόμοιων εισόδων.
Σημαντική διάκριση: Η κατακερματισμός δεν είναι κρυπτογράφηση. Η κρυπτογράφηση είναι αντιστρέψιμη με κλειδί· η κατακερματισμός είναι σκόπιμα μη αντιστρέψιμη. Κρυπτογραφείτε δεδομένα για να τα προστατεύσετε κατά τη μεταφορά. Κατακερματίζετε δεδομένα για να επαληθεύσετε την ακεραιότητά τους ή να αποθηκεύσετε μια απόδειξη χωρίς να κρατήσετε το πρωτότυπο.
Κοινοί αλγόριθμοι κατακερματισμού
MD5 (1991)
- Έξοδος: 128 bits (32 δεκαεξαδικοί χαρακτήρες)
- Κατάσταση: Κρυπτογραφικά σπασμένος. Ερευνητές μπορούν να δημιουργήσουν συγκρούσεις σε δευτερόλεπτα σε laptop.
- Ακόμα χρησιμοποιείται σε: checksums αρχείων για λήψεις χωρίς σχέση με ασφάλεια και παλαιά συστήματα.
SHA-1 (1995)
- Έξοδος: 160 bits (40 δεκαεξαδικοί χαρακτήρες)
- Κατάσταση: Καταργημένος για ασφάλεια. Η Google επέδειξε πρακτική σύγκρουση το 2017 (η επίθεση «SHAttered»).
- Ακόμα χρησιμοποιείται σε: παλαιά αποθετήρια Git, ορισμένα παλαιά πιστοποιητικά.
SHA-256 (2001)
- Έξοδος: 256 bits (64 δεκαεξαδικοί χαρακτήρες)
- Κατάσταση: Τρέχον πρότυπο. Δεν υπάρχουν γνωστές πρακτικές επιθέσεις.
- Χρησιμοποιείται σε: πιστοποιητικά TLS, Bitcoin, κατακερματισμό κωδικών, ψηφιακές υπογραφές, επαλήθευση ακεραιότητας αρχείων.
SHA-3 (2015)
- Έξοδος: Μεταβλητή (συνήθως 256 bits)
- Κατάσταση: Τελευταίο πρότυπο, βασισμένο σε εντελώς διαφορετικό εσωτερικό σχεδιασμό (κατασκευή σφουγγαριού Keccak) από την οικογένεια SHA-2.
- Χρησιμοποιείται σε: μελλοντικά συστήματα, Ethereum, καταστάσεις που απαιτούν ποικιλία αλγορίθμων.
| Αλγόριθμος | Μέγεθος εξόδου | Ασφαλής; | Ταχύτητα |
|---|---|---|---|
| MD5 | 128 bits | Όχι | Πολύ γρήγορος |
| SHA-1 | 160 bits | Όχι | Γρήγορος |
| SHA-256 | 256 bits | Ναι | Μέτριος |
| SHA-3-256 | 256 bits | Ναι | Μέτριος |
Πού χρησιμοποιείται η κρυπτογραφική κατακερματισμός
Αποθήκευση κωδικών
Όταν δημιουργείτε λογαριασμό, ένα σωστά σχεδιασμένο σύστημα δεν αποθηκεύει ποτέ τον κωδικό σας σε απλό κείμενο. Αποθηκεύει το hash. Όταν συνδέεστε, το σύστημα κατακερματίζει αυτό που πληκτρολογείτε και το συγκρίνει με την αποθηκευμένη τιμή. Ακόμη κι αν η βάση δεδομένων παραβιαστεί, οι επιτιθέμενοι παίρνουν hashes — όχι κωδικούς.
Τα σύγχρονα συστήματα πηγαίνουν ακόμα πιο μακριά προσθέτοντας τυχαίο salt (επιπλέον δεδομένα που προστίθενται πριν την κατακερματισμό) και χρησιμοποιώντας σκόπιμα αργούς αλγόριθμους όπως bcrypt, scrypt ή Argon2 για να κάνουν τη δοκιμή brute-force μη πρακτική.
Επαλήθευση ακεραιότητας αρχείων
Οι προμηθευτές λογισμικού δημοσιεύουν checksums SHA-256 δίπλα στις λήψεις τους. Μετά τη λήψη, υπολογίζετε το hash του αρχείου στο μηχάνημά σας και συγκρίνετε. Η αντιστοιχία αποδεικνύει ότι το αρχείο δεν αλλοιώθηκε ή τροποποιήθηκε κατά τη μεταφορά.
Ψηφιακές υπογραφές
Όταν υπογράφετε ψηφιακά ένα έγγραφο, το σύστημα πρώτα κατακερματίζει το έγγραφο και μετά κρυπτογραφεί το hash με το ιδιωτικό σας κλειδί. Ο παραλήπτης το αποκρυπτογραφεί με το δημόσιο κλειδί σας και το συγκρίνει με το δικό του hash του εγγράφου. Αυτό είναι πολύ πιο αποδοτικό από την κρυπτογράφηση ολόκληρου του εγγράφου και αποδεικνύει τόσο τη συγγραφή όσο και την ακεραιότητα.
Blockchain
Κάθε block σε ένα blockchain περιέχει το hash του προηγούμενου block, δημιουργώντας μια αμετάβλητη αλυσίδα. Η τροποποίηση οποιασδήποτε παλαιότερης συναλλαγής αλλάζει το hash του block της, σπάζοντας την αλυσίδα από εκείνο το σημείο και μετά, καθιστώντας την παραποίηση αμέσως ορατή.
Γιατί οι MD5 και SHA-1 θεωρούνται σπασμένοι
Ένας αλγόριθμος κατακερματισμού θεωρείται «σπασμένος» όταν κάποιος μπορεί σκόπιμα να δημιουργήσει δύο διαφορετικές εισόδους που παράγουν το ίδιο hash (μια σύγκρουση). Αυτό υπονομεύει κάθε χρήση που βασίζεται στη μοναδικότητα.
- MD5: Συγκρούσεις μπορούν να δημιουργηθούν σε δευτερόλεπτα. Ερευνητές δημιούργησαν δύο διαφορετικά PDF με πανομοιότυπα MD5 hashes.
- SHA-1: Η επίθεση SHAttered το 2017 παρήγαγε δύο διαφορετικά PDF με το ίδιο SHA-1 hash, απαιτώντας περίπου 6.500 χρόνια υπολογισμού ενός CPU (εφικτό με πόρους cloud).
Πρακτικός κανόνας: Μην χρησιμοποιείτε ποτέ MD5 ή SHA-1 για οτιδήποτε σχετίζεται με ασφάλεια — κωδικούς, πιστοποιητικά, ψηφιακές υπογραφές ή ελέγχους ακεραιότητας όπου μπορεί να εμπλέκεται αντίπαλος. Χρησιμοποιήστε SHA-256 ή SHA-3.
Μάθετε περισσότερα
Η κατακερματισμός είναι μία από εκείνες τις έννοιες που γίνονται διαισθητικές μόλις πειραματιστείτε. Δοκιμάστε να κατακερματίσετε μια πρόταση, μετά αλλάξτε ένα γράμμα και παρατηρήστε το φαινόμενο χιονοστιβάδας με τα μάτια σας.
- Πώς να δημιουργήσετε και να επαληθεύσετε hashes — βήμα-βήμα οδηγός
- Γεννήτρια Hash — υπολογίστε SHA-256, MD5, SHA-512 και άλλα αμέσως στον φυλλομετρητή σας
- Αναγνωριστικό Hash — επικολλήστε ένα άγνωστο hash και αναγνωρίστε τον αλγόριθμό του
