Γιατί το AES-256 δεν περιγράφει μια σουίτα κρυπτογράφησης VPN
Μια σουίτα καλύπτει τέσσερις ρόλους: μαζική κρυπτογράφηση, ακεραιότητα, εγκατάσταση κλειδιών και ταυτοποίηση ομοτίμου. Το όνομα ενός κρυπταλγορίθμου καλύπτει έναν από αυτούς, σε ένα επίπεδο.
Ρωτήστε ποια κρυπτογράφηση χρησιμοποιεί ένα VPN και η απάντηση συνήθως έρχεται ως μία λέξη: AES-256, ή ChaCha20, ή ίσως WireGuard. Αυτή η απάντηση ονομάζει ένα συστατικό ενός επιπέδου, ενώ αυτό που πραγματικά προστατεύει τη σύνδεση είναι ένα σύνολο αλγορίθμων που καλύπτουν τέσσερις διαφορετικούς ρόλους. Η σύγχυση του συστατικού με τη διάταξη είναι το πιο συχνό λάθος σε αυτές τις συζητήσεις και παράγει συγκρίσεις που δεν μπορούν να επιλυθούν.
Τέσσερις εργασίες μέσα σε μία σύνδεση
Η μαζική κρυπτογράφηση μετατρέπει το απλό κείμενο σε κρυπτοκείμενο για το κανάλι δεδομένων, και το κλειδί της παράγεται αντί να μεταδίδεται. Η προστασία ακεραιότητας ανιχνεύει αλλαγή, που είναι ξεχωριστή εργασία ακόμη και όταν μία κατασκευή κάνει και τα δύο. Η εγκατάσταση κλειδιών παράγει το κοινό υλικό κίνησης, και η ταυτοποίηση ομοτίμου αποφασίζει ποιος βρίσκεται στην άλλη άκρη. Αν λείπει οποιοδήποτε από αυτά, η σύνδεση δεν είναι ασφαλής, όσο ισχυρό κι αν είναι το υπόλοιπο κομμάτι.
Ορισμένα σχέδια συνενώνουν δύο ρόλους σε έναν. Τα AES-GCM και ChaCha20-Poly1305 είναι πιστοποιημένες κατασκευές κρυπτογράφησης, οπότε η εμπιστευτικότητα και η ακεραιότητα έρχονται μαζί· το AES-CBC όχι, και χρειάζεται ξεχωριστό κώδικα ταυτοποίησης μηνύματος με δικό του κλειδί. Επομένως η ανάγνωση μιας πρότασης ως σακούλας ανεξάρτητων αριθμών διαβάζει λάθος εκείνα που σχεδιάστηκαν ως ζεύγη.
Οι ρόλοι βρίσκονται επίσης σε διαφορετικά επίπεδα, γι αυτό η ίδια λέξη μπορεί να σημαίνει διαφορετικά πράγματα σε δύο προϊόντα. Ένας κρυπταλγόριθμος μπλοκ μέσα στο ESP και ένας μέσα στο TLS είναι το ίδιο πρωταρχικό στοιχείο σε διαφορετικές διαπραγματεύσεις με διαφορετικές απαιτήσεις. Γι αυτό η αναφορά ενός πρωταρχικού στοιχείου χωρίς τη λειτουργία και το επίπεδό του μπορεί να είναι χειρότερη από το να μην αναφέρεις τίποτα.
Γιατί ένα όνομα κρυπταλγορίθμου δεν λέει σχεδόν τίποτα
Πάρτε τη φράση AES-256 στα σοβαρά για μια στιγμή: προσδιορίζει έναν κρυπταλγόριθμο μπλοκ και ένα μέγεθος κλειδιού. Δεν λέει τίποτα για τη λειτουργία, αν παρέχεται ακεραιότητα, πώς εγκαταστάθηκαν τα κλειδιά ή πώς ταυτοποιήθηκε το ομότιμο. Δύο προϊόντα μπορούν και τα δύο να διαφημίζουν AES-256 και να διαφέρουν σε κάθε άλλο σημείο, μεταξύ τους ένα με μη πιστοποιημένη λειτουργία και ένα με λειτουργία AEAD και σύγχρονη ανταλλαγή κλειδιών.
Το TLS 1.3 έφερε αυτόν τον διαχωρισμό στο πρότυπο, που είναι χρήσιμη διόρθωση για όποιον έμαθε το παλαιότερο λεξιλόγιο. Οι σουίτες κρυπτογράφησής του ονομάζουν μόνο το AEAD και το hash, ενώ οι ομάδες ανταλλαγής κλειδιών και οι αλγόριθμοι υπογραφής διαπραγματεύονται ως ξεχωριστές παράμετροι. Επομένως ένα όνομα σουίτας TLS 1.3 δεν είναι συγκρίσιμο με ένα όνομα σουίτας TLS 1.2 σε ίση βάση, αν και τα δύο εμφανίζονται στο ίδιο πεδίο ενός αρχείου ρυθμίσεων. Ένας ελεγκτής που συγκρίνει τις δύο συμβολοσειρές άμεσα βγάζει συμπέρασμα που το πρωτόκολλο δεν υποστηρίζει. Διαβάστε και την ομάδα που διαπραγματεύτηκε και τις παραμέτρους υπογραφής, αλλιώς η σύγκριση είναι ελλιπής.
Το WireGuard επιλέγει τον αντίθετο δρόμο και αφαιρεί τη διαπραγμάτευση σχεδόν εντελώς: το πρωτόκολλο ορίζει σταθερό σύνολο αλγορίθμων, οπότε δύο υλοποιήσεις είτε συνεργάζονται είτε όχι. Είναι νόμιμη σχεδιαστική επιλογή, και σημαίνει επίσης ότι το ερώτημα ποια σουίτα διαπραγματεύεται το WireGuard δεν έχει απάντηση άξια σύγκρισης. Αν το ελέγχετε, διαβάστε την προδιαγραφή μία φορά και μετά ελέγξτε τη διαχείριση κλειδιών γύρω της αντί για τη διαπραγμάτευση.
Το επίπεδο καθορίζει το λεξιλόγιο
Μια εγκατάσταση IPsec διαπραγματεύεται δύο φορές: μια πρόταση IKE για το κανάλι ελέγχου και έναν μετασχηματισμό ESP για τα δεδομένα, και τα δύο μπορούν νόμιμα να διαφέρουν. Το να διαβάζεις το πρώτο και να υποθέτεις ότι περιγράφει το δεύτερο είναι συχνή πηγή σύγχυσης κατά τον έλεγχο, γιατί το αρχείο ρυθμίσεων αναφέρει και τα δύο και το ενδιαφέρον είναι το δεύτερο.
| Layer | What is negotiated there | What it does not cover |
|---|---|---|
| IKE proposal | Algorithms and groups for the control channel that builds the tunnel | The algorithms protecting the data itself |
| ESP transform | Encryption and integrity for tunneled packets | Peer identity, which authentication already settled |
| TLS handshake | AEAD and hash, plus separately negotiated groups and signatures | Routing, authorization or retention policy |
| WireGuard | Nothing; the algorithm set is fixed by the protocol | Everything above the cryptographic arrangement |
Ένα όνομα διαθέσιμο σε μία βιβλιοθήκη δεν υλοποιείται αυτόματα για άλλη διαδρομή δεδομένων. Γι αυτό η δήλωση ότι το προϊόν μας υποστηρίζει AES-256 είναι πιο αδύναμη απ ό,τι ακούγεται, και γι αυτό ένα πρόβλημα διαλειτουργικότητας λύνεται συνήθως βρίσκοντας τη συντηρούμενη τομή αντί να ενεργοποιείς κάθε παλιό αλγόριθμο και στις δύο πλευρές.
Η προδιαγραφή του TLS 1.3 είναι το σαφέστερο δημοσιευμένο παράδειγμα του διαχωρισμού, γιατί ορίζει τη σουίτα ως ζεύγος και μεταφέρει τα υπόλοιπα στη δική τους διαπραγμάτευση. Μόλις αυτό το σχήμα γίνει γνώριμο, η πρόταση IPsec και το ένα σταθερό σύνολο του WireGuard διαβάζονται ως παραλλαγές της ίδιας ιδέας.
Διαβάστε το αποτέλεσμα της διαπραγμάτευσης και μετά σταματήστε
Μια ρυθμισμένη πρόταση δεν είναι απόδειξη για το τι επέλεξαν δύο ομότιμα. Η ζωντανή συνεδρία φέρει την απάντηση, και κάθε συνηθισμένη υλοποίηση μπορεί να την αναφέρει χωρίς σύλληψη πακέτων.
openssl s_client -connect vpn.example.net:443 -brief
ipsec statusall
wg show
Στην έξοδο διαβάστε τους επιλεγμένους αλγορίθμους αντί για τη λίστα που προσφέρθηκε. Αν η απάντηση είναι ασθενέστερη από ό,τι σκόπευε η πολιτική, η διόρθωση ανήκει στη ρύθμιση της πρότασης στη μία ή την άλλη πλευρά, και μια ασυμφωνία εμφανίζεται στις σύγχρονες υλοποιήσεις συνήθως ως αποτυχημένη διαπραγμάτευση και όχι ως σιωπηλή υποβάθμιση.
Μετά θυμηθείτε τι δεν καλύπτει η σουίτα. Διαδρομές, άδειες εφαρμογών, καταγραφή και διατήρηση είναι ξεχωριστές αποφάσεις με δική τους αναθεώρηση, και μια συμβατή κρυπτογραφική διάταξη δεν λέει τίποτα γι αυτές. Η συζήτηση για τον κρυπταλγόριθμο αξίζει, αλλά απαντά σε στενότερο ερώτημα από αυτό που θέτουν οι περισσότεροι.
Κρατήστε το λεξιλόγιο ακριβές και το επιχείρημα συντομεύει. Μια σουίτα είναι σύνολο ρόλων σε ένα επίπεδο, ένας κρυπταλγόριθμος είναι ένα συστατικό, και το αποτέλεσμα της διαπραγμάτευσης είναι το μόνο που περιγράφει τη σύνδεση που έχετε πραγματικά. Όλα τα άλλα στη σύγκριση είναι διακόσμηση.