Cryptology Academy · Lezione

OpenVPN: architettura VPN basata su TLS

Esamini come OpenVPN utilizza TLS per il canale di controllo e cifrari configurabili per il canale dati.

Lezione 3 di 413 passaggi

OpenVPN: architettura VPN basata su TLS è una lezione Cryptology Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cryptology Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cryptology Academy include 4 lezioni in totale.

Architettura a due canali di OpenVPN

OpenVPN usa due canali separati: il canale di controllo e il canale dati. Il canale di controllo gestisce l'autenticazione, la creazione della sessione e lo scambio della configurazione tramite TLS. Il canale dati trasporta il traffico VPN effettivo, cifrato con un cifrario simmetrico negoziato attraverso il canale di controllo. Questa separazione consente a OpenVPN di sfruttare l'intero ecosistema TLS per la gestione delle chiavi.

Canale di controllo: TLS per la negoziazione delle chiavi

Il canale di controllo di OpenVPN esegue una sessione TLS completa. Entrambi i lati si autenticano usando certificati X.509 firmati da una CA condivisa. TLS fornisce lo scambio delle chiavi, la convalida dei certificati e la negoziazione dei parametri del cifrario del canale dati. Poiché TLS supporta ECDHE, il canale di controllo garantisce la segretezza in avanti perfetta: le chiavi del canale dati non possono essere recuperate da una sessione acquisita, nemmeno disponendo della chiave della CA.

Cifratura del canale dati

La cifratura del canale dati viene negoziata tramite il canale di controllo TLS. OpenVPN 2.4 e versioni successive usano per impostazione predefinita AES-256-GCM, un cifrario AEAD che fornisce riservatezza e integrità in un'unica operazione. Le versioni precedenti usavano AES-256-CBC con HMAC-SHA256 separatamente. Le modalità AEAD sono preferite perché eliminano la necessità di una verifica MAC separata e contrastano gli attacchi con oracolo di padding.

tls-crypt: wrapping con chiave precondivisa

L'opzione tls-crypt racchiude l'intera sessione TLS, incluso il client hello, all'interno di un involucro simmetrico autenticato con HMAC usando una chiave precondivisa. Ciò significa che i client non autenticati non possono nemmeno avviare un handshake TLS; i loro pacchetti iniziali vengono scartati silenziosamente. In questo modo il server OpenVPN è protetto dagli attacchi DDoS con amplificazione basati su TLS e viene nascosta la presenza di un server VPN.

tls-auth vs tls-crypt

L'opzione precedente tls-auth aggiunge un tag HMAC ai pacchetti del canale di controllo TLS, ma non li cifra. Questo impedisce l'iniezione di pacchetti, ma continua a rivelare l'handshake TLS agli osservatori. tls-crypt cifra e autentica l'involucro del canale di controllo, fornendo sia protezione dagli attacchi DoS sia resistenza all'analisi del traffico. tls-crypt è l'opzione moderna consigliata; tls-auth è deprecata a favore di tls-crypt-v2.

Autenticazione dei client basata su certificati

OpenVPN autentica i client usando certificati X.509 firmati dall'Autorità di certificazione della VPN. Ogni client riceve un certificato univoco e una chiave privata. Il server verifica la catena di certificati e può inoltre controllare una Certificate Revocation List (CRL) per rifiutare i certificati revocati. La revoca di un certificato rimuove immediatamente l'accesso del client, a differenza dei sistemi basati su PSK, nei quali la modifica di una chiave influisce su tutti i client.

Trasporto UDP vs TCP

OpenVPN può funzionare su UDP (impostazione predefinita e consigliata) o TCP. UDP evita il problema TCP-over-TCP, in cui la perdita di pacchetti causa ritrasmissioni duplicate sia a livello TCP sia a livello dell'applicazione VPN, degradando notevolmente le prestazioni. Tuttavia, alcune reti bloccano UDP. Eseguire OpenVPN sulla porta TCP 443 può aggirare i firewall che consentono solo traffico HTTPS, a scapito delle prestazioni in condizioni di perdita di pacchetti.

Modalità di interfaccia tun vs tap

OpenVPN opera in modalità tun (routing) o tap (bridging). La modalità tun crea un'interfaccia di rete IP punto-punto che instrada i pacchetti IP tra il client e la rete VPN. La modalità tap crea un'interfaccia bridge Ethernet che trasmette frame Ethernet, inclusi broadcast e protocolli non IP. La modalità tun è più efficiente e adatta alla maggior parte dei casi d'uso VPN; la modalità tap è necessaria per collegare segmenti di rete o usare protocolli non IP.

Direttive push per la configurazione dei client

I server OpenVPN possono inviare automaticamente direttive di configurazione ai client che si connettono. Tra le direttive push comuni vi sono push "route 10.0.0.0 255.0.0.0" (aggiunge una route sul client), push "dhcp-option DNS 10.0.0.1" (imposta il server DNS) e push "redirect-gateway def1" (instrada tutto il traffico del client attraverso la VPN). In questo modo la gestione della configurazione dei client viene centralizzata senza modificare i singoli file di configurazione dei client.

Segretezza in avanti perfetta in OpenVPN

OpenVPN ottiene la segretezza in avanti perfetta tramite TLS ECDHE (Elliptic Curve Diffie-Hellman Ephemeral) nel canale di controllo. Per ogni sessione TLS viene utilizzata una nuova coppia di chiavi effimere, quindi la chiave di sessione non può essere derivata dalla chiave privata del certificato a lungo termine del server. Anche acquisendo oggi traffico cifrato e ottenendo in seguito il certificato del server, non sarebbe possibile decifrare le sessioni passate.

Deprecazione dei cifrari deboli in OpenVPN 2.5+

OpenVPN 2.5 ha dichiarato obsoleto il cifrario Blowfish (BF-CBC), che in passato era quello predefinito. BF-CBC usa una dimensione del blocco di 64 bit, vulnerabile agli attacchi del compleanno SWEET32 nelle sessioni lunghe. Le versioni moderne di OpenVPN usano per impostazione predefinita AES-256-GCM. OpenVPN 2.5 ha inoltre dichiarato obsoleti i cifrari non AEAD nel canale dati e ha reso più rigorosi i requisiti sulla versione minima di TLS, rimuovendo il supporto per TLS 1.0 e 1.1.

Canale di controllo vs canale dati di OpenVPN

Qual è la funzione principale del canale di controllo di OpenVPN?

Riepilogo dell'architettura di OpenVPN

Riepilogo di OpenVPN: il canale di controllo usa TLS per l'autenticazione e la negoziazione dei cifrari, il canale dati usa il cifrario AEAD negoziato (AES-256-GCM per impostazione predefinita), tls-crypt racchiude TLS per impedire handshake non autenticati, ECDHE garantisce la segretezza in avanti, l'autenticazione dei client basata su certificati supporta la revoca tramite CRL, UDP è preferito a TCP per le prestazioni e la modalità tun è preferita per i casi d'uso di routing IP.

Gratis per iniziare

Impara Cryptology Academy con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
67
Lezioni
261

Domande Frequenti

La lezione «OpenVPN: architettura VPN basata su TLS» è gratuita?

Sì — il testo completo di «OpenVPN: architettura VPN basata su TLS» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cryptology Academy, passa a CoddyKit PRO. Il corso Cryptology Academy include 4 lezioni in totale.

Cosa imparerò in «OpenVPN: architettura VPN basata su TLS»?

Esamini come OpenVPN utilizza TLS per il canale di controllo e cifrari configurabili per il canale dati. Eserciti Cryptology Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Cryptology Academy?

Non è richiesta alcuna esperienza precedente. Cryptology Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «OpenVPN: architettura VPN basata su TLS»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Cryptology Academy?

Sì. Ogni lezione Cryptology Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. IPsec: protocolli IKEv2, ESP e AH
  2. WireGuard: VPN con ChaCha20 e Curve25519
  3. OpenVPN: architettura VPN basata su TLS
  4. Confronto tra protocolli VPN: sicurezza e prestazioni
← Torna a Cryptology Academy