Οι περισσότεροι συναντούν τη λέξη nonce σε ένα προφίλ VPN και υποθέτουν ότι είναι άλλο ένα κοινόχρηστο μυστικό για αντιγραφή μεταξύ ομοτίμων. Δεν είναι. Ένα nonce είναι μια τιμή που δεν πρέπει ποτέ να επαναλαμβάνεται κάτω από το ίδιο κλειδί, και στις περισσότερες κρυπτογραφήσεις βασισμένες σε nonce ταξιδεύει ανοιχτά. Η σύγχυση μένει αβλαβής μέχρι κάποιος να το επεξεργαστεί με το χέρι, και εκεί αρχίζει η πραγματική βλάβη.

Από πού προέρχεται στην πραγματικότητα το nonce

Η πιστοποιημένη κρυπτογράφηση χρειάζεται διαφορετικό nonce για κάθε μήνυμα που κρυπτογραφείται κάτω από ένα κλειδί. Τα πρωτόκολλα ικανοποιούν αυτή την απαίτηση με διαφορετικούς τρόπους: έναν μονότονα αυξανόμενο μετρητή, ένα αλάτι σε συνδυασμό με αναγνωριστικό πακέτου ή μια αρκετά μεγάλη τυχαία τιμή. Το IKEv2 ανταλλάσσει nonces κατά την αρχική ανταλλαγή, και είναι δημόσιες είσοδοι για την παραγωγή κλειδιού, όχι μυστικά.

Η μοναδικότητα μπορεί να είναι δομική ή πιθανοτική. Ένας μετρητής δεν μπορεί να επαναληφθεί μέχρι να κάνει κύκλο, γι’ αυτό το πρωτόκολλο ορίζει σημείο ανανέωσης κλειδιού πολύ πριν από αυτό. Μια τυχαία τιμή βασίζεται σε αρκετά bit ώστε μια σύγκρουση να είναι απίθανη εντός του ορίου μηνυμάτων, που είναι διαφορετικό επιχείρημα με διαφορετικό τρόπο αποτυχίας. Η τεκμηρίωση του πρωτοκόλλου ονομάζει ποια μέθοδος ισχύει, και και οι δύο είναι ασφαλείς μόνο όσο τηρείται το δηλωμένο όριο.

DesignWhere uniqueness comes fromExhaustion is handled by
AES-GCM recordsAn IV, typically a counterRekey before the counter wraps
ChaCha20-Poly1305A 96-bit nonce from a counter or generatorA message limit per key
WireGuardA per-key 64-bit counterRekey at a message cap
OpenVPN AEADPacket identifier plus implicit key materialRekey on the packet-id limit
IKEv2Fresh nonces per exchangeA new security association

Τι κοστίζει πραγματικά η επαναχρησιμοποίηση

Η επαναχρησιμοποίηση ενός nonce κάτω από ένα κλειδί δεν είναι μικρό ζήτημα αποδοτικότητας. Με το GCM, δύο μηνύματα που μοιράζονται ένα IV επιτρέπουν σε έναν παρατηρητή να ανακτήσει το κλειδί ελέγχου ταυτότητας και να υπολογίσει το αποκλειστικό ή των δύο απλών κειμένων. Οι κατασκευές που βασίζονται σε ροή επαναχρησιμοποιούν τη ροή κλειδιού με τον ίδιο τρόπο, κάτι που μετατρέπει το κρυπτοκείμενο σε γρίφο αντί για μυστικό.

Γι’ αυτό οι υλοποιήσεις ανανεώνουν το κλειδί πριν κάνει κύκλο ένας μετρητής, και γι’ αυτό σταματούν αντί να συνεχίζουν όταν η κατάστασή τους είναι αβέβαιη. Μια επανεκκίνηση που μηδενίζει έναν μετρητή ενώ ο ομότιμος κρατά ακόμη το παλιό κλειδί, ή μια εικονική μηχανή που επαναφέρεται από στιγμιότυπο που λήφθηκε στη μέση μιας συνεδρίας, είναι ακριβώς η κατάσταση που υπάρχουν για να αποτρέπουν τα όρια. Δεν απαιτείται εισβολέας· οι συνηθισμένες λειτουργίες αρκούν.

Γιατί η χειροκίνητη επεξεργασία είναι λάθος διόρθωση

Οι μετρητές, τα άλατα και τα αναγνωριστικά πακέτων είναι μηχανές κατάστασης που μοιράζονται και τα δύο άκρα. Η αλλαγή της μίας πλευράς αποσυγχρονίζει την άλλη, και η σήραγγα αποτυγχάνει με τρόπους που μοιάζουν με πρόβλημα δρομολόγησης. Ο υποστηριζόμενος μοχλός είναι μια νέα ανταλλαγή κλειδιών, που μηδενίζει την κατάσταση και στα δύο άκρα ταυτόχρονα.

Οι κωδικοί πρόσβασης και τα nonces παίζουν επίσης διαφορετικούς ρόλους. Ένας κωδικός είναι μυστική είσοδος για την παραγωγή κλειδιού· ένα nonce είναι δημόσια είσοδος ανά μήνυμα. Ένα πεδίο προφίλ με ετικέτα nonce που ζητά ένα μακρύ μυστικό είναι συνήθως ένα στατικό κλειδί ή ένα προκοινοποιημένο μυστικό με άλλο όνομα, οπότε διαβάστε την τεκμηρίωση για εκείνο το πεδίο αντί να υποθέσετε.

Όταν μια ειδοποίηση αφορά τον χειρισμό nonce, η διόρθωση είναι η διορθωμένη έκδοση του συντηρητή, όχι άλλος κρυπταλγόριθμος ή μικρότερο κλειδί. Η αλλαγή του αλγορίθμου για να αποφευχθεί η λέξη nonce μετακινεί το πρόβλημα αντί να το λύνει.

Διαβάζοντας μια προειδοποίηση χωρίς εικασίες

Μια γραμμή καταγραφής για μετρητές ή nonces περιγράφει συνήθως χαμένη κατάσταση και όχι επίθεση. Ελέγξτε αν επανεκκινήθηκε ένας ομότιμος, αν μια κλωνοποιημένη εικονική μηχανή επαναχρησιμοποίησε την ίδια ταυτότητα και αν τα δύο άκρα συμφωνούν στις ρυθμίσεις ανανέωσης κλειδιού. Στη συνέχεια δημιουργήστε μια νέα συνεδρία και δείτε αν το μήνυμα επιστρέφει.

Κρατήστε τη διάγνωση χωριστά από άσχετες αποτυχίες. Μια σελίδα που δεν φορτώνει, ή ένα αίτημα διαπιστευτηρίων που επαναλαμβάνεται, δεν είναι απόδειξη επαναχρησιμοποίησης nonce, και η αντιμετώπισή του ως τέτοιου σας στέλνει στο κρυπτογραφικό επίπεδο ενώ το πρόβλημα είναι πάνω από αυτό.

Για συνηθισμένη χρήση, ο ασφαλής κανόνας είναι σύντομος: αφήστε την υλοποίηση να διαχειρίζεται το nonce, κρατήστε και τα δύο άκρα σε υποστηριζόμενες εκδόσεις και θεωρήστε κάθε μηδενισμό κατάστασης λόγο ανανέωσης κλειδιού και όχι επεξεργασίας μιας τιμής. Αν ένα πεδίο προφίλ δεν υπάρχει στην τεκμηρίωση του κατασκευαστή, μην επινοήσετε τιμή για αυτό. Η διόρθωση της σήραγγας αρχίζει με το να ξέρετε σε ποιο επίπεδο κοιτάτε.

Σχετικά άρθρα