Πώς παραβιάζονται οι κωδικοί πρόσβασης;
Οι λογαριασμοί σπάνια παραβιάζονται όπως το δείχνουν οι ταινίες. Στην πράξη, ένας κωδικός πρόσβασης αποκτάται με έναν από τρεις τρόπους. Σπάει: βρίσκεται με τη δοκιμή του ενός υποψήφιου μετά τον άλλον, συνήθως πάνω σε μια βάση δεδομένων με hashes κωδικών που κλάπηκε από μια υπηρεσία. Κλέβεται: πληκτρολογείται σε μια ψεύτικη σελίδα ή αντιγράφεται από κακόβουλο λογισμικό. Ή επαναχρησιμοποιείται: οι εισβολείς παίρνουν έναν κωδικό από μια παλαιότερη διαρροή και τον δοκιμάζουν σε άλλες υπηρεσίες, υπολογίζοντας ότι ο κάτοχός του τον χρησιμοποίησε κι εκεί. Η διαφορά έχει σημασία, επειδή το καθένα αντιμετωπίζεται με κάτι διαφορετικό. Αυτό το άρθρο εξετάζει τις κύριες μεθόδους και αναφέρει τι βοηθά απέναντι σε καθεμία.
Επαναχρησιμοποιημένοι κωδικοί από διαρροές δεδομένων
Κάθε χρόνο υπηρεσίες παραβιάζονται και οι βάσεις δεδομένων των χρηστών τους καταλήγουν προς πώληση ή κυκλοφορούν ελεύθερα. Οι εισβολείς παίρνουν τα ζεύγη διεύθυνσης email και κωδικού από μια διαρροή και τα δοκιμάζουν αυτόματα σε τράπεζες, παρόχους email, καταστήματα και κοινωνικά δίκτυα — μια επίθεση που ονομάζεται credential stuffing. Δεν περιλαμβάνει καμία μαντεψιά και πετυχαίνει για έναν απλό λόγο: οι άνθρωποι επαναχρησιμοποιούν κωδικούς. Ακόμη και ένας ισχυρός κωδικός δεν βοηθά εδώ, αν είναι ο ίδιος παντού.
Τι βοηθά: ένας μοναδικός κωδικός πρόσβασης για κάθε λογαριασμό, ώστε μια διαρροή σε μία υπηρεσία να μην παρέχει πρόσβαση σε καμία άλλη.
Phishing
Μια σελίδα phishing είναι ένα αντίγραφο μιας πραγματικής φόρμας σύνδεσης που φιλοξενείται σε έναν παρόμοιο τομέα, στον οποίο οδηγεί ένας σύνδεσμος σε email ή μήνυμα που δημιουργεί αίσθημα επείγοντος: ένας κλειδωμένος λογαριασμός, ένα δέμα που περιμένει, μια ύποπτη πληρωμή. Οτιδήποτε πληκτρολογείται εκεί καταγράφεται απευθείας από τον εισβολέα. Το μήκος και η τυχαιότητα του κωδικού πρόσβασης δεν παίζουν κανέναν ρόλο, επειδή ο ίδιος ο χρήστης τον εισάγει οικειοθελώς.
Τι βοηθά: Ανοίγετε τους ιστότοπους από τους δικούς σας σελιδοδείκτες αντί για συνδέσμους σε μηνύματα. Χρησιμοποιείτε έναν διαχειριστή κωδικών πρόσβασης: συμπληρώνει διαπιστευτήρια μόνο στον ακριβή τομέα για τον οποίο έχουν αποθηκευτεί, οπότε δεν θα προτείνει κωδικό σε μια παρόμοια πλαστή διεύθυνση· αν δεν εμφανίσει τίποτα, ελέγξτε προσεκτικά τη διεύθυνση URL προτού πληκτρολογήσετε. Και ενεργοποιήστε τον έλεγχο ταυτότητας δύο παραγόντων, ο οποίος σταματά έναν εισβολέα που διαθέτει μόνο τον κωδικό πρόσβασης. Οι κωδικοί μίας χρήσης μπορούν να υποκλαπούν μέσω phishing όπως ακριβώς και ο ίδιος ο κωδικός πρόσβασης. Αντίθετα, με τα passkeys και τα κλειδιά ασφαλείας FIDO2 αυτό είναι αδύνατο, επειδή ανταποκρίνονται μόνο στον πραγματικό ιστότοπο — μια ιδιότητα που το NIST χαρακτηρίζει ως ανθεκτικότητα στο phishing.
Κακόβουλο λογισμικό
Προγράμματα γνωστά ως infostealers αντιγράφουν τους κωδικούς που είναι αποθηκευμένοι σε ένα πρόγραμμα περιήγησης, μαζί με τα cookie συνεδρίας, και τα στέλνουν μέσα σε λίγα δευτερόλεπτα από την εκτέλεσή τους, ενώ τα keyloggers καταγράφουν ό,τι πληκτρολογείται. Ένα κλεμμένο cookie συνεδρίας μπορεί να βάλει έναν εισβολέα σε έναν λογαριασμό που είναι ήδη συνδεδεμένος, χωρίς τον κωδικό και χωρίς τον δεύτερο παράγοντα. Τέτοια προγράμματα έρχονται συνήθως μέσα από πειρατικό λογισμικό, ψεύτικες ενημερώσεις και συνημμένα email.
Τι βοηθά: Διατηρείτε το λειτουργικό σύστημα και το πρόγραμμα περιήγησης ενημερωμένα, εγκαθιστάτε λογισμικό μόνο από επίσημες πηγές και αντιμετωπίζετε τα απροσδόκητα συνημμένα αρχεία ως επικίνδυνα — αν και αυτά τα μέτρα δεν εγγυώνται πλήρη προστασία. Εάν μια συσκευή μολυνθεί, ενεργήστε από μια άλλη συσκευή που γνωρίζετε ότι είναι καθαρή: αλλάξτε τους κωδικούς πρόσβασης, χρησιμοποιήστε σε κάθε υπηρεσία τη λειτουργία αποσύνδεσης από όλες τις ενεργές συνεδρίες και ελέγξτε εάν έχουν τροποποιηθεί το email ανάκτησης, ο αριθμός τηλεφώνου και οι ρυθμίσεις δύο παραγόντων. Καθαρίστε τη μολυσμένη συσκευή προτού συνδεθείτε ξανά από αυτήν.
Μαντεψιά στη φόρμα σύνδεσης
Η δοκιμή κωδικών απευθείας σε έναν ιστότοπο είναι αργή διαδικασία: μια υπηρεσία με αποτελεσματικά μέτρα προστασίας επιβάλλει καθυστέρηση, κλειδώνει τον λογαριασμό ή απαιτεί CAPTCHA έπειτα από μερικές λανθασμένες προσπάθειες. Η δοκιμή πολλών κωδικών σε έναν μεμονωμένο λογαριασμό είναι συνεπώς αναποτελεσματική, γι' αυτό και συνηθίζεται η αντίστροφη προσέγγιση: Σε μια επίθεση password spraying, μια χούφτα από τους πιο συνηθισμένους κωδικούς — 123456, password, qwerty123 — δοκιμάζεται σε εκατομμύρια λογαριασμούς. Η στοχευμένη μαντεψιά λειτουργεί παρόμοια, χρησιμοποιώντας προσωπικά στοιχεία από τα μέσα κοινωνικής δικτύωσης: ονόματα παιδιών και κατοικιδίων, γενέθλια, αγαπημένες ομάδες.
Τι βοηθά: οποιοσδήποτε κωδικός πρόσβασης δεν είναι συνηθισμένος και δεν αποτελείται από πληροφορίες για εσάς — δείτε πώς να δημιουργήσετε έναν ισχυρό κωδικό πρόσβασης.
Παραβίαση κωδικών από κλεμμένα hashes εκτός σύνδεσης
Μια σωστά υλοποιημένη υπηρεσία δεν αποθηκεύει κωδικούς πρόσβασης σε ευανάγνωστη μορφή. Αποθηκεύει hashes — το αποτέλεσμα μιας μονόδρομης μαθηματικής συνάρτησης από την οποία ο κωδικός δεν μπορεί να υπολογιστεί αντίστροφα. Εάν διαρρεύσει μια τέτοια βάση δεδομένων, οι εισβολείς δοκιμάζουν πιθανούς κωδικούς υπολογίζοντας τα hashes υποψήφιων κωδικών σε δικό τους υλικό και συγκρίνοντας τα αποτελέσματα. Καμία φόρμα σύνδεσης δεν τους επιβραδύνει, και ο ρυθμός εξαρτάται από τη συνάρτηση κατακερματισμού που επέλεξε η υπηρεσία και από τις ρυθμίσεις της. Σε γρήγορες, απαρχαιωμένες συναρτήσεις όπως η MD5, μια σύγχρονη κάρτα γραφικών δοκιμάζει δεκάδες δισεκατομμύρια υποψήφιους κωδικούς ανά δευτερόλεπτο. Συναρτήσεις σχεδιασμένες ειδικά για αποθήκευση κωδικών — όπως η Argon2id ή σε παλαιότερα συστήματα η bcrypt — είναι σκόπιμα αργές και μειώνουν αυτόν τον ρυθμό κατά πολλές τάξεις μεγέθους, γι' αυτό και οι σύγχρονες συστάσεις προτείνουν τη χρήση τους.
Επιθέσεις λεξικού
Οι υποψήφιοι κωδικοί δεν επιλέγονται τυχαία. Τα προγράμματα παραβίασης κωδικών ξεκινούν με λίστες πραγματικών κωδικών από προηγούμενες διαρροές δεδομένων, καθώς και με λίστες λέξεων και ονομάτων, εφαρμόζοντας στη συνέχεια κανόνες που μιμούνται τις ανθρώπινες συνήθειες: κεφαλαίο γράμμα στην αρχή, έτος ή θαυμαστικό στο τέλος, αντικατάσταση γραμμάτων με παρόμοια σύμβολα. Ένας κωδικός όπως το Summer2024! φαίνεται περίπλοκος σε έναν άνθρωπο, αλλά ανήκει στους πρώτους υποψήφιους που δοκιμάζει μια επίθεση λεξικού. Το salt — μια μοναδική τυχαία τιμή που προστίθεται σε κάθε κωδικό πριν από τον κατακερματισμό — αποτρέπει τους εισβολείς από τη χρήση προϋπολογισμένων πινάκων (rainbow tables) για την ταυτόχρονη παραβίαση πανομοιότυπων κωδικών, αλλά δεν καθιστά έναν προβλέψιμο κωδικό λιγότερο προβλέψιμο.
Επιθέσεις ωμής βίας
Όταν τα λεξικά εξαντληθούν, η μόνη επιλογή που απομένει είναι η δοκιμή κάθε πιθανού συνδυασμού, και σε έναν τυχαία παραγόμενο κωδικό πρόσβασης το μόνο που μετράει είναι το μήκος. Για παράδειγμα, ας υποθέσουμε ένα γρήγορο hash και έναν κωδικό όπου κάθε χαρακτήρας επιλέγεται ανεξάρτητα και με ίση πιθανότητα από τους 94 εκτυπώσιμους χαρακτήρες ASCII, εξαιρουμένου του κενού διαστήματος. Υπάρχουν περίπου 6 × 1015 τέτοιοι κωδικοί μήκους 8 χαρακτήρων· με ρυθμό δέκα δισεκατομμυρίων προσπαθειών ανά δευτερόλεπτο, η δοκιμή όλων διαρκεί περίπου μία εβδομάδα, ενώ κατά μέσο όρο ο σωστός κωδικός βρίσκεται στον μισό χρόνο. Στους 12 χαρακτήρες, η δοκιμή όλων των συνδυασμών στο ίδιο υλικό θα διαρκούσε περίπου 1,5 εκατομμύριο χρόνια, και στους 16 χαρακτήρες ο αριθμός ξεφεύγει από κάθε ουσιαστική σύγκριση. Αυτό είναι το βασικό επιχείρημα για τους μακρούς τυχαίους κωδικούς: τα λεξικά ελάχιστα ωφελούν εναντίον τους, και υπό αυτές τις παραδοχές η εξαντλητική δοκιμή κάθε συνδυασμού δεν είναι πρακτικά εφικτή. Η γεννήτρια ισχυρών κωδικών πρόσβασης μας τους δημιουργεί στο πρόγραμμα περιήγησής σας και εμφανίζει μια εκτίμηση εντροπίας σε bit για τον καθένα.
Τι βοηθά: ένας μακρύς κωδικός πρόσβασης χωρίς προβλέψιμα μοτίβα, δηλαδή στην πράξη ένας αυτόματα δημιουργημένος κωδικός. Δεν μπορείτε να επηρεάσετε τον τρόπο με τον οποίο μια υπηρεσία αποθηκεύει τον κωδικό σας· υποθέστε το χειρότερο σενάριο και επιλέξτε έναν κωδικό που αντέχει στη μαντεψιά ακόμη και αν αποθηκεύεται με μια γρήγορη συνάρτηση κατακερματισμού.
Παρακολούθηση και κοινωνική μηχανική
Οι παλαιότερες μέθοδοι δεν απαιτούν καθόλου τεχνολογία. Ένας κωδικός πρόσβασης διαβάζεται πάνω από τον ώμο κάποιου, αντιγράφεται από ένα αυτοκόλλητο σημείωμα στην οθόνη ή διαβάζεται από μια οθόνη σε κοινή χρήση κατά τη διάρκεια μιας βιντεοκλήσης· ή ο εισβολέας απλώς τον ζητάει, προσποιούμενος το προσωπικό τεχνικής υποστήριξης ή έναν συνάδελφο — αυτό που ονομάζεται κοινωνική μηχανική. Καμία νόμιμη υπηρεσία δεν θα σας ζητήσει ποτέ τον κωδικό πρόσβασής σας μέσω τηλεφώνου, email ή μηνύματος.
Τι βοηθά: μην λέτε και μην στέλνετε ποτέ έναν κωδικό πρόσβασης σε κανέναν και μην τον φυλάσσετε εκεί όπου μπορούν να τον δουν άλλοι.
Τι σημαίνουν όλα αυτά
Διαφορετικές επιθέσεις απαιτούν διαφορετικά μέτρα προστασίας, και τρεις κανόνες βοηθούν περισσότερο: ένας μοναδικός κωδικός για κάθε λογαριασμό, δημιουργημένος αυτόματα αντί για επινοημένος, σε συνδυασμό με έλεγχο ταυτότητας δύο παραγόντων — ή ένα passkey αντί για κωδικό πρόσβασης όπου υποστηρίζεται. Δεν σας προστατεύουν από τα πάντα — για παράδειγμα, δεν προστατεύουν από μια κλεμμένη συνεδρία —, γι' αυτό και οι παραπάνω συμβουλές για το κακόβουλο λογισμικό παραμένουν εξίσου σημαντικές. Περισσότερα άρθρα συγκεντρώνονται στους οδηγούς για τους κωδικούς πρόσβασης.