VPN con WireGuard - A cosa serve questa nuova tecnologia Open Source
WireGuard è uno strumento open source per VPN ed è tra le novità più interessanti e discusse dell’universo di internet al momento. Secondo gli sviluppatori, l'idea alla base è quella di rendere l’utilizzo delle VPN (Virtual Private Network) il più semplice possibile. Questo software dovrebbe essere più veloce e più utile di IPSec e soluzioni simili, e anche molto più facile da configurare.
Lo strumento si presta ad essere usato per una ampia gamma di applicazioni diverse. Ad esempio, in ambito business WireGuard può essere utilizzato per permettere un collegamento rapido e sicuro dei computer e smartphone dei dipendenti alla intranet aziendale, utile soprattutto in caso di lavoro da remoto. I router backbone permettono anche di connettersi ovunque, senza richiedere un'infrastruttura speciale per la gestione dei certificati.
Nel seguente articolo spiegheremo come funziona WireGuard in dettaglio e illustreremo gli aspetti più rilevanti e critici da considerare se si decide di utilizzarlo. Abbiamo anche compilato una panoramica dei pro e contro principali di questo software open-source.
Che cos’è Wireguard?
WireGuard è una tecnologia relativamente giovane che permette di creare reti VPN sicure, sviluppata dal developer statunitense Jason A. Donenfeld come alternativa alle note soluzioni IPSec, SSTP o OpenVPN. Si tratta di una combinazione di protocollo VPN e software VPN che, a differenza di altre soluzioni, convince sia per il suo setup semplice e intuitivo, che per la configurazione della connessione notevolmente più veloce e per un tunneling VPN particolarmente stabile (anche su client mobili).
WireGuard funziona ad alte prestazioni a livello di rete, il livello 3 del modello OSI (Open Systems Interconnection), e supporta IPv4 e IPv6. Si basa su un'architettura peer-to-peer, ma il software è anche in grado di simulare architetture client-server. La connessione VPN viene stabilita (come avviene nel protocollo SSH) tramite lo scambio di chiavi pubbliche.
Come soluzione open source, WireGuard è ancora in parte in fase sperimentale ed è disponibile per varie piattaforme (tra cui varie distribuzioni Linux, Android e iOS). Sui sistemi Linux il codice viene eseguito come modulo nel kernel.
Le reti VPN sul livello 3 dell'OSI funzionano in modalità kernel e non in modalità utente; per questo motivo WireGuard non è disponibile per Windows. A colmare questa lacuna è arrivato TunSafe, un client Windows. È un client proprietario cloud-sourced basato sui driver TUN/TAP di OpenVPN, ma Donenfeld, lo sviluppatore di WireGuard, sconsiglia vivamente di utilizzarlo per motivi di sicurezza.
Che funzioni offre WireGuard?
WireGuard assume il ruolo di adattatore di rete del sistema: aggiunge una o più interfacce di rete che possono essere configurate in modo analogo a wlan0 o eth0 (ad es. con ipconfig o route). L'applicazione si limita alle features strettamente necessarie ed è stata volutamente mantenuta semplice dagli sviluppatori. Il codice del programma è composto da sole 4000 righe e può essere letto e compreso abbastanza facilmente.
A titolo di confronto, IPSec o OpenVPN hanno centinaia di migliaia di righe di codice.
Ciò significa che WireGuard ha meno opzioni di configurazione, ma allo stesso tempo è più facile da controllare, il che è particolarmente importante per applicazioni di questo tipo, in cui la sicurezza è una priorità assoluta.
La soluzione VPN di WireGuard utilizza tre funzioni di cifratura di base per criptare le connessioni:
Curve25519 con curva ellittica Diffie-Hellman (ECDHE) per la crittografia handshake (scambio di chiavi)
BLAKE2s come funzione hash universale (ad esempio per generare codici HMAC o per derivazioni chiave con HKDF)
ChaCha20 e Poly1305 per la crittografia simmetrica e lo scambio di dati
Il principio è tanto semplice quanto efficace: ad ogni partecipante viene assegnata una chiave VPN pubblica che può essere utilizzata per identificarlo in modo univoco. Ed25519 è utilizzato come protocollo per la procedura di autenticazione a chiave pubblica.
In WireGuard, gli elevati standard di sicurezza per la crittografia dei dati sono creati grazie a dei moderni algoritmi di crittografia. Nel cosiddetto Cryptokey-Routing, il server e il client ricevono ciascuno un indirizzo IP statico, che viene memorizzato nel file di configurazione del server. Quando viene stabilito un collegamento, questi vengono confrontati con la chiave pubblica e l'accesso è consentito solo se entrambi i valori corrispondono.
Per ulteriori informazioni su WireGuard e per dettagli sui protocolli e i meccanismi di crittografia che usa, consulta questo whitepaper.
Vantaggi e Svantaggi di Wireguard in Sintesi
Il più grande vantaggio di WireGuard è senza dubbio la sua facilità d'uso. Ma lo strumento offre anche tutta una serie di altri vantaggi:
Tunneling VPN stabile e ad alte prestazioni
Elevata sicurezza grazie all'utilizzo più moderni protocolli di crittografia
Codice snello e facile da controllare, senza lacune di sicurezza
Concept ben sviluppato
Se si valuta di utilizzare WireGuard, però, si deve essere consapevoli del fatto che si tratta di un prodotto incompleto che non è ancora completamente sviluppato nelle sue funzionalità. Oltre ai suoi numerosi vantaggi, lo strumento presenta quindi anche alcuni svantaggi significativi:
Software ancora in fase sperimentale
Non supporta gestione dinamica degli indirizzi IP (il client deve essere collegato a un indirizzo VPN definito in precedenza)
Nessuna verifica del server
Connessione e autenticazione tramite proxy al momento impossibile
Viene eseguito in modalità kernel
Attualmente non è disponibile il supporto per TCP
Provider VPN con supporto WireGuard
La maggior parte dei provider VPN è attualmente in fase di sperimentazione per quanto riguarda l’'implementazione WireGuard nei loro client. Alcuni provider forniscono già WireGuard ai loro utenti; eccone una lista qui sotto: