OpenVPN tls-crypt-v2: τι κάνουν το κλειδί του πελάτη και το τυλιγμένο blob
Ένα προφίλ tls-crypt-v2 περιέχει ένα κλειδί ελέγχου πελάτη και ένα τυλιγμένο αντίγραφο που μόνο ο διακομιστής μπορεί να ανοίξει. Κρατήστε κάθε αντικείμενο και κάθε βήμα απόσυρσης χωριστά.
Η επικόλληση ενός προφίλ tls-crypt-v2 σε ένα δελτίο φαίνεται αβλαβής μέχρι να μετρήσετε τι περιέχει το αρχείο. Το κλειδί του καναλιού ελέγχου του πελάτη βρίσκεται δίπλα σε ένα κρυπτογραφημένο αντίγραφο του ίδιου κλειδιού, και ένα τρίτο αντικείμενο, το κλειδί τυλίγματος, δεν εγκαταλείπει ποτέ τον διακομιστή που δέχεται. Αυτά τα τρία απαντούν σε διαφορετικά ερωτήματα για την επιμέλεια, τον διαμοιρασμό και την απόσυρση. Ο χωρισμός τους λύνει τις περισσότερες διαφωνίες πολιτικής πριν αρχίσουν.
Τι περιέχει πραγματικά το προφίλ
Το μισό του πελάτη στο tls-crypt-v2 είναι ένα κλειδί συν ένα τυλιγμένο αντίγραφό του. Ο πελάτης χρησιμοποιεί το απλό κλειδί για την προστασία του καναλιού ελέγχου και παραδίδει το τυλιγμένο αντίγραφο στον διακομιστή κατά τη ρύθμιση, ώστε ο διακομιστής να ανακτά το ίδιο κλειδί χωρίς να αποθηκεύει αντίγραφο απλού κειμένου ανά πελάτη. Το κλειδί τυλίγματος κάνει δυνατή αυτή την ανάκτηση και ανήκει μόνο στην πλευρά που δέχεται. Όλα τα παρακάτω προκύπτουν από το πού ζουν αυτά τα τρία αντικείμενα.
| Object | Where it lives | What can open it | What a leak costs |
|---|---|---|---|
| Server wrapping key | accepting servers only | the unwrap step inside the server | every wrapped copy issued to that group becomes readable |
| Wrapped client key | inside the client profile | the server wrapping key | it names a client and exposes its metadata, but not the key inside |
| Client control key | inside the client profile, usable as-is | the client that owns it | someone can open handshakes as that client until the server refuses the key |
Διαβάστε τον πίνακα με κριτήριο την επιμέλεια και όχι το όνομα, και οι συνέπειες βγαίνουν μόνες τους. Η απώλεια του κλειδιού τυλίγματος είναι το ακριβό γεγονός, γιατί τίποτα στο προφίλ δεν μπορεί να το ανακατασκευάσει και η έντιμη ανάκτηση είναι η επανέκδοση της ομάδας. Ένα προφίλ που διέρρευσε είναι φθηνότερο αλλά πολύ πιο συνηθισμένο, γιατί τα προφίλ τα επικολλούν σε δελτία άνθρωποι που πιστεύουν ότι το τυλιγμένο αντίγραφο κάνει το αρχείο ασφαλές για διαμοιρασμό. Οι δύο αποτυχίες απαιτούν διαφορετικές απαντήσεις, και γι' αυτό τα αντικείμενα κρατιούνται χωριστά.
Γιατί το τυλιγμένο αντίγραφο δεν είναι όλη η ιστορία
Ένα προφίλ μεταφέρει το χρησιμοποιήσιμο υλικό πελάτη μαζί με το τυλιγμένο ομόλογό του, οπότε η προστασία του αντιγράφου για τον διακομιστή δεν λέει τίποτα για την προστασία του αρχείου. Το blob είναι ασφαλές για μεταφορά και μη ασφαλές για δημοσίευση. Τα μεταδεδομένα μέσα του είναι ορατά σε όποιον λαμβάνει το blob, μαζί με όποιον αργότερα διαβάσει το δελτίο όπου επικολλήθηκε.
Αντιμετωπίστε το προφίλ ως διαπιστευτήριο και όχι ως δείγμα ρύθμισης. Ένα αρχείο που διέρρευσε δίνει στον κάτοχό του μια λειτουργική ταυτότητα πελάτη μέχρι ο διακομιστής να σταματήσει να δέχεται αυτή την ταυτότητα, και το τύλιγμα δεν κάνει τίποτα για αυτό το παράθυρο. Εκδώστε ένα προφίλ ανά πελάτη ώστε η απόσυρση να παραμένει απόφαση ενός αρχείου, και κρατήστε αντίγραφο ασφαλείας του κλειδιού τυλίγματος χωριστά από τη ρύθμιση διακομιστή που ενεργοποιεί. Καμία από τις δύο συνήθειες δεν επιδιορθώνει ένα παραβιασμένο προφίλ, αλλά και οι δύο καθορίζουν πόσο γρήγορα θα περιοριστεί το επόμενο.
Πού βρίσκεται το άγκιστρο επαλήθευσης στη χειραψία
Το άγκιστρο επαλήθευσης εκτελείται πριν εκτεθεί η στοίβα TLS, και το έργο του είναι να επιθεωρεί τα μεταδεδομένα που μεταφέρονται στο τυλιγμένο blob. Λαμβάνει αυτά τα μεταδεδομένα συν ένα μικρό, τεκμηριωμένο περιβάλλον, και έχει λιγότερα μέσα από ένα άγκιστρο πιστοποίησης. Η υπόθεση ότι βλέπει ονόματα χρηστών, κατάσταση συνεδρίας ή μεταβλητές πρόσθετων είναι ο συνηθισμένος τρόπος με τον οποίο αυτό το άγκιστρο γράφεται άσχημα. Διαβάστε τη δική του ενότητα στο εγχειρίδιο αντί να δανείζεστε προσδοκίες από άλλο άγκιστρο.
Η κατάσταση εξόδου του είναι η απόφαση: ένα μη μηδενικό αποτέλεσμα απορρίπτει τον πελάτη και ένα μηδενικό επιτρέπει στη χειραψία να συνεχιστεί. Επομένως η πολιτική πρέπει να λέει τι συμβαίνει όταν τα μεταδεδομένα λείπουν, δεν μπορούν να αναλυθούν ή είναι απρόσμενα. Γράψτε πρώτα τη διαδρομή απόρριψης και μετά αποφασίστε ποιες τιμές είναι αποδεκτές.
tls-crypt-v2 /etc/openvpn/server/tcv2-server.key
tls-crypt-v2-verify /etc/openvpn/server/verify-client-metadata.shΑυτές οι δύο γραμμές είναι η επιφάνεια πολιτικής στον διακομιστή: η μία ονομάζει το κλειδί τυλίγματος, η άλλη ονομάζει το πρόγραμμα που κρίνει κάθε πελάτη. Ό,τι ενδιαφέρον ζει στο σενάριο, το οποίο αξίζει έλεγχο εκδόσεων και την ίδια αναθεώρηση με οποιονδήποτε άλλο κανόνα πρόσβασης.
Λογαριασμός, πιστοποιητικό και κλειδί ελέγχου αποσύρονται χωριστά
Η πρώιμη αποδοχή του καναλιού ελέγχου δεν είναι πιστοποίηση, γιατί συμβαίνει πριν από τον έλεγχο ταυτότητας TLS και πριν από οποιαδήποτε εξουσιοδότηση λογαριασμού. Η απενεργοποίηση λογαριασμού, η ανάκληση πιστοποιητικού και η απόρριψη κλειδιού ελέγχου πελάτη είναι τρεις ενέργειες με τρεις μηχανισμούς. Μια ανάπτυξη που εκτελεί μόνο μία από αυτές έχει κενό και όχι πολιτική. Συμφιλιώστε τις τρεις σκόπιμα και καταγράψτε ποιο βήμα ασκεί ποια εξουσία.
Ο χρόνος είναι η δεύτερη διάκριση. Μια αλλαγμένη λίστα αποδοχής ισχύει για νέες χειραψίες, ενώ οι συνεδρίες που έχουν ήδη εδραιωθεί συνεχίζουν μέχρι κάτι να τις τερματίσει. Το να μετράτε καταχωρίσεις στη νέα λίστα ως απόδειξη ότι οι παλιές συνεδρίες έληξαν είναι ο τρόπος με τον οποίο ένας αφαιρεμένος πελάτης μένει συνδεδεμένος για ώρες.
Οι ασυμφιλίωτες εξουσίες αφήνουν δύο τρύπες που βρίσκονται εύκολα στην πράξη. Ένας λογαριασμός μπορεί να απενεργοποιηθεί ενώ το κλειδί ελέγχου του ανοίγει ακόμη χειραψία, και ένα πιστοποιητικό μπορεί να ανακληθεί ενώ η πολιτική μεταδεδομένων δέχεται ακόμη τον ίδιο πελάτη. Και τα δύο είναι το ίδιο λάθος σε διαφορετικά σημεία, γιατί ένας διαχειριστής αντιμετώπισε μία λίστα ως όλη την εξουσία. Βάλτε τις τρεις λίστες δίπλα-δίπλα τη στιγμή της αφαίρεσης και το λάθος γίνεται ορατό.
Έκδοση και απόσυρση προφίλ
Η έκδοση είναι το εύκολο μισό: δημιουργήστε το κλειδί πελάτη στην πλευρά που δέχεται, δώστε το προφίλ σε ακριβώς έναν ιδιοκτήτη, κρατήστε το υλικό τυλίγματος περιορισμένο και εκτελέστε το ίδιο πρόγραμμα επαλήθευσης σε κάθε διακομιστή που δέχεται. Η φθηνή εισαγωγή είναι ιδιότητα ολόκληρης της ομάδας, όχι του νεότερου κεντρικού υπολογιστή. Ένας δεύτερος διακομιστής με παλαιότερο ή χαλαρότερο σενάριο γίνεται σιωπηλά η πιο αδύναμη διαδρομή στην ανάπτυξη.
Η απόσυρση χρειάζεται τα τρία βήματα σε σκόπιμη σειρά. Απορρίψτε τον πελάτη στο άγκιστρο επαλήθευσης ώστε να αποτύχουν οι νέες χειραψίες, ανακαλέστε το πιστοποιητικό του αν χρησιμοποιείται PKI, και απενεργοποιήστε τον λογαριασμό ώστε η μεταγενέστερη εξουσιοδότηση να μην έχει τι να εξουσιοδοτήσει. Μετά τερματίστε τις συνεδρίες που επέτρεπε η παλιά αποδοχή, γιατί δεν θα αντιληφθούν κανένα από τα τρία. Εξασκηθείτε στη σειρά σε έναν πελάτη που μπορείτε να αντέξετε να σπάσετε.
Τα μεταδεδομένα σε ένα προφίλ είναι είσοδος για αυτή την πολιτική, όχι απόδειξη ότι ο έλεγχος πρόσβασης υπάρχει ήδη. Το έγγραφο σχεδιασμού του OpenVPN 2.6 περιγράφει τα αντικείμενα και το όριο που χαράσσουν, ενώ η επιβολή παραμένει στον διαχειριστή.