Nel kernel Linux 5.6 è stato incluso VPN WireGuard

Oggi Linus ha trasferito il ramo net-next con interfacce VPN WireGuard. Questo evento hanno comunicato è stato annunciato nella lista di distribuzione di WireGuard.

Nel kernel Linux 5.6 è stato incluso VPN WireGuard

Attualmente è in corso la raccolta del codice per il nuovo kernel Linux 5.6. WireGuard è una VPN di nuova generazione che utilizza la crittografia moderna. È stato progettato inizialmente come un'alternativa più semplice e conveniente alle VPN esistenti. L'autore è Jason A. Donenfeld, un esperto canadese di sicurezza informatica. Nel agosto 2018, WireGuard ha ricevuto elogi da Linus Torvalds. Circa in quel periodo è iniziato il lavoro per includere la VPN nel kernel di Linux. Il processo ha richiesto un po' di tempo.

«Vedo che Jason ha fatto una richiesta di pull per includere WireGuard nel kernel», scrisse Linus il 2 agosto 2018. «Posso solo ribadire il mio amore per questa VPN e sperare in una fusione imminente? Forse il codice non è perfetto, ma l'ho esaminato e, rispetto agli orrori di OpenVPN e IPSec, è davvero un capolavoro».

Nonostante il desiderio di Linus, la fusione si è protratta per un anno e mezzo. Il problema principale si è rivelato essere l'integrazione con le proprie implementazioni delle funzioni crittografiche, utilizzate per migliorare le prestazioni. Dopo lunghi colloqui, a settembre 2019 è stata presa una decisione di compromesso di tradurre le patch sulle funzioni Crypto API esistenti nel kernel, per le quali gli sviluppatori di WireGuard avevano sollevato preoccupazioni riguardo alle prestazioni e alla sicurezza generale. Tuttavia, si è deciso di separare le funzioni crittografiche native di WireGuard in un API a basso livello chiamato Zinc e di portarle nel kernel nel tempo. A novembre, gli sviluppatori del kernel hanno mantenuto la promessa e hanno concordato di trasferire nel kernel principale parte del codice da Zinc. Ad esempio, nel Crypto API sono inclusi sono state preparate in WireGuard implementazioni veloci degli algoritmi ChaCha20 e Poly1305.

Alla fine, il 9 dicembre 2019, David Miller, responsabile del sottosistema di rete del kernel Linux, ha accolto ha incluso nella branch net-next patch l'implementazione dell'interfaccia VPN del progetto WireGuard.

E oggi, 29 gennaio 2020, le modifiche sono state inviate a Linus per l'inclusione nel kernel.

Nel kernel Linux 5.6 è stato incluso VPN WireGuard

I vantaggi dichiarati di WireGuard rispetto ad altre soluzioni VPN:

  • Facile da usare.
  • Utilizza crittografia moderna: Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, ecc.
  • Codice compatto e leggibile, più facile da esaminare per vulnerabilità.
  • Alta prestazione.
  • Chiara e ben sviluppata specifica.

Tutta la logica principale di WireGuard occupa meno di 4000 righe di codice, mentre OpenVPN e IPSec contano centinaia di migliaia di righe.

WireGuard utilizza il concetto di instradamento tramite chiavi di crittografia, che implica l'associazione di una chiave privata a ciascuna interfaccia di rete e l'uso di chiavi pubbliche per stabilire una connessione. Lo scambio delle chiavi pubbliche per l'instaurazione della connessione avviene in modo simile a SSH. Per la sincronizzazione delle chiavi e la connessione senza l'avvio di un demone separato nello spazio utente viene impiegato il meccanismo Noise_IK del Noise Protocol Framework, simile alla gestione di authorized_keys in SSH. La trasmissione dei dati avviene tramite incapsulamento in pacchetti UDP. È supportato il cambio dell'indirizzo IP del server VPN (roaming) senza interruzione della connessione con ri-configurazione automatica del client, — scrive Opennet.

Per la crittografia viene utilizzato il cifrario a flusso ChaCha20 e l'algoritmo di autenticazione dei messaggi (MAC) Poly1305, sviluppati da Daniel Bernstein (Daniel J. Bernstein), Tanja Lange e Peter Schwabe. ChaCha20 e Poly1305 sono presentati come equivalenti più veloci e sicuri rispetto ad AES-256-CTR e HMAC, la cui implementazione software permette di raggiungere un tempo di esecuzione fisso senza l'uso di supporto hardware speciale. Per generare la chiave segreta condivisa viene utilizzato il protocollo Diffie-Hellman sulle curve ellittiche. Curve25519, proposta anche da Daniel Bernstein. Per l'hashing viene utilizzato l'algoritmo BLAKE2s (RFC7693)».

Risultati test delle prestazioni dal sito ufficiale:

Banda passante (megabit/s)
Nel kernel Linux 5.6 è stato incluso VPN WireGuard

Ping (ms)
Nel kernel Linux 5.6 è stato incluso VPN WireGuard

Configurazione del test:

  • Intel Core i7-3820QM e Intel Core i7-5200U
  • Schede Intel gigabit 82579LM e Intel I218LM
  • Linux 4.6.1
  • Configurazione di WireGuard: ChaCha20 a 256 bit con Poly1305 per MAC
  • Prima configurazione IPsec: ChaCha20 a 256 bit con Poly1305 per MAC
  • Seconda configurazione IPsec: AES-256-GCM-128 (con AES-NI)
  • Configurazione OpenVPN: set di cifratura equivalente a AES a 256 bit con HMAC-SHA2-256, modalità UDP
  • Le prestazioni sono state misurate con iperf3, mostrando il risultato medio su 30 minuti.

Teoricamente, dopo l'integrazione nel stack di rete, WireGuard dovrebbe funzionare ancora più velocemente. Ma nella realtà, potrebbe non essere così a causa del passaggio alle funzioni crittografiche integrate nel kernel del Crypto API. È possibile che non tutte siano ancora ottimizzate al livello di prestazioni di WireGuard nativo.

«Dal mio punto di vista, WireGuard è ideale per l'utente. Tutte le soluzioni a basso livello sono state adottate nella specifica, quindi il processo di preparazione di un'infrastruttura VPN tipica richiede solo pochi minuti. È praticamente impossibile commettere errori nella configurazione, — scritto su Habr nel 2018. — Il processo di installazione è descritto in dettaglio sul sito ufficiale; vorrei sottolineare l'ottima supporto per OpenWRT.. Questa semplicità d'uso e la compattezza del codice sono state ottenute rinunciando alla distribuzione delle chiavi. Non c'è un complesso sistema di certificati e tutte queste complicazioni aziendali, le chiavi di crittografia brevi vengono distribuite in modo simile alle chiavi SSH».

Il progetto WireGuard è in sviluppo dal 2015, ha superato un audit e la verifica formale. Il supporto per WireGuard è integrato in NetworkManager e systemd, e le patch per il kernel sono incluse nella distribuzione di base di Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph e ALT.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster