WireGuard vs OpenVPN: protocolli a confronto
WireGuard e OpenVPN sono i due protocolli più comunemente offerti dai servizi VPN per il consumatore. Questo articolo li confronta su design crittografico, prestazioni, dimensione del codice, compatibilità delle piattaforme e caratteristiche operative — le dimensioni che determinano come un servizio si comporta davvero in produzione.
Contesto sui due protocolli
OpenVPN è stato rilasciato nel 2001 ed è diventato uno standard di fatto nelle implementazioni VPN commerciali. È un progetto open source scritto in C, gira nello spazio utente e usa le librerie OpenSSL o mbedTLS per le operazioni crittografiche. La sua longevità e flessibilità hanno prodotto un insieme di funzionalità ampio e una vasta gamma di configurazioni supportate.
WireGuard è notevolmente più recente. Il protocollo è stato pubblicato per la prima volta nel 2016 e integrato nel kernel Linux nel 2020. È stato progettato esplicitamente per essere più semplice dei suoi predecessori, con un ingombro di codice ridotto, un insieme limitato di primitive crittografiche moderne e un'implementazione residente nel kernel sulle piattaforme che la supportano. L'autore del protocollo, Jason A. Donenfeld, ha impostato gli obiettivi di progettazione sulla verificabilità e sulle prestazioni piuttosto che sulla configurabilità.
Design crittografico
I due protocolli differiscono sostanzialmente nel modo in cui affrontano la crittografia. WireGuard adotta un insieme fisso di algoritmi; OpenVPN consente all'operatore di scegliere tra molti.
La suite fissa di WireGuard
WireGuard usa un'unica cipher suite basata su primitive moderne. I componenti sono ChaCha20 per la crittografia, Poly1305 per l'autenticazione, Curve25519 per lo scambio di chiavi, BLAKE2s per l'hashing e SipHash24 per il bilanciamento del carico. Il Noise Protocol Framework fornisce l'handshake.
Fissare la suite ha due conseguenze. Primo, elimina la negoziazione del protocollo, che storicamente è stata una fonte di attacchi di downgrade nei protocolli basati su TLS. Secondo, significa che aggiornare la crittografia richiede un cambio di versione del protocollo anziché una modifica della configurazione.
La configurabilità di OpenVPN
OpenVPN supporta molte scelte di cifratura attraverso la libreria TLS sottostante. Le configurazioni comuni includono AES-256-GCM per la crittografia, SHA256 per l'autenticazione ed ECDH per lo scambio di chiavi. Le implementazioni OpenVPN più vecchie possono usare BF-CBC o AES-CBC con HMAC, che sono notevolmente più deboli secondo gli standard moderni.
La flessibilità consente a OpenVPN di supportare client legacy, ma significa anche che è necessario un audit della configurazione per confermare che una determinata implementazione stia usando impostazioni robuste.
Caratteristiche prestazionali
WireGuard generalmente supera OpenVPN sullo stesso hardware. Due fattori spiegano la maggior parte della differenza.
Primo, WireGuard gira nel kernel su Linux, macOS e Windows, il che evita il sovraccarico di spostare ogni pacchetto tra kernel e spazio utente. L'implementazione nello spazio utente di OpenVPN è portabile ma comporta un costo di context-switch per ogni pacchetto.
Secondo, ChaCha20-Poly1305 è ben adatto ai processori privi di istruzioni AES dedicate, comuni sui dispositivi mobili basati su ARM. OpenVPN usa tipicamente AES, che è più veloce sull'hardware con AES-NI ma più lento altrove.
In termini pratici, WireGuard ottiene spesso throughput più elevato, latenza più bassa e un minore utilizzo della CPU rispetto a OpenVPN sui dispositivi di fascia consumer. Anche l'impatto sulla batteria dei dispositivi mobili è tipicamente inferiore.
Dimensione del codice e superficie di audit
La dimensione di una base di codice è vagamente correlata allo sforzo necessario per sottoporla ad audit alla ricerca di vulnerabilità. L'implementazione di riferimento di WireGuard è composta da circa quattromila righe di codice. L'implementazione nel kernel Linux è comparabile.
OpenVPN, al contrario, comprende all'incirca settantamila righe e dipende da una libreria TLS — OpenSSL o mbedTLS — che aggiunge diverse centinaia di migliaia di righe di codice al confine di fiducia. La differenza di dimensione non indica di per sé che WireGuard sia più sicuro, ma influisce su quanto a fondo l'implementazione può essere esaminata.
Compatibilità delle piattaforme
Entrambi i protocolli sono ampiamente supportati. WireGuard dispone di implementazioni ufficiali per Linux (kernel e spazio utente), Windows, macOS, iOS, Android, FreeBSD e OpenBSD. Il supporto su iOS, in particolare, è ben integrato tramite il framework iOS Network Extension.
OpenVPN è disponibile praticamente su ogni piattaforma, compresi i sistemi più datati su cui WireGuard non è stato portato. Molte reti aziendali usano OpenVPN per compatibilità con infrastrutture legacy.
Per le nuove implementazioni su sistemi operativi moderni, WireGuard è la scelta più immediata. Per gli ambienti che richiedono un'ampia compatibilità — inclusi sistemi legacy, dispositivi embedded o determinati prodotti aziendali — OpenVPN resta rilevante.
Modello di configurazione
Il modello di configurazione di WireGuard è volutamente minimale. Ogni peer ha un'identità a chiave pubblica e un elenco di IP consentiti. Non c'è autenticazione a livello di utente, nessuno stato di sessione sul server e nessuna negoziazione di keepalive. Il protocollo si affida all'identità crittografica anziché a nomi utente e password.
OpenVPN supporta un modello di autenticazione più flessibile. Autenticazione basata su certificati, autenticazione con nome utente e password e autenticazione a due fattori sono tutte disponibili. Questa flessibilità è utile negli ambienti aziendali in cui l'autenticazione è integrata con i servizi di directory.
Per i servizi VPN per il consumatore, dove gli utenti non hanno bisogno di essere identificati l'uno con l'altro, il modello più semplice di WireGuard è generalmente sufficiente.
Quando usare ciascuno
La scelta tra i protocolli dipende dai vincoli dell'implementazione.
- WireGuard è preferibile quando prestazioni, semplicità del codice e crittografia moderna sono priorità; quando le piattaforme di destinazione hanno il supporto nativo; e quando l'implementazione può accettare una cipher suite fissa.
- OpenVPN è preferibile quando è richiesta la compatibilità con sistemi legacy; quando serve l'integrazione con l'autenticazione aziendale; oppure quando l'implementazione deve attraversare reti che limitano il traffico UDP (OpenVPN supporta il fallback su TCP; WireGuard no).
Molti servizi VPN moderni per il consumatore offrono entrambi i protocolli e lasciano scegliere all'utente. Snap VPN, al contrario, usa esclusivamente WireGuard, integrato tramite il framework iOS Network Extension. La decisione riflette il principio di progettazione di ridurre la superficie di implementazione a ciò che è necessario per la piattaforma di destinazione.
Per una panoramica generale sul funzionamento delle VPN, vedi la nostra introduzione alle VPN. Per la configurazione pratica su iPhone, vedi la guida alla configurazione su iOS.