VPN WireGuard è stata accettata nel ramo net-next e se ne prevede l'inclusione nel kernel Linux 5.6

David Miller (David S. Miller), responsabile del sottosistema di rete del kernel Linux, accettato il al ramo net-next cerotti con l'implementazione dell'interfaccia VPN dal progetto Gabbia di protezione. 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 fatti tentativi di inserire il codice WireGuard nel kernel principale, ma non hanno avuto successo perché erano legati a implementazioni proprietarie di funzioni crittografiche utilizzate per migliorare le prestazioni. Inizialmente, queste funzioni erano proposto per il kernel come API Zinc aggiuntiva di basso livello, che potrebbe eventualmente sostituire l'API Crypto standard.

In seguito alle discussioni alla conferenza Kernel Recipes, i creatori di WireGuard a settembre preso una decisione di compromesso trasferisci le tue patch per utilizzare la Crypto API disponibile nel core, alla quale gli sviluppatori WireGuard hanno lamentele nel campo delle prestazioni e della sicurezza generale. Si è deciso di continuare a sviluppare l'API Zinc, ma come progetto separato.

A novembre, gli sviluppatori del kernel andiamo in risposta ad un compromesso e ha accettato di trasferire parte del codice da Zinc al kernel principale. In sostanza, alcuni componenti Zinc verranno spostati nel core, ma non come API separata, bensì come parte del sottosistema API Crypto. Ad esempio, già l'API Crypto incluso implementazioni veloci degli algoritmi ChaCha20 e Poly1305 preparati in WireGuard.

In connessione con l'imminente consegna di WireGuard nel nucleo principale, il fondatore del progetto annunciato sulla ristrutturazione del repository. Per semplificare lo sviluppo, il repository monolitico “WireGuard.git”, progettato per esistere in modo isolato, sarà sostituito da tre repository separati, più adatti per organizzare il lavoro con il codice nel kernel principale:

  • wireguard-linux.git - un albero del kernel completo con le modifiche dal progetto Wireguard, le cui patch verranno revisionate per essere incluse nel kernel e regolarmente trasferite ai rami net/net-next.
  • wireguard-tools.git - un repository per utilità e script eseguiti nello spazio utente, come wg e wg-quick. Il repository può essere utilizzato per creare pacchetti per le distribuzioni.
  • wireguard-linux-compat.git - un repository con una variante del modulo, fornito separatamente dal kernel e comprendente il layer compat.h per garantire la compatibilità con i kernel più vecchi. Lo sviluppo principale verrà effettuato nel repository wireguard-linux.git, ma finché ci sarà l'opportunità e la necessità tra gli utenti, verrà supportata anche una versione separata delle patch in forma funzionante.

Ricordiamo che VPN WireGuard è implementato sulla base di moderni metodi di crittografia, offre prestazioni molto elevate, è facile da usare, privo di complicazioni e si è dimostrato valido in una serie di grandi implementazioni che elaborano grandi quantità di traffico. Il progetto è stato sviluppato dal 2015, ha superato l'audit e verifica formale i metodi di crittografia utilizzati. Il supporto WireGuard è già integrato in NetworkManager e systemd e le patch del kernel sono incluse nelle distribuzioni di base Debian instabile, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, sottografo и ALT.

WireGuard utilizza il concetto di instradamento della chiave di crittografia, che prevede l'associazione di una chiave privata a ciascuna interfaccia di rete e l'utilizzo di chiavi pubbliche per l'associazione. Lo scambio di chiavi pubbliche per stabilire una connessione è simile a SSH. Per negoziare le chiavi e connettersi senza eseguire un demone dello spazio utente separato, 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 e riconfigurare automaticamente il client.

Per la crittografia usato cifratura a flusso ChaCha20 e algoritmo di autenticazione dei messaggi (MAC) Poly1305, progettato da Daniel Bernstein (Daniel J. Bernstein), Tanya Lange
(Tanja Lange) e Peter Schwabe (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 coinvolgere un supporto hardware speciale. Per generare una chiave segreta condivisa, nell'implementazione viene utilizzato il protocollo Diffie-Hellman sulle curve ellittiche Curve25519, proposto anche da Daniel Bernstein. L'algoritmo utilizzato per l'hashing è BLAKE2 (RFC7693).

A analisi Prestazioni WireGuard ha dimostrato un throughput 3.9 volte superiore e una reattività 3.8 volte superiore rispetto a OpenVPN (AES a 256 bit con HMAC-SHA2-256). Rispetto a IPsec (ChaCha256+Poly20 a 1305 bit e AES-256-GCM-128), WireGuard mostra un leggero miglioramento delle prestazioni (13-18%) e una latenza inferiore (21-23%). I test sono stati eseguiti utilizzando implementazioni rapide degli algoritmi di crittografia sviluppati dal progetto: il trasferimento all'API Crypto standard del kernel potrebbe portare a prestazioni peggiori.

VPN WireGuard è stata accettata nel ramo net-next e se ne prevede l'inclusione nel kernel Linux 5.6

Fonte: opennet.ru

Aggiungi un commento