Δύο μηχανήματα που μιλούν μόνο μεταξύ τους μπορούν να κρατήσουν αυτή την τοπολογία και παρ’ όλα αυτά να αποκτήσουν διαπραγματευμένα κλειδιά κίνησης. Το σχήμα του δικτύου και η λειτουργία προστασίας είναι ανεξάρτητες επιλογές, και η σύγχυσή τους είναι αυτό που κάνει τους ανθρώπους να προσπαθούν να περιστρέψουν ένα στατικό μυστικό αντικαθιστώντας ένα αρχείο ενώ και οι δύο δαίμονες συνεχίζουν να τρέχουν. Η αντικατάσταση του αρχείου κλειδιού κάτω από ένα ζεύγος που τρέχει δεν περιστρέφει τίποτα. Η λειτουργία στατικού κλειδιού, την οποία το OpenVPN 2.6 χαρακτηρίζει παρωχημένη, κρατά ένα κλειδί για όλη τη ζωή της σήραγγας, οπότε το αρχείο στον δίσκο και το κλειδί στη μνήμη συμφωνούν ξανά μόνο αφού επανεκκινήσουν και τα δύο άκρα. Αν απαιτείται αυτόματη ανανέωση, η λειτουργία προστασίας πρέπει να αλλάξει.

Τι δεν μπορεί να κάνει η λειτουργία στατικού κλειδιού

Στη λειτουργία μυστικού, και οι δύο κόμβοι μοιράζονται ένα προ-κοινόχρηστο κλειδί που κρυπτογραφεί και πιστοποιεί τη σήραγγα απευθείας. Δεν υπάρχει χειραψία, άρα δεν υπάρχει μηχανισμός ώστε οποιαδήποτε πλευρά να προτείνει νέο υλικό κλειδιού, να αποδείξει ταυτότητα ή να ανακάμψει από ασυμφωνία χωρίς παρέμβαση διαχειριστή. Και οι δύο ιδιότητες προκύπτουν από την απουσία καναλιού ελέγχου και όχι από μια επιλογή που λείπει, και καμία σημαία διαμόρφωσης δεν προσθέτει μία σε αυτή τη λειτουργία.

Το εγχειρίδιο του OpenVPN 2.6 δηλώνει ρητά ότι το κλειδί παραμένει μέχρι να δημιουργηθεί νέο. Αυτό είναι αποδεκτό για εργαστηριακή ζεύξη ή για σταθερό ζεύγος συσκευών με τεκμηριωμένη διαδικασία περιστροφής, και είναι απαράδεκτο όπου ένα μακρόβιο μυστικό αποτελεί πραγματικό κίνδυνο. Η αλλαγή αρχείου δεν δημιουργεί νέο κλειδί για ένα ζεύγος που τρέχει· δημιουργεί δύο κόμβους που διαφωνούν. Η αντικατάσταση του αρχείου προσθέτει επομένως διακοπή χωρίς να προσθέτει περιστροφή.

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

Μετάβαση σε TLS χωρίς επανασχεδιασμό της ζεύξης

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

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

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

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

Ποιος ανανεώνει τι, και πότε

Στη λειτουργία TLS, η ανανέωση καθοδηγείται από ρυθμισμένα όρια: ένα χρονικό διάστημα, ένα πλήθος byte ή ένα πλήθος πακέτων. Ο τεκμηριωμένος χρονικός έλεγχος είναι αυτό στο οποίο βασίζονται οι περισσότερες αναπτύξεις, και η χαμηλότερη ενεργή τιμή στους δύο κόμβους μπορεί να ξεκινήσει την αντικατάσταση, οπότε η αύξησή της μόνο στη μία πλευρά δεν θα συγκρατήσει το γεγονός. Τα όρια με βάση τον όγκο υπάρχουν επειδή μια πολυσύχναστη ζεύξη μπορεί να εξαντλήσει ένα κλειδί πολύ πριν το κάνει το ρολόι. Κανένα από τα δύο όρια δεν είναι έλεγχος υγείας και κανένα δεν σας λέει ότι μια ανανέωση πέτυχε.

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

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

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

Αποδοχή της αλλαγής

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

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

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

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