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

Αγαπητέ Αξιότημε Πελάτη,

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

Ευχαριστώ.

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

Σύντομη απάντηση: ΝΑΙ, αλλά γιατί;

Για να καταλάβετε αυτό, πρέπει να καταλάβετε την έννοια του "κωδικού πρόσβασης".

Τι είναι το Hash;

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

Μερικοί από τους πιο δημοφιλείς αλγόριθμους κατακερματισμού:

  • MD5 - Δεδομένου ότι οποιαδήποτε δεδομένα θα επιστρέψουν ένα μοναδικό κατακερματισμό 32 χαρακτήρων.
  • SHA1 - Δεδομένου ότι οποιαδήποτε δεδομένα θα επιστρέψουν ένα μοναδικό κατακερματισμό 40 χαρακτήρων.
  • SHA256 - Δεδομένου ότι οποιαδήποτε δεδομένα θα επιστρέψουν ένα μοναδικό κατακερματισμό χαρακτήρων 64 χαρακτήρων. που σχεδιάστηκε από την Εθνική Υπηρεσία Ασφαλείας.

Ας δούμε ένα απλό παράδειγμα:

Το όνομά μου είναι "Jamin Becker"

Η αναπαράσταση κατακερματισμού MD5 του ονόματος μου είναι:

 eeb7048c69b088739908f5f5144cd1f5 

Η SHA1 αναπαράσταση του ονόματος μου είναι:

 ae480b717c08b6ab36a85075864e35b9c528d7c5 

Το SHA256 hash αναπαράσταση του ονόματος μου είναι:

 a477cc14eae5fd94fe4cb20b36ec80ac6983bad44973ae7f4f230010f01289b0 

Γιατί είναι το Hashing Secure;

Ο κατακερματισμός της αιτίας είναι ασφαλής: ο κατακερματισμός είναι μια λειτουργία ενός τρόπου. Δεν μπορούν να αντιστραφούν. Δεδομένης μιας συμβολοσειράς "eeb7048c69b088739908f5f5144cd1f5", δεν υπάρχει τρόπος να αντιστραφεί ο κατακερματισμός MD5 για να επιστρέψετε "Jamin Becker". Αυτό οφείλεται στον τρόπο με τον οποίο οι μαθηματικοί και οι προγραμματιστές δομήθηκαν τον αλγόριθμο κατακερματισμού MD5 και επανέρχεται σε ένα βασικό πρόβλημα επιστήμης υπολογιστών που ονομάζεται "P vs NP". Τα P και NP είναι μόνο δύο κατηγορίες αλγορίθμων.

Οι περισσότεροι αλγόριθμοι κατακερματισμού εμπίπτουν σε NP, πράγμα που σημαίνει ότι μπορούν να υπολογιστούν γρήγορα. Ωστόσο, οι αλγόριθμοι "un-hashing" (δηλαδή "eeb7048c69b088739908f5f5144cd1f5" -> "Jamin Becker") εμπίπτουν στην κλάση P και μπορούν να επιλυθούν αποτελεσματικά μόνο σε πολυωνυμικό χρόνο (δηλαδή χρησιμοποιώντας έναν κβαντικό υπολογιστή σημαντικά πιο προηγμένο από τους διαθέσιμους σήμερα).

Γιατί λοιπόν αυτό είναι καλό για ασφάλεια;

Πείτε ότι έχετε εγγραφεί σε έναν ιστότοπο και επιλέξτε τον κωδικό πρόσβασης "12345". Αμέσως, ο ιστότοπος αυτός θα καταργήσει τον κωδικό πρόσβασής σας, πιθανώς με το SHA1, και θα το αποθηκεύσει σε μια βάση δεδομένων. Τώρα κάθε φορά που συνδέεστε, ο ιστότοπος θα αναδημιουργήσει τον κωδικό πρόσβασής σας και θα το συγκρίνει με αυτόν που είναι αποθηκευμένος στη βάση δεδομένων. Αν ταιριάζουν, θα γίνει επιτυχής πιστοποίηση. Αν ο ιστότοπος έχει παραβιαστεί ποτέ και η βάση δεδομένων κωδικού πρόσβασης έχει διαρρεύσει, ο κωδικός πρόσβασης θα εμφανιστεί ως "8cb2237d0679ca88db6464eac60da96345513964" και όχι "12345".

Στρατηγικές επίθεσης Hash

Έτσι, ο επιτιθέμενος έχει την χαστούρη έκδοση του κωδικού μου και δεν υπάρχει τρόπος να το αντιστρέψω σε 12345. Δεν έχω τίποτα να ανησυχώ, σωστά; ΛΑΝΘΑΣΜΕΝΟΣ!

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

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

συμπέρασμα

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

  1. Το μέγεθος έχει σημασία - όσο μεγαλύτερος είναι ο αρχικός κωδικός πρόσβασης, τόσο λιγότερο πιθανό θα εμφανιστεί σε μια λίστα λέξεων
  2. Μην προβλέπετε - αποφύγετε τη χρήση λέξεων όπως "κωδικός πρόσβασης" και "myname123"
  3. Χρησιμοποιήστε ένα μείγμα ειδικών χαρακτήρων, αριθμών, κεφαλαίων και πεζών γραμμάτων

Ποιες είναι οι σκέψεις σου για το hashing; Μοιραστείτε τις απόψεις σας στο παρακάτω σχόλιο.

Πιστοποίηση εικόνας: Δακτυλικό αποτύπωμα Magnifying Glass από τοBigStockPhot