Αλφαριθμητικός χαρακτήρας: Ορισμός, Χρήση κρυπτονομισμάτων, Ασφάλεια
Εξήντα δύο. Αυτός είναι ο συνολικός αριθμός διακριτών συμβόλων που είναι διαθέσιμα όταν κάποιος λέει "χρησιμοποιήστε μόνο αλφαριθμητικούς χαρακτήρες". Είκοσι έξι κεφαλαία γράμματα, είκοσι έξι πεζά γράμματα, δέκα ψηφία. Αφαιρέστε την ευαισθησία πεζών-κεφαλαίων και ο αριθμός μειώνεται στα τριάντα έξι. Και οι δύο αριθμοί έχουν σημασία, επειδή σχεδόν κάθε ψηφιακό αναγνωριστικό που έχετε πληκτρολογήσει ποτέ - μια διεύθυνση πορτοφολιού, ένας κωδικός πρόσβασης Wi-Fi, ένα hash συναλλαγής, ένα διακριτικό GitHub - κατασκευάζεται από ένα επιλεγμένο υποσύνολο αυτών των εξήντα δύο συμβόλων.
Η επιλογή του υποσυνόλου και το γιατί είναι το μέρος που οι περισσότεροι επεξηγητές παραλείπουν. Είναι επίσης το μέρος που συνδέει τον εγκυκλοπαιδικό ορισμό ενός αλφαριθμητικού χαρακτήρα με την πρακτική ασφάλεια του κρυπτογραφικού σας πορτοφολιού. Αυτό το άρθρο περιγράφει την καταμέτρηση, το πρότυπο πίσω από αυτήν, τον τρόπο με τον οποίο η σύγχρονη κρυπτογραφία επιλέγει υποσύνολα αυτής και τι λέει πλέον η εθνική αρχή των ΗΠΑ για τους κωδικούς πρόσβασης σχετικά με αυτήν. Ορισμένες από αυτές τις οδηγίες άλλαξαν με τρόπους που οι περισσότερες συμβουλές ασφαλείας δεν έχουν ακόμη καλύψει.
Τι είναι ένας αλφαριθμητικός χαρακτήρας; Ορισμός και αριθμός
Ξεκινήστε με τον ορισμό. Ένας αλφαριθμητικός χαρακτήρας είναι οποιοδήποτε γράμμα A–Z (είτε πεζά είτε πεζά) ή οποιοδήποτε δεκαδικό ψηφίο 0–9. Αυτό είναι όλο. Από εκεί και πέρα, η αριθμητική είναι προφανής — είκοσι έξι γράμματα ανά πεζά συν δέκα ψηφία δίνουν εξήντα δύο διακριτούς χαρακτήρες με διάκριση πεζών-κεφαλαίων, τριάντα έξι χωρίς. Οτιδήποτε άλλο είναι «ειδικό». Στίξη, κενό διάστημα, μαθηματικά σύμβολα, τονισμένα γράμματα, emoji — κανένα από αυτά δεν μετράει ως αλφαριθμητικό.
Οι μηχανικοί συνήθως πληρούν τον ορισμό μέσω μίας από τις δύο συντομογραφίες. Τα εργαλεία POSIX όπως το grep, το sed και το awk αναγνωρίζουν το `[:alnum:]`, το οποίο ταιριάζει με τους εξήντα δύο χαρακτήρες που αναφέρονται παραπάνω. Οι περισσότερες σύγχρονες εκδοχές regex - Python, JavaScript, Java, PCRE - χρησιμοποιούν το `\w` αντί αυτού. Το πρόβλημα με το `\w` είναι ότι εισάγει κρυφά την υπογράμμιση. Η υπογράμμιση δεν είναι τυπικά αλφαριθμητική. Η περισσότερη σύνταξη προγραμματισμού την αντιμετωπίζει ως τιμητική, γι' αυτό και το πρόθεμα πλήκτρων Stripe `sk_live_` και το πρόθεμα πλήκτρων AWS `AKIA` αναμειγνύουν υπογράμμιση και κεφαλαία γράμματα με ψηφία χωρίς να αναβοσβήνει κανείς.
Από πού προήλθε ο όρος; Από τις διάτρητες κάρτες, περισσότερο από όλες τις άλλες. Ο εξοπλισμός γραφικών παραστάσεων της IBM τη δεκαετία του 1930 χρειαζόταν μία μόνο λέξη για κωδικούς που ανακάτευαν γράμματα με αριθμούς, και η λέξη «αλφαριθμητικός» έμεινε. Μέχρι το IBM 1401 στις αρχές της δεκαετίας του 1960, η λέξη είχε γίνει τυπικό λεξιλόγιο στην επιχειρηματική πληροφορική. Η διάκριση είχε αποκτήσει απήχηση στην πράξη — ένα πεδίο που δηλωνόταν «αλφαριθμητικός» αποδεχόταν οποιοδήποτε γράμμα ή ψηφίο. Ένα πεδίο που περιείχε μόνο αριθμητικά στοιχεία απέρριπτε πλήρως το αλφάβητο. Από εκεί, η λέξη εξαπλώθηκε σε πινακίδες κυκλοφορίας, κωδικούς τραπεζών IBAN, μνημονικά τηλέφωνα-πληκτρολόγια, SKU προϊόντων και σε εκατό άλλες περιπτώσεις.
Η διάκριση μεταξύ πεζών-κεφαλαίων και μη πεζών-κεφαλαίων έχει μεγαλύτερη σημασία από ό,τι φαίνεται. Η εντροπία των κωδικών πρόσβασης διπλασιάζεται όταν επιτρέπονται κεφαλαία γράμματα. Οι διευθύνσεις Base58 του Bitcoin διατηρούν και τα δύο γράμματα σκόπιμα. Το Bech32 πετάει σκόπιμα τα πεζά-κεφαλαία. Κάθε μία από αυτές τις επιλογές είναι μια ανταλλαγή μεταξύ εκφραστικότητας και ανθρώπινου λάθους. Αν επιλέξετε λάθος, οι άνθρωποι χάνουν χρήματα από τυπογραφικά λάθη.

Από το ASCII στο Unicode: Μια σύντομη τεχνική ιστορία
Το "Alphanumeric" σήμερα είναι ο επιζών ενός πολέμου προτύπων που διήρκεσε εξήντα χρόνια. Οι περισσότεροι χρήστες βρέθηκαν κάπου στη μέση και δεν το πρόσεξαν ποτέ.
Το ASCII εμφανίστηκε πρώτο. Κυκλοφόρησε το 1963, ευγενική προσφορά της Αμερικανικής Ένωσης Προτύπων, και επισημοποιήθηκε πέντε χρόνια αργότερα ως ANSI X3.4-1968. Ακολούθησαν δύο αναθεωρήσεις — μία το 1977, μια άλλη το 1986. Η έκδοση του 1968 όριζε κεφαλαίο A στον αριθμό 65, πεζό a στο 97 και τα ψηφία 0–9 από το 48 έως το 57. Ανοίξτε τον επεξεργαστή σας τώρα: το byte «A» είναι ακόμα 65. Τίποτα δεν άλλαξε εδώ και εξήντα χρόνια.
Για περίπου τέσσερις δεκαετίες, το αλφαριθμητικό σύνολο ASCII ήταν το αλφαριθμητικό σύνολο. Έπειτα ήρθε ο παγκόσμιος ιστός. Τα επτά bit έπαψαν να είναι αρκετά. Οι τρόποι αστοχίας ήταν άσχημοι. Παραποιημένα email. Κατεστραμμένες βάσεις δεδομένων. Ιαπωνικοί ιστότοποι που λειτουργούσαν τέλεια στο Τόκιο και έμοιαζαν με τοίχους από ερωτηματικά σε αμερικανικό φορητό υπολογιστή. Το Unicode εμφανίστηκε το 1991 με μια υπερβολική φιλοδοξία: να αντιστοιχίσει έναν μοναδικό αριθμό σε κάθε χαρακτήρα σε κάθε γραφή που είχε γράψει ποτέ κάποιος. Το UTF-8 ακολούθησε το 1992 ως η κωδικοποίηση που στην πραγματικότητα μετέφερε το Unicode μέσω των συνηθισμένων δικτύων. Το κόλπο του ήταν η συμβατότητα με παλαιότερες εκδόσεις — τα πρώτα 128 σημεία κώδικα του UTF-8 είναι ακριβώς τα αρχικά byte ASCII του 1968. Το αγγλικό κείμενο που στάλθηκε πριν από το 1991 συνέχισε να λειτουργεί για πάντα.
Η διασταύρωση έλαβε χώρα τον Δεκέμβριο του 2007. Εκείνο τον μήνα, τα δημόσια στατιστικά στοιχεία ανίχνευσης ιστού έδειξαν τελικά ότι το UTF-8 ξεπερνά το ASCII ως η πιο κοινή κωδικοποίηση στο διαδίκτυο. Από τότε και στο εξής, ο όρος «αλφαριθμητικός» έπαψε να σημαίνει αυστηρά τα εξήντα δύο σύμβολα ASCII. Το Unicode πλέον κατατάσσει αλφαριθμητικά μπλοκ για κυριλλικά, ελληνικά, αραβικά, εβραϊκά και αλφάβητα CJK. Κάθε αλφάβητο έχει τα δικά του γράμματα και τα δικά του ψηφία.
Στην πράξη, ωστόσο, το λογισμικό που πρέπει να διασχίσει σύνορα εξακολουθεί να χρησιμοποιεί ως προεπιλογή το αρχικό υποσύνολο ASCII. Λατινικά γράμματα A–Z. Αραβικοί αριθμοί 0–9. Τίποτα άλλο. Ο λόγος είναι κοινότοπος. Κάθε πληκτρολόγιο παράγει ASCII. Κάθε βάση δεδομένων το δέχεται. Κάθε μηχανή regex το γνωρίζει. Βγείτε από το εύρος και κληρονομείτε ένα χαρτοφυλάκιο από σφάλματα λανθασμένης κωδικοποίησης, παρόμοιους χαρακτήρες και τις επιθέσεις ηλεκτρονικού "ψαρέματος" (phishing) στις οποίες θα επανέλθω παρακάτω.
| Τάξη | Μέλη | Κόμης | Συντομογραφία Regex | Παράδειγμα | |
|---|---|---|---|---|---|
| Αλφαβητικός | Α–Ω, α–ω | 52 | `[Α-Ζα-ζ]` | Απλή αγγλική λέξη | |
| Αριθμητικός | 0–9 | 10 | `[0-9]` ή `\d` | Ένα έτος, ένας ταχυδρομικός κώδικας | |
| Αλφαριθμητικός | Α–Ω, α–ω, 0–9 | 62 | `[A-Za-z0-9]` ή `[:alnum:]` | Κλειδί API, SKU | |
| Ειδικό / συμβολικό | `!@#$%^&*()_+-=[]{};'"\ | ,.<>/?` | ~33 (ASCII) | `[^A-Za-z0-9]` | Τροποποιητής κωδικού πρόσβασης |
Αλφαριθμητικοί χαρακτήρες σε κρυπτονομίσματα: Διευθύνσεις, Hashes, Seeds
Εδώ είναι το σημείο που παραλείπουν οι περισσότεροι γενικοί επεξηγητές. Τα συστήματα κρυπτονομισμάτων δεν χρησιμοποιούν ποτέ το πλήρες αλφαριθμητικό σύνολο των εξήντα δύο χαρακτήρων. Επιλέγουν προσεκτικά επιλεγμένα υποσύνολα . Κάθε ένα από αυτά αποτελεί έναν τεκμηριωμένο μηχανικό συμβιβασμό, όχι μια αυθαίρετη αισθητική.
Πρώτα το Bitcoin. Μια παλαιά διεύθυνση Bitcoin (μια που ξεκινά με 1 ή 3) κωδικοποιείται σε Base58. Το αλφάβητο σχεδιάστηκε από τον Satoshi Nakamoto χειρόγραφα. Συνταγή: πάρτε το αλφαριθμητικό σύνολο εξήντα δύο χαρακτήρων, διαγράψτε τέσσερα μέλη. Βγάλτε το ψηφίο μηδέν, κεφαλαίο Ο, κεφαλαίο Ι, πεζό l. Γιατί αυτά τα τέσσερα; Γράψτε τα σε ένα Post-it με κακό γραφικό χαρακτήρα. Φύγετε. Επιστρέψτε σε πέντε λεπτά. Προσπαθήστε να τα ξεχωρίσετε. Δεν μπορείτε. Αυτό είναι όλο το πρόβλημα για το οποίο δημιουργήθηκε το Base58. Απομένουν πενήντα οκτώ χαρακτήρες. Μια τυπική παλαιά διεύθυνση καταλήγει να έχει μήκος είκοσι έξι έως τριάντα πέντε σύμβολα — αρκετά κοντά για να αντιγραφεί με το χέρι αν πραγματικά χρειαστεί.
Το SegWit ενεργοποιήθηκε τον Αύγουστο του 2017. Μαζί με αυτό ήρθε μια δεύτερη μορφή διεύθυνσης Bitcoin: Bech32, που ορίζεται στο BIP-173. Το Bech32 κάνει διαφορετικά στοιχήματα. Η ευαισθησία στα πεζά-κεφαλαία εξαφανίζεται εντελώς — κάθε διεύθυνση είναι πεζά. Διαγράφονται τέσσερις διαφορετικοί χαρακτήρες: το ψηφίο 1, συν b, i, o. Τα τριάντα δύο εναπομείναντα γράμματα και ψηφία φέρουν ενσωματωμένο άθροισμα ελέγχου. Το άθροισμα ελέγχου εντοπίζει αυτόματα σχεδόν κάθε τυπογραφικό λάθος ενός χαρακτήρα. Το Taproot, που λειτουργεί από τον Νοέμβριο του 2021, βελτίωσε τη μορφή σε Bech32m (BIP-350) αφού οι ερευνητές βρήκαν ένα ελάττωμα πεζών-κεφαλαίων στις αρχικές μαθηματικές πράξεις.
Το Ethereum επέλεξε μια τρίτη διαδρομή. Απλώς χρησιμοποιήστε δεκαεξαδικό. Μια διεύθυνση Ethereum είναι `0x` ακολουθούμενη από ακριβώς σαράντα δεκαεξαδικούς χαρακτήρες. σαράντα δύο χαρακτήρες συνολικά. Το δεκαεξαδικό περιορίζει το αλφαριθμητικό σύστημα σε δεκαέξι μέλη. Τα ψηφία 0–9, τα γράμματα a–f, τίποτα άλλο. Η επιλογή φάνηκε καθαρή το 2015. Μέχρι το 2026, μετά από χρόνια που οι χρήστες έψαχναν ακατέργαστα δεκαεξαδικά blobs στο MetaMask, φαίνεται άσχημο. Το EIP-55 ήταν η λύση. Επιλεκτικά κεφαλαία γράμματα σε ένα μοτίβο που προέρχεται από ένα hash Keccak-256 της πεζής διεύθυνσης. Το αποτέλεσμα είναι δωρεάν ανίχνευση τυπογραφικών λαθών. Το EIP-55 εντοπίζει τυπογραφικά λάθη με αξιοπιστία περίπου 99,975%. Το ποσοστό σφαλμάτων είναι περίπου 0,0247 τοις εκατό. Μικρό. Όχι μηδέν.
Τα hashes είναι η απλούστερη περίπτωση. Μια έξοδος hash SHA-256 είναι 256 bit, που εμφανίζονται ως 64 δεκαεξαδικοί χαρακτήρες. Το Keccak-256 του Ethereum παράγει έξοδο ίδιου μήκους. Ένα αναγνωριστικό συναλλαγής Bitcoin — ένα txid — είναι το hash SHA-256 της ίδιας της συναλλαγής, επομένως ένα txid αποτελείται επίσης από 64 αλφαριθμητικούς δεκαεξαδικούς χαρακτήρες. Φαίνονται τρομακτικοί σε έναν εξερευνητή μπλοκ. Είναι καθαρά αλφαριθμητικοί.
Οι φράσεις-στόχοι σπάνε το μοτίβο. Η ανάκτηση πορτοφολιού BIP-39 είναι το μόνο μέρος όπου τα κρυπτονομίσματα βγαίνουν από τα αλφαριθμητικά και επιστρέφουν σε καθαρά αλφαβητικό έδαφος. Το πρότυπο κωδικοποιεί 128 ή 256 bit εντροπίας ως δώδεκα ή είκοσι τέσσερις αγγλικές λέξεις που προέρχονται από μια σταθερή λίστα 2.048 λέξεων. Κάθε λέξη αποτελείται μόνο από πεζά γράμματα — χωρίς ψηφία, χωρίς μικτή κεφαλαία-κεφαλαία. Γιατί; Επειδή ο στόχος σχεδιασμού είναι ένα άτομο που γράφει λέξεις σε χαρτί στις 3 π.μ. αφού το τηλέφωνό του σβήσει, και τα ψηφία εισάγουν ασάφεια που δεν εισάγουν τα γράμματα.
| Αναγνωριστικό | Σύνολο χαρακτήρων | Μήκος | Παράδειγμα (περικομμένο) |
|---|---|---|---|
| Διεύθυνση Bitcoin παλαιού τύπου | Base58 (58 χαρακτήρες, όχι 0/O/I/l) | 26–35 | `1A1zP1eP5QGefi2…` |
| Bitcoin Bech32 (SegWit) | 32 πεζά γράμματα, όχι 1/b/i/o | ~42 | `bc1qar0srrr7xfk…` |
| Διεύθυνση Ethereum | hex (0–9, a–f) + `0x` | 42 | `0xde0B295669a91…` |
| SHA-256 / txid | γοητεύω | 64 | `e3b0c44298fc1c1…` |
| Λέξη BIP-39 | μόνο από το α έως το ω | 3–8 ανά λέξη | `ικανότητα εγκατάλειψης ικανή…` |
Κάθε υποσύνολο είναι ένα κομμάτι ανθρωποκεντρικού σχεδιασμού που κρύβεται μέσα σε ένα βαθιά τεχνικό σύστημα.
Αλφαριθμητικοί κωδικοί πρόσβασης: Τι λέει στην πραγματικότητα το NIST το 2024
Οι περισσότερες συμβουλές για τους κωδικούς πρόσβασης στο δημόσιο διαδίκτυο είναι ξεπερασμένες εδώ και αρκετά χρόνια. Χρησιμοποιήστε μικτά πεζά-κεφαλαία, προσθέστε αριθμούς, συμπεριλάβετε τουλάχιστον έναν ειδικό χαρακτήρα, αλλάξτε τον κάθε ενενήντα ημέρες — αυτοί οι κανόνες ήταν κανονικοί για δύο δεκαετίες. Το Εθνικό Ινστιτούτο Προτύπων και Τεχνολογίας των Ηνωμένων Πολιτειών τους εγκατέλειψε επίσημα.
Η Ειδική Έκδοση 800-63B του NIST, η ομοσπονδιακή αρχή για την καθοδήγηση σχετικά με την ψηφιακή ταυτότητα, ολοκλήρωσε την Αναθεώρηση 4 τον Σεπτέμβριο του 2024. Η νέα οδηγία είναι εντυπωσιακή ως προς το πόσο πολύ αφαιρεί. Η σύσταση ελάχιστου μήκους αυξήθηκε σε δεκαπέντε χαρακτήρες για τον έλεγχο ταυτότητας ενός παράγοντα. Η οδηγία σχετικά με τους κανόνες σύνθεσης χαρακτήρων διατυπώνεται ως "δεν πρέπει": οι υπηρεσίες δεν πρέπει να απαιτούν συγκεκριμένες κατηγορίες χαρακτήρων. Η περιοδική λήξη κωδικού πρόσβασης, αυτή η ενενήντα ημερών εναλλαγή που όλοι μισούσαν, καταργήθηκε επίσης. Αντί αυτών των κανόνων, το NIST απαιτεί πλέον από τις υπηρεσίες να ελέγχουν τους υποβληθέντες κωδικούς πρόσβασης σε μια λίστα αποκλεισμού γνωστών παραβιασμένων διαπιστευτηρίων.
Η μετατόπιση δικαιολογείται από τα μαθηματικά της εντροπίας. Μια αλφαριθμητική ομάδα 62 χαρακτήρων παράγει περίπου 5,95 bits ανά χαρακτήρα. Η πλήρης εκτυπώσιμη ομάδα ASCII των 95 χαρακτήρων — αλφαριθμητικά συν ειδικά — παράγει 6,57. Η προσθήκη του πλήρους συνόλου των ειδικών χαρακτήρων κερδίζει 0,62 bits ανά χαρακτήρα. Η προσθήκη ενός ακόμη χαρακτήρα μήκους κερδίζει τα 5,95. Το μήκος κυριαρχεί στην πολυπλοκότητα κατά μια τάξη μεγέθους.
Η Έκθεση Διερευνήσεων Παραβίασης Δεδομένων της Verizon για το 2025 διαπίστωσε ότι τα διαπιστευτήρια αποτελούν το 22% όλων των επιβεβαιωμένων σημείων εισόδου παραβίασης. Η παραποίηση διαπιστευτηρίων — η αυτοματοποιημένη επαναχρησιμοποίηση λιστών κωδικών πρόσβασης που έχουν διαρρεύσει — εμφανίζεται στο 19% των προσπαθειών ελέγχου ταυτότητας στο μέσο όρο, φτάνοντας στο 44%. Το σαράντα εννέα τοις εκατό των χρηστών επαναχρησιμοποιούν κωδικούς πρόσβασης σε όλες τις υπηρεσίες. Κανένα από αυτά τα προβλήματα δεν λύνεται με την απαίτηση κεφαλαίου γράμματος.
Ένας μακρύτερος αλφαριθμητικός κωδικός πρόσβασης χωρίς ειδικούς χαρακτήρες είναι πιο δύσκολο να σπάσει από έναν σύντομο που έχει συνταχθεί για να ικανοποιήσει μια λίστα ελέγχου πολυπλοκότητας. Εάν η τράπεζά σας εξακολουθεί να σας υποχρεώνει να συντάξετε έναν κωδικό πρόσβασης δώδεκα χαρακτήρων με ένα κεφαλαίο γράμμα, ένα ψηφίο και έναν ειδικό χαρακτήρα, αυτή η πολιτική είναι πλέον επίσημα ασύμβατη με το ομοσπονδιακό πρότυπο των ΗΠΑ.
Πού αλλού εμφανίζονται αλφαριθμητικοί χαρακτήρες
Βγείτε έξω από την κρυπτογράφηση και οι κωδικοί πρόσβασης και οι αλφαριθμητικές συμβολοσειρές εξακολουθούν να εμφανίζονται όπου ένα σύστημα χρειάζεται ένα αναγνωριστικό που οι άνθρωποι μπορούν να πληκτρολογήσουν και οι υπολογιστές μπορούν να αναλύσουν χωρίς ασάφεια.
Οι κωδικοί τραπεζών είναι ένα εύκολο παράδειγμα. Ένας IBAN μπορεί να έχει τριάντα τέσσερις αλφαριθμητικούς χαρακτήρες και ξεκινά πάντα με έναν κωδικό χώρας ISO δύο γραμμάτων. Οι κωδικοί SWIFT/BIC έχουν οκτώ ή έντεκα γράμματα. Οι πινακίδες κυκλοφορίας ποικίλλουν ανά χώρα — μια πινακίδα του Ηνωμένου Βασιλείου δεν μοιάζει καθόλου με μια γερμανική — αλλά και οι δύο είναι αλφαριθμητικά υποσύνολα της ίδιας ομάδας εξήντα δύο συμβόλων. Οι αριθμοί αναγνώρισης οχημάτων είναι ακριβώς δεκαεπτά χαρακτήρες παγκοσμίως και οι αριθμοί αναγνώρισης οχημάτων (VIN) απαγορεύουν σκόπιμα τα γράμματα I, O και Q για να τα διατηρούν οπτικά διακριτά από τα ψηφία.
Τα κλειδιά API είναι καθημερινά παραδείγματα που οι περισσότεροι χρήστες δεν μπαίνουν ποτέ στον κόπο να εξετάσουν. Ένα κλειδί Stripe live ανοίγει το `sk_live_` συν ένα αλφαριθμητικό διακριτικό. Ένα κλειδί πρόσβασης AWS ανοίγει το `AKIA` συν δεκαέξι αλφαριθμητικούς χαρακτήρες. Ένα προσωπικό διακριτικό πρόσβασης GitHub που εκδίδεται μετά το 2021 ανοίγει το `ghp_`. Αυτά τα προθέματα είναι τα ίδια αλφαριθμητικά, επιλέγονται έτσι ώστε οι πάροχοι να μπορούν να σαρώνουν δημόσια αποθετήρια και αρχεία καταγραφής για διαρροή κλειδιών. Σε πολλές περιπτώσεις, αυτή η σάρωση εντοπίζει ένα σφάλμα πριν από οποιονδήποτε εισβολέα.
Οι κώδικες QR αξίζουν μια σύντομη αναφορά. Το πρότυπο ISO/IEC 18004 ορίζει μια ειδική «αλφαριθμητική λειτουργία» που κωδικοποιεί ένα συγκεκριμένο σύνολο 45 χαρακτήρων — κεφαλαία γράμματα, ψηφία, κενό και μια χούφτα σημεία στίξης — πιο αποτελεσματικά από τη γενική λειτουργία byte. Ένα QR που περιέχει μόνο κεφαλαία αλφαριθμητικά γράμματα αποθηκεύει περίπου 1,6 φορές περισσότερα δεδομένα ανά τετράγωνο από το ίδιο περιεχόμενο που κωδικοποιείται ως ακατέργαστα byte.
Base32, Base58, Base64: Όταν το Crypto επιλέγει ένα υποσύνολο
Υπάρχουν ορισμένα πρότυπα κωδικοποίησης ειδικά για την αντιστοίχιση δυαδικών σε ένα αλφαριθμητικό υποσύνολο. Η αναφορά είναι το RFC 4648, που δημοσιεύτηκε από το IETF το 2006. Ορίζει τρεις κωδικοποιήσεις.
Το Hex είναι το πιο απλό από αυτά. Επίσημα Base16. Δεκαέξι χαρακτήρες: 0–9, a–f. Χρησιμοποιείται για διευθύνσεις Ethereum, κρυπτογραφικά hashes, σχεδόν οποιοδήποτε χαμηλού επιπέδου debugging όπου χρειάζεται να διαβάσετε raw bytes. Το Base32 είναι το πιο ενδιαφέρον. Το αλφάβητο των 32 χαρακτήρων επιλέχθηκε για να μην κάνει διάκριση πεζών-κεφαλαίων και, σε ορισμένες παραλλαγές, για να αφαιρεί τα οπτικά μπερδεμένα ψηφία 0, 1, 8 και 9. Όποιος έχει ρυθμίσει τον έλεγχο ταυτότητας δύο παραγόντων και έχει πληκτρολογήσει ένα μυστικό στο Google Authenticator έχει πληκτρολογήσει Base32 — τις περισσότερες φορές χωρίς να το γνωρίζει.
Το Base64 είναι το βασικό εργαλείο. Εξήντα δύο αλφαριθμητικά σύμβολα συν τα δύο σύμβολα `+` και `/`. Μια παραλλαγή ασφαλής για URL αντικαθιστά αυτά με `-` και `_`. Το Base64 μεταφέρει τα συνημμένα του email σας, κωδικοποιεί τις διευθύνσεις URL δεδομένων μέσα σε HTML και συσκευάζει τα JSON Web Tokens για OAuth.
Το Base58 του Bitcoin βρίσκεται έξω από το RFC 4648. Ο Satoshi Nakamoto το κατασκεύασε ανεξάρτητα. Ο στόχος ήταν διαφορετικός — οι άνθρωποι επαναπληκτρολογούσαν διευθύνσεις, όχι η απόδοση bytes ανά χαρακτήρα — και το αποτέλεσμα ήταν ένα προσαρμοσμένο αλφάβητο που κανείς άλλος δεν χρησιμοποιεί. Το Base85, που μερικές φορές ονομάζεται Ascii85, εκτελείται προς την αντίθετη κατεύθυνση. Συσκευάζει τέσσερα byte σε πέντε χαρακτήρες και εμφανίζεται σε αρχεία PDF και PostScript, όπου η επιπλέον πυκνότητα δικαιολογεί την απώλεια αναγνωσιμότητας.

Συνήθεις παγίδες: Οπτική σύγχυση και ομοιότητες
Οι ίδιοι λόγοι για τους οποίους τα κρυπτονομίσματα επιλέγουν υποσύνολα αλφαριθμητικών χαρακτήρων είναι οι λόγοι για τους οποίους όλοι κάνουν λάθη. Μια χούφτα ζεύγη χαρακτήρων προκαλούν το μεγαλύτερο μέρος του προβλήματος.
Τα κλασικά μπερδεμένα γράμματα: μηδέν και κεφαλαίο Ο. Ψηφίο ένα, πεζό l, κεφαλαίο Ι. Πεζό l και κεφαλαίο Ι. Το Bitcoin Base58 χάνει και τα τέσσερα εξαιτίας αυτού. Άλλα συστήματα χρησιμοποιούν διαφορετικούς μετριασμούς — οι αριθμοί αναγνώρισης (VIN) χάνουν το I, το O και το Q, ορισμένοι οικονομικοί κωδικοί χάνουν εντελώς το O, και μπορείτε να βρείτε εθνικούς κανόνες για τις πινακίδες κυκλοφορίας που απαγορεύουν όποιο γράμμα τυχαίνει να μοιάζει περισσότερο με 0 στη γραμματοσειρά της χώρας.
Ένα πιο δύσκολο και πιο πρόσφατο πρόβλημα είναι οι επιθέσεις ομόγραφου Unicode. Η ιδέα τεκμηριώθηκε σε μια εργασία του 2001 από τους Evgeniy Gabrilovich και Alex Gontmakher. Ένα ομόγραφο αντικαθιστά έναν οπτικά πανομοιότυπο χαρακτήρα από διαφορετικό αλφάβητο - για παράδειγμα, το κυριλλικό 'а' (U+0430) στη θέση του λατινικού 'a' (U+0061). Κατοχυρώστε ένα όνομα τομέα με αυτήν την αντικατάσταση και μπορείτε να φιλοξενήσετε μια σελίδα ηλεκτρονικού "ψαρέματος" (phishing) που φαίνεται να μην διακρίνεται από την πραγματική τράπεζα. Τα σύγχρονα προγράμματα περιήγησης εμφανίζουν την ακατέργαστη αναπαράσταση Punycode - κάτι σαν το `xn--80akhbyknj4f` - κάθε φορά που ένα τομέα αναμειγνύει σενάρια. Αυτή η άμυνα εντοπίζει τις περισσότερες επιθέσεις. Όχι όλες.
Πώς να δημιουργήσετε έναν ισχυρό αλφαριθμητικό κωδικό πρόσβασης στο 2026
Τρεις κανόνες. Όλοι τους προέρχονται απευθείας από τα μαθηματικά του NIST.
Ένα: το μήκος είναι ανώτερο από την κλάση χαρακτήρων. Στοχεύστε σε δεκαέξι ή περισσότερους χαρακτήρες. Ο κανόνας ισχύει εάν το σύστημα δέχεται μόνο γράμματα και ψηφία ή το πλήρες εκτυπώσιμο σύνολο ASCII.
Δεύτερον: αν πρέπει να το απομνημονεύσετε, χρησιμοποιήστε μια φράση πρόσβασης. Τέσσερις τυχαίες λέξεις από μια μεγάλη λίστα — η λίστα Diceware είναι η κανονική επιλογή — ξεπερνούν σε απόδοση σχεδόν οποιονδήποτε σύντομο κωδικό πρόσβασης που θα εφεύρει ένας άνθρωπος.
Τρίτον: για όλα τα υπόλοιπα, χρησιμοποιήστε έναν διαχειριστή κωδικών πρόσβασης. Αφήστε τον διαχειριστή να δημιουργήσει μεγάλες αλφαριθμητικές συμβολοσειρές που δεν θα χρειαστεί ποτέ να διαβάσετε ή να πληκτρολογήσετε χειροκίνητα. Μόλις ένας διαχειριστής χειριστεί την έξοδο, η αναγνωσιμότητα της εξόδου παύει να έχει καμία σημασία.
Γρήγορη αναφορά: Αλφαριθμητικοί αριθμοί και παραδείγματα
Εξήντα δύο με διάκριση πεζών-κεφαλαίων. Τριάντα έξι χωρίς αυτήν. Κώδικες ASCII 48–57 για ψηφία. 65–90 για κεφαλαία. 97–122 για πεζά. Αντιστοιχίστε ολόκληρο το σύνολο με την κανονική έκφραση `[A-Za-z0-9]` ή την κλάση POSIX `[:alnum:]`. Αυτή η ομάδα εξήντα δύο συμβόλων είναι αυτή που κρύβεται πίσω από σχεδόν κάθε ψηφιακό αναγνωριστικό που θα αγγίξετε αυτή την εβδομάδα. Κωδικοί πρόσβασης. Κλειδιά API. IBAN. Πινακίδες κυκλοφορίας. Αναγνωριστικά συναλλαγών. Κάθε διεύθυνση πορτοφολιού που δημιουργείτε.