ΕΛ/ΛΑΚ | creativecommons.gr | mycontent.ellak.gr |
freedom

Οι κωδικοί πρόσβασης στο Linux με απλά λόγια

by: OSArena

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

Αν και αυτό αρκετές πλατφόρμες (λ.χ. οι τράπεζες) το αντιμετωπίζουν υποχρεώνοντας τους χρήστες να βάζουν ισχυρούς κωδικούς με συχνή ανανέωση, το πρόβλημα εξακολουθεί να παραμένει και καθημερινά να χάνονται αναρίθμητοι λογαριασμοί. Έτσι, λοιπόν, επανέρχομαι με μια επεξήγησή τους «for dummies».

Οι κωδικοί πρόσβασης στο βάθος του χρόνου

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

Την πιο σύγχρονη και εξελιγμένη μορφή κρυπτογράφησης τη συναντούμε στις μηχανές «Enigma» των Ναζί, που προσπάθησαν με αυτόν τον τρόπο να διαφυλάξουν τα σκοτεινά μυστικά τους, ενώ ο πρώτος κωδικός για υπολογιστές δημιουργήθηκε το 1961 στο Ινστιτούτο Τεχνολογίας της Μασαχουσέτης1, όταν όχι μόνο δεν υπήρχαν οικιακοί υπολογιστές μα οι περισσότεροι άνθρωποι αγνοούσαν την ύπαρξή τους.

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

Οι κωδικοί και εμείς

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

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

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

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

Παρανοήσεις και κανόνες προς αποφυγή

  • Όταν από κάποια υπηρεσία μας δίδεται ένας προσωρινός κωδικός, σημαίνει πως κυριολεκτικά είναι προσωρινός και ως εκ τούτου θα πρέπει να τον αλλάξουμε αμέσως μετά την πρώτη σύνδεση.
  • Προφανώς, εύκολα μαντέψιμα είναι το όνομά μας ή του κατοικιδίου μας, ένα παρατσούκλι, η ημερομηνία γέννησης, οι πινακίδες του αυτοκινήτου μας, το τηλέφωνό μας, το email μας, το ΑΦΜ, ο ΑΜΚΑ μας κ.ο.κ.
  • Αποφεύγουμε τα συνεχόμενα πλήκτρα. Ένα παράδειγμα, ώστε να γίνει κατανοητό, είναι το «qwert1234». Εκτός του γεγονότος πως βρίσκεται σταθερά στην πρώτη εικοσάδα των κοινότερων κωδικών και χρειάζονται μόλις τέσσερα δευτερόλεπτα για να σπάσει, ενδέχεται, αν βρεθούμε σε τρίτο υπολογιστή, η διάταξη των πλήκτρων να είναι διαφορετική.
  • Ορισμένοι μπορεί να αισθάνονται κάπως σαν… «hackers» όταν εναλλάσσουν γράμματα και σύμβολα. Αυτή είναι μια καλή μέθοδος, εντούτοις δεν έχει ουδεμία αποτελεσματικότητα με προφανή σύμβολα σε λέξεις (π.χ. «p@ssw0rd», «s1d», «mp@mp1s0sougi@$»). Συνεπώς, προσπαθούμε να χρησιμοποιούμε τα σύμβολα σε δύσκολους συνδυασμούς2.
  • Ούτε οι επαναλαμβανόμενες λέξεις προσθέτουν ασφάλεια (π.χ. «costascostas»). Και εδώ έχουμε το εύκολα μαντέψιμο.
  • Όχι, δεν είναι ασφαλές το να ανοίξουμε ένα λεξικό και να πάρουμε τυχαίες λέξεις από αυτό. Υπάρχουν πολλοί άνθρωποι που επιλέγουν λέξεις από βιβλία ή από ταινίες. Εδώ η εξήγηση είναι ιδιαιτέρως απλή, καθώς η όποια επιλογή μας βασίζεται σε εννοιολογικά κριτήρια. Παλαιότερη έρευνα από το Πανεπιστήμιο του Cambridge έχει αποδείξει την αναποτελεσματικότητα αυτής της μεθόδου και το πόσο εύκολα σπάει με «επιθέσεις λεξικού» (αγγλ. «dictionary attacks»).

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

Κωδικοί και πρόσβαση σε Linux/Unix συστήματα

Έχοντας αναφέρει όλα τα παραπάνω, ας δούμε και πώς δουλεύουν όλα αυτά στα Unix-based (ή Unix-like) συστήματα. Δηλαδή, το πού βρίσκονται οι κωδικοί πρόσβασης, τι σημαίνουν και πώς καταφέρνει το λειτουργικό μας να τους εντοπίζει.

Κατά κανόνα, οι κωδικοί μας βρίσκονται στον φάκελο συστήματος /etc και πρόκειται για ένα αρχείο κειμένου με την ονομασία passwd. Υπάρχουν ορισμένες εξαιρέσεις σε αυτό (NIS/YP ή password shadowing3), μα αφορούν εξειδικευμένα συστήματα που δε μας ενδιαφέρουν εν προκειμένω. Αν και αυτό το αρχείο είναι αναγνώσιμο από κάθε χρήστη του συστήματος, η προσπέλασή του γίνεται μόνο από τον διαχειριστή, δηλαδή τον root.

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

Κάτι άλλο που θα πρέπει να ξέρουμε είναι πως στα Unix συστήματα οι κωδικοί είναι αλφαριθμητικοί. Έχουν, δηλαδή, μια συγκεκριμένη δομή αποτελούμενη από επτά πεδία, τα οποία χωρίζονται αναμεταξύ τους με άνω-κάτω τελεία (:). Έτσι, το μέγιστο εύρος τους είναι οι οκτώ χαρακτήρες4.

Ας το δούμε με ένα παράδειγμα αυτό. Ας υποθέσουμε ότι έχουμε την εξής εισαγωγή: osarena:GbYΡrS9ΤP6TU4:701:200:osarena net:/home/osarena:/bin/bash. Τι σημαίνει αυτό το μακρυνάρι;

  • osarena: Όνομα χρήστη
  • GbYΡrS9ΤP6TU4: Ο μονόδρομα κρυπτογραφημένος κωδικός
  • 701: Αριθμός χρήστη (καθένας έχει διαφορετικό)
  • 200: Αριθμός ομάδας χρηστών
  • osarena net: Το πλήρες όνομα χρήστη που δόθηκε κατά την εγκατάσταση
  • /home/osarena: Ο προσωπικός φάκελος χρήστη
  • /bin/bash: Κάποιο πρόγραμμα το οποίο θα εκκινεί κατά την είσοδο (όπως κάποιο shell)

Η τεχνική της μονόδρομης κρυπτογράφησης που χρησιμοποιείται -και είδαμε πιο πάνω πως βρίσκεται εντός του αρχείου του κωδικού- συνεπάγεται πως αυτός είναι σχεδόν αδύνατο να αποκρυπτογραφηθεί. Βλέπουμε πως το πεδίο του κωδικού περιέχει 13 χαρακτήρες. Είναι (κυρίως) αυτό που ονομάζουμε «salt» και συνήθως βρίσκονται στην αρχή, ενώ οι υπόλοιποι που έπονται λέγονται «hash».

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

Η ύπαρξη του «salt» κάνει τα πράγματα ακόμα πιο δύσκολα για τον επιτιθέμενο, αφού αποτρέπει οποιαδήποτε μορφή απλής κρυπτογράφησης και τις συνήθεις επιθέσεις λεξικού. Παράλληλα με τη δημιουργία 4096 διαφορετικών «hashes» για κάθε κωδικό, συντείνει στην επιμήκυνση του χρόνου που απαιτείται για την αποκρυπτογράφηση, καθιστώντας αναγκαία περισσότερη υπολογιστική ισχύ.

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

Πηγή άρθρου: https://osarena.net/

Leave a Comment