# Cos'è una VPN e come funziona WireGuard
Table of Contents
Capita di sentire la parola VPN in contesti molto diversi. Chi lavora da casa la usa per collegarsi ai sistemi dell’ufficio, chi gestisce dei server la usa per farli parlare tra loro in modo protetto, e c’è chi la installa sul telefono per stare più tranquillo su una rete Wi-Fi pubblica. Dietro usi così diversi c’è sempre la stessa idea di base. E negli ultimi anni, tra i tanti modi di costruire una VPN, uno in particolare si è fatto notare per la sua semplicità: WireGuard. Vale la pena capire cos’è una VPN e perché WireGuard è diventato un riferimento.
Cos’è una VPN, in parole semplici
VPN è la sigla di Virtual Private Network, “rete privata virtuale”. Detta senza tecnicismi, è un tunnel cifrato tra due punti che passa sopra una rete pubblica come Internet. La documentazione di Wikipedia la descrive come una rete che “estende una rete privata attraverso una rete pubblica” usando cifratura e protocolli di tunnel.
Un paragone aiuta. Internet è come una stanza affollata in cui tanti messaggi viaggiano da un capo all’altro, e in linea di principio chi sta nel mezzo può vederli passare. Una VPN è come far correre quei messaggi dentro un tubo sigillato: chi guarda dall’esterno vede che qualcosa transita, ma non riesce a leggerne il contenuto. Le due parole chiave sono proprio queste. Cifratura: i dati vengono trasformati in modo che solo i due capi del tunnel possano decifrarli. Tunnel: il traffico viene incapsulato, cioè avvolto in un involucro che lo trasporta da un punto all’altro come se i due estremi fossero sulla stessa rete locale, anche se in realtà sono lontani.
A cosa serve
Gli usi concreti di una VPN si possono raggruppare in tre famiglie, che Wikipedia elenca come casi tipici.
- Accesso remoto. Permette a una persona fuori sede di raggiungere in modo sicuro la rete dell’ufficio attraverso Internet. È il caso del lavoro da casa: si accede a file, applicazioni interne e strumenti aziendali come se si fosse fisicamente in sede.
- Collegamento tra reti (site-to-site). Unisce due reti distinte, per esempio quella di un ufficio e quella di un datacenter, oppure due server in luoghi diversi che devono scambiarsi dati senza esporsi su Internet. È lo scenario più comune quando si parla di infrastruttura.
- Privacy sulla connessione. Molti servizi commerciali usano una VPN per cifrare il traffico di chi naviga e ridurre il rischio che venga intercettato, tipicamente su reti non fidate. Va detto con onestà che qui la fiducia si sposta sul fornitore della VPN, che vede comunque passare il traffico.
Il filo comune è sempre lo stesso: mettere in comunicazione due punti in modo sicuro, senza dover fidarsi della rete che c’è in mezzo.
Cos’è WireGuard
Costruire una VPN richiede un protocollo, cioè un insieme di regole che stabiliscono come i due capi si riconoscono, come cifrano i dati e come li instradano. Per anni gli strumenti più diffusi sono stati OpenVPN e IPsec, entrambi solidi ma anche pesanti da configurare. WireGuard è un progetto più recente, creato da Jason A. Donenfeld, che si presenta con un obiettivo dichiarato: fare le stesse cose in modo molto più semplice.
La sua stessa pagina ufficiale lo descrive come “una VPN estremamente semplice, ma veloce e moderna, che utilizza crittografia allo stato dell’arte”. Sotto il cofano, WireGuard incapsula i pacchetti IP dentro UDP, uno dei protocolli di trasporto di base di Internet. Dal punto di vista pratico, è diventato parte del kernel Linux con la versione 5.6, rilasciata il 29 marzo 2020, ed è disponibile anche su Windows, macOS, Android, iOS e i sistemi BSD. Un dettaglio che spiega bene la sua filosofia: la documentazione dichiara di voler essere “facile da configurare e mettere in opera quanto SSH”.
Perché è diventato popolare
Il successo di WireGuard non è dovuto a una singola funzione appariscente, ma a tre scelte di fondo che, messe insieme, cambiano l’esperienza d’uso.
La semplicità. OpenVPN e IPsec sono progetti enormi, con basi di codice difficili da verificare a fondo persino per gruppi di esperti. WireGuard nasce con l’idea opposta: poche righe di codice, pensate per essere “revisionabili in modo esaustivo da singoli individui”. Meno codice significa meno superficie in cui possono nascondersi errori e meno cose da configurare a mano.
Le prestazioni. Sui sistemi Linux WireGuard vive dentro il kernel, il cuore del sistema operativo, invece di girare come programma separato. Questo evita continui passaggi tra i due mondi e si traduce in maggiore velocità, minore latenza e meno lavoro per il processore. La pagina ufficiale lo definisce “notevolmente più performante di OpenVPN”.
La crittografia moderna. WireGuard non lascia scegliere tra decine di algoritmi, come fanno i protocolli più vecchi. Ne usa un insieme fisso e aggiornato, basato sul Noise protocol framework e su primitive come Curve25519, ChaCha20, Poly1305 e BLAKE2. Il vantaggio è sottile ma importante: dove non c’è una negoziazione su quale algoritmo usare, non c’è nemmeno il rischio che un attaccante la forzi verso una scelta debole.
Il cuore di WireGuard: chiavi e cryptokey routing
Qui sta la differenza più interessante rispetto a tanti sistemi tradizionali. WireGuard non usa username e password, un approccio a coppie di chiavi che si ritrova anche nelle firme crittografiche di Web Bot Auth. Ogni nodo della rete ha una coppia di chiavi: una privata, che resta sulla macchina e non la lascia mai, e una pubblica, che viene condivisa con gli altri. Il meccanismo è lo stesso delle chiavi SSH: chi possiede la mia chiave pubblica può cifrare traffico verso di me e verificare che sia davvero io a rispondere, ma non può fingersi me.
Ogni interlocutore, nel gergo di WireGuard, si chiama peer, cioè “pari”: non esiste una gerarchia rigida tra client e server, ci sono solo nodi che si parlano. Il collante che tiene insieme il tutto è quello che la documentazione ufficiale chiama cryptokey routing: ogni chiave pubblica viene associata a una lista di indirizzi IP ammessi dentro il tunnel. Questa lista fa due lavori in uno. In uscita si comporta come una tabella di instradamento: decide verso quale peer, e con quale chiave, va cifrato un pacchetto. In ingresso si comporta come una lista di controllo accessi: accetta un pacchetto solo se arriva dal peer giusto e da un indirizzo che gli compete.
[Peer]PublicKey = <chiave-pubblica-dell-altro-nodo>AllowedIPs = 10.0.0.2/32Endpoint = altro-nodo.esempio.net:51820In poche righe c’è tutto: chi è l’altro nodo (la sua chiave), quali indirizzi gli spettano e dove raggiungerlo. Da questo legame tra chiave e indirizzo nasce un’altra comodità, il roaming: siccome un peer è identificato dalla sua chiave e non dal suo indirizzo di rete, se cambia connessione - per esempio un portatile che passa dal Wi-Fi alla rete mobile - il tunnel non si rompe. WireGuard scopre il nuovo indirizzo semplicemente dal punto da cui arrivano i dati correttamente cifrati.
WireGuard rispetto a OpenVPN e IPsec
La pagina ufficiale non gira intorno alla questione: WireGuard punta a essere “più veloce, più semplice, più snello e più utile di IPsec”. La stessa idea vale nel confronto con OpenVPN, con il vantaggio aggiuntivo di una base di codice molto più piccola e quindi più facile da controllare.
Questo non vuol dire che le soluzioni più vecchie siano da buttare. IPsec resta lo standard più diffuso per far dialogare apparati di rete di produttori diversi, e OpenVPN sa attraversare firewall ostili facendosi passare per normale traffico web. Sono strumenti maturi, con anni di esperienza alle spalle. Il punto di WireGuard è un altro: per il caso comune di collegare in modo sicuro dei sistemi che si controllano, offre lo stesso risultato con meno codice, meno configurazione e meno modi di sbagliare.
In sintesi
Una VPN è un tunnel cifrato tra due punti che passa sopra Internet, e serve a metterli in comunicazione in modo sicuro: accesso remoto, collegamento tra reti o protezione della connessione. WireGuard è un modo recente di realizzarla, diventato popolare perché mette insieme tre cose difficili da avere tutte insieme: semplicità, prestazioni e crittografia moderna. Al posto di password usa coppie di chiavi come SSH, e lega ogni chiave agli indirizzi ammessi nel tunnel. Non rende obsoleti IPsec e OpenVPN, ma per molti scenari è oggi la strada più diretta.
