Δεν πρέπει ποτέ να διατηρείτε έναν κωδικό πρόσβασης σε απλό κείμενο, ενώ επιβεβαιώνετε έναν χρήστη ή κάνετε κάτι παρόμοιο.
Δεδομένου ότι πολλά άτομα χρησιμοποιούν τον ίδιο κωδικό πρόσβασης, εάν ένας εισβολέας ανακαλύψει μια βάση δεδομένων με μη κρυπτογραφημένους κωδικούς πρόσβασης, μπορούν εύκολα να χρησιμοποιηθούν σε συνδυασμό με αντίστοιχα μηνύματα ηλεκτρονικού ταχυδρομείου για να εισέλθουν στον συνδεδεμένο ιστότοπο ή λογαριασμό, ακόμη και για να προσπαθήσουν να αποκτήσουν πρόσβαση σε άλλους λογαριασμούς.
Οι κωδικοί πρόσβασης συχνά κατακερματίζονται σήμερα όταν παρέχεται ένας κωδικός πρόσβασης. Συνιστάται να κατακερματίζετε με αλάτι και να διατηρείτε το αλάτι μαζί με τον κατακερματισμένο κωδικό πρόσβασης.
Το αλάτισμα μπορεί να φαίνεται σαν ένα από τα βήματα σε μια συνταγή για καφέ κατακερματισμού, αλλά στην κρυπτογραφία, αναφέρεται στην προσθήκη τυχαίων δεδομένων στην είσοδο μιας συνάρτησης κατακερματισμού για να διασφαλιστεί ότι ο κατακερματισμός θα παρέχει πάντα ένα μοναδικό αποτέλεσμα ακόμα κι αν οι είσοδοι είναι πανομοιότυπες.
Ως αποτέλεσμα, ο χαρακτηριστικός κατακερματισμός που δημιουργείται με την προσθήκη του αλατιού μπορεί να μας προστατεύσει από διάφορες μεθόδους επίθεσης, συμπεριλαμβανομένων των επιθέσεων κατακερματισμού, ενώ καταπνίγει τις προσπάθειες εκτός σύνδεσης λεξικού και ωμής βίας.
Εδώ, με τη βοήθεια αποσπασμάτων κώδικα, θα δείξουμε πώς να χρησιμοποιείτε το 'bcrypt' για την προστασία των κωδικών πρόσβασής σας.
Λοιπόν, τι είναι το «bcrypt»;
Το Bcrypt είναι μια βιβλιοθήκη κατακερματισμού που υποστηρίζει πολλές γλώσσες και παρέχει ειδική κρυπτογράφηση κωδικού πρόσβασης. Για να αυξηθεί η ασφάλεια του κωδικού πρόσβασής σας, παράγει αυτόματα επιπλέον τυχαίους χαρακτήρες (salt) κατά την κρυπτογράφηση της συμβολοσειράς σας.
Μπορείτε επίσης να επιλέξετε να ορίσετε πόσους επιπλέον χαρακτήρες θέλετε να προσθέσετε σε μια εισερχόμενη συμβολοσειρά.
Η βιβλιοθήκη bcrypt διαβάζει μόνο κώδικα byte, όχι ακατέργαστες συμβολοσειρές. Επομένως, πριν υποβάλετε μια εισερχόμενη συμβολοσειρά κωδικού πρόσβασης στο bcrypt για κρυπτογράφηση, πρέπει πρώτα να την κωδικοποιήσετε.
Η κρυπτογράφηση και η κωδικοποίηση δεν είναι τα ίδια πράγματα. Απλώς διασφαλίζει ότι μια συμβολοσειρά είναι αναγνώσιμη από μηχανή πριν καλυφθεί από μια τεχνική κρυπτογράφησης.
Χρήση του bcrypt για την κρυπτογράφηση ενός κωδικού πρόσβασης στην Python
Η Python κάνει την κρυπτογράφηση με κωδικό πρόσβασης bcrypt απλή. Θα επικεντρωθούμε στο να το κάνουμε αυτό χωρίς τη βοήθεια ενός πλαισίου. Αλλά μην ανησυχείτε, αν καταλαβαίνετε πώς μπορείτε να αποθηκεύσετε τις εισαγωγές χρήστη και να τις διαβάσετε από τη βάση δεδομένων, η διαδικασία είναι η ίδια στα πλαίσια.
Εγκατάσταση
Χρειάζεται μόνο να ρυθμίσετε ένα εικονικό περιβάλλον Python και στη συνέχεια να χρησιμοποιήσετε ένα IDE όπως το PyCharm. Η βιβλιοθήκη πρέπει στη συνέχεια να εγκατασταθεί πρώτα:
Κρυπτογράφηση κωδικού πρόσβασης
Ας δούμε πώς να χρησιμοποιήσετε το bcrypt για την κρυπτογράφηση ενός κειμένου μετά την εγκατάστασή του:
Ο προαναφερθείς κώδικας Python εκτελεί και εξάγει μια κρυπτογραφημένη συμβολοσειρά byte. Αλλά κάθε φορά που εκτελείτε το σενάριο, το αποτέλεσμα είναι διαφορετικό. Το Bcrypt χρησιμοποιεί αυτή τη μέθοδο για να βεβαιωθεί ότι κάθε χρήστης έχει έναν κωδικό πρόσβασης που είναι ειδικά κρυπτογραφημένος.
Αυτό, παρεμπιπτόντως, είναι για κρυπτογράφηση κωδικού πρόσβασης.
Σύγκριση και επιβεβαίωση κωδικού πρόσβασης με χρήση του Bcrypt
Τι συμβαίνει εάν θέλετε να αποθηκεύσετε τον κατακερματισμένο κωδικό πρόσβασης και να ελέγξετε αργότερα αν ταιριάζει με τον κωδικό πρόσβασης που υπέβαλε ένας χρήστης για έλεγχο ταυτότητας;
Αυτό είναι απλό. Μόνο ο κωδικός πρόσβασης ελέγχου ταυτότητας πρέπει να συγκρίνεται με την καταχώρηση της βάσης δεδομένων (ή στη μνήμη σε αυτήν την περίπτωση).
Ο κωδικός πρόσβασης ελέγχου ταυτότητας πρέπει επίσης να κωδικοποιηθεί πριν συγκριθεί με αυτόν στη βάση δεδομένων, επειδή το bcrypt μπορεί να διαβάσει μόνο συμβολοσειρές byte. Βασικά, θα συγκρίνετε μια κωδικοποιημένη είσοδο ελέγχου ταυτότητας με τον κωδικοποιημένο κατακερματισμένο κωδικό πρόσβασης που έχετε αυτήν τη στιγμή στη βάση δεδομένων σας.
Ας το δοκιμάσουμε χρησιμοποιώντας πλασματικές εισόδους Python:
Με την εκτέλεση του προαναφερθέντος κωδικού, σας ζητείται νέος κωδικός πρόσβασης. Αυτό αποθηκεύεται στη μνήμη από την Python. Στην ενότητα ελέγχου ταυτότητας, θα εισαγάγετε τον ίδιο κωδικό πρόσβασης, ο οποίος είναι ιδιωτικός για εσάς.
Εάν συγκριθεί ο κωδικός πρόσβασης και αυτός που είχε προηγουμένως κρυπτογραφηθεί και αποθηκεύσει την αντιστοίχιση, η Python εκπέμπει ένα μήνυμα επιτυχίας.
Εάν όχι, εκτυπώνεται το μήνυμα σφάλματος και στη συνέχεια προστίθεται η πρόταση other.
Η θεμελιώδης ιδέα είναι πανομοιότυπη με αυτήν της εγγραφής και στη συνέχεια παροχής κωδικού πρόσβασης σε μια βάση δεδομένων για έλεγχο ταυτότητας.
Συμπέρασμα
Ακόμα κι αν έχουμε απλώς χρησιμοποιήσει κρυπτογραφημένους κωδικούς πρόσβασης για να δείξουμε πώς λειτουργεί το bcrypt σε απλή σύντομη μνήμη Python, η πραγματική του εφαρμογή έγκειται σε εφαρμογές που βασίζονται σε χρήστες.
Ωστόσο, αυτό το άρθρο παρουσιάζει τις βασικές μεθόδους για να οργανώσετε τον κώδικά σας για να το επιτύχετε αυτό, ακόμη και σε πραγματικές συνθήκες.
Για παράδειγμα, εάν χρησιμοποιείτε το Flask, μπορείτε να παρέχετε τα πεδία εγγραφής και ελέγχου ταυτότητας μέσω ξεχωριστών φορμών ιστού αντί για εισόδους.
Φυσικά, κατά τη σύγκριση των κωδικών πρόσβασης, θα διαβάζετε από μια βάση δεδομένων που περιέχει κρυπτογραφημένους κωδικούς πρόσβασης που διατηρούνται στον πραγματικό κόσμο.
Jona Nitsch
Σας ευχαριστώ για αυτήν την απλή και απλή εξήγηση,
Αυτό με βοήθησε πολύ στο τρέχον έργο μου.
Νομίζω ότι είναι πολύ καλό που ο κώδικας του παραδείγματος περιορίζεται στο ελάχιστο και δεν υπερφορτώνεται όπως τόσες άλλες επεξηγήσεις.
Με φιλικούς χαιρετισμούς