VPN WireGuard accettata nel ramo net-next e prevista per l'inclusione nel kernel Linux 5.6

David Miller (David S. Miller), responsabile del sottosistema di rete del kernel Linux, ha accettato ha incluso nel ramo net-next i patch con l'implementazione dell'interfaccia VPN del progetto WireGuard. All'inizio del prossimo anno, le modifiche accumulate nel ramo net-next costituiranno la base per il rilascio del kernel Linux 5.6.

Negli ultimi anni sono stati effettuati tentativi di promuovere il codice WireGuard nel kernel principale, ma sono rimasti senza risultato a causa del legame con le implementazioni proprietarie delle funzioni crittografiche, utilizzate per migliorare le prestazioni. Inizialmente, queste funzioni erano proposti per il kernel come API a basso livello aggiuntiva chiamata Zinc, che nel tempo potrebbe sostituire l'attuale Crypto API.

Dopo i colloqui alla conferenza Kernel Recipes, i creatori di WireGuard a settembre hanno adottato una decisione di compromesso per tradurre le proprie patch in modo da utilizzare l'Crypto API esistente nel kernel, al quale gli sviluppatori di WireGuard hanno sollevato questioni riguardanti le prestazioni e la sicurezza generale. L'API Zinc è stato deciso di continuare a svilupparlo, ma come progetto separato.

A novembre, gli sviluppatori del kernel hanno seguito hanno risposto con un compromesso e hanno accettato di trasferire nel kernel principale parte del codice da Zinc. Fondamentalmente, alcuni componenti di Zinc saranno trasferiti nel kernel, ma non come API separata, bensì come parte del sottosistema Crypto API. Ad esempio, nel Crypto API sono già sono inclusi pronte le implementazioni veloci degli algoritmi ChaCha20 e Poly1305 sviluppate in WireGuard.

In vista della prossima inclusione di WireGuard nel kernel principale, il fondatore del progetto ha annunciato ha annunciato una ristrutturazione del repository. Per semplificare lo sviluppo, il monolitico repository "WireGuard.git", concepito per un'esistenza separata, sarà sostituito da tre repository distinti, più adatti all'organizzazione del lavoro con il codice nel kernel principale:

  • wireguard-linux.git — un albero completo del kernel con le modifiche del progetto Wireguard, le patch delle quali saranno riviste per l'inclusione nel kernel e regolarmente trasferite nei rami net/net-next.
  • wireguard-tools.git — un repository per le utility e gli script eseguibili nello spazio utente, come wg e wg-quick. Il repository può essere utilizzato per la creazione di pacchetti per le distribuzioni.
  • wireguard-linux-compat.git — un repository con una variante del modulo, fornito separatamente dal kernel e includente il layer compat.h per garantire la compatibilità con i kernel più vecchi. Lo sviluppo principale avverrà nel repository wireguard-linux.git, ma finché c'è possibilità e necessità da parte degli utenti, una variante separata delle patch sarà mantenuta in uno stato funzionante.

Ricordiamo che la VPN WireGuard è implementata sulla base di moderni metodi di crittografia, garantisce prestazioni molto elevate, è semplice da usare, priva di complicazioni ed ha dimostrato la sua efficacia in diverse importanti implementazioni che gestiscono grandi volumi di traffico. Il progetto è in sviluppo dal 2015, ha subito un audit e una verifica formale dei metodi di crittografia applicati. Il supporto per WireGuard è già integrato in NetworkManager e systemd, e le patch per il kernel sono incluse nella base delle distribuzioni Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph e ALT.

In WireGuard viene applicato il concetto di instradamento basato su chiavi di crittografia, che implica l'associazione di una chiave privata a ogni interfaccia di rete e l'uso di chiavi pubbliche per stabilire legami. Lo scambio delle chiavi pubbliche per stabilire una connessione avviene analogamente a SSH. Per la negoziazione delle chiavi e la connessione senza avviare un demone separato nello spazio utente, viene utilizzato il meccanismo Noise_IK di Noise Protocol Framework, simile al mantenimento di authorized_keys in SSH. Il trasferimento dei dati avviene attraverso l'incapsulamento in pacchetti UDP. È supportato il cambio dell'indirizzo IP del server VPN (roaming) senza interruzione della connessione e la riconfigurazione automatica del client.

Per la crittografia viene utilizzato un cifrario a flusso ChaCha20 e un algoritmo di autenticazione dei messaggi (MAC) Poly1305, sviluppati da Daniel Bernstein (Daniel J. Bernstein), Tanja Lange
(Tanja Lange) e Peter Schwabe (Peter Schwabe). ChaCha20 e Poly1305 sono presentati come alternative più veloci e sicure rispetto ad AES-256-CTR e HMAC, la cui implementazione software consente di ottenere un tempo di esecuzione costante senza utilizzare supporto hardware specifico. Per la generazione della chiave segreta condivisa viene utilizzato il protocollo di Diffie-Hellman su curve ellittiche nella sua implementazione Curve25519, anch'esso proposto da Daniel Bernstein. Per l'hashing sono utilizzati algoritmi BLAKE2s (RFC7693).

Durante i test le prestazioni di WireGuard hanno dimostrato una capacità di throughput superiore di 3,9 volte e una reattività superiore di 3,8 volte rispetto a OpenVPN (AES a 256 bit con HMAC-SHA2-256). Rispetto a IPsec (ChaCha20+Poly1305 a 256 bit e AES-256-GCM-128), WireGuard mostra un leggero vantaggio prestazionale (13-18%) e una riduzione della latenza (21-23%). I test sono stati eseguiti utilizzando implementazioni veloci degli algoritmi di crittografia sviluppate dal progetto — il passaggio all'API Crypto standard del kernel potrebbe portare a un degrado delle prestazioni.

VPN WireGuard accettata nel ramo net-next e prevista per l'inclusione nel kernel Linux 5.6

Fonte: opennet.ru

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