Android IKEv2: το πιστοποιητικό χρήστη και το CA κάνουν διαφορετικές δουλειές
Το ένα πεδίο αποδεικνύει ποιο είναι το τηλέφωνο, το άλλο αποφασίζει σε ποια πύλη να πιστέψει. Το προφίλ IKEv2 στο Android τα κρατά χωριστά.
Μια οθόνη IKEv2 στο Android που ζητά ταυτόχρονα πιστοποιητικό χρήστη και πιστοποιητικό CA μοιάζει να ζητά το ίδιο πράγμα δύο φορές. Δεν είναι έτσι. Το IKEv2 επαληθεύει και τις δύο πλευρές και στις δύο κατευθύνσεις μέσα στην ίδια ανταλλαγή, και το τηλέφωνο έχει διαφορετικό ρόλο σε κάθε κατεύθυνση: πρέπει να αποδείξει ποιο είναι και να αποφασίσει σε ποια πύλη πιστεύει. Το πιστοποιητικό χρήστη απαντά στην πρώτη ερώτηση, η έμπιστη CA στη δεύτερη, και κανένα δεν αντικαθιστά το άλλο.
Δύο κατευθύνσεις επαλήθευσης σε μία ανταλλαγή
Το IKEv2 χτίζει ένα κανάλι ελέγχου σε δύο φάσεις. Η πρώτη διαπραγματεύεται αλγορίθμους και κλειδιά· η δεύτερη, IKE_AUTH, μεταφέρει ένα ωφέλιμο φορτίο AUTH από κάθε πλευρά μαζί με την ταυτότητά της. Το φορτίο είναι υπογραφή ή MAC πάνω στην ανταλλαγή και επαληθεύεται με κάτι που ο παραλήπτης εμπιστεύεται ήδη.
Η πύλη αποδεικνύεται με το δικό της πιστοποιητικό· το τηλέφωνο επαληθεύει την αλυσίδα μέχρι μια ρίζα που εμπιστεύεται και ελέγχει ότι η ταυτότητα στο πιστοποιητικό ταιριάζει με την πύλη που ήθελε να προσεγγίσει. Το τηλέφωνο αποδεικνύεται με τα διαπιστευτήριά του και η πύλη τα επαληθεύει με την CA που εξέδωσε το πιστοποιητικό πελάτη.
Αυτός είναι όλος ο μηχανισμός πίσω από τα δύο πεδία. Το πιστοποιητικό χρήστη είναι δήλωση του τηλεφώνου για τον εαυτό του· το πεδίο CA είναι δήλωση για το ποιον θα πιστέψει. Προφίλ με το ένα αλλά όχι το άλλο δεν ολοκληρώνει αμοιβαία επαλήθευση και οι επαναλήψεις δεν το αλλάζουν. Ακόμη και οι αποτυχίες διαφέρουν: χωρίς κλειδί χρήστη το τηλέφωνο δεν μπορεί να υπογράψει καθόλου, χωρίς άγκυρα εμπιστοσύνης δεν μπορεί να δεχτεί το πιστοποιητικό της πύλης.
| Material | Role | What it cannot do |
|---|---|---|
| User certificate plus its private key | Proves possession of the enrolled client identity | Establish that the gateway is the right one |
| Trusted CA certificate | Validates the gateway chain under the intended identity checks | Prove the client's identity to the gateway |
| Expected gateway identity | Pins which server the phone accepts | Grant that user access to every private resource |
Τι ζητά ο κατασκευαστής προφίλ του Android
Ο κατασκευαστής προφίλ IKEv2 του Android εκθέτει κάθε μέθοδο επαλήθευσης ξεχωριστά, όχι ως μία λειτουργία πιστοποιητικού. Η μέθοδος ψηφιακής υπογραφής παίρνει πιστοποιητικό χρήστη, ιδιωτικό κλειδί και ρίζα CA διακομιστή· οι άλλες παίρνουν όνομα χρήστη και κωδικό ή προκοινοποιημένο κλειδί.
Διαβάστε αυτή την υπογραφή προσεκτικά, γιατί περιγράφει τον μηχανισμό παραπάνω. Δεν υπάρχει πεδίο για το ιδιωτικό κλειδί στη μέθοδο ονόματος και κωδικού, ούτε πεδίο για την άγκυρα εμπιστοσύνης της πύλης στη μέθοδο PSK, επειδή αυτές οι μέθοδοι αποδεικνύουν διαφορετικά πράγματα. Ένας κωδικός κολλημένος σε πεδίο πιστοποιητικού δίνει προφίλ που αποτυγχάνει στο IKE_AUTH με μήνυμα που δεν κατονομάζει κανένα από τα δύο.
Ο τεκμηριωμένος τύπος ιδιωτικού κλειδιού για τη μέθοδο ψηφιακής υπογραφής είναι RSA. Ένα μενού με ετικέτα IPsec ή πιστοποιητικό δεν σημαίνει υποστήριξη ECDSA, και προφίλ χτισμένο σε αυτή την υπόθεση αποτυγχάνει στο API της πλατφόρμας πριν μπει καν το δίκτυο.
Γιατί δεν αρκεί ένα δημόσιο πιστοποιητικό χρήστη
Το φορτίο AUTH είναι υπογραφή πάνω στην ανταλλαγή με το ιδιωτικό κλειδί του πελάτη. Το δημόσιο πιστοποιητικό επιτρέπει στην πύλη να ελέγξει μια υπογραφή, αλλά δεν κάνει τίποτα για το τηλέφωνο, που χρειάζεται το κλειδί για να την παράγει. Η εισαγωγή μόνο του .crt και το άφημα του κλειδιού πίσω είναι η πιο συνηθισμένη μορφή αυτής της αποτυχίας.
Η υποδομή κλειδιών του Android το αντανακλά. Η επιλογή ταυτότητας πελάτη περνά από το KeyChain, που απαιτεί πρόσβαση στο αντίστοιχο ιδιωτικό κλειδί, όχι απλώς μια καταχώριση πιστοποιητικού. Ένα πακέτο εγγραφής ή ροή διαχείρισης συσκευών που εγκαθιστά το ζεύγος μαζί είναι ο συνήθης τρόπος για χρησιμοποιήσιμη ταυτότητα· η χειροκίνητη αντιγραφή αρχείου συνήθως δεν είναι.
Άρα τα δύο στοιχεία του προφίλ δεν είναι δέσμη πιστοποιητικών και αντίγραφό της. Το ένα είναι ζεύγος κλειδιών με το οποίο η πλατφόρμα πρέπει να μπορεί να υπογράψει, το άλλο είναι άγκυρα εμπιστοσύνης με την οποία συγκρίνει. Ελέγξτε τα ως δύο ξεχωριστά γεγονότα: μπορεί αυτό το προφίλ να υπογράψει και ξέρει ποιον να εμπιστευτεί;
Οι άγκυρες εμπιστοσύνης ανήκουν σε εφαρμογή, όχι στο τηλέφωνο
Μια ρίζα εγκατεστημένη στον χώρο του χρήστη δεν κάνει κάθε εφαρμογή Android να την εμπιστεύεται: από το Android 7 μια εφαρμογή πρέπει να το επιλέξει μέσω της διαμόρφωσης ασφάλειας δικτύου, και πριν από αυτή την έκδοση οι CA του χρήστη γίνονταν πολύ ευρύτερα δεκτές. Η διαμόρφωση εμπιστοσύνης μπορεί να διαφέρει ανά εφαρμογή, και ένας πελάτης VPN που διαχειρίζεται μόνος το υλικό εμπιστοσύνης μπορεί να μην κοιτάξει ποτέ τον χώρο του χρήστη. Γι' αυτό το ίδιο αρχείο CA μπορεί να δουλεύει σε έναν πελάτη και να φαίνεται αγνοημένο σε άλλον.
Από εκεί προκύπτουν δύο μοντέλα ιδιοκτησίας. Ένα προφίλ διαχειριζόμενο από το σύστημα χρησιμοποιεί την εγκατάσταση πιστοποιητικών της συσκευής ή την εγγραφή διαχειριστή και έπειτα αναφέρεται στην επιθυμητή CA. Ένα VPN διαχειριζόμενο από εφαρμογή κρατά δικό του υλικό εμπιστοσύνης και δική του τεκμηριωμένη εισαγωγή, που μπορεί να είναι εντελώς ξεχωριστή από την οθόνη ρυθμίσεων του Android. Εκεί επίσης επισκευάζεται μια σπασμένη αλυσίδα.
Αποφασίστε σε ποιο μοντέλο βρίσκεστε πριν εισάγετε οτιδήποτε και μετά επιβεβαιώστε την επιλογή εμπιστοσύνης του ενεργού προφίλ. Αν οι οδηγίες του παρόχου και το μενού του πελάτη διαφωνούν, για εκείνη την εγκατάσταση κερδίζει η τεκμηριωμένη συμπεριφορά του πελάτη, αλλά η CA πρέπει να έρχεται από τον πάροχο μέσω καναλιού που μπορείτε να επαληθεύσετε. Το όνομα αρχείου δεν είναι απόδειξη για το ποιος το εξέδωσε.
Πρώτα η λειτουργία, μετά τα αρχεία
Η λειτουργία πιστοποιητικού απαιτεί ζεύγος κλειδιών πελάτη, την εκδότρια CA στην πλευρά της πύλης, άγκυρα εμπιστοσύνης για το πιστοποιητικό της πύλης και προσδοκία για την ταυτότητα που πρέπει να φέρει. Το όνομα χρήστη και ο κωδικός αντικαθιστούν το ζεύγος κλειδιών με διαπιστευτήρια αλλά κρατούν την απαίτηση εμπιστοσύνης στην πύλη. Το PSK αντικαθιστά και τα δύο με κοινό μυστικό και αλλάζει το μοντέλο εμπιστοσύνης αντί να το απλοποιεί.
Ό,τι κι αν επιλέξετε, αφήστε την κανονική επαλήθευση ενεργή. Η επιλογή χωρίς επαλήθευση αφαιρεί τον έλεγχο για τον οποίο υπάρχει το πεδίο CA· δεν διορθώνει μια απούσα άγκυρα εμπιστοσύνης. Το ίδιο ισχύει για την αποδοχή οποιουδήποτε πιστοποιητικού διακομιστή επειδή η σύνδεση δουλεύει και χωρίς αυτό.
Έπειτα επαληθεύστε στο σωστό σημείο: εισάγετε το υλικό, συνδεθείτε μία φορά και στις λεπτομέρειες σύνδεσης επιβεβαιώστε ότι η ταυτότητα της πύλης είναι η αναμενόμενη και ότι το προφίλ αναφέρει τη μέθοδο που είχατε σκοπό. Μια επιτυχημένη σύνδεση με λάθος μέθοδο είναι διαμόρφωση που δεν καταλαβαίνετε ακόμη και θα αποτύχει όταν ο πάροχος αυστηροποιήσει μια πολιτική.