VPN
In questa pagina 8
Che cos'è una VPN
Definizione (VPN). Una rete privata virtuale (Virtual Private Network) è una rete privata costruita sopra una rete pubblica (per esempio Internet). I nodi di una VPN comunicano nella rete pubblica in modo sicuro, come se fossero in una rete privata.
Esempio d'uso. Con una VPN i dipendenti possono accedere in sicurezza all'intranet dell'azienda mentre viaggiano, e le aziende possono estendere la loro rete privata nel mondo.
Quali garanzie dà una rete privata? Essere in una rete privata protegge in tre modi:
- autenticazione: grazie a serrature e guardie di sicurezza per gli utenti esterni (per esempio i firewall, FirewallUn firewall è un componente (hardware, software o entrambi) che blocca il traffico non autorizzato da una rete verso un'altra: filtra i dati, reindirizza il traffico, protegge dagli attacchi. Requisiti: tutto il traffico tra due zone di fiducia deve passare dal firewall, passa solo il traffico autorizzato, il firewall stesso deve essere immune alle intrusioni. L'amministratore configura le politiche (controllo di utente, di servizio, di direzione); un pacchetto può essere accettato, negato o rifiutato (negato più messaggio ICMP alla sorgente). Il firewall decide con le informazioni di intestazione dei livelli 2-4 (indirizzi, protocollo, porte, flag SYN/ACK/FIN). Packet filter: senza stato, filtra in ingresso e in uscita con regole su indirizzi, protocollo, porte, flag (esempi SMTP, Telnet, X11 e correzioni con porte sorgente e flag ACK). Stateful firewall: tiene traccia delle connessioni (NEW, ESTABLISHED, RELATED, INVALID), limita connessioni al secondo, timeout. Firewall applicativo/proxy: ispeziona il livello applicazione, apre una connessione separata verso la destinazione; sicuro ma lento. Linux: netfilter con 5 hook IPv4 e 5 verdetti, iptables (tabelle e catene), connection tracking nf_conntrack.Firewall →), gli utenti dentro la rete privata sono già stati identificati e autorizzati;
- privacy (riservatezza): il contenuto di una comunicazione dentro la rete privata non può essere visto da fuori (finché i cavi sono fisicamente protetti e il Wi-Fi è cifrato);
- integrità: nessuno da fuori può falsificare dati né inserirne di dannosi nella rete privata.
Obiettivo della VPN: ottenere queste proprietà anche senza essere fisicamente dentro la rete privata: creare un posto dove le macchine non sono fisicamente private ma sono virtualmente private.
Architettura
Un host designato, il server VPN, è autorizzato dal firewall a mandare e ricevere traffico.
- È esposto alla rete esterna, mentre tutti gli altri host restano protetti dal firewall.
- I nodi esterni devono passare dal server VPN ed essere autenticati prima di raggiungere gli host interni.
Se un client vuole collegarsi a un nodo interno , ogni connessione diretta a viene bloccata dal firewall: perché la comunicazione riesca, tutti i pacchetti devono passare dal server VPN (la "guardia di sicurezza").
Come si realizza: l'incapsulamento
Problema. Come si manda un pacchetto IP da a in modo sicuro (autenticato, cifrato, con integrità preservata) se e appartengono alla stessa VPN ma non alla stessa rete privata fisica? Per maggiore sicurezza si vorrebbe cifrare anche l'intestazione IP, ma i router non possono leggere un'intestazione IP cifrata e devono anche cambiare TTL e checksum (Datagramma IP e frammentazioneIPv4 è un servizio senza connessione, non affidabile, best effort: i pacchetti (datagrammi) possono essere persi, corrotti, riordinati o ritardati. L'intestazione ha 20-60 byte (HLen conta parole da 4 byte, da 5 a 15); il campo Total Length (16 bit) dà la lunghezza totale fino a 65 535 byte; TTL limita i salti, Protocol identifica il protocollo trasportato (1 ICMP, 6 TCP, 17 UDP), il checksum copre solo l'intestazione. Se un datagramma è più grande dell'MTU del collegamento viene frammentato: solo il payload si divide, ogni frammento ha un'intestazione propria; l'Offset (13 bit) è in unità di 8 byte, MF=1 in tutti i frammenti tranne l'ultimo, e il riassemblaggio avviene solo a destinazione.Datagramma IP e frammentazione →).
Soluzione: l'incapsulamento. Si mette il pacchetto IP cifrato dentro un altro pacchetto IP, come carico, per portarlo da a . Arrivata a destinazione, questa intestazione esterna viene scartata, il carico cifrato viene decifrato e trattato come un normale pacchetto IP; a quel punto può raggiungere la destinazione finale nella rete privata.
Definizione (tunnel IP). Il pacchetto reale tra i due estremi del tunnel porta come carico un altro pacchetto IP: quello da proteggere (per esempio i pacchetti da e verso una rete privata). Il tunnel attraversa una rete pubblica come Internet; il traffico dentro il tunnel è protetto.
Esempio. Il tunnel collega due reti private; (rete 10.0.7.0/24) manda un pacchetto a (rete 10.0.8.0/24). Sulla rete pubblica viaggia un pacchetto con indirizzi dei due estremi del tunnel, per esempio 198.51.100.7 203.0.113.1, il cui carico (cifrato) contiene il pacchetto originale 10.0.7.5 10.0.8.9. Chi osserva Internet vede solo il traffico tra i due estremi. Perché affida il pacchetto al client VPN: con la maschera /24 l'indirizzo di , 10.0.8.9 AND 255.255.255.0 10.0.8.0, è diverso dalla rete di (10.0.7.0), quindi lo manda al gateway di default, che è il client VPN (Subnetting e supernettingIl subnetting divide un blocco di indirizzi in sottoblocchi più piccoli allungando la maschera ($n_{\text{sub}}=n_{\text{rete}}+s$, con $2^s$ sottoreti); il supernetting (aggregazione CIDR) fa l'opposto, accorciando il prefisso per unire blocchi contigui in uno più grande. Regole di progetto: ogni sottorete ha un numero di indirizzi potenza di 2 ($M=2^k\ge$ host richiesti $+2$), prefisso $n=32-k$, indirizzo iniziale multiplo di $M$; si assegnano prima le sottoreti più grandi. Per aggregare $2^j$ blocchi di prefisso $n$ servono blocchi contigui il cui primo indirizzo sia multiplo della dimensione dell'aggregato, e il nuovo prefisso è $n-j$.Subnetting e supernetting →, Instradamento e inoltroL'inoltro (forwarding) mette il pacchetto sulla strada verso la destinazione, un salto alla volta (hop by hop). Se la destinazione è nella stessa rete del mittente l'inoltro è diretto (si usa l'ARP per il MAC del destinatario), altrimenti è indiretto: il pacchetto va al router successivo (next hop) indicato dalla tabella di instradamento, o al default gateway. Con le netmask: l'inoltro è diretto attraverso l'interfaccia $x$ se $\text{IP(dst)}\ \text{AND}\ \text{NM}(x)=\text{IP}(x)\ \text{AND}\ \text{NM}(x)$; altrimenti si scorre la tabella dalla maschera più lunga (longest prefix match) e si usa il primo match. La riga con rete $0.0.0.0$ e maschera $0.0.0.0$ (default route) corrisponde sempre. L'aggregazione di rotte (route aggregation) riduce la tabella, e nell'inoltro con etichette (MPLS) la tabella si consulta per indice.Instradamento e inoltro →).
Esempio numerico (dimensioni). Con la sola intestazione IPv4 esterna di 20 byte, un pacchetto interno da 1500 byte diventa di byte, più della MTU di 1500: viene frammentato in due frammenti, con e byte di carico (Datagramma IP e frammentazioneIPv4 è un servizio senza connessione, non affidabile, best effort: i pacchetti (datagrammi) possono essere persi, corrotti, riordinati o ritardati. L'intestazione ha 20-60 byte (HLen conta parole da 4 byte, da 5 a 15); il campo Total Length (16 bit) dà la lunghezza totale fino a 65 535 byte; TTL limita i salti, Protocol identifica il protocollo trasportato (1 ICMP, 6 TCP, 17 UDP), il checksum copre solo l'intestazione. Se un datagramma è più grande dell'MTU del collegamento viene frammentato: solo il payload si divide, ogni frammento ha un'intestazione propria; l'Offset (13 bit) è in unità di 8 byte, MF=1 in tutti i frammenti tranne l'ultimo, e il riassemblaggio avviene solo a destinazione.Datagramma IP e frammentazione →). Per questo i pacchetti interni di un tunnel vanno tenuti più piccoli della MTU meno l'overhead di incapsulamento (a cui si aggiunge l'overhead della cifratura).
Esempio numerico (ESP in modo tunnel). Con ESP, cifrario a blocchi da 16 byte e un codice di integrità da 12 byte, l'overhead è: nuova intestazione IP byte; intestazione ESP byte (SPI + numero di sequenza ); vettore di inizializzazione byte; coda ESP (lunghezza del riempimento e protocollo successivo) byte; codice di integrità byte; più un riempimento (padding) che porta la lunghezza del pacchetto interno più la coda a un multiplo di . L'overhead fisso è byte. Un pacchetto interno di byte: , riempimento di byte per arrivare a , pacchetto esterno byte, che sta nella MTU di . Il pacchetto interno più grande che non si frammenta si trova imponendo , cioè , quindi (multiplo di ) : byte (riempimento ). Con il pacchetto esterno sarebbe di byte e va frammentato.
L'efficienza (quota di byte utili) è : per è ; per un pacchetto piccolo di fonia di byte è (con ), perché l'overhead pesa quanto i dati.
Grafico interattivo: Efficienza di un tunnel ESP in funzione della lunghezza L del pacchetto interno: η = L/(L + 58), senza contare il riempimento (fino a 15 byte in più). I pacchetti piccoli sprecano metà della banda
IPsec
IPsec (Internet Protocol Security) offre sicurezza al livello rete: riservatezza, integrità, autenticazione dell'origine dei dati e protezione dagli attacchi di replay. La suite comprende due protocolli principali:
- AH (Authentication Header, protocollo IP 51): autenticazione della sorgente e integrità dei dati;
- ESP (Encapsulating Security Payload, protocollo IP 50): fornisce anche la riservatezza (cifratura).
Ha due forme di pacchetto: modo tunnel e modo trasporto.
Definizione (modo tunnel). L'intero pacchetto IP originale è incapsulato e diventa il carico di un nuovo pacchetto IP: sopra il pacchetto originale si aggiunge una nuova intestazione IP. Protegge l'intero pacchetto IP. È utile per proteggere il traffico tra reti diverse: il pacchetto viaggia con una nuova intestazione IP e i router intermedi non vedono nulla del pacchetto originale. Semplifica la procedura di scambio delle chiavi.
Definizione (modo trasporto). Mantiene l'intestazione IP originale. Svantaggio: l'intestazione IP non è protetta, quindi permette l'analisi del traffico. Si usa per la comunicazione end-to-end tra due host che hanno già stabilito un tunnel IPsec sicuro. Non crea una nuova intestazione IP: il procedimento è meno complesso dell'incapsulamento.
Esempio. La sede A (10.1.0.0/16) e la sede B (10.2.0.0/16) hanno un tunnel ESP in modo tunnel tra i router di bordo (203.0.113.1 e 203.0.113.2). Un pacchetto 10.1.0.5 10.2.0.9 (con la maschera /16, 255.255.0.0, 10.2.0.9 AND maschera 10.2.0.0: non è nella rete 10.1.0.0/16 di partenza, quindi va al gateway di default, il router di bordo) esce dalla sede A con una nuova intestazione 203.0.113.1 203.0.113.2 e protocollo 50: all'esterno si vede solo il traffico tra i due gateway, non gli indirizzi interni.
Security Association (SA). Prima di mandare datagrammi IPsec, sorgente e destinazione devono creare una connessione logica detta Security Association.
- È una connessione a senso unico: se il traffico IPsec deve andare nei due versi servono due SA (ognuna ha il suo SPI, le sue chiavi e il suo contatore di sequenza: il numero di sequenza, che cresce a ogni pacchetto, è ciò che permette di scartare i pacchetti ripetuti da un attaccante, cioè il replay).
- Lo stato di una SA comprende: un SPI (Security Parameter Index) che identifica la SA; l'origine e la destinazione della SA (gli indirizzi IP); l'identificatore del protocollo di sicurezza (se è una SA di AH o di ESP); il tipo di cifratura da usare; il tipo di controllo di integrità.
L'IPsec è realizzato direttamente nel livello IP del kernel. In una VPN si usa il modo tunnel di IPsec, che incapsula il pacchetto IP originale cifrato in un nuovo pacchetto IP con una nuova intestazione.
Tunnel SSL/TLS
Il tunnel SSL/TLS (Crittografia asimmetrica, RSA e TLSCrittografia asimmetrica (a chiave pubblica): chiave di cifratura pubblica v_B, chiave di decifratura privata s_B, matematicamente legate; C = E_vB(P), P = D_sB(C); dà riservatezza. I certificati digitali, emessi da una Certificate Authority e firmati con la sua chiave privata, legano un'identità a una chiave pubblica. Firma digitale: hash del messaggio cifrato con la chiave privata; garantisce autenticità, integrità e non ripudio. RSA: si scelgono due primi grandi p e q, N = pq, phi(N) = (p-1)(q-1), e coprimo con phi(N), d = e^(-1) mod phi(N); chiave pubblica (N, e), segreta (N, d); cifratura c = m^e mod N, decifratura m = c^d mod N con m < N (teorema di Eulero); sicura finché la fattorizzazione è difficile (N di almeno 2048 bit); il padding casuale (PKCS#1 v1.5: 00 02 [casuale] 00 [m]) difende da malleabilità e determinismo. La firma RSA è s = m^d mod N, verificata con s^e mod N. TLS (su TCP) autentica gli estremi con il certificato, cifra i dati con una chiave di sessione simmetrica e garantisce l'integrità con i MAC; da TLS 1.0 a 1.3 la chiave si ricava con Diffie-Hellman e l'handshake si accorcia. DTLS è la versione per UDP.Crittografia asimmetrica, RSA e TLS →) è realizzato fuori dal kernel, in un'applicazione: ogni pacchetto IP destinato alla VPN viene passato a un'applicazione dedicata, che usa TCP o UDP.
- Il pacchetto TCP/UDP è mandato all'altra estremità del tunnel, dove il pacchetto IP cifrato viene estratto e consegnato all'host giusto nella rete privata.
- È noto come tunnel a livello di trasporto (Transport Layer tunneling). È più popolare dell'IPsec, perché è indipendente dal kernel (è un'applicazione).
Il servizio VPN passo per passo
Una organizzazione possiede due reti private in due aree geografiche diverse. La VPN usa l'infrastruttura pubblica (Internet) per costruire una connessione virtuale e sicura con il tunnel. Se ne occupano due dispositivi di rete: il client VPN (nella sede satellite) e il server VPN (nella sede principale).
Proprietà (compiti della coppia client-server VPN).
- stabilire un tunnel sicuro tra i due;
- inoltrare nel tunnel i pacchetti IP che devono andare dall'altra parte della VPN;
- dopo aver ricevuto un pacchetto IP dall'altra estremità del tunnel, rilasciarlo nella rete privata.
1. Stabilire un tunnel SSL/TLS. Il tunnel TLS è costruito sopra le applicazioni che girano sul client e sul server VPN, usando TCP o UDP come trasporto. Serve l'autenticazione reciproca della coppia VPN:
- il client autentica il server con un certificato a chiave pubblica (il server non può permettersi di rivelare una chiave segreta);
- il server autentica il client con una chiave condivisa (per esempio la password dell'utente).
I dati che attraversano il canale sono cifrati e si usano i codici di autenticazione dei messaggi (MAC) per impedire falsificazioni.
2. Interfacce di rete virtuali. Linux e quasi tutti i sistemi operativi supportano due tipi di interfaccia di rete: fisica (NIC) e virtuale (TUN/TAP). Un'interfaccia virtuale è la rappresentazione virtualizzata di un'interfaccia di rete, che può corrispondere o no a una NIC fisica. TUN/TAP è interamente virtuale: collega un computer a un programma nello spazio utente e si può vedere come un semplice collegamento punto-punto tra due computer (salvo che uno è solo un programma che finge di essere un computer).
| interfaccia | livello | uso |
|---|---|---|
| TUN | livello IP (rete) | inviare pacchetti all'interfaccia TUN significa consegnarli al programma in spazio utente compresa l'intestazione IP; si usa per costruire VPN di livello 3 |
| TAP | livello collegamento (livello 2); si comporta come una scheda di rete | può trasportare pacchetti di qualunque protocollo di livello 3; si usa per creare VPN di livello 2 |
3. Inoltro nel tunnel. Al client, l'applicazione del tunnel è resa un host virtuale collegato al client tramite una scheda di rete virtuale (TUN/TAP). Così il pacchetto IP viene inoltrato all'applicazione del tunnel, che lo cifra e lo incapsula in un pacchetto TCP/UDP, con una nuova intestazione IP che ha il client VPN come indirizzo sorgente e il server VPN come destinazione (porta 443).
4. Rilascio dei pacchetti. Alla ricezione, il server VPN toglie l'intestazione ausiliaria e consegna il carico all'applicazione del tunnel, di nuovo tramite l'interfaccia TUN/TAP. L'applicazione decifra il pacchetto IP contenuto nel carico e ne verifica l'integrità, poi lo restituisce al kernel del server VPN. Il pacchetto IP originale è ora disponibile nella rete principale.
Esempio. Reti: principale 10.0.8.0/24 con l'host , satellite 10.0.7.0/24 con l'host . manda un pacchetto a :
- lo manda al suo gateway, cioè al client VPN, il cui kernel lo instrada sull'interfaccia TUN;
- l'applicazione del tunnel lo cifra e lo incapsula in TCP verso il server VPN (porta 443), con indirizzi pubblici dei due estremi;
- il server VPN estrae il carico, lo decifra, verifica l'integrità e lo passa al suo kernel;
- il kernel del server lo instrada nella rete
10.0.8.0/24fino a .
Aggirare le restrizioni geografiche
La restrizione geografica (geo-restriction) è un altro tipo di firewall, che filtra in base alla posizione geografica dell'indirizzo IP. I fornitori di servizi multimediali (YouTube, Netflix, ...) la usano di solito perché hanno diritti d'autore diversi per aree geografiche diverse. Con una VPN l'indirizzo IP visto dalla rete è quello del server VPN, non quello dell'host locale: ci si collega a un server VPN in un'altra regione geografica e si può usare il servizio come se si fosse fisicamente lì. Più in generale la VPN serve a nascondere l'indirizzo IP reale del mittente (entro certi limiti).
Errori comuni
- Credere che una VPN renda anonimo il traffico: nasconde l'IP reale ai siti, ma il gestore della VPN lo vede.
- Dimenticare che nel modo trasporto l'intestazione IP resta in chiaro (analisi del traffico possibile), mentre nel modo tunnel è cifrata.
- Contare una sola SA IPsec per una comunicazione bidirezionale: ne servono due, perché una SA è a senso unico.
- Confondere AH (solo integrità e autenticazione) con ESP (anche cifratura).
- Scordare l'overhead dell'incapsulamento e il rischio di frammentazione.
- Confondere TUN (livello 3, pacchetti IP) con TAP (livello 2, frame).
Versione ripasso
- Definizione. Rete privata costruita sopra una rete pubblica (Internet): i nodi comunicano in sicurezza come se fossero in una rete privata. Dà autenticazione, riservatezza e integrità anche senza essere fisicamente dentro la rete privata. Esempio d'uso: dipendenti in viaggio che accedono all'intranet dell'azienda.
- Architettura. Un host, il server VPN, è ammesso dal firewall (FirewallUn firewall è un componente (hardware, software o entrambi) che blocca il traffico non autorizzato da una rete verso un'altra: filtra i dati, reindirizza il traffico, protegge dagli attacchi. Requisiti: tutto il traffico tra due zone di fiducia deve passare dal firewall, passa solo il traffico autorizzato, il firewall stesso deve essere immune alle intrusioni. L'amministratore configura le politiche (controllo di utente, di servizio, di direzione); un pacchetto può essere accettato, negato o rifiutato (negato più messaggio ICMP alla sorgente). Il firewall decide con le informazioni di intestazione dei livelli 2-4 (indirizzi, protocollo, porte, flag SYN/ACK/FIN). Packet filter: senza stato, filtra in ingresso e in uscita con regole su indirizzi, protocollo, porte, flag (esempi SMTP, Telnet, X11 e correzioni con porte sorgente e flag ACK). Stateful firewall: tiene traccia delle connessioni (NEW, ESTABLISHED, RELATED, INVALID), limita connessioni al secondo, timeout. Firewall applicativo/proxy: ispeziona il livello applicazione, apre una connessione separata verso la destinazione; sicuro ma lento. Linux: netfilter con 5 hook IPv4 e 5 verdetti, iptables (tabelle e catene), connection tracking nf_conntrack.Firewall →) ed è esposto all'esterno; gli altri host restano protetti. Chi è fuori deve passare dal server VPN e autenticarsi: le connessioni dirette agli host interni sono bloccate.
- Incapsulamento (IP tunneling). Il pacchetto IP da proteggere, cifrato, diventa il carico di un altro pacchetto IP tra gli estremi del tunnel. All'arrivo l'intestazione esterna è scartata e il carico è decifrato e trattato come un pacchetto normale. Serve perché i router devono leggere l'intestazione e cambiare TTL e checksum, cosa impossibile con un'intestazione cifrata.
- Esempio. Rete
10.0.7.0/24(U) verso10.0.8.0/24(V): sulla rete pubblica viaggia198.51.100.7203.0.113.1con dentro, cifrato,10.0.7.510.0.8.9. - Overhead. Intestazione IPv4 esterna di 20 byte: un pacchetto interno di 1500 byte diventa di byte, oltre la MTU; si frammenta in byte (Datagramma IP e frammentazioneIPv4 è un servizio senza connessione, non affidabile, best effort: i pacchetti (datagrammi) possono essere persi, corrotti, riordinati o ritardati. L'intestazione ha 20-60 byte (HLen conta parole da 4 byte, da 5 a 15); il campo Total Length (16 bit) dà la lunghezza totale fino a 65 535 byte; TTL limita i salti, Protocol identifica il protocollo trasportato (1 ICMP, 6 TCP, 17 UDP), il checksum copre solo l'intestazione. Se un datagramma è più grande dell'MTU del collegamento viene frammentato: solo il payload si divide, ogni frammento ha un'intestazione propria; l'Offset (13 bit) è in unità di 8 byte, MF=1 in tutti i frammenti tranne l'ultimo, e il riassemblaggio avviene solo a destinazione.Datagramma IP e frammentazione →). I pacchetti interni vanno tenuti sotto la MTU meno l'overhead di incapsulamento e cifratura.
- IPsec (livello rete, nel kernel IP). Riservatezza, integrità, autenticazione dell'origine e protezione dal replay. Due protocolli:
- AH (protocollo IP 51): autenticazione e integrità;
- ESP (protocollo IP 50): anche cifratura.
- Modo tunnel. L'intero pacchetto IP originale è cifrato e incapsulato in un nuovo pacchetto con nuova intestazione IP: i router intermedi non vedono nulla dell'originale. Esempio: tunnel ESP tra
203.0.113.1e203.0.113.2; il pacchetto10.1.0.510.2.0.9esce con intestazione esterna e protocollo 50. - Modo trasporto. Mantiene l'intestazione IP originale, quindi non protegge gli indirizzi e permette l'analisi del traffico. Si usa tra due host che hanno già un tunnel IPsec sicuro, senza una nuova intestazione.
- Security Association (SA). Connessione logica a senso unico: per due versi servono due SA. Stato di una SA: SPI (identificatore), indirizzi di origine e destinazione, protocollo (AH o ESP), tipo di cifratura, tipo di controllo di integrità. In una VPN si usa il modo tunnel.
- Tunnel SSL/TLS. Realizzato fuori dal kernel, in un'applicazione che usa TCP o UDP: è il più popolare, perché indipendente dal kernel (Crittografia asimmetrica, RSA e TLSCrittografia asimmetrica (a chiave pubblica): chiave di cifratura pubblica v_B, chiave di decifratura privata s_B, matematicamente legate; C = E_vB(P), P = D_sB(C); dà riservatezza. I certificati digitali, emessi da una Certificate Authority e firmati con la sua chiave privata, legano un'identità a una chiave pubblica. Firma digitale: hash del messaggio cifrato con la chiave privata; garantisce autenticità, integrità e non ripudio. RSA: si scelgono due primi grandi p e q, N = pq, phi(N) = (p-1)(q-1), e coprimo con phi(N), d = e^(-1) mod phi(N); chiave pubblica (N, e), segreta (N, d); cifratura c = m^e mod N, decifratura m = c^d mod N con m < N (teorema di Eulero); sicura finché la fattorizzazione è difficile (N di almeno 2048 bit); il padding casuale (PKCS#1 v1.5: 00 02 [casuale] 00 [m]) difende da malleabilità e determinismo. La firma RSA è s = m^d mod N, verificata con s^e mod N. TLS (su TCP) autentica gli estremi con il certificato, cifra i dati con una chiave di sessione simmetrica e garantisce l'integrità con i MAC; da TLS 1.0 a 1.3 la chiave si ricava con Diffie-Hellman e l'handshake si accorcia. DTLS è la versione per UDP.Crittografia asimmetrica, RSA e TLS →).
- Compiti della coppia client-server VPN. 1) stabilire un tunnel sicuro; 2) inoltrare nel tunnel i pacchetti destinati all'altro lato; 3) rilasciare nella rete privata i pacchetti ricevuti dal tunnel.
- Autenticazione reciproca. Il client autentica il server con un certificato a chiave pubblica; il server autentica il client con una chiave condivisa, per esempio la password. Dati cifrati, con MAC contro le falsificazioni.
- Interfacce TUN e TAP. Interfacce virtuali collegate a un programma in spazio utente. TUN lavora al livello 3 e riceve pacchetti IP con intestazione: serve per VPN di livello 3. TAP lavora al livello 2, si comporta come una scheda di rete e trasporta frame di qualunque protocollo: serve per VPN di livello 2.
- Percorso di un pacchetto. Il client VPN instrada il pacchetto sulla TUN; l'applicazione lo cifra e lo incapsula in TCP o UDP verso il server VPN (porta 443), con indirizzi pubblici dei due estremi. Il server toglie l'intestazione, decifra, verifica l'integrità e consegna il pacchetto IP al proprio kernel, che lo instrada fino a .
- Restrizioni geografiche. Il firewall geografico filtra per regione dell'indirizzo IP. Con la VPN il sito vede l'IP del server VPN, in un'altra regione, e l'IP reale è nascosto, entro certi limiti.
- Errori tipici: credere che la VPN renda anonimo il traffico (il gestore della VPN vede tutto); nel modo trasporto dimenticare che l'intestazione IP resta in chiaro; contare una sola SA per una comunicazione bidirezionale; confondere AH (solo integrità) con ESP (anche cifratura); confondere TUN (pacchetti IP) con TAP (frame).