Γεννήτρια Τυχαίων Κωδικών
Ρυθμίστε τις επιλογές σας — ο κωδικός δημιουργείται ακαριαία με μια κρυπτογραφικά ασφαλή τυχαία πηγή, εξ ολοκλήρου στο πρόγραμμα περιήγησής σας.
Ενεργοποιήστε τουλάχιστον ένα σύνολο χαρακτήρων για να δημιουργηθεί κωδικός πρόσβασης.
Πραγματική τυχαιότητα, όχι Math.random
Οι περισσότερες γεννήτριες κωδικών στο πρόγραμμα περιήγησης
καταφεύγουν στη Math.random() επειδή είναι το πιο
προφανές όνομα συνάρτησης. Το πρόβλημα είναι ότι η
Math.random() είναι μια γρήγορη ψευδοτυχαία γεννήτρια
φτιαγμένη για γραφικά και προσομοιώσεις, όχι για ασφάλεια — δεν
είναι σχεδιασμένη να αντιστέκεται στην πρόβλεψη, και η μεταχείριση
της εξόδου της ως μυστικό είναι μια πραγματική, τεκμηριωμένη
αδυναμία. Αυτή η γεννήτρια χρησιμοποιεί αντ' αυτού την
crypto.getRandomValues(), η οποία αντλεί από την
κρυπτογραφικά ασφαλή πηγή τυχαίων αριθμών του λειτουργικού σας
συστήματος — την ίδια ποιότητα τυχαιότητας που χρησιμοποιείται για
τη δημιουργία κλειδιών κρυπτογράφησης. Κάθε χαρακτήρας επιλέγεται
ανεξάρτητα από όσα σύνολα έχετε ενεργοποιήσει, και η επιλογή
«Εξαίρεση διφορούμενων χαρακτήρων» αφαιρεί όμοιους χαρακτήρες
(i l 1 L o 0 O) από αυτά τα σύνολα πριν ξεκινήσει η
επιλογή — χρήσιμο όταν ένας κωδικός πρέπει να πληκτρολογηθεί ή να
διαβαστεί φωναχτά αντί να επικολληθεί.
Παράδειγμα
Με τις προεπιλεγμένες ρυθμίσεις — μήκος 16, και τα τέσσερα σύνολα χαρακτήρων ενεργά, εξαίρεση διφορούμενων χαρακτήρων ανενεργή — το συνδυασμένο σύνολο χαρακτήρων έχει 88 χαρακτήρες (26 κεφαλαία + 26 πεζά + 10 ψηφία + 26 σύμβολα). Η εντροπία είναι μήκος × log2(μέγεθος συνόλου χαρακτήρων): 16 × log2(88) ≈ 16 × 6,459 ≈ 103,4 bit, κάτι που αυτό το εργαλείο χαρακτηρίζει «Πολύ ισχυρός». Απενεργοποιώντας τα σύμβολα και τους αριθμούς το σύνολο πέφτει σε 52 χαρακτήρες και το ίδιο μήκος δίνει περίπου 91,2 bit — ακόμα ισχυρό, αλλά τα μαθηματικά δείχνουν ακριβώς τι κοστίζει κάθε επιλογή.
Συχνές ερωτήσεις
Γιατί crypto.getRandomValues αντί για Math.random;
Η Math.random() παράγεται από έναν γρήγορο, προβλέψιμο ψευδοτυχαίο αλγόριθμο φτιαγμένο για πράγματα όπως κινούμενα γραφικά και παιχνίδια — ΔΕΝ είναι κρυπτογραφικά ασφαλής, και σε ορισμένες μηχανές προγραμμάτων περιήγησης η εσωτερική της κατάσταση μπορεί να ανακατασκευαστεί από λίγα μόνο αποτελέσματα. Η crypto.getRandomValues() αντλεί από την κρυπτογραφικά ασφαλή γεννήτρια τυχαίων αριθμών του λειτουργικού συστήματος, την ίδια πηγή που χρησιμοποιείται για κλειδιά κρυπτογράφησης. Για οτιδήποτε προστατεύει έναν λογαριασμό, αυτή η διαφορά είναι το ζητούμενο.
Πόσο μεγάλος πρέπει να είναι ένας κωδικός πρόσβασης;
16 χαρακτήρες ή περισσότεροι για οτιδήποτε σημαντικό — email, τραπεζικούς λογαριασμούς, τον κύριο κωδικό του διαχειριστή κωδικών σας. Το 12 είναι ένα λογικό κατώτατο όριο για λογαριασμούς χαμηλότερου κινδύνου. Το μήκος μετράει περισσότερο από την ευρηματικότητα: ένας μεγάλος τυχαίος κωδικός νικά έναν μικρό με αντικαταστάσεις όπως «P@ssw0rd!», τις οποίες οι επιτιθέμενοι έχουν ήδη προβλέψει.
Τι είναι η εντροπία και γιατί έχει σημασία;
Η εντροπία μετρά πόσες προσπάθειες θα χρειαζόταν ένας επιτιθέμενος, εκφρασμένη σε bit — κάθε επιπλέον bit διπλασιάζει τον χώρο αναζήτησης. Υπολογίζεται εδώ ως μήκος × log2(μέγεθος συνόλου χαρακτήρων). Περισσότερα bit σημαίνουν μεγαλύτερο χώρο για ωμή δοκιμή (brute-force), αλλά πρόκειται για απλοποίηση: υποθέτει ότι κάθε χαρακτήρας επιλέγεται ανεξάρτητα και ομοιόμορφα τυχαία, κάτι που ισχύει για αυτή τη γεννήτρια αλλά όχι για κωδικούς που επινοούν οι ίδιοι οι άνθρωποι.
Αποθηκεύεται κάπου ο κωδικός που δημιουργώ;
Όχι. Ο κωδικός δημιουργείται και εμφανίζεται εξ ολοκλήρου στο πρόγραμμα περιήγησής σας με JavaScript — δεν στέλνεται ποτέ σε διακομιστή, δεν καταγράφεται και δεν γράφεται στη διεύθυνση URL. Μόλις φύγετε από τη σελίδα ή κλείσετε την καρτέλα, χάνεται, εκτός αν τον έχετε αντιγράψει.