Ή μήπως θα έπρεπε να είναι το ανάποδο: Δύσκολο να το μαντέψει κάποιος και εύκολο να το θυμάσαι. Και αν είναι έτσι γιατί συμβουλεύουμε τους ανθρώπους να κάνουν το αντίθετο; Αναφερόμαστε στους κωδικούς ασφαλείας (passwords) και την αφορμή μας την παρείχε ένα κόμικ που φαίνεται παρακάτω. Σύμφωνα με αυτό βάζουμε τους ανθρώπους να δημιουργούν πολύπλοκους και δύσκολους κωδικούς που ενώ δεν μπορούν να θυμούνται είναι τελικά εύκολο να παραβιασθούν.

Πριν πάμε στο κόμικ (που παρεμπιπτόντως θέλει εξήγηση για να γίνει πλήρως κατανοητό) ας δούμε μερικά πράγματα για τους κωδικούς ασφαλείας. Τι ιδιότητες πρέπει να έχει ένας καλός κωδικός ασφαλείας; Δύο είναι οι βασικότερες. Πολύ απλά:

Hard to Guess (Δύσκολο να αποκαλυφθεί) - Ασφάλεια (Safety) - Υπολογιστικός παράγοντας

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

  • Κοινωνική μηχανική (social enginnering) ή για να το πούμε πιο απλά "ρωτώντας". Ίσως σας φαίνεται αστείο αλλά είναι ίσως ο πιο αποδοτικός και συχνά ο πιο γρήγορος τρόπος για να αποκαλύψεις έναν κωδικό ασφαλείας. Οι άνθρωποι είναι απίστευτα πολλές φορές πρόθυμοι να αποκαλύψουν τον κωδικό ασφαλείας τους. Φανταστείτε να δέχεστε ένα τηλεφώνημα: "Γεια σας, είμαι ο Δημητρίου Σταύρος, τεχνικός του Πανελλήνιου Σχολικού Δικτύου, και έχουμε διαπιστώσει ότι το mail σας έχει μολυνθεί από ιούς. Μην ανοίξετε τα mail σας. Χρειαζόμαστε τον κωδικό σας για να καθαρίσουμε τους ιούς...". Έρευνες έχουν δείξει ότι ακόμα και πολλοί ειδικοί την πατούν και αποκαλύπτουν μόνοι τους τον κωδικό τους. Όσο πολύπλοκος και δύσκολος και αν είναι ο κωδικός ασφαλείας, δεν παίζει κανένα ρόλο όταν τον αποκαλύπτεις μόνος σου.

Μην αποκαλύπτεται ποτέ και σε κανέναν τον κωδικό ασφαλείας σας. Είναι απόλυτα προσωπικός.

  • Μαντεύοντας. Αυτός είναι ο δεύτερος πιο συνηθισμένος τρόπος για να παραβιάσεις έναν κωδικό ασφαλείας. Οι περισσότεροι άνθρωποι για να εξασφαλίσουν ότι θα θυμούνται τους κωδικούς τους χρησιμοποιούν κάποιο από τα προσωπικά τους στοιχεία όπως όνομα (το δικό τους, του/της συζύγου, του σκύλου κ.ο.κ), ημερομηνίες (γέννησης, γάμου κ.λ.π.), κοινούς αριθμούς (τηλέφωνα, αριθμός ταυτότητας, ΑΦΜ, αριθμός οδού, τυχερός αριθμός κ.λ.π.) ή αγαπημένα πράγματα (χρώμα, ομάδα ποδοσφαίρου, τραγουδιστής/τρια, αθλητής/τρια, ταινία, βιβλίο κ.λ.π). Κάποιοι χρησιμοποιούν μοτίβα του πληκτρολογίου (123456, qwerty κ.ά) ή συνήθεις λέξεις (password, secret, code, welcome, windows κ.λ.π.) ή φράσεις (iloveyou, trustnobody, helloworld, keepwalking κ.λ.π.). Υπάρχουν μέχρι και σελίδες με οδηγίες μαντέματος κωδικών.

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

  • Brute force attack. Το άτομο που θέλει να παραβιάσει τον λογαριασμό σας δημιουργεί ένα πρόγραμμα (ή βρίσκει ένα από τα πολλά που υπάρχουν έτοιμα) το οποίο δοκιμάζει να συνδεθεί στον λογαριασμό σας δοκιμάζοντας κάθε πιθανό κωδικό ασφαλείας. Αν δεν υπάρχει ελάχιστο όριο στο μέγεθος του κωδικού, οι δοκιμές ξεκινούν με το κενό κωδικό ασφαλείας, προχωρούν με όλους τους κωδικούς ενός χαρακτήρα ("a", "b", "c",...), τους κωδικούς δύο χαρακτήρων ("aa", "ab", "ac",...,"ba", "bb",...) και συνεχίζουν μέχρι να πετύχουν τον σωστό κωδικό ασφαλείας. Φυσικά αν υπάρχει ελάχιστο όριο μεγέθους ξεκινούν τις δοκιμές από τους κωδικούς με αυτό το όριο (π.χ. 6 χαρακτήρες). Η μέθοδος αυτή αποδεικνύεται αποτελεσματική για μικρούς κωδικούς ασφαλείας αλλά χρονοβόρα για μεγαλύτερους κωδικούς. Επίσης, μπορεί να γίνει λιγότερη αποτελεσματική αν το πρόγραμμα πρέπει να δοκιμάζει πέρα από τους πεζούς λατινικούς χαρακτήρες και σύμβολα, αριθμούς και κεφαλαίους χαρακτήρες.

Μην χρησιμοποιείτε ποτέ κωδικούς ασφαλείας με λιγότερους από έξι (6) χαρακτήρες. Καλύτερα τουλάχιστον οχτώ (8).

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

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

Να τονίσουμε ότι απόλυτη ασφάλεια δεν υπάρχει. Ένας αποφασισμένος (ή τελείως τρελός) hacker θα μπορούσε να αφήσει ένα πρόγραμμα να τρέχει για μήνες (ή χρόνια) ή να χρησιμοποιήσει δεκάδες (ή και εκατοντάδες) υπολογιστές για να κάνουν δοκιμές ώστε να σπάσει τον κωδικό σας. Αλλά δεν είστε το FBI ή η CIA. Αν ο κωδικός σας χρειάζεται κάτι περισσότερο από 1 μήνα με τις μεθόδους brute force ή dictionary attack για να παραβιασθεί τότε, νομίζω, μπορείτε να αισθάνεστε ασφαλείς. Ο υπολογισμός για τον χρόνο που χρειάζεται να παραβιασθεί ο κωδικός περιλαμβάνει το πλήθος των προσπαθειών-δοκιμών που μπορούν να γίνουν ανά δευτερόλεπτο. Οι περισσότεροι υπολογισμοί που θα δείτε στο Διαδίκτυο εκτιμούν αυτόν τον αριθμό σε 1000 ή 100 προσπάθειες ανά δευτερόλεπτο. Για διαδικτυακές εφαρμογές (π.χ. τον λογαριασμό σας στο Google) ο ρυθμός αυτός αποτελεί υπερεκτίμηση (στην πράξη δύσκολα θα καταφέρει κάποιος ακόμα και 20 με 30 προσπάθειες ανά δευτερόλεπτο). Επιπλέον, η επιβολή χρονικών καθυστερήσεων μεταξύ των προσπαθειών σύνδεσης (π.χ. 5 δευτερόλεπτα μεταξύ των προσπαθειών) ή η επιβολή χρονικής ποινής αν ξεπεραστεί κάποιο όριο αποτυχημένων προσπαθειών (απαγόρευση σύνδεσης για 1 ώρα αν γίνουν 10 αποτυχημένες προσπάθειες) καθιστούν λιγότερο αποτελεσματικές τις προσπάθειες brute force ή dictionary based επιθέσεων (αλλά αυτό εξαρτάται από την εφαρμογή και όχι από τον χρήστη).

Easy to Remember (Εύκολο να το θυμάσαι) - Ευχρηστία (Usability) - Ανθρώπινος παράγοντας

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

Οι χρήστες χρησιμοποιούν κωδικούς που δεν παρέχουν καθόλου ή παρέχουν πολύ μικρή ασφάλεια με σκοπό να τους θυμούνται εύκολα. Για παράδειγμα, αν υποχρεώσεις κάποιον χρήστη ο κωδικός του να περιέχει έναν αριθμό και ένα σύμβολο τουλάχιστον αυτός θα γράψει έναν κωδικό με μια κοινή λέξη και στο τέλος αυτής τον αριθμό "1" και για σύμβολο το "!". Παρόμοια αν πρέπει να χρησιμοποιήσει ένα κεφαλαίο γράμμα αυτό θα είναι το πρώτο γράμμα της λέξης. Πράγματι, έρευνες έχουν δείξει ότι ο πιο κοινός αριθμός στους κωδικούς είναι το "1", τα πιο κοινά σύμβολα που χρησιμοποιούνται είναι τα "!", "@" και όσα βρίσκονται μαζί με τα αριθμητικά πλήκτρα στην πάνω γραμμή του πληκτρολογίου και το πρώτο γράμμα της λέξης είναι αυτό που είναι τις περισσότερες φορές κεφαλαίο. Όλα αυτά φυσικά τα ξέρουν και hacker και έχουν προσαρμόσει τα προγράμματά τους ώστε να εκμεταλλεύονται αυτές τις πληροφορίες και συνδυάζοντας τις τεχνικές brute force και dictionary attacks να μπορούν να παραβιάσουν εύκολα έναν κωδικό με τα παραπάνω χαρακτηριστικά.

Ακόμα χειρότερα; Ο χρήστης γράφει τον κωδικό του σε κάποιο χαρτάκι post-it και το κολλάει πάνω στην οθόνη του υπολογιστή του. Ή σε κάποιο χαρτάκι μέσα στο πορτοφόλι του. Ή σε ένα αρχείο πάνω στην επιφάνεια εργασίας με το "προσεκτικά επιλεγμένο" όνομα "passwords.txt". Ή επιλέγει να παραμένει συνδεδεμένος στις διαδικτυακές εφαρμογές ή να απενεργοποιήσει την απαίτηση κωδικού για διάφορες λειτουργίες του υπολογιστή του με αποτέλεσμα αν χάσει (ή του κλέψουν) το laptop ή το smartphone να εκτίθενται όλα όσα προστάτευε με κωδικούς. Επίσης, όταν αναγκάζουμε τους χρήστες να δημιουργούν δυσκολομνημόνευτους κωδικούς αυτοί καταλήγουν να χρησιμοποιούν τον ίδιο κωδικό σε όλες τις υπηρεσίες που χρησιμοποιούν κάτι που είναι εξίσου λάθος και μειώνει σημαντικά την παρεχόμενη προστασία.

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

Easy to Guess, Hard to Remember

Φαντάζομαι συμφωνούμε ότι το "correct horse battery staple" (οι λέξεις σημαίνουν "σωστά", "άλογο", "μπαταρία", "συρραπτικό") είναι πολύ πιο εύκολο να το θυμάσαι από το "Tr0ub4dor&3". Γιατί όμως το "correct horse battery staple" είναι ταυτόχρονα και πιο δύσκολο να παραβιασθεί. Γιατί είναι πιο ασφαλές; Πότε ένας κωδικός είναι ασφαλής; Η απάντηση: Όταν έχει πολύ πληροφορία. Χα, ωραία και πώς μετράμε την πληροφορία;

Την απάντηση μας την έχει δώσει εδώ και 66 χρόνια (από το 1948) ο Claude Shannon (Κλοντ Σάνον) με τη θεωρία της Πληροφορίας. Ο Claude Shannon ήταν μαθηματικός, μηχανικός και κρυπτογράφος και θεμελίωσε τη θεωρία της Πληροφορίας με σκοπό να τη χρησιμοποιήσει στην μελέτη τηλεπικοινωνιακών συστημάτων. Η θεωρία της Πληροφορίας μας λέει ότι ένα μήνυμα φέρει περισσότερη πληροφορία όσο πιο πολύ αβεβαιότητα έχει, όσο πιο πολύ τυχαιότητα, όσο πιο πολύ μη προβλεψιμότητα, όσο πιο πολύ αταξία, όσο πιο πολύ εντροπία (entropy) έχει. Δείτε για παράδειγμα την επόμενη πρόταση:

Αν τ δβζς, δν λπ τπτ

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

Ας δούμε ένα άλλο παράδειγμα. Μπαίνετε σε ένα σχολείο θηλέων. Παίρνετε ένα παιδί στην τύχη και αναρωτιέστε "Είναι αγόρι ή κορίτσι;". Σας απαντώ: "Είναι κορίτσι!". Πόση πληροφορία σας έδωσα; Καλά καταλάβετε. Δεν σας έδωσα καθόλου πληροφορία. Αφού το σχολείο είναι θηλέων, όλα τα παιδιά είναι κορίτσια. Δεν υπάρχει καμιά αβεβαιότητα, καμιά τυχαιότητα, καμιά αταξία. Η απάντηση είναι πλήρως προβλέψιμη. Σε ένα άλλο τυπικό σχολείο όμως τα αγόρια είναι περίπου όσο και τα κορίτσια. Η πιθανότητα να είναι κορίτσι αυτό το παιδί που διαλέξατε στην τύχη είναι ½ και η πληροφορία που θα σας δώσω αν σας απαντήσω για το φύλο του παιδιού είναι ακριβώς 1 bit.

Η θεωρία της Πληροφορίας λέει ότι αν έχουμε ένα μήνυμα με πολλά πιθανά περιεχόμενα (ας ονομάσουμε το σύνολο των μηνυμάτων Χ και κάθε πιθανό μήνυμα x) τότε η πληροφορία που φέρει το μήνυμα (η οποία μετριέται σε bits) είναι -∑p(x)·logp(x) όπου p(x) είναι η πιθανότητα το μήνυμα να είναι το x. Πιο απλά: Αν σε μια ερώτηση υπάρχουν Ν ισοπίθανες απαντήσεις τότε η κάθε απάντηση φέρει πληροφορία log2N bits. Στην περίπτωση του τυπικού σχολείου υπάρχουν 2 ισοπίθανες απαντήσεις για το φύλο ενός παιδιού οπότε η πληροφορία της απάντησης για το αν ένα παιδί είναι αγόρι ή κορίτσι είναι log22=1 bit. Περισσότερα για την πληροφορία, την θεωρία της Πληροφορίας και την Πληροφορική εν γένει μπορείτε να διαβάσετε στο βιβλίο του James Gleick "Η Πληροφορία".

Επιστροφή στο κόμικ μας για να εξετάσουμε αυτά τα μικρά τετράγωνα κουτάκια που προτρέχοντας θα πούμε ότι αναπαριστούν bits πληροφορίας (ή εντροπίας αν θέλετε). Κατά αρχάς υποθέτουμε ότι αυτός που θέλει να υποκλέψει τον κωδικό σας γνωρίζει ποια μέθοδο χρησιμοποιήσατε για την παραγωγή του και αξιοποιεί αυτή την γνώση στην προσπάθειά του να παραβιάσει τον λογαριασμό σας. Μπορεί αυτό να σας φαίνεται χαζό αλλά σε γενικές γραμμές ισχύει. Η πολιτική ασφαλείας ενός οργανισμού είναι γενικά γνωστή. Μπορείτε απλώς να δοκιμάσετε να δημιουργήσετε έναν λογαριασμό σε μια υπηρεσία και να δείτε αν από την πολιτική ασφαλείας της σας υποχρεώνει να χρησιμοποιήσετε αριθμούς, σύμβολα, κεφαλαία ή το ελάχιστο μήκος του κωδικού. Επιπλέον, υπάρχουν μετρημένες στα δάχτυλα του ενός χεριού (άντε των δύο) μέθοδοι που προτείνονται από τους ειδικούς (αν θέλετε βάλτε εισαγωγικά) για να κατασκευάσεις έναν κωδικό και οι περισσότεροι χρήστες χρησιμοποιούν κάποια από αυτές. Το κόμικ εξετάζει δύο περιπτώσεις δημιουργίας κωδικού: μια που οδηγεί σε πολύπλοκους δύσχρηστους κωδικούς και μια που οδηγεί σε απλούς εύχρηστους.

Στην δεύτερη περίπτωση (ξεκινάμε από τα εύκολα) ο κωδικός αποτελείται από τέσσερις κοινές λέξεις τις αγγλικής. Πόσο πληροφορία (ή εντροπία) φέρει αυτός ο κωδικός. Αν υποθέσουμε ότι υπάρχουν περίπου 2048 κοινές λέξεις τις αγγλικής τότε η κάθε μιας λέξη φέρει πληροφορίας log22048=11 bit (τα 11 κουτάκια για κάθε μια λέξη). Οπότε για τις τέσσερις λέξεις έχουμε 44 bits. Το συνολικό πλήθος των πιθανών συνδυασμών είναι 244 που με έναν ρυθμό 1000 δοκιμών-προσπαθειών ανά δευτερόλεπτο ξεκλειδώνει τον κωδικό μας σε περίπου 550 χρόνια - 244/(1000·60·60·24·365)≈557 χρόνια. Ναι, είναι απόλυτα ασφαλές, θα έχουμε φύγει προ πολλού από τη ζωή οπότε δεν θα μας απασχολεί και πολύ αν παραβιασθεί κάποιος λογαριασμός μας.

Στην πρώτη περίπτωση ο "ψαγμένος" χρήστης ακολουθεί τις συνήθεις συμβουλές των ειδικών. Ξεκινάει με μια σπάνια λέξη της αγγλικής και όχι μια κοινή. Είτε επειδή το λένε οι ειδικοί, είτε επειδή το επιβάλλει η πολιτική ασφαλείας ο χρήστης εντάσσει στον κωδικό του αριθμούς και σύμβολα. Φυσικά, κάνει το τετριμμένο να βάλει έναν αριθμό και ένα σύμβολο στο τέλος της λέξης (θυμηθείτε, οι hacker στην πραγματικότητα το ξέρουν αυτό). Για να κάνει τη ζωή των κακόβουλων χρηστών που θέλουν να τον επιβουλευτούν πιο δύσκολο αποφασίζει να κάνει και μερικές αντικαταστάσεις κάποιον γραμμάτων της λέξης του με αριθμούς ή άλλα σύμβολα που μοιάζουν με τα αρχικά. Για παράδειγμα το "o" με "0", το "A" με "4", το "i" με "!", το "s" με "$" κ.ο.κ. Αυτό ονομάζεται leet (ή leetspeak) και φυσικά οι κακόβουλοι χρήστες γνωρίζουν για όλες αυτές τις πιθανές αντικαταστάσεις (και πόσο πιθανή είναι η κάθε μία). Α, και τέλος, ο "ψαγμένος" χρήστης μας μπορεί να σκεφτεί να δυσκολέψει και άλλο τους hackers βάζοντας ένα κεφαλαίο γράμμα. Και φυσικά όπως κάνει η συντριπτική πλειονότητα των χρηστών διαλέγει το πρώτο γράμμα της λέξης του.

Οπότε, αν οι σπάνιες λέξεις της αγγλικής είναι περίπου 65.536 έχουμε log265536=16 bits πληροφορίας. Να κάνω κεφαλαίο το πρώτο γράμμα ή όχι; log22=1 bit πληροφορίας. Πόσα γράμματα να υπάρχουν στην λέξη υποψήφια για αντικατάσταση με οπτικά παρόμοιά τους; Ας υποθέσουμε τρία. Για κάθε ένα μπορεί να κάνω την αντικατάσταση ή όχι. Άρα για κάθε ένα γράμμα υποψήφιο αντικατάστασης έχουμε log22=1 bit πληροφορίας και επομένως συνολικά 3 bits για τις αντικαταστάσεις. Πάμε στο σύμβολο στο τέλος της λέξης. Πόσα είναι τα πιθανά σύμβολα; Ας πούμε ότι υπάρχουν 16 σύμβολα. Άρα log216=4 bits πληροφορίας. Και στον αριθμό. Τα ψηφία είναι 10 (0 έως 9) και αυτό μας δίνει log210≈3,32 bits αλλά επειδή το 0 και το 1 είναι πιο συχνά και για λόγους απλότητας έχουμε 3 bits. Και ας βάλουμε στο τέλος και 1 bit για την σειρά που θα έχουν το σύμβολο και ο αριθμός. Συνολικά 16+1+3+4+3+1=28 bits πληροφορίας και επομένως ο κωδικός μας μπορεί να παραβιασθεί σε 228/(1000·60·60·24)≈3,1 ημέρες που καθιστά την προσπάθεια υποκλοπής του κωδικού σας πιθανή και εφικτό το να έχει επιτυχία.

Μπορεί να διαφωνείτε με πολλά από τα νούμερα που παρουσιάστηκαν παραπάνω. Άλλωστε πρόκειται απλώς για ένα κόμικ και όχι για διδακτορική διατριβή στην ασφάλεια των κωδικών. Επίσης, ο τρόπος που υποθέσαμε για να παραχθεί ένας κωδικός με σύμβολα, αριθμούς και κεφαλαία γράμματα δεν είναι ο μόνος αλλά οι μέθοδοι που γενικά προτείνονται και ακολουθούνται από τους χρήστες είναι μετρημένες οπότε αν θέλετε μπορείτε να προσθέσετε μερικά bit πληροφορίας ακόμα στην πρώτη μέθοδο. Μια άλλη αντίρρηση θα μπορούσε να είναι ότι οι hacker θα προτιμούσαν να υποκλέψουν το αρχείο με τους κρυπτογραφημένους κωδικούς (οι κωδικοί δεν αποθηκεύονται ποτέ αυτούσιοι αλλά χρησιμοποιείται μια μη αντιστρέψιμη κρυπτογραφική συνάρτηση κατατεμαχισμού - cryptographic hash function) και να χρησιμοποιήσουν ένα rainbow table για να βρουν τον κωδικό σας αλλά και πάλι ο δεύτερος κωδικός (με το άλογο) πλεονεκτεί επειδή έχει πολύ μεγαλύτερο μήκος.

Μπορείτε να δοκιμάσετε τους δύο κωδικούς του παραδείγματος-κόμικ και με κάποιον αλγόριθμο που υπολογίζει την εντροπία και την ισχύ κωδικών ασφαλείας όπως αυτό το εργαλείο ελέγχου ισχύς κωδικών. Για το "Tr0ub4dor&3" έχουμε:

Length: 11

Strength: Reasonable - This password is fairly secure cryptographically and skilled hackers may need some good computing power to crack it. (Depends greatly on implementation!)

Entropy: 51.8 bits

Charset Size: 72 characters

ενώ για το "correct horse battery staple"

Length: 28

Strength: Strong - This password is typically good enough to safely guard sensitive information like financial records.

Entropy: 104.2 bits

Charset Size: 27 characters

Αν θέλετε μπορούμε να κάνουμε τον υπολογισμό και αλλιώς (αν και είναι ο "μπακάλικος" τρόπος). Για τον πρώτο κωδικό ασφαλείας έχουμε 72 πιθανούς χαρακτήρες: 26 μικρά αγγλικά γράμματα + 26 κεφαλαία + 10 ψηφία + 10 σύμβολα (συμπεριλάβαμε μόνο αυτά στα πλήκτρα 1 έως 0 της πάνω γραμμής του πληκτρολογίου). Το μήκος του είναι 11 χαρακτήρες άρα σύνολο πιθανών κωδικών 7211. Για τον δεύτερο κωδικό έχουμε 27 πιθανούς χαρακτήρες: 26 μικρά αγγλικά γράμματα + 1 ο χαρακτήρας του κενού. Μήκος 28 χαρακτήρες άρα σύνολο πιθανών κωδικών 2728 και ισχύει ότι 7211<2728 άρα πάλι ο δεύτερος κωδικός είναι πιο δύσκολο να παραβιασθεί.

Τελικό συμπέρασμα; Μήπως οι συνηθισμένες συμβουλές των ειδικών δεν είναι και τόσο καλές. Μήπως οδηγούν σε κωδικούς που είναι σχετικά εφικτό να παραβιασθούν και πολύ δύσκολο για τους χρήστες να τους θυμούνται; Δηλαδή, δεν προσφέρουν ούτε ασφάλεια ούτε ευχρηστία και εξαναγκάζουν τους χρήστες σε χαρτάκια post-it, στη χρήση σχεδόν πάντα του "1" ως αριθμού και του "!" ως συμβούλου, στη χρήση του ίδιου κωδικού σε δεκάδες υπηρεσίες και σε άλλες τόσες απλοποιήσεις που καταργούν κάθε παροχή ασφάλειας.

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

Για να χαλαρώσουμε, άλλα δύο κόμικ από την ίδια ιστοσελίδα (xkcd.com) με θέμα τους κωδικούς ασφαλείας.

Security

και

Password Reuse