Το WireGuard λέει ότι το μήκος του ιδιωτικού κλειδιού είναι λάθος: τι κάνουμε τώρα;
Ένα κλειδί 32 byte σε base64 είναι 44 χαρακτήρες. Αποφασίστε αν έχετε κατεστραμμένο κείμενο ή λάθος ταυτότητα πριν αναδημιουργήσετε οτιδήποτε.
Το μήνυμα λέει ότι το ιδιωτικό κλειδί έχει λάθος μήκος, και η διατύπωση αυτή δείχνει πρώτα στην κωδικοποίηση και μόνο μετά στην κρυπτογραφία. Τα κλειδιά του WireGuard κωδικοποιούν 32 byte σε base64, που δίνει 44 χαρακτήρες μαζί με το τελικό γέμισμα, οπότε μια τιμή άλλου μεγέθους δεν είναι κλειδί όσο τυχαία κι αν φαίνεται. Η συμπλήρωση της συμβολοσειράς μέχρι να τη δεχτεί ο parser παράγει μια καλοσχηματισμένη τιμή που κανένας peer δεν θα αναγνωρίσει ποτέ.
Πίσω από αυτό το σφάλμα κρύβονται δύο διαφορετικές δουλειές: η επιδιόρθωση του κειμένου ενός έγκυρου κλειδιού και η αντικατάσταση μιας ταυτότητας που δεν κατέχετε πια. Έχουν διαφορετικές συνέπειες, και η μία από αυτές ακυρώνει το άλλο άκρο.
Τι περιμένει ο parser
Ένα κλειδί του WireGuard είναι 32 byte υλικού κλειδιού σε base64 με τυπικό γέμισμα, που δίνει σταθερή συμβολοσειρά 44 χαρακτήρων. Τα εργαλεία απορρίπτουν ό,τι δεν αποκωδικοποιείται σε ακριβώς 32 byte, επειδή η υποκείμενη καμπύλη δέχεται βαθμωτό 32 byte και τίποτα άλλο. Οι δημόσιες και οι ιδιωτικές τιμές χρησιμοποιούν την ίδια κωδικοποίηση, οπότε ο parser δεν μπορεί να ξεχωρίσει μόνο από τη μορφή ποια από τις δύο επικολλήσατε. Αυτή η ασάφεια προκαλεί τη μισή σύγχυση γύρω από αυτό το σφάλμα.
wg genkey | tee private.key | wg pubkey > public.key
base64 -d private.key | wc -c
wc -c private.key
wg show wg0 public-key
Αν η τιμή σας αποκωδικοποιείται σε 32 byte, το μήκος είναι εντάξει και το παράπονο προέρχεται από κάπου αλλού στο αρχείο. Αν αποκωδικοποιείται σε κάτι συντομότερο, έχετε κομμένο υλικό και όχι πρόβλημα μορφοποίησης.
Κατεστραμμένη μορφοποίηση ή λάθος υλικό;
Οι ζημιές μορφοποίησης συγκεντρώνονται στις άκρες: εισαγωγικά που πρόσθεσε ένα κέλυφος, μια ετικέτα όπως private_key που αντιγράφηκε μαζί με την τιμή, μια αλλαγή γραμμής που έβαλε ένας πελάτης συνομιλίας ή ένα τελικό κενό που επέζησε της επικόλλησης. Καθεμία από αυτές αλλάζει τη συμβολοσειρά χωρίς να αλλάζει τα byte, οπότε η αφαίρεσή της επαναφέρει την αρχική ταυτότητα. Συγκρίνετε το αρχείο με το μητρώο παροχής χαρακτήρα προς χαρακτήρα αντί να αφαιρείτε στίξη μέχρι να ησυχάσει ο parser.
Το λάθος υλικό είναι διαφορετική κατάσταση. Ένας κωδικός πρόσβασης, ένα κλειδί πιστοποιητικού ή μια δημόσια τιμή μπορούν όλα να φαίνονται πιθανά και να αποκωδικοποιούνται σε λάθος μέγεθος. Καμία ποσότητα καθαρισμού δεν μετατρέπει κανένα από αυτά στο βαθμωτό που περιμένει ο peer. Αυτή η περίπτωση χρειάζεται νέα ταυτότητα και όχι επεξεργασία.
Δημόσιο κλειδί στο πεδίο του ιδιωτικού
Η συνηθέστερη σύγχυση είναι μια δημόσια τιμή επικολλημένη στο πεδίο του ιδιωτικού κλειδιού, ή το αντίστροφο. Και οι δύο είναι έγκυρο base64 32 byte, οπότε ο έλεγχος μήκους περνά και η χειραψία αποτυγχάνει αργότερα χωρίς χρήσιμο μήνυμα. Το ιδιωτικό κλειδί είναι το βαθμωτό που παράγει το δημόσιο, οπότε μπορείτε να το ξεκαθαρίσετε παράγοντας τη δημόσια τιμή και συγκρίνοντάς την με αυτό που εξουσιοδοτεί ο peer. Όταν η παράγωγη τιμή δεν ταιριάζει με το μητρώο, κρατάτε τη λάθος ταυτότητα και όχι ένα τυπογραφικό λάθος.
Η αντικατάσταση του ιδιωτικού κλειδιού του πελάτη χωρίς ενημέρωση του εξουσιοδοτημένου δημόσιου κλειδιού στο άλλο άκρο αναδημιουργεί την ίδια αναντιστοιχία, με την πρόσθετη σύγχυση ότι το αρχείο του πελάτη τώρα φαίνεται συνεπές. Αλλάξτε και τα δύο άκρα σε μία ενέργεια, αλλιώς ο επόμενος θα αποσφαλματώσει το λάθος μισό.
Επιδιορθώστε το προφίλ και μετά αποδείξτε τη χειραψία
Μόλις το κλειδί αποκωδικοποιηθεί στο σωστό μέγεθος και ταιριάξει με το εξουσιοδοτημένο ζεύγος, το υπόλοιπο έργο είναι το προφίλ και η διαδρομή. Οι παρακάτω εντολές παράγουν ένα νέο ζεύγος όταν χρειάζεται, επαληθεύουν το αποκωδικοποιημένο μέγεθος ενός υπάρχοντος κλειδιού και διαβάζουν τη δημόσια τιμή που χρησιμοποιεί πραγματικά η διεπαφή. Μην επικολλάτε ποτέ μια ιδιωτική τιμή σε δελτίο ή σε ιστότοπο αποκωδικοποίησης.
wg genkey | tee new.key | wg pubkey > new.pub
base64 -d private.key | wc -c
ip route get 10.60.9.5
wg show wg0 latest-handshakes
Ο έλεγχος μεγέθους απαντά αν το υλικό έχει μορφή κλειδιού, και το ερώτημα δρομολόγησης απαντά αν ένα πακέτο θα έφτανε ποτέ στη διεπαφή. Μια γραμμή χειραψίας που μένει κενή αφού περάσουν και οι δύο έλεγχοι μεταφέρει τη διάγνωση στο άκρο του peer και στις επιτρεπόμενες διευθύνσεις. Διαβάστε το δημόσιο κλειδί της διεπαφής απέναντι στο μητρώο παροχής μία τελευταία φορά, γιατί ένα παρωχημένο αποθηκευμένο προφίλ μπορεί να φαίνεται σωστό ενώ το ενεργό διαφέρει].
Καταγράψτε ποια τιμή αντικαταστήσατε και πού βρίσκεται το εξουσιοδοτημένο αντίγραφο. Όποιος αγγίξει αυτόν τον peer στη συνέχεια πρέπει να ξέρει ποιο άκρο άλλαξε.