vpn tunnels

VPN Tunnels intro

1. Εισαγωγή

Η ιδέα του Virtual Private Network (VPN) είναι να υλοποιήσει ένα ιδιωτικό (τοπικό) δίκτυο μέσω ενός δημόσιου δικτύου (ιντερνετ). Ένα VPN tunnel μπορεί να χρησιμοποιηθεί για να συνδέσετε με ασφάλεια τοπικά δίκτυα της εταιρείας μέσα από ένα μη ασφαλές δίκτυο, το Internet. Οι VPN πύλες είναι υπεύθυνες για την πραγματοποίηση της σύνδεσης με ασφάλεια.
vpn tunnels
Αυτό το άρθρο περιγράφει τον τρόπο με τον οποίο τα tunnels και η κρυπτογράφηση μπορούν να χρησιμοποιηθούν για την δημιουργία VPN tunnel χωρίς να μπούμε σε λεπτομέρειες για τα πρωτόκολλα VPN.

2. TCP / IP model και encapsulation

Πρώτα πρέπει να καταλάβουμε τον τρόπο μεταφοράς της πληροφορίας σε ένα δίκτυο. Υπάρχουν τέσσερα layers στο μοντέλο TCP/IP:

Layer 4: Εφαρμογή (Application layer)
Layer 3: Μεταφορά  (Transport layer)
Layer 2: Διαδίκτυο (Internet layer)
Layer 1: Πρόσβαση δικτύου (Network access layer)

tcp ip model

Από την μεριά του αποστολέα, τα δεδομένα περνάνε μέσα από τα layers 4 → 1 (από την πλευρά του δέκτη 1 → 4). Tο L4PDU (Layer 4 Protocol Data Unit) αποστέλλεται από το Application layer στο Transport layer. Μια κεφαλίδα TCP προσαρτάται στην L4PDU και έτσι δημιουργείται το L3PDU (Layer 3 Protocol Data Unit). Το L3PDU ονομάζεται segment. Τότε το L3PDU αποστέλλεται από το Transport layer στο Internet layer. Μία κεφαλίδα IP επισυνάπτεται στο L3PDU και έτσι δημιουργείται το L2PDU (Layer 2 Protocol Data Unit) . Το L2PDU ονομάζεται datagram.

Αυτή η απλοποιημένη περιγραφή δείχνει ότι το L3PDU (segment) γίνεται μέρος του L2PDU (datagram). Στην πραγματικότητα, το segment περιλαμβάνεται μέσα στο datagram και αυτή η προσάρτηση ονομάζεται encaptulation. Στη συνέχεια, στο datagram μπαίνει μια επικεφαλίδα και δημιουργείται το L1PDU (Layer 1 μονάδα δεδομένων πρωτοκόλλου). L1PDU ονομάζεται frame. Τέλος, το frame αποστέλλεται στο μέσο μετάδοσης με τη μορφή μηδέν και ένα.

Από την πλευρά του δέκτη, γίνεται η αντίστροφη διαδικασία  (layer 1 → 4) και ονομάζεται decapsulation τεσσάρων βημάτων.

encapsulation

3. VPN tunnel

Κανονικά, τα στοιχεία του layer εφαρμογής είναι encapsulated στο segment του layer μεταφοράς που περαιτέρω γίνονται encapsulated στο datagram του layer Διαδικτύου. Στη συνέχεια, το frame του layer πρόσβασης δικτύου δημιουργεί το datagram και τελικά τα bits(0 και 1) μεταφέρονται μέσω ενός φυσικού μέσου. Ένα datagram (εσωτερικό) γίνεται encapsulated στο άλλο datagram (εξωτερικό).

To encaptulation χρησιμοποιείται για τη μεταφορά ιδιωτικών διευθύνσεων ip μέσω τoυ tunnel. Θέλουμε να υπάρχουν ιδιωτικές διευθύνσεις IP, διότι ο στόχος είναι να συνδεθούν και τα δύο άκρα του tunnel σε τοπικό δίκτυο (LAN) . Αυτός είναι ο λόγος για τον οποίο η εξωτερική IP είναι μια δημόσια διεύθυνση και χρησιμοποιείται για τη σύνδεση με την πύλη VPN.

Ας κάνουμε μία παρομοίωση για να κατανοήσουμε καλύτερα πώς λειτουργεί. Ένα αυτοκίνητο θέλει να πάει από την πόλη 1 στην πόλη 2. Αυτές οι πόλεις χωρίζονται από μία θάλασσα. Το αυτοκίνητο ανεβαίνει στο πλοίο και μεταφέρεται από το λιμάνι της πόλης 1 μέχρι το λιμάνι της πόλης 2. Αυτό είναι ακριβώς το πώς λειτουργεί το tunnel. To εσωτερικό datagram μεταφέρεται μέσα στο το tunnel μέσα σε ένα άλλο datagram που φθάνει στην πύλη VPN. Εδώ το εσωτερικό datagram εξάγεται και πλέον μπορεί να αποσταλεί σε κάποιο Host στο Lan. Oι ιδιωτικές διευθύνσεις δεν είναι δυνατό να δρομολογηθούν στο Διαδίκτυο, αλλά μπορούν να δρομολογηθούν με δημόσια IP χρησιμοποιώντας αυτήν την τεχνική.

Υπάρχει ένα πράγμα που λείπει. Πρέπει να γίνει το tunnel ασφαλές και για το σκοπό αυτό χρησιμοποιείται κρυπτογράφηση.

4. Χρησιμοποιώντας Crypto για να ασφαλίσουμε το tunnel.

Θα δούμε εν συντομία πώς μπορεί να εφαρμοστεί κρυπτογράφηση για να κάνει το τούνελ ασφαλές χωρίς να μπούμε σε λεπτομέρειες.

Πρώτα απ’όλα θέλουμε να γίνει πιστοποίηση. Τα ψηφιακά πιστοποιητικά μπορούν να χρησιμοποιηθούν για το σκοπό αυτό.

Επιπλέον, η επικοινωνία πρέπει να είναι εμπιστευτική, έτσι ώστε οι μη εξουσιοδοτημένοι χρήστες να μην μπορούν να το δουν. Η εμπιστευτικότητα μπορεί να επιτευχθεί με συμμετρική κρυπτογράφηση. Πριν συμβεί η συμμετρική κρυπτογράφηση, το συμμετρικό κλειδί πρέπει να διανεμηθεί με ασφάλεια. Ασύμμετρη κρυπτογράφηση χρησιμοποιείται για τον σκοπό της κατανομής. Ας υποθέσουμε ότι ο Α επικοινωνεί με το Β Το συμμετρικό κλειδί παράγεται από τον Α, κρυπτογραφείται με το δημόσιο κλειδί του Β και αποστέλλεται στον B. Μόνο ο  Β μπορεί να το αποκρυπτογραφήσει, επειδή ο Β είναι ο μόνος που έχει το αντίστοιχο ιδιωτικό κλειδί.

Εκτός από αυτό, θέλουμε να είμαστε σίγουροι ότι η αρχική πληροφορία δεν έχει τροποποιηθεί. Για το σκοπό αυτό χρησιμοποιείται το HMAC.

Το συμμετρικό κλειδί μπορεί να ξαναδημιουργηθεί περιοδικά. Στη συνέχεια, αυτό ονομάζεται session  key (δημιουργείται τυχαία και ισχύει μόνο για μία συνεδρία). Εάν ένας εισβολέας μάθει το κλειδί συνεδρίας(session key), τότε μπορεί να αποκρυπτογραφήσει μόνο τα μηνύματα που αποστέλλονται μετά την τελευταία δημιουργία του κλειδιού και πριν από την επόμενη. Αυτός είναι ο τρόπος που επιτυγχάνεται το Forward Secrecy.

Όσο χρησιμοποιούμε συμμετρική κρυπτογράφηση, κάποια λειτουργία κρυπτογράφησης είναι απαραίτητη για να αλλάξει το ciphertext με τυχαίο τρόπο ώστε να μην εξασθενίσει το κλειδί κρυπτογράφησης. Η λύση είναι μια λειτουργία κρυπτογράφησης αλύσωσης μπλοκ (cipher block chaining (CBC)).

5. Περίληψη

Η απομακρυσμένη εργασία μέσω VPN είναι ένα πολύ κοινό πρότυπο σήμερα. Το VPN προσομοιώνει ένα ιδιωτικό δίκτυο (με ασφάλεια) που υλοποιείται πάνω σε ένα δημόσιο (ανασφαλές). Στην αρχή είδαμε το μοντέλο TCP / IP και και το encapsulation. Στη συνέχεια περιγράφεται το πώς λειτουργεί η διάνοιξη tunnel. Τέλος, είδαμε πώς μπορεί να χρησιμοποιηθεί η κρυπτογράφηση  για να κάνει το VPN  tunnel ασφαλές.