David Miller (), responsabil pentru subsistemul de rețea al nucleului Linux, a adăugat în ramura net-next cu implementarea interfeței VPN din proiectul . La începutul anului viitor, modificările acumulate în ramura net-next vor constitui baza pentru lansarea nucleului Linux 5.6.
Încercările de a avansa codul WireGuard în nucleul principal au fost realizate în ultimii ani, dar au rămas fără rezultat din cauza dependenței de implementările proprii ale funcțiilor criptografice, care au fost utilizate pentru a îmbunătăți performanța. La început, aceste funcții au fost pentru nucleu ca o API de nivel inferior suplimentar Zinc, care ar putea în timp să înlocuiască standardul Crypto API.
După negocierile de la conferința Kernel Recipes, creatorii WireGuard au acceptat în septembrie de a traduce patch-urile lor pentru a utiliza Crypto API existent în nucleu, la care dezvoltatorii WireGuard au cereri în ceea ce privește performanța și securitatea generală. API Zinc a fost decis să continue să fie dezvoltat, dar ca un proiect separat.
În noiembrie, dezvoltatorii nucleului un alt compromis și au acceptat să transfere în nucleul principal o parte din codul din Zinc. Practic, unele componente Zinc vor fi transferate în nucleu, dar nu ca o API separată, ci ca parte a subsistemului Crypto API. De exemplu, în Crypto API există deja implementări rapide ale algoritmilor ChaCha20 și Poly1305 pregătite în WireGuard.
Având în vedere livrarea viitoare a WireGuard în nucleul principal, fondatorul proiectului despre restructurarea repository-ului. Pentru a simplifica dezvoltarea, în locul repository-ului monolitic „WireGuard.git”, care a fost conceput pentru o existență separată, vor apărea trei repository-uri separate, mai bine adaptate pentru organizarea muncii cu codul din nucleu:
- — arborele complet al nucleului cu modificările din proiectul Wireguard, patch-urile din care vor fi revizuite pentru a fi incluse în nucleu și vor fi transferate regulat în ramurile net/net-next.
- — repository pentru utilitare și scripturi care rulează în spațiul utilizatorului, cum ar fi wg și wg-quick. Repository-ul poate fi folosit pentru a crea pachete pentru distribuții.
- — un depozit cu o variantă de modul livrată separat de nucleu și incluzând stratul compat.h pentru a asigura compatibilitatea cu nucleele vechi. Dezvoltarea principală va fi realizată în depozitul wireguard-linux.git, dar, deocamdată, există posibilitatea și necesitatea utilizatorilor pentru o variantă separată a patch-urilor care va fi de asemenea menținută în stare de funcționare.
Reamintim că VPN WireGuard este implementat pe baza unor metode de criptare moderne, oferă o performanță foarte ridicată, este simplu de utilizat, lipsit de complicații și a demonstrat un istoric de succes în mai multe implementări mari, care gestionează volume mari de trafic. Proiectul este în dezvoltare din 2015, a trecut prin audit și metodele de criptare utilizate. Suportul pentru WireGuard este deja integrat în NetworkManager și systemd, iar patch-urile pentru nucleu sunt incluse în pachetul de bază al distribuțiilor , Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, și .
WireGuard folosește conceptul de rutare pe baza cheilor de criptare, care implică asocierea unei chei private fiecărui interval de rețea și utilizarea acesteia pentru conectarea cheilor publice. Schimbul de chei publice pentru stabilirea conexiunii se realizează analogic cu SSH. Pentru negocierea cheilor și conexiunea fără a lansa un demon separat în spațiul utilizatorului se utilizează mecanismul Noise_IK din , similar cu menținerea authorized_keys în SSH. Transferul de date se efectuează prin încapsulare în pachete UDP. Este acceptată schimbarea adresei IP a serverului VPN (roaming) fără a întrerupe conexiunea și cu reconfigurarea automată a clientului.
Pentru criptare fluxul de criptare și algoritmul de autentificare a mesajelor (MAC) , dezvoltați de Daniel Bernstein (), Tanja Lange
(Tanja Lange) și Peter Schwabe (Peter Schwabe). ChaCha20 și Poly1305 sunt poziționate ca fiind alternative mai rapide și mai sigure la AES-256-CTR și HMAC, realizarea software-ului permite obținerea unui timp de execuție fix fără utilizarea unui suport hardware special. Pentru generarea cheii secrete comune, se utilizează protocolul Diffie-Hellman pe curbe eliptice în implementare. , de asemenea, propus de Daniel Bernstein. Pentru hashing se utilizează algoritmul .
Upon performanței WireGuard a demonstrat o lățime de bandă cu 3.9 ori mai mare și o reacție cu 3.8 ori mai rapidă, comparativ cu OpenVPN (AES pe 256 biti cu HMAC-SHA2-256). Comparativ cu IPsec (ChaCha20+Poly1305 pe 256 biti și AES-256-GCM-128), WireGuard arată un ușor avans în performanță (13-18%) și o reducere a întârzierilor (21-23%). Testele au fost efectuate folosind implementări rapide ale algoritmilor criptografici dezvoltate de proiect — trecerea la API-ul Crypto standard al nucleului ar putea duce la o degradare a indicatorilor.
Sursa: opennet.ro
