III.

Προστασία της ταυτότητάς σας

Τι ξέρουν οι δικτυακοί τόποι για σας;

Ελέγχετε τις πληροφορίες που δίνετε στους δικτυακούς τόπους που επισκέπτεστε. Δεν πρέπει να δίνετε στους δικτυακούς τόπους περισσότερες πληροφορίες από αυτές που χρειάζονται για να παρέχουν την υπηρεσία που θέλετε. Αν δεν περιμένετε κάποια παράδοση στη διεύθυνση του σπιτιού σας από κάποιον δικτυακό τόπο, πιθανότατα δεν πρέπει να δώσετε τη διεύθυνσή σας μόνο επειδή σας το ζητά η τοποθεσία. Το ίδιο ισχύει και για τον αριθμό τηλεφώνου σας, το πλήρες ονοματεπώνυμο ή ακόμα και τη διεύθυνση e-mail σας. Όσο λιγότερες πληροφορίες δίνετε σε δικτυακούς τόπους, τόσο λιγότερα θα χάσετε αν κάποιος είτε πουλήσει τις πληροφορίες είτε αποκτήσει πρόσβαση στον λογαριασμό σας.

Παράδειγμα

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

Αλλά αν η πληροφορία που διέρρευσε είναι ο κωδικός πρόσβασής σας; Έχετε χρησιμοποιήσει τον ίδιο κωδικό πρόσβασης πουθενά αλλού; Εάν ναι, τότε ο καθένας μπορεί να δοκιμάσει τον συνδυασμό σας e-mail και κωδικού πρόσβασης για άλλους δικτυακούς τόπους. Οι πληροφορίες που διέρρευσαν χρησιμοποιούνται συχνά σε άλλες επιθέσεις ακόμη και προτού καταστούν ευρέως γνωστές.

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

Note
Βέλη που προσπαθούν να διέλθουν από πολλαπλά διάτρητα επίπεδα προστασίας
Βέλη που προσπαθούν να διέλθουν από πολλαπλά διάτρητα επίπεδα προστασίας

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

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

Enumeration attacks (επιθέσεις απαρίθμησης)

Οι enumeration attacks χρησιμοποιούνται από τους επιτιθέμενους για να διαπιστώσουν έγκυρα ονόματα χρήστη ως πρώτο βήμα για την απόκτηση των διαπιστευτηρίων σύνδεσης ενός χρήστη. Τα κοινά σημεία όπου εκτελείται αυτός ο τύπος επίθεσης περιλαμβάνουν την σύνδεση χρήστη και τις λειτουργίες «Ξέχασα τον κωδικό πρόσβασης». Για παράδειγμα, μια τοποθεσία μπορεί σε ορισμένες περιπτώσεις να προκαλέσει ακούσια τη διαρροή πληροφοριών που αφορούν τα μέλη της, προβάλλοντας διαφορετικά μηνύματα για προσπάθειες σύνδεσης με βάση το αν υπάρχει το όνομα χρήστη ή το e-mail.

Παράδειγμα

Έχετε ποτέ πληκτρολογήσει κατά λάθος ένα λάθος όνομα χρήστη και λάβατε το μήνυμα σφάλματος «Μη έγκυρο όνομα χρήστη» ή «Το όνομα χρήστη δεν υπάρχει»; Εάν η τοποθεσία έχει παρόμοιο μήνυμα που απομονώνεται μόνο όταν ο κωδικός πρόσβασης είναι λανθασμένος, τότε ο επιτιθέμενος μπορεί να χρησιμοποιήσει αυτές τις πληροφορίες για να ανακαλύψει εάν ένα όνομα χρήστη είναι έγκυρο. Αυτό επιτρέπει στους επιτιθέμενους να απαριθμούν τεράστιες λίστες με διευθύνσεις e-mail, για παράδειγμα, και να λαμβάνουν πληροφορίες σχετικά με το ποιος έχει λογαριασμό στην τοποθεσία στην οποία στοχεύουν. Αυτός είναι ο λόγος για τον οποίο αποτελεί βέλτιστη πρακτική για τους δικτυακούς τόπους να εμφανίζουν μηνύματα σφάλματος σύνδεσης που δεν απομονώνουν το σφάλμα κατά την προσπάθεια σύνδεσης, όπως «Το όνομα χρήστη Ή ο κωδικός πρόσβασης δεν είναι έγκυρος».

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

Οι enumeration attacks μπορούν επίσης να χρησιμοποιηθούν για την καλύτερη στόχευση των επιθέσεων phishing σε άτομα και χρησιμοποιούνται με στόχο να κάνουν τις επιθέσεις brute force ευκολότερες μειώνοντας επίσης τον αριθμό των πιθανών στόχων. Θα αναφέρουμε εν συντομία τους ορισμούς του phishing και του brute force.

Οι enumeration attacks δεν περιορίζονται σε φόρμες σύνδεσης. Μπορούν να χρησιμοποιηθούν και κατά την επαναφορά κωδικού πρόσβασης ή τη δημιουργία λογαριασμού. Η δημιουργία λογαριασμού, για παράδειγμα, προστατεύει συνήθως από τη δημιουργία διπλών λογαριασμών και ενημερώνει τον χρήστη που προσπαθεί να δημιουργήσει έναν διπλό λογαριασμό ότι υπάρχει ήδη ένας λογαριασμός με το e-mail ή το όνομα χρήστη που καταχωρείται.

Το επόμενο βήμα στην απόκτηση πρόσβασης για τη χρήση λεπτομερειών σύνδεσης είναι η αποκάλυψη του κωδικού πρόσβασης. Θα μάθουμε στη συνέχεια σχετικά με αυτό.

Κωδικοί πρόσβασης

Οι περισσότεροι δικτυακοί τόποι που χρησιμοποιείτε σας ταυτοποιούν μέσω ενός συνδυασμού ονόματος χρήστη και κωδικού πρόσβασης. Επειδή εμείς, ως διαδικτυακοί χρήστες, πρέπει να χρησιμοποιούμε δεκάδες ή ακόμα και εκατοντάδες διαφορετικές υπηρεσίες, προσπαθούμε γενικά να δημιουργούμε κωδικούς πρόσβασης που θα θυμόμαστε. Το πρόβλημα με τους κωδικούς πρόσβασης που θυμόμαστε εύκολα, είναι ότι συνήθως οι επιτιθέμενοι μπορούν παράλληλα να τους μαντέψουν εύκολα. Δεδομένου ότι οι πιο κοινοί κωδικοί πρόσβασης το 2020 ήταν οι 123456, 123456789, qwerty και password, η εισβολή σε έναν τεράστιο αριθμό λογαριασμών μόνο μέσω δοκιμής αυτών των κωδικών πρόσβασης με τυχαίες διευθύνσεις e-mail, δεν είναι δύσκολη.

Οι πιο κοινοί κωδικοί πρόσβασης το 2020

  • 123456

  • 123456789

  • qwerty

  • password

  • 1234567

  • 12345678

  • 12345

  • iloveyou

  • 111111

  • 123123

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

Το κόμιξ XKCD συνοψίζει την ασφάλεια κωδικών πρόσβασης πολύ εύστοχα..

Δύο κλειδιά με διαφορετικό μήκος
Δύο κλειδιά με διαφορετικό μήκος

Ένας καλός κωδικός πρόσβασης δεν χρειάζεται απαραίτητα να περιλαμβάνει παράξενα σύμβολα για να είναι ασφαλής. Γενικά, όσο μακρύτερος είναι ο κωδικός πρόσβασης, τόσο πιο ασφαλής είναι. Προδιαγραφές που απαιτούν να συμπεριλαμβάνετε σύμβολα, πεζούς και κεφαλαίους χαρακτήρες και αριθμούς σε κωδικούς πρόσβασης συνήθως δεν λαμβάνουν υπόψη πόσο δύσκολο είναι πραγματικά να παραβιαστούν οι κωδικοί πρόσβασης. Οι απαιτήσεις καθιστούν το keyspace (εύρος κλειδιών) (τον αριθμό των πιθανών συνδυασμών κωδικών πρόσβασης από ένα δεδομένο μήκος) μεγαλύτερο, αν και το ίδιο θα μπορούσε να επιτευχθεί εάν υπάρχει απαίτηση για μεγαλύτερο κωδικό πρόσβασης.

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

Εάν το πιθανό σύνολο χαρακτήρων που μπορείτε να χρησιμοποιήσετε για έναν κωδικό πρόσβασης είναι πεζοί χαρακτήρες στο αγγλικό αλφάβητο, δηλ. 26 χαρακτήρες, και το μήκος του κωδικού πρόσβασης είναι 6 τυχαίοι χαρακτήρες, θα προκύψει ο εξής υπολογισμός keyspace:

266= 308.915.776 πιθανοί κωδικοί πρόσβασης

Note

Το ^ χρησιμοποιείται συχνά για να υποδηλώσει «τη δύναμη του», επίσης εκφράζεται ως 26. Δεν χρειάζεται να ξέρετε μαθηματικά σε αυτήν την περίπτωση, αλλά αν είστε περίεργοι μπορείτε να πληκτρολογήσετε μια εξίσωση όπως 26^6 στις περισσότερες μηχανές αναζήτησης στο διαδίκτυο για να λάβετε την απάντηση.

Ενώ εάν ο κωδικός πρόσβασης έχει μήκος 8 τυχαίων χαρακτήρων, το keyspace θα ήταν:

268= 208.827.064.576 πιθανοί κωδικοί πρόσβασης

Όπως μπορείτε να δείτε, το keyspace είναι σε μεγάλο βαθμό μεγαλύτερο αν το μήκος του κωδικού πρόσβασης είναι μεγαλύτερο μόνο κατά 2 γράμματα. Ας δούμε ένα άλλο παράδειγμα πρόσθετων χαρακτήρων και ας προσθέσουμε κεφαλαίους χαρακτήρες στον συνδυασμό, διπλασιάζοντας τον αριθμό των χαρακτήρων που μπορούν να χρησιμοποιηθούν για τον κωδικό πρόσβασης.

526= 19.770.609.664 πιθανοί κωδικοί πρόσβασης

Αμέσως παρατηρείτε ότι το keyspace είναι πολύ μεγαλύτερο από αυτό με το οποίο ξεκινήσαμε. Ωστόσο, δεν πλησιάζει καν το keyspace για τον μεγαλύτερο κωδικό πρόσβασης με μόνο πεζά γράμματα. Πώς θα σας φαινόταν εάν προσθέταμε μερικά γενικά σύμβολα, όπως !, “, #, ¤, %, &, /, (, ) και =. Αυτό σημαίνει ότι ο αριθμός των διαθέσιμων χαρακτήρων τώρα είναι 62.

626= 56,800,235,584 πιθανοί κωδικοί πρόσβασης

Με την προσθήκη των 10 επιπλέον χαρακτήρων στο επιτρεπόμενο σύνολο χαρακτήρων, σχεδόν τετραπλασιάσαμε το διαθέσιμο keyspace. Την ίδια στιγμή κάναμε τον κωδικό αρκετά πιο δύσκολο στην απομνημόνευση. Το keyspace είναι ακόμα πολύ μικρότερο σε σχέση με τον κωδικό πρόσβασης 8 χαρακτήρων του παραδείγματος.

Ένας καθαρά τυχαίος κωδικός πρόσβασης ανταπεξέρχεται και σε άλλους τύπους επιθέσεων, όπως οι dictionary attacks (επιθέσεις με χρήση λεξικού). Οι dictionary attacks εκμεταλλεύονται το γεγονός ότι οι χρήστες προσπαθούν να δημιουργήσουν κωδικούς πρόσβασης που θυμούνται χρησιμοποιώντας λέξεις και ονόματα λεξικών ή παραλλαγές τους. Η δεύτερη έκδοση του 20ου τόμου του Oxford English Dictionary περιλαμβάνει καταχωρήσεις για 171.476 λέξεις, οπότε αν χρησιμοποιήσετε έναν κωδικό πρόσβασης με μία μόνο λέξη, χρησιμοποιείτε ένα keyspace 170.000. Συχνά αυτές οι λέξεις δεν χρησιμοποιούνται ως έχουν, αλλά τροποποιούνται με τρόπο που βοηθά στην απομνημόνευσή τους.

Παράδειγμα

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

170.000^3 = 4.913.000.000.000.000

Ένας κωδικός σαν αυτόν θα ήταν πολύ πιο εύκολο να απομνημονευτεί, και στην περίπτωση που μας προβληματίζει το brute forcing, θα ήταν πολύ πιο δύσκολο και να παραβιαστεί. Υπάρχουν και άλλοι λόγοι για τους οποίους το keyspace μπορεί να μην είναι τόσο μεγάλο όσο θα υπέθετε κάποιος αρχικά. Οι περισσότεροι ομιλητές της αγγλικής γλώσσας χρησιμοποιούν λεξιλόγιο μόνο περίπου 3.000 λέξεων και οι κωδικοί πρόσβασης που επιλέγονται με αυτόν τον τρόπο, αυτό δείχνουν. Επίσης, οι άνθρωποι δεν είναι καλοί στο να επιλέγουν τυχαία. Αυτό που αντιλαμβανόμαστε ως ένα τυχαίο συνδυασμό λέξεων, μπορεί εύκολα να επηρεαστεί από τα συμφραζόμενα, τις σκέψεις μας ή τις λέξεις που επιλέξαμε προηγουμένως. Αν χρησιμοποιείτε έναν κωδικό πρόσβασης μόνο με λέξεις, χρησιμοποιήστε ένα εργαλείο δημιουργίας κωδικού πρόσβασης αντί να βασίζεστε στην έννοια του ανθρώπου για την τυχαιότητα.

Διαβάστε περισσότερα για αυτήν τη μέθοδο..

Ένας συνηθισμένος τρόπος με τον οποίο οι άνθρωποι προσπαθούν να αλλάξουν τις λέξεις ενός λεξικού είναι μέσω της αντικατάστασης των γραμμάτων τους ή της προσθήκης ενός αριθμού στη λέξη για τη δημιουργία ενός κωδικού πρόσβασης. Δυστυχώς, αυτές οι τροποποιήσεις είναι γενικά ευνόητες και είναι εύκολο για έναν υπολογιστή να δοκιμάσει όλες τις αναμενόμενες παραλλαγές. Απλές αντικαταστάσεις όπως η αντικατάσταση του γράμματος «o» με τον αριθμό «0» απλά καθιστούν τον κωδικό πρόσβασης πιο δύσκολο στην απομνημόνευση, ενώ μόλις που γίνεται δυσκολότερο για έναν υπολογιστή. Αυτές οι απλές αντικαταστάσεις δεν κάνουν το keyspace σημαντικά μεγαλύτερο. Ούτε η προσθήκη ενός αριθμού ή του τρέχοντος έτους στην αρχή ή στο τέλος της λέξης. Το λογισμικό παραβίασης κωδικού πρόσβασης και οι άνθρωποι που τα κατασκευάζουν γνωρίζουν όλα αυτά τα κόλπα και τα έχουν λάβει υπόψη.

Εντροπία

Η ισχύς ενός κωδικού πρόσβασης συνήθως δεν μετράται μόνο από το εύρος των πιθανών κλειδιών. Η «εντροπία» είναι ένας όρος που χρησιμοποιείται και στην κυβερνοασφάλεια – νοείται ως ο τρόπος μέτρησης της εικαζόμενης δυσκολίας παραβίασης του κωδικού πρόσβασης στον πραγματικό κόσμο. Η εντροπία υπολογίζεται μέσω της μαθηματικής συνάρτησης «log2» από το keyspace (μην ανησυχείτε για τα μαθηματικά, δεν χρειάζεται να τα υπολογίσετε, αλλά αν πραγματικά το θέλετε, μπορείτε να πληκτρολογήσετε τον τύπο στις περισσότερες μηχανές αναζήτησης για να βρείτε τη λύση. Για παράδειγμα, δοκιμάστε το «log2(26^8)» στο www.google.com).

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

< 28 bit = πολύ αδύναμος.·Ίσως τα μέλη της οικογένειας δεν καταφέρουν να αποκτήσουν πρόσβαση.

28-35 bit = αδύναμος.Θα αποκλείσει την πρόσβαση στους περισσότερους ανθρώπους, συχνά επαρκεί για κωδικούς σύνδεσης στην επιφάνεια εργασίας

36-59 bit = μέτριος. Αρκετά ασφαλείς κωδικοί πρόσβασης για δικτυακούς και εταιρικούς κωδικούς πρόσβασης

60-127 bit = ισχυρός.·Μπορεί να είναι κατάλληλος για τη διαφύλαξη οικονομικών πληροφοριών

128+ bit = πολύ ισχυρός. Συχνά υπερβολή

Note

Στο προηγούμενο παράδειγμά μας, η εντροπία του κωδικού πρόσβασης 8 χαρακτήρων θα ήταν:

log2(26^8) = 37,6 bit

Ένας κωδικός πρόσβασης 6 χαρακτήρων θα είχε την εξής εντροπία:

log2(26^6) = 28,2 bit

Στο παραπάνω παράδειγμα, η εντροπία των 8 τυχαίων χαρακτήρων (37 bit) μόλις που κατατάσσει τον κωδικό πρόσβασης στην κατηγορία μέτριας ισχύος. Ένας κωδικός πρόσβασης 15 χαρακτήρων (70 bit) θα ήταν ισχυρός, αλλά και πάλι δεν θα εντασσόταν στην κατηγορία του πολύ ισχυρού. Η εκθετική φύση αυτών των υπολογισμών σημαίνει ότι η δημιουργία ενός μεγαλύτερου κωδικού πρόσβασης μπορεί να επηρεάσει σε μεγάλο βαθμό τη δυσκολία παραβίασής του.

Η εντροπία, αν και χρήσιμη, δεν είναι μια μέτρηση που μπορεί να αποκαλύψει τα πάντα. Ένας κωδικός πρόσβασης μόνο 8 χαρακτήρων μπορεί και πάλι να θεωρηθεί ότι δεν παρέχει επαρκή ασφάλεια – θα αναφερθούμε στους λόγους στην παρακάτω ενότητα.

Πώς παραβιάζονται οι κωδικοί πρόσβασης

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

Οι κωδικοί πρόσβασης αποθηκεύονται συνήθως «κρυπτογραφημένοι» σε μια βάση δεδομένων με αυτό που αποκαλείται αλγόριθμο κατακερματισμού μίας κατεύθυνσης. Ο hash algorithm (αλγόριθμος κατακερματισμού) είναι ένας κώδικας που χρησιμοποιείται για να μετατρέψει τον κωδικό πρόσβασής σας απλού κειμένου σε κωδικοποιημένο κείμενο. Λειτουργεί μόνο προς μία κατεύθυνση. Ένα κείμενο κρυπτογραφημένο με έναν ασφαλή hash algorithm δεν μπορεί να αντιστραφεί ακόμα και αν ο αλγόριθμος είναι γνωστός. Ο κωδικός πρόσβασής σας που προκύπτει και υποβάλλεται σε επεξεργασία από τον hash algorithm είναι γνωστός ως hash. Ένας hash είναι μια σειρά χαρακτήρων που αποτελείται από γράμματα και αριθμούς που αντιπροσωπεύουν την κωδικοποιημένη έκδοση του αρχικού κειμένου εισαγωγής.

Note

Ένας hash δεν είναι αυστηρά κρυπτογράφηση. Το encryption (κρυπτογράφηση) είναι μια αμφίδρομη διαδικασία που μπορεί να αντιστραφεί, ενώ το hashing είναι μονής κατεύθυνσης. Εάν ο hash algorithm λειτουργεί όπως προβλέπεται, η τιμή εξόδου δεν μπορεί να αντιστραφεί.

Μπορείτε να διαβάσετε περισσότερα για τις κρυπτογραφικές συναρτήσεις hash στη Wikipedia

Ας δούμε το παράδειγμα ενός γνωστού hash algorithm που πλέον δεν θεωρείται ασφαλής: τον MD5 Εάν κρυπτογραφήσετε το κείμενο «password» με τον αλγόριθμο MD5 θα λάβετε τον κωδικοποιημένο hash εξόδου «5f4dcc3b5aa765d61d8327deb882cf99».

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

Για παράδειγμα, ο hash MD5 για το «passwore» είναι «a826176c6495c5116189db91770e20ce», ο οποίος δεν μοιάζει με τον hash για το «password».

Όταν συνδέεται ένας χρήστης, ο κωδικός πρόσβασης απλού κειμένου κρυπτογραφείται και o hash που προκύπτει, συγκρίνεται με την τιμή hash (κωδικοποιημένη έκδοση του κωδικού πρόσβασης χρήστη) που αποθηκεύεται στη βάση δεδομένων. Εάν συμφωνούν, επιτρέπεται στον χρήστη να συνδεθεί.

Πώς είναι δυνατόν να δεχθούν επίθεση οι κωδικοί πρόσβασης με όλη αυτήν την προστασία; Όταν πρόκειται για κωδικούς πρόσβασης απλού κειμένου που μεταβάλλονται σε απρόβλεπτο κώδικα μέσω ενός μη αναστρέψιμου αλγόριθμου; Τι καθιστά ευάλωτους τους παλαιότερους hash algorithm, όπως τον MD5;

Note

Μια κρυπτογραφημένη τιμή (η κωδικοποιημένη έκδοση του αρχικού κωδικού πρόσβασης) μπορεί να προϋπολογιστεί και να αποθηκευτεί σε μια τεράστια λίστα κωδικών πρόσβασης. Αυτά τα αρχεία ονομάζονται rainbow table (πίνακες ουράνιου τόξου) και μπορείτε να τα βρείτε εύκολα στο διαδίκτυο. Για παράδειγμα, μπορείτε εύκολα να βρείτε ένα αρχείο με όλους τους hash που δημιουργήθηκαν με τον αλγόριθμο MD5 για οποιονδήποτε κωδικό πρόσβασης έως και 10 χαρακτήρες που περιέχει συνδυασμό πεζών γραμμάτων και αριθμών (abcdefghijklmnopqrstuvwxyz0123456789).

Οι rainbow table δημιουργούνται με την εκτέλεση λεξικών κωδικού πρόσβασης (πραγματικές λέξεις λεξικού, καθώς και λίστες με τους συνήθεις κωδικούς πρόσβασης) που μπορούν να βρεθούν στο διαδίκτυο με hash algorithm. Οι κωδικοποιημένοι hash που προκύπτουν συγκρίνονται με την αντίστοιχη τιμή εισαγωγής του αρχικού κωδικού πρόσβασης απλού κειμένου και στη συνέχεια χρησιμοποιούνται για την επίθεση σε λογαριασμούς χρηστών.

Μια αλατιέρα
Μια αλατιέρα

Salting και hashing

Μήπως αυτό σημαίνει ότι το hashing είναι παρωχημένο για τους περισσότερους κωδικούς πρόσβασης; Όχι! Τα καλά νέα είναι ότι οι προγραμματιστές διαθέτουν διάφορες έξυπνες τεχνικές που μπορούν να χρησιμοποιήσουν για να γίνει δύσκολη η εύρεση του hash για έναν κωδικό πρόσβασης. Μια συνάρτηση hash συχνά εφαρμόζεται πολλές φορές για να αυξηθεί ο χρόνος που χρειάζεται για τον έλεγχο ενός κωδικού πρόσβασης και να καθυστερήσουν συνεπώς οι επιθέσεις brute force.

Ένας άλλος τρόπος με τον οποίο οι προγραμματιστές προστατεύουν τους κωδικούς πρόσβασης των χρηστών τους είναι με τη χρήση μιας τεχνικής γνωστής ως «salting». Εδώ, μια ειδική τιμή, που ονομάζεται «salt», προστίθεται στο απλό κείμενο αφού ο χρήστης καταχωρήσει τον κωδικό πρόσβασής του, αλλά πριν γίνει το hashing, για να αποτραπεί η χρήση μιας λίστας προϋπολογισμένων hash (rainbow table). Όταν εφαρμόζεται μια τιμή salt, καθίσταται αυτό το αρχείο rainbow table μη χρησιμοποιήσιμο. Έτσι, πρόκειται για έναν πραγματικά εύκολο τρόπο να γίνουν όλοι αυτοί οι τύποι των επιθέσεων μη εφικτοί.

Για παράδειγμα, χρησιμοποιώντας τον αλγόριθμο hash MD5, αν προσθέσουμε το τυχαίο salt «xhsr2d» στον κωδικό πρόσβασης απλού κειμένου «password», λαμβάνουμε τον MD5 («xhsr2dpassword»), ο οποίος είναι «ebf20a6c99eccaefa0bf4d88a5bd3456». Πρόκειται για μια τελείως διαφορετική τιμή εξόδου από το αρχικό hash του «password» που παρήγαγε ο MD5 και βλέπετε παραπάνω, το οποίο κάθε hacker μπορεί να βρει στο διαδίκτυο σε ένα rainbow table. Προσθέτοντας ένα «salt» στον κωδικό πρόσβασης, ακόμα και αν είχαμε ένα rainbow table με hash για κάθε πιθανό κωδικό πρόσβασης με πεζά γράμματα και μέγιστο μήκος 10 χαρακτήρων, δεν θα μπορούσαμε να βρούμε τον αντίστοιχο του hash και θα είχαμε καταπολεμήσει τη χρήση των προϋπολογισμένων hash.

Αυτό που σημαίνει στην πράξη το «salting» είναι ότι οι επιτιθέμενοι πρέπει να προβούν σε επίθεση brute force εναντίον κάθε κωδικού πρόσβασης για να κάνουν hacking με επιτυχία στους κωδικοποιημένους hash τους σε μια βάση δεδομένων.

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

Note

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

Ωστόσο, ένας μεγάλος κωδικός πρόσβασης που αποτελείται από 15 πεζούς χαρακτήρες μπορεί να έχει 1.677.259.342.285.725.925.376 διαφορετικές παραλλαγές, και ο υπολογισμός τόσο πολλών hash με την ταχύτητα των 1 δισεκατομμυρίων hash το δευτερόλεπτο θα διαρκέσει λίγο περισσότερο από 50.000 χρόνια. Ο χρόνος υπολογισμού μειώνεται σε περίπου 3,5 λεπτά για έναν κωδικό πρόσβασης μήκους 8 χαρακτήρων.

Εσείς, ως χρήστης μιας διαδικτυακής υπηρεσίας, δεν μπορείτε συνήθως να διασφαλίσετε ότι έχουν ληφθεί τα δυνατά προληπτικά μέτρα από τους προγραμματιστές. Αυτό σημαίνει ότι θα πρέπει να υποθέσουμε ότι οι rainbow table μπορεί να χρησιμοποιηθούν εναντίον των κωδικών πρόσβασής σας. Στην πράξη, αυτό σημαίνει ότι θα πρέπει να προτιμάτε μεγαλύτερους κωδικούς πρόσβασης, καθώς καθιστούν μη πρακτική τη χρήση των περισσότερων rainbow table. Απλά σκεφτείτε το παραπάνω παράδειγμα – προσθέτοντας 7 χαρακτήρες στον κωδικό πρόσβασής σας, μπορείτε να κάνετε τη ζωή ενός hacker ΠΟΛΥ δυσκολότερη!

Next section
IV. Πώς να κάνετε τους κωδικούς σας πρόσβασης ασφαλέστερους