Ο Στρουθοκαμηλισμός μας με τους Κωδικούς

sticky notes with passwords

5 minute read

Μια ξεκάθαρα μη υποστηρίξιμη κατάσταση

Το πλήθος των online λογαριασμών και αντίστοιχων κωδικών που χρησιμοποιούμε φτάνει εύκολα τις εκατοντάδες και αυξάνει σταθερά με το χρόνο. Για το μέσο χρήστη η άγνοια κινδύνου, η βιασύνη και η άγνοια λύσεων οδηγούν στην απλούστερη τακτική: Η πιο συχνή πρακτική είναι η επαναχρησιμοποίηση 2-3 κωδικών σε όλους τους λογαριασμούς, μια προφανώς διάτρητη λύση γιατί η αποκάλυψη ενός κωδικού θα εκθέσει αυτόματα πολλαπλούς λογαριασμούς.
Από την άλλη πλευρά οι μονόπλευρες συμβουλές των ειδικών στην ασφάλεια για τεράστιους, μη επαναχρησιμοποιούμενους, δύσκολα απομνημονεύσιμους κωδικούς, και two-factor authentication (2FA) παντού είναι ρεαλιστικά ανεφάρμοστες από την πλειοψηφία των χρηστών.
Μέχρι την ευρεία διάδοση τεχνολογιών βιοαναγνώρισης δηλ με βάση κάτι που έχεις όχι κάτι που ξέρεις (βλ. ήδη το ξεκλείδωμα κινητών με δακτυλικό αποτύπωμα) και την υιοθέτηση ενός μοναδικού online digital identity για τον καθένα μας, υπάρχει ακόμα πολύς δρόμος, πιθανότατα πάνω από δεκαετία. Στο μεταξύ θα συνεχίσουμε να βασίζουμε την ταυτοποίηση (authentication) χρηστών για online υπηρεσίες στο συνδυασμό username + password.
Για επαγγελματίες πληροφορικής το πρόβλημα είναι προφανώς πιο έντονο καθώς πρέπει να συνδέονται επιπρόσθετα σε πολλά εσωτερικά κρίσιμα συστήματα όπου η επαναχρησιμοποίηση ενός master admin password κατεδαφίστηκε θεαματικά από τον Conficker πριν 10 χρόνια.

Τρομολαγνεία ή άγνοια κινδύνου;

Διαβάζοντας κι ακούγοντας σ’ οποιοδήποτε μέσο για την ψηφιακή ασφάλεια μας δημιουργείται η εντύπωση ότι όλοι οι hackers του πλανήτη έχουν βάλει σκοπό να μας καταστρέψουν τη ζωή, ή τουλάχιστον το Instagram profile. Η αλήθεια είναι οτι η πλειοψηφία των χρηστών κινδυνεύει πολύ περισσότερο από μη στοχευμένες fishing/social engineering attacks για τις οποίες η καλύτερη άμυνα είναι λίγη κοινή λογική. Από την άλλη πλευρά στοιχειώδη μέτρα προστασίας της προσωπικής ή εταιρικής online παρουσίας μας όπως καλές πρακτικές κι εργαλεία  διαχείρισης κωδικών μπορούν να μας γλιτώσουν χρόνο ή ακόμη και το στρες του να μη μπορούμε να χρησιμοποιήσουμε το e-banking, το email ή το Netflix μας.

Ας είμαστε ρεαλιστές

Ρεαλιστικά ένας συνδυασμός εύκολων πρακτικών μπορεί να βελτιώσει κατά πολύ την ασφάλεια των online υπηρεσιών του μέσου χρήστη και ν’ απλοποιήσει την καθημερινότητά του:
  1.  Χρήση authentication providers σ’ όποια sites/εφαρμογές προσφέρονται (“login with Google/Facebook/Microsoft/taxis(!) account”). Κλασσική παρανόηση: Αυτό δε σημαίνει εκχώρηση των δεδομένων του site στον authentication provider, αλλά απλά τη χρήση του identity που ήδη έχουμε για να μη δημιουργούμε καινούριο για κάθε site. Συνήθως εμφανίζεται ξεκάθαρη επιλογή για το τα ελάχιστα δεδομένα που θα εκχωρηθούν (π.χ. η διεύθυνση email μας).
  2. Χρήση ενός εργαλείου διαχείρισης κωδικών (password manager) για εύκολη δημιουργία και χρήση μοναδικών, σύνθετων κωδικών πρόσβασης.

Password Managers

Όλοι έχουν τ’ αγαπημένα τους εργαλεία. Κ’ υπάρχουν πολλά. Ανεξαρτήτως του τι χρησιμοποιεί ο καθένας, ένα εργαλείο διαχείρισης κωδικών πρέπει ενδεικτικά να έχει τα εξής βασικά (must have) χαρακτηριστικά:
  1. Να αποθηκεύει με ασφάλεια τους κωδικούς του χρήστη.
  2. Να δινει στο χρήστη πρόσβαση στους κωδικούς του μέσω Η/Υ αλλά και κινητού.
  3. Να παρέχει two-factor authentication καθώς προστατεύει πολλαπλές άλλες υπηρεσίες.
Δευτερευόντως να παρέχει τα παρακάτω επιθυμητά (nice-to-have) χαρακτηριστικά:
  1. Να επιτρέπει την αποθήκευση αποκλειστικά σε εξοπλισμό του χρήστη (self-hosted) κι όχι μόνο στο cloud.
  2. Να έχει λειτουργία δημιουργίας ισχυρών κωδικών.
  3. Να παρέχει περιοδική αυτόματη σάρωση λίστας κωδικών για επαναχρησιμοποιούμενους και να προτείνει την αλλαγή τους.
Οι πιο διαδεδομένοι password managers περιλαμβάνουν ενδεικτικά τους 1Password, Bitwarden, KeePass, LastPass και πολλοί browsers παρέχουν εγγενώς λειτουργίες password management. Καθώς με το χρόνο το συνδρομητικό μοντέλο αρκετών απ’ τους παραπάνω περιορίζει τη δωρεάν χρήση, άλλοι βρίσκουν τρόπο να προσελκύσουν χρήστες διατηρώντας αρκετά πλήρη χαρακτηριστικά δωρεάν ή ακόμη και παρέχοντας open source/self-hosted εκδόσεις των εργαλείων τους.

Στην πράξη

Σαν παράδειγμα θα περιγράψουμε συνοπτικά πως μπορεί κάποιος να στήσει και να χρησιμοποιήσει έναν open source password manager, το Bitwarden:
O απλούστερος τρόπος είναι η δημιουργία cloud based λογαριασμού πατώντας “Get Started” στο https://bitwarden.com. Η δωρεάν επιλογή “Basic Free Account” αρκεί καθώς ήδη παρέχει όλα τα παραπάνω βασικά χαρακτηριστικά και 2 από τα 3 επιθυμητά.
Έχοντας δημιουργήσει λογαριασμό Bitwarden κατεβάζουμε από εδώ το Bitwarden plugin για τον browser που χρησιμοποιούμε ή/και την εφαρμογή για κινητό, τα εγκαθιστούμε και κάνουμε login με το Bitwarden account που δημιουργήσαμε παραπάνω.
Κάθε φορά που κάνουμε login/register σ’ ένα νέο site το bitwarden θα εμφανίζει την επιλογή ν’ αποθηκεύσει με ασφάλεια τα στοιχεία σύνδεσης μας. Εάν χρησιμοποιούσαμε πριν κάποιον άλλον password manager υπάρχει και η επιλογή μαζικής εισαγωγής λίστας κωδικών από αρχείο csv/json.

Next Level

Αν έχουμε διαθέσιμο χρόνο και μια μεγαλύτερη εξοικείωση με την πληροφορική υπάρχει και η επιλογή να κάνουμε self-hosting το password vault μας. Ο πιο εύκολα διαχειρίσιμος τρόπος είναι να τρέχουμε έναν Bitwarden server σαν Docker container (π.χ. https://hub.docker.com/r/vaultwarden/server) σ’ οποιοδήποτε μηχάνημα Windows ή Linux ακόμα και σ’ ένα Raspberry Pi. Η επιλογή self-hosting βέβαια σημαίνει ότι είμαστε υπεύθυνοι για τη διαθεσιμότητα του server και τα σωτήρια περιοδικά backups. Σε περίπτωση βλάβης του server, οι bitwarden clients μας θα συνεχίσουν να λειτουργούν ανεξάρτητα αλλά δε θα μπορούν να αποθηκεύουν κωδικούς κεντρικά και να συγχρονίζονται μεταξύ τους. Απ’ την άλλη πλευρά το self-hosted bitwarden δεν έχει περιορισμούς στον αριθμό των χρηστών και το διαμοιρασμό κωδικών μεταξύ τους.
Για τους φανατικούς κατοίκους της χώρας του command line υπάρχει και το Bitwarden CLI με δυνατότητα scripting των λειτουργιών που παρέχουν και οι παραπάνω clients για browsers/κινητά.
Ανεξαρτήτως των επιλογών του κάθε χρήστη το τελικό τεστ για κάθε σύστημα/υπηρεσία είναι η χρηστικότητα και η απροβλημάτιστη λειτουργία του στο χρόνο. Έχοντας χρησιμοποιήσει την παραπάνω λύση self-hosted για 10 μήνες κι ανακτήσει επιτυχώς ένα backup στο μεταξύ δείχνει ρεαλιστικά αρκετή για τυπική χρήση.

18.05.2021 // Γιάννης Δήμου