Άρθρο
Κωδικοποιήστε και αποκωδικοποιήστε δεδομένα ιδιωτικά
Κάθε μέρα οι προγραμματιστές επικολλούν διακριτικά, ωφέλιμα φορτία και διαπιστευτήρια σε σελίδες κωδικοποίησης και αποκωδικοποίησης. Οι πιο βολικές τρέχουν σε διακομιστή, που σημαίνει ότι τα δεδομένα σας φεύγουν από τη συσκευή για μια εργασία που ποτέ δεν το απαιτούσε. Αυτά τα τέσσερα εργαλεία τρέχουν εξ ολοκλήρου στον φυλλομετρητή σας, οπότε τα δεδομένα μένουν σε εσάς.
Base64: φαίνεται ανακατεμένο, αλλά δεν είναι μυστικό
Το Base64 είναι κωδικοποίηση, όχι κρυπτογράφηση. Μετατρέπει δυαδικά δεδομένα σε κείμενο ικανό να επιβιώσει από μια αντιγραφή και επικόλληση ή από τη διέλευση μέσα από συστήματα που χειρίζονται μόνο απλούς χαρακτήρες. Όποιος βλέπει τη συμβολοσειρά Base64 μπορεί να την αποκωδικοποιήσει πίσω στο πρωτότυπο με ένα βήμα, οπότε μια συμβολοσειρά που περιέχει ένα κλειδί API, ένα ιδιωτικό πιστοποιητικό ή το σώμα ενός email είναι πλήρως αναγνώσιμη για όποιον την κρατά. Ο κίνδυνος είναι ότι αυτή η τιμή κρύβεται συχνά σε αρχεία ρυθμίσεων, data URL ή κεφαλίδες ταυτοποίησης και φαίνεται δυσνόητη, κάτι που σας παρασύρει να την επικολλήσετε στον πρώτο αποκωδικοποιητή που βρίσκετε στο διαδίκτυο. Εκείνος ο αποκωδικοποιητής λαμβάνει το ακατέργαστο μυστικό. Ένα εργαλείο που αποκωδικοποιεί Base64 τοπικά σας δείχνει τα αρχικά bytes χωρίς η τιμή να φτάσει ποτέ σε διακομιστή.

Κωδικοποίηση URL: τα ερωτήματα μεταφέρουν περισσότερα απ' όσα νομίζετε
Η κωδικοποίηση ποσοστού σάς επιτρέπει να βάλετε με ασφάλεια κενά, τόνους και δεσμευμένους χαρακτήρες σε ένα URL. Το κείμενο που κωδικοποιείτε ή αποκωδικοποιείτε είναι συχνά μια πραγματική συμβολοσειρά ερωτήματος από μια εφαρμογή, και αυτές μεταφέρουν αναγνωριστικά συνεδρίας, όρους αναζήτησης, διευθύνσεις email, στόχους ανακατεύθυνσης και ενίοτε υπογεγραμμένες παραμέτρους. Η επικόλληση ενός πλήρους URL σε έναν απομακρυσμένο κωδικοποιητή παραδίδει όλα αυτά σε τρίτο με μια κίνηση, και οι συμβολοσειρές ερωτήματος είναι ακριβώς το είδος τιμής που καταλήγει στα αρχεία καταγραφής του διακομιστή. Η κωδικοποίηση και η αποκωδικοποίηση στον φυλλομετρητή σημαίνει ότι το URL επεξεργάζεται στη μνήμη της δικής σας συσκευής και δεν μεταδίδεται ποτέ όσο εργάζεστε σε αυτό.
JWT: το ωφέλιμο φορτίο είναι υπογεγραμμένο, όχι κρυμμένο
Ένα JSON Web Token αποτελείται από τρία τμήματα Base64url ενωμένα με τελείες: μια κεφαλίδα, ένα ωφέλιμο φορτίο και μια υπογραφή. Η υπογραφή αποδεικνύει ότι το διακριτικό δεν παραποιήθηκε, αλλά δεν κάνει τίποτα για να κρύψει το ωφέλιμο φορτίο, που αποκωδικοποιείται σε αναγνώσιμο JSON με αναγνωριστικά χρήστη, ρόλους, χρόνους λήξης και όποιες προσαρμοσμένες δηλώσεις πρόσθεσε ο εκδότης. Ένα έγκυρο διακριτικό είναι επίσης ένα ζωντανό διαπιστευτήριο: μέχρι να λήξει, όποιος το κρατά μπορεί να ενεργεί ως ο χρήστης. Η επικόλληση ενός λειτουργικού διακριτικού σε έναν διαδικτυακό αποκωδικοποιητή στέλνει ένα ενεργό διαπιστευτήριο σε διακομιστή που δεν ελέγχετε. Ένας αποκωδικοποιητής που αναλύει το διακριτικό στον φυλλομετρητή σας αποκαλύπτει την ίδια κεφαλίδα και ωφέλιμο φορτίο χωρίς το διακριτικό να φύγει ποτέ από τη σελίδα.

Hashing: η είσοδος μετράει περισσότερο από τη σύνοψη
Μια συνάρτηση κατακερματισμού μετατρέπει οποιαδήποτε είσοδο σε μια σύνοψη σταθερού μήκους, και δεν μπορείτε να αντιστρέψετε τη σύνοψη πίσω στην είσοδο. Αυτή η ιδιότητα κάνει τον κατακερματισμό χρήσιμο για τον έλεγχο ακεραιότητας ενός αρχείου ή τη σύγκριση τιμών χωρίς αποθήκευση του πρωτοτύπου. Το κόλπο βρίσκεται στην πλευρά της εισόδου: για να υπολογίσετε τη σύνοψη ενός κωδικού, ενός εγγράφου ή ενός μυστικού ρυθμίσεων, πρέπει να δώσετε στο εργαλείο την πραγματική τιμή. Αν αυτό το εργαλείο τρέχει σε διακομιστή, η ευαίσθητη είσοδος ταξιδεύει εκεί παρότι επιστρέφεται μόνο η αβλαβής σύνοψη. Ο τοπικός υπολογισμός της σύνοψης κρατά την είσοδο στη συσκευή σας, οπότε παίρνετε τη σύνοψη που χρειάζεστε χωρίς να εκθέσετε αυτό που κατακερματίζατε.
Κωδικοποίηση Base64: αντιστοίχιση byte και συμπλήρωση
Το Base64 μεταφράζει bytes 8-bit σε χαρακτήρες 6-bit ομαδοποιώντας τρία bytes εισόδου (24 bits) σε τέσσερις τιμές 6-bit. Κάθε τιμή 6-bit αντιστοιχεί σε έναν χαρακτήρα στο αλφάβητο Base64 (A-Z, a-z, 0-9, +, /). Επειδή η διαδικασία απαιτεί εισόδους που να διαιρούνται με 24 bits, οι σύντομες είσοδοι συμπληρώνονται: ένα υπόλοιπο byte παράγει δύο χαρακτήρες συμπλήρωσης (==), δύο υπόλοιπα bytes παράγουν έναν (=). Η παραλλαγή Base64url, που χρησιμοποιείται σε JSON Web Tokens (JWTs), αντικαθιστά το + με - και το / με _ για να κάνει τη συμβολοσειρά ασφαλή για URL, και αφαιρεί εντελώς τη συμπλήρωση =, καθώς οι χαρακτήρες συμπλήρωσης μπορεί να προκαλέσουν σφάλματα σε αυστηρούς αναλυτές URI. Η αναγνώριση αυτής της διαφοράς έχει σημασία κατά τον εντοπισμό σφαλμάτων χειρισμού token: ένα JWT που φαίνεται παραμορφωμένο μπορεί απλώς να είναι κωδικοποιημένο σε Base64url αντί για τυπικό Base64.
Υπογραφές JWT: HS256, RS256 και σύγχυση αλγορίθμων
Η ασφάλεια ενός JSON Web Token εξαρτάται εξ ολοκλήρου από την υπογραφή του, το τρίτο τμήμα που χωρίζεται με τελεία. Με το HS256 (HMAC-SHA256), ο διακομιστής υπογράφει την κεφαλίδα και το payload κωδικοποιημένα σε Base64url χρησιμοποιώντας ένα μυστικό κλειδί. Η συνάρτηση κατακερματισμού SHA-256 παρέχει αντοχή σε συγκρούσεις: είναι υπολογιστικά αδύνατο να παραχθεί ένα τροποποιημένο payload που να κατακερματίζεται στην ίδια υπογραφή χωρίς γνώση του μυστικού κλειδιού. Με το RS256, ο διακομιστής υπογράφει χρησιμοποιώντας ένα ιδιωτικό κλειδί RSA και επαληθεύει με ένα δημόσιο κλειδί. Μια γνωστή ευπάθεια που ονομάζεται σύγχυση αλγορίθμων εμφανίζεται όταν μια βιβλιοθήκη διακομιστή δεν επιβάλλει αυστηρά τον αναμενόμενο τύπο αλγορίθμου. Ένας εισβολέας μπορεί να αλλάξει το πεδίο alg της κεφαλίδας token από RS256 σε HS256 και να υπογράψει το token χρησιμοποιώντας το δημόσιο κλειδί του διακομιστή ως το μυστικό HMAC, καθώς τα δημόσια κλειδιά είναι συχνά προσβάσιμα. Η αποκωδικοποίηση της κεφαλίδας JWT τοπικά στο πρόγραμμα περιήγησης σάς επιτρέπει να επαληθεύσετε ποιος αλγόριθμος καθορίζεται πραγματικά, χωρίς να εκθέτετε το ενεργό token σε συστήματα καταγραφής τρίτων.
Εργαλεία αυτού του άρθρου
- Κωδικοποιητής / Αποκωδικοποιητής Base64Κωδικοποιήστε ή αποκωδικοποιήστε Base64, κείμενο και αρχεία. Χωρίς αποστολή, 100% τοπικά.
- Κωδικοποιητής / Αποκωδικοποιητής URLΚωδικοποίηση με ποσοστό ή αποκωδικοποίηση συμβολοσειρών URL. Χωρίς αποστολή, 100% τοπικά.
- Αποκωδικοποιητής JWTΑποκωδικοποιήστε ένα JWT (κεφαλίδα, περιεχόμενο, λήξη) χωρίς αποστολή πουθενά. Χωρίς επαλήθευση υπογραφής.
- Γεννήτρια κατακερματισμούΔημιουργήστε κατακερματισμούς MD5, SHA-1, SHA-256, SHA-512 από κείμενο ή αρχεία. Χωρίς αποστολή.
Συχνές ερωτήσεις
Είναι το Base64 ή η κωδικοποίηση URL μια μορφή ασφάλειας;
Όχι. Και τα δύο είναι αντιστρέψιμες κωδικοποιήσεις σχεδιασμένες για ασφαλή μεταφορά δεδομένων, όχι για την προστασία τους. Όποιος μπορεί να διαβάσει την κωδικοποιημένη συμβολοσειρά την αποκωδικοποιεί ακαριαία, χωρίς κλειδί ή κωδικό. Αν πρέπει να κρατήσετε μια τιμή εμπιστευτική, κρυπτογραφήστε την με κατάλληλο αλγόριθμο και διαχειριστείτε το κλειδί ξεχωριστά. Αντιμετωπίστε κάθε τιμή σε Base64 ή κωδικοποιημένη με ποσοστό σαν να είναι γραμμένη σε απλό κείμενο.
Γιατί έχει σημασία πού αποκωδικοποιώ ένα διακριτικό ή κατακερματίζω έναν κωδικό;
Επειδή η είσοδος είναι το ευαίσθητο μέρος. Ένα έγκυρο JWT είναι ένα ζωντανό διαπιστευτήριο, και ο κωδικός που κατακερματίζετε είναι το πραγματικό μυστικό. Ένα εργαλείο που βασίζεται σε διακομιστή λαμβάνει εκείνη την ακατέργαστη είσοδο προτού καν επιστρέψει αποτέλεσμα, που σημαίνει ότι ένα αντίγραφο μπορεί να καταγραφεί ή να διατηρηθεί κάπου που δεν βλέπετε. Ένα εργαλείο που τρέχει στον φυλλομετρητή σας εκτελεί την ίδια λειτουργία στη μνήμη της δικής σας συσκευής, οπότε το διακριτικό ή ο κωδικός δεν στέλνονται ποτέ πουθενά.