VPN WireGuard incluso nel kernel Linux 5.6

Oggi Linus ha spostato presso di sé il ramo net-next con interfacce VPN Gabbia di protezione. A proposito di questo evento segnalati sulla mailing list WireGuard.

VPN WireGuard incluso nel kernel Linux 5.6

La raccolta del codice per il nuovo kernel Linux 5.6 è attualmente in corso. WireGuard è una VPN veloce di nuova generazione che utilizza la crittografia all'avanguardia. È stato originariamente sviluppato come alternativa più semplice e conveniente alle VPN esistenti. L'autore è lo specialista canadese in sicurezza informatica Jason A. Donenfeld. Nell'agosto 2018, WireGuard è stato lodato di Linus Torvalds. In quel periodo iniziarono i lavori per includere la VPN nel kernel Linux. Il processo durò un po' più a lungo.

"Vedo che Jason ha fatto una richiesta pull per includere WireGuard nel kernel", ha scritto Linus il 2 agosto 2018. — Posso dichiarare ancora una volta il mio amore per questa VPN e sperare in una fusione al più presto? Il codice potrebbe non essere perfetto, ma l’ho guardato e, rispetto agli orrori di OpenVPN e IPSec, è una vera opera d’arte.”

Nonostante i desideri di Linus, la fusione si trascinò per un anno e mezzo. Il problema principale si è rivelato legato alle implementazioni proprietarie delle funzioni crittografiche, utilizzate per migliorare le prestazioni. Dopo lunghe trattative nel settembre 2019 lo è stato è stata presa una decisione di compromesso tradurre le patch nelle funzioni Crypto API disponibili nel kernel, verso le quali gli sviluppatori WireGuard hanno lamentele nel campo delle prestazioni e della sicurezza generale. Ma hanno deciso di separare le funzioni crittografiche native di WireGuard in un'API Zinc separata di basso livello e infine di trasferirle nel kernel. A novembre gli sviluppatori del kernel hanno mantenuto la promessa e accettato di trasferire parte del codice da Zinc al kernel principale. Ad esempio, nell'API Crypto incluso implementazioni veloci degli algoritmi ChaCha20 e Poly1305 preparati in WireGuard.

Infine, il 9 dicembre 2019, David S. Miller, responsabile del sottosistema di rete del kernel Linux, accettato il al ramo net-next cerotti con l'implementazione di un'interfaccia VPN dal progetto WireGuard.

E oggi, 29 gennaio 2020, le modifiche sono arrivate a Linus per essere incluse nel kernel.

VPN WireGuard incluso nel kernel Linux 5.6

Vantaggi dichiarati di WireGuard rispetto ad altre soluzioni VPN:

  • Facile da usare.
  • Utilizza la crittografia moderna: framework del protocollo Noise, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, ecc.
  • Codice compatto e leggibile, più facile da indagare per le vulnerabilità.
  • Alte prestazioni.
  • Chiaro ed elaborato specificazione.

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

“WireGuard utilizza il concetto di instradamento della chiave di crittografia, che prevede il collegamento di una chiave privata a ciascuna interfaccia di rete e l'utilizzo di chiavi pubbliche per associarla. Le chiavi pubbliche vengono scambiate per stabilire una connessione in modo simile a SSH. Per negoziare le chiavi e connettersi senza eseguire un demone separato nello spazio utente, il meccanismo Noise_IK di Quadro del protocollo sul rumoresimile al mantenimento delle chiavi_autorizzate in SSH. La trasmissione dei dati avviene tramite incapsulamento in pacchetti UDP. Supporta la modifica dell'indirizzo IP del server VPN (roaming) senza interrompere la connessione con riconfigurazione automatica del client, - scrive Rete aperta.

Per la crittografia usato cifratura a flusso ChaCha20 e algoritmo di autenticazione dei messaggi (MAC) Poly1305, progettato da Daniel Bernstein (Daniel J. Bernstein), Tanja Lange e Peter Schwabe. ChaCha20 e Poly1305 sono posizionati come analoghi più veloci e sicuri di AES-256-CTR e HMAC, la cui implementazione software consente di ottenere un tempo di esecuzione fisso senza l'uso di un supporto hardware speciale. Per generare una chiave segreta condivisa, nell'implementazione viene utilizzato il protocollo Diffie-Hellman a curva ellittica Curve25519, proposto anche da Daniel Bernstein. Algoritmo utilizzato per l'hashing BLAKE2 (RFC7693)'.

Giudizio prove di prestazione dal sito ufficiale:

Larghezza di banda (megabit/s)
VPN WireGuard incluso nel kernel Linux 5.6

Ping (ms)
VPN WireGuard incluso nel kernel Linux 5.6

Configurazione di prova:

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

In teoria, una volta integrato nello stack di rete, WireGuard dovrebbe funzionare ancora più velocemente. Ma in realtà questo non sarà necessariamente il caso a causa del passaggio alle funzioni crittografiche Crypto API integrate nel kernel. Forse non tutti sono ancora ottimizzati per il livello di prestazioni di WireGuard nativo.

“Dal mio punto di vista, WireGuard è generalmente l’ideale per l’utente. Tutte le decisioni di basso livello vengono prese nelle specifiche, quindi il processo di preparazione di una tipica infrastruttura VPN richiede solo pochi minuti. È quasi impossibile commettere un errore nella configurazione - ha scritto su Habré nel 2018. — Processo di installazione descritto in dettaglio sul sito ufficiale, vorrei sottolineare separatamente l'eccellente Supporto OpenWRT. Questa facilità d'uso e compattezza della base di codice è stata ottenuta eliminando la distribuzione delle chiavi. Non esiste un sistema di certificazione complesso e tutto questo orrore aziendale; le chiavi di crittografia brevi sono distribuite in modo molto simile alle chiavi SSH.

Il progetto WireGuard è in sviluppo dal 2015, è stato verificato e verifica formale. Il supporto WireGuard è integrato in NetworkManager e systemd e le patch del kernel sono incluse nelle distribuzioni di base di Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph e ALT.

Fonte: habr.com

Aggiungi un commento