Εξαγωγή VPN από Android: τι περνά στην πραγματικότητα σε ένα νέο τηλέφωνο
Μια εξαγωγή VPN από Android μεταφέρει ρυθμίσεις και μερικές φορές ένα κλειδί, αλλά ποτέ την έγκριση της συσκευής. Ελέγξτε τι πραγματικά μεταφέρεται πριν σβήσετε το παλιό τηλέφωνο.
Η εξαγωγή ενός προφίλ VPN από το Android μοιάζει με βήμα αντιγράφου ασφαλείας και το μενού που την προσφέρει δεν κάνει τίποτα για να διορθώσει αυτή την εντύπωση. Αυτό που παίρνετε μαζί σας είναι μια είσοδος για parser, ένα κλειδί που το λειτουργικό σύστημα μπορεί να μη δώσει ποτέ πίσω και μια έγκριση που εκδόθηκε για εκείνο ακριβώς το τηλέφωνο. Διαχωρίστε αυτά τα τρία και εμφανίζεται το χρήσιμο ερώτημα: ποιο κομμάτι λείπει ακόμη στη νέα συσκευή;
Το αρχείο είναι το εύκολο μέρος. Τα άλλα δύο καθορίζουν αν η μετεγκατάσταση θα δουλέψει.
Τι περιέχει πραγματικά ένα εξαγόμενο προφίλ
Ανοίξτε το αρχείο σε επεξεργαστή κειμένου πριν το εμπιστευτείτε. Ένα προφίλ OpenVPN είναι μια μικρή γλώσσα ρυθμίσεων: remote, proto, data-ciphers και συχνά ενσωματωμένα μπλοκ <ca>, <cert>, <key> ή <tls-crypt> που ο πελάτης δίνει στη στοίβα TLS του. Μια ρύθμιση WireGuard είναι πιο επίπεδη: το [Interface] κρατά PrivateKey και Address, και μετά ένα [Peer] ανά τελικό σημείο με PublicKey, AllowedIPs και Endpoint. Το IKEv2 φτάνει ως .mobileconfig με λεξικά ωφέλιμου φορτίου αντί για μπλοκ κλειδιών.
Κανένα από αυτά τα κείμενα δεν είναι διαπιστευτήριο από μόνο του. Το διαπιστευτήριο είναι το ιδιωτικό κλειδί και κάθε μορφή είτε το επικολλά απευθείας είτε δείχνει σε ένα ψευδώνυμο που επιλύεται μόνο μέσα στον πελάτη που το δημιούργησε.
Πού ζει πραγματικά το κλειδί στο Android
Το Android κρατά τα δεδομένα εφαρμογών κάτω από /data/data/<package>, αναγνώσιμα μόνο από το UID εκείνης της εφαρμογής. Δεν υπάρχει υποστηριζόμενος τρόπος να αντιγράψετε τον ιδιωτικό κατάλογο άλλης εφαρμογής από τηλέφωνο χωρίς root, και το adb backup έπαψε να είναι γενική απάντηση αφού το Android 12 το κατάργησε και οι πελάτες άρχισαν να δηλώνουν allowBackup="false". Άρα μια εξαγωγή από πελάτη Android σημαίνει ό,τι υλοποιεί εκείνος ο πελάτης, όχι αντίγραφο του συστήματος αρχείων.
Το επίπεδο ταυτότητας βρίσκεται κάτω από την εφαρμογή. Αν ένας πελάτης εισήγαγε το κλειδί σας στο Android Keystore, το υλικό παράγεται ή τυλίγεται εκεί και οι μεταγενέστερες εξαγωγές μπορούν να φέρουν αναφορά σε ψευδώνυμο του Keystore αντί για τα byte. Τα κλειδιά με υποστήριξη υλικού είναι κατασκευασμένα ώστε ούτε η ίδια η εφαρμογή δεν μπορεί να τα διαβάσει, όπως περιγράφει το Keystore documentation, οπότε ένα προφίλ που δείχνει σε αυτό το ψευδώνυμο εισάγεται καθαρά στο ίδιο τηλέφωνο και αποτυγχάνει παντού αλλού.
Αυτό δεν είναι χαλασμένη εξαγωγή. Είναι η ιδιότητα που ζητήθηκε από την πλατφόρμα να παρέχει.
Τι δεν μπορεί να μεταφέρει ένα προφίλ
Βάλτε τα αντικείμενα απέναντι σε αυτό που θα δεχτεί ένας προορισμός:
| Αντικείμενο | Μεταφέρεται; | Γιατί |
|---|---|---|
| Πρωτόκολλο και τελικό σημείο | Ναι, αν ο πελάτης προορισμού το υποστηρίζει | Απλό κείμενο στο προφίλ |
| Πιστοποιητικό CA και έλεγχος ονόματος κεντρικού υπολογιστή | Συνήθως | Δημόσιο υλικό, αλλά το όνομα πρέπει να ταιριάζει ακόμη με το πιστοποιητικό |
| Πιστοποιητικό πελάτη | Ναι, εκτός αν είναι δεσμευμένο ανά συσκευή | Τα πιστοποιητικά είναι φορητά· ο εκδότης αποφασίζει πόσες συσκευές μπορούν να χρησιμοποιούν ένα |
| Ιδιωτικό κλειδί | Μόνο αν δημιουργήθηκε εκτός Keystore | Τα κλειδιά με υποστήριξη υλικού δεν εξάγονται, μόνο αντικαθίστανται |
| Λογαριασμός, MFA, συνεδρία SSO | Όχι | Τα token λήγουν και μένουν δεσμευμένα στη συσκευή που τα απέκτησε |
| Διαδρομές, DNS και εύρος εφαρμογών | Μόνο ως κείμενο ρυθμίσεων | Το Android τα εφαρμόζει κατά τη σύνδεση μέσω VpnService.Builder |
| Λίστα εφαρμογών για διαχωρισμένη σήραγγα | Σπάνια | Τα ονόματα πακέτων διαφέρουν μεταξύ συσκευών και η λίστα είναι κατάσταση του πελάτη |
Δύο γραμμές προκαλούν τη μεγαλύτερη σύγχυση. Ένα κλειδί που δημιουργήθηκε στη συσκευή και σημάνθηκε ως μη εξαγώγιμο χάνεται πραγματικά μαζί με τα δεδομένα της εφαρμογής, οπότε η αντικατάσταση είναι νέο κλειδί συν πιστοποιητικό που εκδίδεται γι' αυτό. Ένα token συνεδρίας αντιγραμμένο σε νέο τηλέφωνο συνήθως πεθαίνει στην πρώτη ανανέωση, κάτι που διαβάζεται ως αποτυχημένη εισαγωγή.
Η εισαγωγή είναι ανάλυση και μετά αίτημα συγκατάθεσης
Στην πλευρά του παραλήπτη, η εισαγωγή είναι ανάλυση που ακολουθείται από δέσμευση. Ο πελάτης διαβάζει τη ρύθμιση, ελέγχει ότι κάθε αναφερόμενο μπλοκ υπάρχει και μετά γράφει τον ορισμό της σήραγγας στο δικό του sandbox, γι' αυτό το αρχείο που επιλέξατε από τις Λήψεις δεν είναι αυτό που συνδέεται μετά.
Έπειτα έρχεται ένα βήμα εξουσιοδότησης που κανένα αρχείο δεν μπορεί να παρακάμψει. Το Android απαιτεί η εφαρμογή να καλέσει το VpnService.prepare() και να λάβει τη συγκατάθεσή σας πριν μπορέσει να στήσει σήραγγα, οπότε ένα φρεσκοεισαγμένο προφίλ εμφανίζει ακόμη μία φορά τον διάλογο του συστήματος. Μετά η σήραγγα χτίζεται ρητά μέσω addAddress, addRoute, addDnsServer και addAllowedApplication ή addDisallowedApplication για δρομολόγηση ανά εφαρμογή. Τίποτα από αυτά δεν υπονοείται από ένα τελικό σημείο, οπότε το ίδιο προφίλ μπορεί να παράγει διαφορετικό σύνολο ενεργών διαδρομών σε δύο πελάτες.
Οι ρυθμίσεις με πιστοποιητικά προσθέτουν άλλη μια διακλάδωση. Όταν ο διακομιστής εκδίδει πιστοποιητικό σε συγκεκριμένη συσκευή, όπως κάνουν το MDM και η εγγραφή SCEP, η επαναχρησιμοποίησή του σε δεύτερο τηλέφωνο είτε δουλεύει μέχρι ο διακομιστής να επιβάλει μία συνεδρία ανά ταυτότητα είτε αποτυγχάνει στη χειραψία TLS. Ελέγξτε την πολιτική του εκδότη πριν σχεδιάσετε επαναχρησιμοποίηση.
Επαληθεύστε τη νέα συσκευή πριν αποσύρετε την παλιά
Κρατήστε το παλιό τηλέφωνο συνδεδεμένο μέχρι το νέο να περάσει κάτι καλύτερο από ένα πράσινο εικονίδιο. Επιβεβαιώστε τη διεύθυνση εξόδου από τη νέα συσκευή και τον DNS resolver που χρησιμοποίησε πραγματικά. Αν το split tunneling έχει σημασία, ανοίξτε μια εφαρμογή που πρέπει να παρακάμπτει τη σήραγγα και μία που δεν πρέπει και δείτε ποια φτάνει στον ISP σας.
Ένας έλεγχος ξεκαθαρίζει τη διεύθυνση εξόδου. Ανοίξτε το https://ifconfig.me στον browser του τηλεφώνου, μετά εκτελέστε το curl -s https://ifconfig.me από φορητό στον ίδιο Wi-Fi και συγκρίνετε και τις δύο απαντήσεις με τη διεύθυνση που σας έδωσε ο πάροχος.
Μόνο τότε αποσύρετε την παλιά ταυτότητα και κάντε το μέσω του εκδότη: ανακαλέστε το πιστοποιητικό ή αφαιρέστε τη συσκευή από τον λογαριασμό. Η διαγραφή αρχείου από τις Λήψεις δεν τελειώνει τίποτα, γιατί δύο συσκευές με το ίδιο πιστοποιητικό φαίνονται ίδιες στο αρχείο καταγραφής του διακομιστή.
Αν η εξαγωγή αποδειχθεί μη φορητή, η λύση είναι νέα εγγραφή και όχι δημόσιο πακέτο ρυθμίσεων. Ζητήστε προφίλ δεύτερης συσκευής ή δημιουργήστε το ζεύγος κλειδιών στο νέο τηλέφωνο και υποβάλτε το CSR· πιο αργό, και είναι ο δρόμος που υποστηρίζει ο εκδότης.
Τρέξτε τη λίστα ελέγχου πριν διαγράψετε οτιδήποτε: η νέα συσκευή συνδέεται, η διεύθυνση εξόδου και το DNS ταιριάζουν, το εύρος ανά εφαρμογή είναι όπως το σκοπεύατε, η παλιά ταυτότητα έχει ανακληθεί και κάθε αρχείο ρυθμίσεων που κρατήσατε βρίσκεται σε κρυπτογραφημένο χώρο.