Διαχείριση κωδικών
Στις σελίδες αυτού του wiki γίνεται λόγος για διάφορα συστήματα ψηφιακής ασφάλειας των δεδομένων και της επικοινωνίας μας. Συχνά, ο πλέον αδύναμος κρίκος σε ένα σύστημα ασφάλειας είναι ο άνθρωπος. Σε όλες τις περιπτώσεις που μελετάμε, χρησιμοποιούμε έναν κωδικό για να κρυπτογραφήσουμε, αποκρυπτογραφήσουμε, υπογράψουμε ψηφιακά ή για να πιστοποιηθούμε. Το πλέον ασφαλές σύστημα όμως θα "σπάσει" αν ο κωδικός που επιλέξαμε δεν τηρεί κάποιες προδιαγραφές ασφάλειας.
Περιεχόμενα
Συνήθεις κακές πρακτικές[επεξεργασία]
Επιλογή "αδύναμων" κωδικών[επεξεργασία]
Προκειμένου να "σπάσει" κάποιος τον κωδικό μας, μπορεί να επιχειρήσει μία Brute-force attack. Στην περίπτωση αυτή δοκιμάζει τυχαία όλους τους πιθανούς κωδικούς. Φυσικά, δεν θα κάτσει κανείς να δοκιμάζει χειροκίνητα έναν προς έναν όλους τους πιθανούς συνδυασμούς. Για τη δουλειά αυτή χρησιμοποιούνται προγράμματα που μπορούν να δοκιμάζουν εκατοντάδες χιλιάδες συνδυασμούς το δευτερόλεπτο.
Θεωρητικά, αν ένας αντίπαλος είχε κυριολεκτικά άπειρο χρόνο στη διάθεσή του, πάντα θα κατάφερνε στο τέλος να βρει τον κωδικό. Στην πράξη όμως κανένας δεν έχει άπειρο χρόνο και η ασφάλεια όλων των συστημάτων που έχουμε μελετήσει βασίζεται στο ότι το κόστος υπολογισμού για να σπαστεί ο κώδικος πρέπει να είναι τόσο μεγάλο, που να μην αξίζει τον κόπο και τον χρόνο για κανέναν, να προσπαθήσει να το παραβιάσει.
Στην περίπτωση της επιλογής κωδικών αυτό σημαίνει πως πρέπει να είναι τόσο "ισχυροί", που ακόμα και με μεγάλη υπολογιστική ισχύ, να απαιτούνται δεκάδες, εκατοντάδες, ή χιλιάδες χρόνια για να σπάσουν.
Κωδικοί μικροί σε μήκος και κωδικοί που δε χρησιμοποιούν μεγάλη ποικιλία χαρακτήρων[επεξεργασία]
Όταν ο κωδικός αποτελείται από n ψηφία, και οι πιθανοί χαρακτήρες που χρησιμοποιούνται (η βάση) είναι b, τότε οι πιθανοί συνδιασμοί με αυτά τα b,n είναι στο πλήθος bn. Για παράδειγμα, οι κωδικοί pin των κινητών και των τραπεζών είναι τετραψήφιοι και χρησιμοποιούν τα 10 αριθμητικά ψηφία. Άρα οι πιθανοί κωδικοί είναι 104 = 10000. Αν το κινητό και το ατμ δεν κλείδωναν στις 3 προσπάθειες, αργά ή γρήγορα οποιοσδήποτε θα μπορούσε να μαντέψει τον κωδικό μας.
Στον παρακάτω πίνακα φαίνεται το πλήθος διαφορετικών συνδιασμών για διαφορετικές τιμές των b,n.
χαρακτήρες | n=4 | n=10 | n=16 |
---|---|---|---|
0-9, b=10 | 10.000 | 10.000.000.000 | 10.000.000.000.000.000 |
a-z b=26 | 456.976 | 141.167.095.653.376 | 43.608.742.899.428.874.059.776 |
a-z,0-9 b=36 | 1.679.616 | 3.656.158.440.062.976 | 7.958.661.109.946.400.884.391.936 |
a-z,A-Z b=52 | 7.311.616 | 144.555.105.949.057.024 | 2.857.942.574.656.970.690.381.479.936 |
a-z,A-Z,0-9 b=62 | 14.776.336 | 839.299.365.868.340.224 | 47.672.401.706.823.533.450.263.330.816 |
Επιλέγοντας κωδικούς με πολλά και διαφορετικά ψηφία, αυξάνουμε το πλήθος των πιθανών κωδικών που πρέπει να δοκιμάσει ο αντίπαλος, άρα το κόστος υπολογισμού και τον χρόνο που απαιτείται.
Κωδικοί που προκύπτουν άμεσα από λέξεις[επεξεργασία]
Προκειμένου να "σπάσει" κάποιος τον κωδικό μας, μπορεί να επιχειρήσει μία Dictionary attack. Σε μία τέτοια επίθεση, ο αντίπαλος δοκιμάζει κωδικούς που προκύπτουν από λέξεις που μπορούν να βρεθούν σε λεξικό. Αυτή η προσέγγιση βασίζεται στην παρατήρηση πως τις περισσότερες φορές, οι άνθρωποι συνηθίζουν να επιλέγουν κωδικούς που είτε είναι, είτε προκύπτουν άμεσα από λέξεις. Σε μία τέτοια περίπτωση, αυτού του είδους η επίθεση μειώνει σημαντικά τον αριθμό των πιθανών συνδυασμών που πρέπει να δοκιμαστούν εφόσον δεν ελέγχεται κάθε τυχαίος συνδυασμός χαρακτήρων παρά μόνο συνδυασμοί που να είναι ή να προκύπτουν από λέξεις. Έτσι, μειώνεται σημαντικά και το κόστος υπολογισμού για να "σπαστεί" ο κωδικός.
Κωδικοί που έχουν άμεση σχέση με εμάς[επεξεργασία]
Αν γενικά η χρήση λέξεων μειώνει το πλήθος των πιθανών κωδικών, τότε η χρήση πληροφοριών που σχετίζονται άμεσα με το θύμα της επίθεσης, μπορεί να καταστήσει μια επίθεση λεξικού ακόμα πιο αποτελεσματική. Συγκεκριμένα η χρήση των δικών μας ονομάτων ή κοντινών μας ανθρώπων, ημερομηνιών γεννήσεως, επετείων, όνομα κατοικίδιων, τίτλοι βιβλίων που έχουμε, αλλά και οτιδήποτε άλλο μπορεί εύκολα να συνδεθεί με εμάς είναι η χειρότερη δυνατή επιλογή, και τέτοιοι κωδικοί είναι οι πρώτοι που θα δοκιμάσει ο αντίπαλος.
Επαναχρησιμοποίηση κωδικών[επεξεργασία]
Όταν χρησιμοποιεί κανείς πολλές υπηρεσίες (email, forum, messaging, e-banking κα), αναγκάζεται να διατηρεί πολλούς λογαριασμούς. Επειδή δεν είναι εύκολο να θυμάται κανείς πολλούς διαφορετικούς κωδικούς, είναι συχνή επιλογή η χρήση του ίδιου κωδικού για πολλούς λογαριασμούς. Αυτή η πρακτική ανοίγει ένα μεγάλο κενό ασφάλειας. Αν κάποιος καταφέρει με κάποιον τρόπο να υποκλέψει έναν κωδικό που χρησιμοποιούμε, αυτόματα έχει πρόσβαση σε όσες άλλες υπηρεσίες χρησιμοποιούμε τον ίδιο κωδικό.
Ακόμα και στην περίπτωση που παίρνουμε ιδιαίτερα μέτρα προστασίας για να προστατέψουμε τους κωδικούς μας, η επαναχρησιμοποίησή τους και πάλι μας εκθέτει. Για παράδειγμα, αν συνδεθεί κάποιος σε κάποια διαδικτυακή υπηρεσία χρησιμοποιώντας http, όταν θα κάνει log in, ο κωδικός θα αποσταλεί στο σέρβερ χωρίς να κρυπτογραφηθεί. Αν κάποιος υποκλέψει το πακέτο στη διαδρομή του, θα μπορέσει να δει τον κωδικό. Και φυσικά μετά θα μπορεί να αποκτήσει πρόσβαση σε όσες άλλες υπηρεσίες έχουμε τον ίδιο κωδικό.
Επιλογή κωδικού - Καλές Πρακτικές[επεξεργασία]
Συνοψίζοντας τα παραπάνω, όταν χρησιμοποιούμε κωδικούς, πρέπει να προσέχουμε τα εξής:
- Ο κωδικός να είναι μεγάλος σε μήκος (12+ ψηφία). Το μήκος είναι το βασικότερο χαρακτηριστικό, για έναν δυνατό κωδικό.
- Ο κωδικός να περιέχει σύμβολα από πολλά σύνολα χαρακτήρων (πεζά και κεφαλαία γράμματα, αριθμούς, ειδικά σύμβολα(?!@#$%^&*()_-=+.,/\|) ).
- Να μην προκύπτει άμεσα από κάποια πληροφορία που σχετίζεται με εμάς και μπορεί να είναι γνωστή σε τρίτους (πχ ημερομηνία γέννησης, αριθμός τηλεφώνου).
- Να μην προκύπτει άμεσα από λέξεις που μπορούν να βρεθούν σε λεξικό.
- Να χρησιμοποιούμε ξεχωριστό κωδικό για κάθε διαφορετική υπηρεσία στην οποία έχουμε λογαριασμό.
- Να μη χρησιμοποιούμε τον κωδικό μας για να συνδεθούμε από υπολογιστές που δεν εμπιστευόμαστε (πχ σε internet cafe).
- Να μη μοιραζόμαστε τον κωδικό με τρίτους, να μην τον αποθηκεύουμε σε μη ασφαλές μέσο (post it στο γραφείο μας, σε σημειωματάρια, ή σε μη κρυπτογραφημένα ψηφιακά μέσα αποθήκευσης.
- Καλό είναι να αλλάζουμε τον κωδικό ανά τακτά χρονικά διαστήματα. Έτσι μειώνεται η πιθανότητα να προλάβει να σπάσει κάποιος τον κωδικό μας, όσο αυτός είναι έγκυρος.
Διαχείριση κωδικών[επεξεργασία]
Αν ακολουθήσει κανείς τις συμβουλές που περιγράφονται παραπάνω για την επιλογή και χρήση των κωδικών του, μπορεί να είναι αρκετά σίγουρος για την ασφάλειά του, στο συγκεκριμένο τομέα τουλάχιστον. Και είναι εφικτό για τον καθένα να ακολουθήσει τις παραπάνω οδηγίες και να απομνημονεύσει μερικούς ισχυρούς κωδικούς. Είναι όμως πλέον συχνό φαινόμενο να χρειάζεται να διατηρεί κανείς μεγάλο πλήθος από λογαριασμούς και άρα κωδικούς. Κωδικοί για υπολογιστές στο σπίτι, στη δουλειά, στη σχολή, emails, forums, chat, instant messaging, κρυπτογραφημένα αρχεία, e-banking, e-shopping και πολλές άλλες εφαρμογές και υπηρεσίες απαιτούν τη χρήση κωδικών. Όταν λοιπόν δεν χρησιμοποιούμε 2-3 λογαριασμούς, αλλά 10, 20, 30 ή και περισσότερους, η απομνημόνευση των ισάριθμων ισχυρών κωδικών που απαιτούνται είναι, για τους περισσότερους, ακατόρθωτη.
Προκύπτει επομένως η ανάγκη εύρεσης ενός εύχρηστου τρόπου ασφαλούς διαχείρισης των κωδικών μας. Μία λύση μας προσφέρουν διάφορες εφαρμογές διαχείρισης κωδικών (password management). Τέτοιες εφαρμογές μας επιτρέπουν να δημιουργούμε και να αποθηκεύουμε τους διάφορους κωδικούς και usernames που χρησιμοποιούμε, σε ένα αρχείο/βάση δεδομένων για να είναι εύκολα προσβάσιμοι. Στη βάση αυτή, οι κωδικοί αποθηκεύονται κρυπτογραφημένοι. Έτσι χρειάζεται να θυμάται κανείς ένα μονάχα κλειδί, αυτό που ξεκλειδώνει τη βάση με τους κωδικούς.
Υλοποίηση - KeePass (X)[επεξεργασία]
Το KeePassX είναι μία εφαρμογή για ανθρώπους με υψηλές απαιτήσεις στην ασφαλή διαχείριση των προσωπικών τους δεδομένων. Έχει ένα ελαφρύ και εύχρηστο γραφικό περιβάλλον, λειτουργεί σε διαφορετικά λειτουργικά συστήματα και δημοσιεύεται ως ελεύθερο λογισμικό υπό την Gnu GPL άδεια.
To KeePassX αποθηκεύει πολλές διαφορετικές πληροφορίες (πχ, usernames, passwords, urls, συννημένα και σχόλια για κάθε εγγραφή σε μία και μοναδική βάση δεδομένων. Για καλύτερη διαχείριση μπορούν να οριστούν τίτλοι και εικονίδια για κάθε καταχώρηση. Επιπλέον, οι καταχωρήσεις κατηγοριοποιούνται σε ομάδες που μπορούν να τροποποιηθούν. Έχει ενσωματωμένη δυνατότητα αναζήτησης.
Το KeePassX προσφέρει και μία εύχρηστη γεννήτρια για δημιουργία κωδικών με βάση ρυθμιζόμενες από το χρήστη παραμέτρους.
Η βάση δεδομένων κρυπτογραφείται με τον κρυπτογραφικό αλγόριθμο AES (ή εναλλακτικά με τον Twofish) με χρήση κλειδιού 256 bits. Οι πληροφορίες της βάσης μπορούν επομένως να θεωρούνται αρκετά ασφαλείς.
Αρχικά, το KeePassX λεγόταν KeePass/L (από το Linux), καθώς ήταν ένα port (μεταφορά και τροποποίηση του κώδικα για να εξυπηρετεί κάποιον άλλο σκοπό ή να είναι συμβατό με άλλα λειτουργικά) του KeePass Password Safe που λειτουργούσε σε Windows. Όταν το KeePass/L έγινε cross-platform (2006), το όνομα άλλαξε σε KeePassX.
To KeePassX χρησιμοποιεί δομή βάσης δεδομένων συμβατή με την έκδοση 1 του KeePass Password Safe (το οποίο λειτουργεί μόνο σε Windows).
Οδηγός εγκατάστασης και χρήσης του KeePassX