Τι προστατεύει στην πραγματικότητα μια φράση πρόσβασης σε ένα ιδιωτικό κλειδί VPN
Κλειδώνει το αρχείο στον δίσκο, όχι τη λειτουργική σήραγγα ή τη σύνδεση στον λογαριασμό σας. Μάθετε τι καλύπτει το μήνυμα, τι όχι και τι να κάνετε αν διαρρεύσει.
Το μήνυμα που εμφανίζεται όταν ξεκινά ένας πελάτης VPN είναι εύκολο να παρερμηνευτεί. Δεν είναι ο κωδικός πρόσβασης του λογαριασμού VPN, δεν είναι ο κωδικός πρόσβασης για τη σήραγγα, και η εισαγωγή του δεν αποδεικνύει ότι η σύνδεση είναι ασφαλής. Ξεκλειδώνει μια αποθηκευμένη αναπαράσταση ενός ιδιωτικού κλειδιού, ώστε ο πελάτης να μπορεί να διαβάσει το υλικό του κλειδιού και να το χρησιμοποιήσει για έλεγχο ταυτότητας. Ό,τι συμβαίνει μετά είναι άλλο ζήτημα.
Στην πράξη η απάντηση χαλάει στις άκρες: οι άνθρωποι υποθέτουν ότι η φράση πρόσβασης προστατεύει τη λειτουργική σήραγγα ή ότι η αλλαγή της ανακαλεί ένα αντίγραφο του κλειδιού που έχει ήδη διαρρεύσει. Και οι δύο υποθέσεις αποτυγχάνουν, και αποτυγχάνουν με τρόπο που αφήνει ένα διαπιστευτήριο εκτεθειμένο ενώ ο διαχειριστής πιστεύει ότι έχει αντιμετωπιστεί.
Ένας διάλογος, πολλά διαφορετικά μυστικά
Μια φράση πρόσβασης ιδιωτικού κλειδιού αποκρυπτογραφεί ένα αρχείο. Ένας κωδικός λογαριασμού σάς ελέγχει ταυτότητας σε μια υπηρεσία. Ένας κωδικός εισαγωγής PKCS#12 αποκρυπτογραφεί ένα πακέτο που περιέχει κλειδί και το πιστοποιητικό του, και μπορεί να μην είναι το ίδιο αλφαριθμητικό με τη φράση πρόσβασης του ίδιου του κλειδιού. Αυτά τα μηνύματα μπορεί να φαίνονται σχεδόν ίδια, και το να μαντέψει κανείς ποιο μυστικό πάει πού είναι ο τρόπος με τον οποίο τα κλειδιά καταλήγουν επικολλημένα στο λάθος πεδίο.
Η ίδια η κρυπτογράφηση της σήραγγας είναι τέταρτο πράγμα. Το κανάλι δεδομένων χρησιμοποιεί κλειδιά συνεδρίας που διαπραγματεύονται κατά τη χειραψία· η φράση πρόσβασης του ιδιωτικού κλειδιού δεν παίζει κανένα ρόλο στην προστασία των μεμονωμένων πακέτων. Αν κάποιος μπορεί να διαβάσει το αρχείο κλειδιού, μπορεί να προσπαθήσει να μαντέψει τη φράση εκτός σύνδεσης, αλλά αν μπορεί να διαβάσει πακέτα, η φράση είναι άσχετη.
Τι καλύπτει η κρυπτογράφηση στον δίσκο
Ένα κρυπτογραφημένο κλειδί PEM υπάρχει σε δύο μορφές, και η κεφαλίδα σάς λέει ποια έχετε. Η σύγχρονη μορφή PKCS#8 αρχίζει με -----BEGIN ENCRYPTED PRIVATE KEY-----· η παλαιότερη μορφή PEM, ακόμη συνηθισμένη σε παλαιότερες εγκαταστάσεις OpenVPN, αρχίζει με -----BEGIN RSA PRIVATE KEY----- και φέρει Proc-Type: 4,ENCRYPTED και μια γραμμή DEK-Info ακριβώς από κάτω. Το αρχείο περιέχει το ιδιωτικό κλειδί κρυπτογραφημένο με κλειδί που παράγεται από τη φράση σας, συνήθως μέσω KDF βασισμένου σε κωδικό με δηλωμένο αριθμό επαναλήψεων ή συντελεστή εργασίας. Η τεκμηρίωση του OpenSSL pkey καλύπτει τις μορφές και τις επιλογές φράσης πρόσβασης που ισχύουν κατά την ανάγνωση.
Ακολουθούν δύο συνέπειες. Μια αδύναμη φράση πρόσβασης δέχεται επίθεση εκτός σύνδεσης με τον ρυθμό που επιτρέπει το KDF, επομένως τα δικαιώματα αρχείου και η πρόσβαση σε αντίγραφα ασφαλείας εξακολουθούν να έχουν σημασία ακόμη και όταν το αρχείο είναι κρυπτογραφημένο. Και ένας επιτιθέμενος που αποκτά μόνο το αρχείο χωρίς τη φράση πρέπει να μαντέψει· όποιος αποκτά το αρχείο και τη φράση έχει το κλειδί, ακριβώς σαν να μην είχε ποτέ κρυπτογραφηθεί.
head -3 vpn.key
openssl pkey -in vpn.key -noout -pubout
openssl pkcs12 -in bundle.p12 -info -noout
Το head -3 δείχνει την κεφαλίδα και, σε παλαιότερο αρχείο, τις γραμμές Proc-Type και DEK-Info που αποδεικνύουν την κρυπτογράφηση· μία μόνο γραμμή δεν είναι απόδειξη προς καμία κατεύθυνση. Η γραμμή pkey ζητά τη φράση πρόσβασης και εκτυπώνει μόνο το δημόσιο μισό, κάτι που αποδεικνύει ότι το αρχείο και η φράση λειτουργούν χωρίς να εκθέτουν το ιδιωτικό κλειδί. Μην χρησιμοποιείτε το -text για αυτόν τον έλεγχο: εκτυπώνει τα ιδιωτικά συστατικά, privateExponent, prime1, prime2 και τα υπόλοιπα, και αυτή η έξοδος δεν πρέπει ποτέ να επικολληθεί πουθενά, ούτε σε αναφορά, ούτε σε συνομιλία, ούτε σε αρχείο καταγραφής. Η εντολή PKCS#12 σάς λέει επίσης αν το πακέτο έχει ξεχωριστό κωδικό MAC ή κρυπτογράφησης, κάτι που αξίζει να ξέρετε πριν το δώσετε σε συνάδελφο.
Τι σταματά να προστατεύει μόλις φορτωθεί το κλειδί
Το ξεκλείδωμα είναι γεγονός μίας κατεύθυνσης για αυτή τη διεργασία. Ο πελάτης ζητά το κλειδί από το KDF, αποκρυπτογραφεί το αρχείο και κρατά το ιδιωτικό κλειδί στη μνήμη όσο το χρειάζεται. Από εκείνη τη στιγμή η φράση πρόσβασης δεν προστατεύει τίποτα από τη λειτουργική συνεδρία: ούτε τη μνήμη της διεργασίας, ούτε ένα dump πυρήνα, ούτε μια συνεδρία αποσφαλμάτωσης που είναι συνδεδεμένη στον πελάτη, ούτε ένα αντίγραφο ασφαλείας του μηχανήματος που ελήφθη όσο το κλειδί ήταν σε χρήση.
Αυτό είναι το ίδιο όριο με ένα κλειδί SSH με φράση πρόσβασης ή με το ξεκλειδωμένο θησαυροφυλάκιο ενός διαχειριστή κωδικών. Αυξάνει το κόστος κλοπής του αρχείου σε ηρεμία και δεν κάνει τίποτα κατά κακόβουλου λογισμικού που εκτελείται ως χρήστης σας, εξουσιοδοτημένης εφαρμογής που ζητά από τον πελάτη να υπογράψει ή διαχειριστή που μπορεί να διαβάσει μνήμη. Αντιμετωπίστε το ως ένα επίπεδο, όχι ως τον έλεγχο που κάνει ένα κλειδί ασφαλές να μένει παρατημένο.
Γιατί το μήνυμα επιστρέφει συνεχώς
Ένας πελάτης που ρωτά ξανά σε κάθε επανασύνδεση δεν είναι απαραίτητα χαλασμένος. Μερικοί πελάτες αποθηκεύουν προσωρινά τη φράση για τη συνεδρία, μερικοί την αποθηκεύουν στο keychain του λειτουργικού συστήματος, και μερικοί μπορούν να κατευθυνθούν σε έναν βοηθό που την παρέχει, οπότε η συμπεριφορά εξαρτάται από τον πελάτη και τη διαμόρφωσή του, όχι από το αρχείο κλειδιού.
Αν το επαναλαμβανόμενο μήνυμα είναι το πραγματικό παράπονο, εξετάστε τις επιλογές προσωρινής αποθήκευσης και ελέγχου ταυτότητας του πελάτη πριν αφαιρέσετε την κρυπτογράφηση από το κλειδί. Η αφαίρεση της φράσης μετατρέπει ένα προστατευμένο αρχείο σε κλειδί απλού κειμένου, και η επανασύνδεση γίνεται ήσυχη με κόστος τον μοναδικό έλεγχο σε ηρεμία που είχατε. Καλύτερη απάντηση είναι συνήθως ένας υποστηριζόμενος χώρος αποθήκευσης διαπιστευτηρίων με τα ίδια δικαιώματα αρχείου που θα χρησιμοποιούσατε ούτως ή άλλως.
Απώλεια και έκθεση δεν είναι η ίδια επισκευή
Μια χαμένη φράση πρόσβασης δεν ανακτάται από το πιστοποιητικό. Το πιστοποιητικό είναι δημόσιο υλικό που δεσμεύει ένα όνομα σε ένα κλειδί· δεν περιέχει διαδρομή πίσω στο ιδιωτικό κλειδί ούτε υπαινιγμό για τη φράση. Οι πρακτικές επιλογές είναι ένα εξουσιοδοτημένο αντίγραφο ασφαλείας του κλειδιού ή μια νέα ταυτότητα που εκδίδεται μέσω της κανονικής διαδικασίας του διαχειριστή. Όποιος προσφέρει να 'ανακτήσει' τη φράση προσφέρει να τη μαντέψει.
Η έκθεση απαιτεί διαφορετική απάντηση. Η εκ νέου κρυπτογράφηση του ίδιου κλειδιού με νέα φράση αφήνει το υλικό του κλειδιού αμετάβλητο, οπότε ένα αντίγραφο που είχε ήδη ξεκλειδωθεί αλλού εξακολουθεί να λειτουργεί. Η επισκευή είναι να ανακαλέσετε ή να αντικαταστήσετε το διαπιστευτήριο: εκδώστε νέο κλειδί και πιστοποιητικό, διανείμετέ τα και αποσύρετε το παλιό στον ομότιμο. Μέχρι να συμβεί αυτό, η αλλαγή του κωδικού του αρχείου είναι νοικοκυριό, όχι περιορισμός. Κρατήστε το παλιό αρχείο έξω από αντίγραφα ασφαλείας μόνο αφού επιβεβαιωθεί ότι η νέα ταυτότητα λειτουργεί, και καταγράψτε ποιος σειριακός αριθμός ή αποτύπωμα την αντικατέστησε.