VPN WireGuard je prihvaćen u net-next granu i predviđen je za uključivanje u Linux 5.6 kernel

David Miller (David S. Miller), odgovoran za mrežni podsistem Linux kernela, prihvaćen na sljedeću granu mreže zakrpe uz implementaciju VPN sučelja iz projekta WireGuard. Početkom sljedeće godine, promjene akumulirane u grani net-next će činiti osnovu za izdavanje Linux kernela 5.6.

Pokušaji da se WireGuard kod ugura u glavni kernel napravljeni su u proteklih nekoliko godina, ali su ostali neuspješni zbog vezanosti za vlasničke implementacije kriptografskih funkcija koje su korištene za poboljšanje performansi. U početku su te funkcije bile predloženo za kernel kao dodatni Cink API niskog nivoa, koji bi eventualno mogao zamijeniti standardni Crypto API.

Nakon diskusija na konferenciji Kernel Recipes, kreatori WireGuarda u septembru doneo kompromisnu odluku prenesite svoje zakrpe kako biste koristili Crypto API dostupan u jezgri, na koji programeri WireGuarda imaju pritužbe u području performansi i opće sigurnosti. Odlučeno je da se nastavi razvoj Zinc API-ja, ali kao poseban projekat.

U novembru programeri kernela otišao kao odgovor na kompromis i pristao da prenese dio koda sa Zinc u glavno jezgro. U suštini, neke komponente cinka će biti premeštene u jezgro, ali ne kao poseban API, već kao deo Crypto API podsistema. Na primjer, Crypto API već uključeno brze implementacije ChaCha20 i Poly1305 algoritama pripremljenih u WireGuardu.

U vezi sa predstojećom isporukom WireGuarda u glavnom jezgru, osnivač projekta najavljeno o restrukturiranju spremišta. Da bi se pojednostavio razvoj, monolitno “WireGuard.git” spremište, koje je dizajnirano da postoji izolovano, bit će zamijenjeno sa tri odvojena spremišta, bolje prilagođena za organiziranje rada s kodom u glavnom kernelu:

  • wireguard-linux.git - kompletno stablo kernela sa izmenama iz projekta Wireguard, zakrpe iz kojih će biti pregledane radi uključivanja u kernel i redovno prenošene na net/net-next grane.
  • wireguard-tools.git - spremište za pomoćne programe i skripte koji se izvode u korisničkom prostoru, kao što su wg i wg-quick. Repozitorijum se može koristiti za kreiranje paketa za distribucije.
  • wireguard-linux-compat.git - spremište sa varijantom modula, koje se isporučuje odvojeno od kernela i uključuje sloj compat.h kako bi se osigurala kompatibilnost sa starijim kernelima. Glavni razvoj će se odvijati u repozitoriju wireguard-linux.git, ali sve dok postoji mogućnost i potreba među korisnicima, odvojena verzija zakrpa će također biti podržana u radnom obliku.

Podsjetimo, VPN WireGuard je implementiran na bazi modernih metoda enkripcije, pruža vrlo visoke performanse, jednostavan je za korištenje, bez komplikacija i dokazao se u nizu velikih implementacija koje obrađuju velike količine prometa. Projekat se razvija od 2015. godine, revidiran je i formalna verifikacija korištene metode šifriranja. WireGuard podrška je već integrirana u NetworkManager i systemd, a zakrpe kernela su uključene u osnovne distribucije Debian nestabilan, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Podgraf и ALT.

WireGuard koristi koncept rutiranja ključeva za šifriranje, koji uključuje priključivanje privatnog ključa na svaki mrežni interfejs i njegovo korištenje za povezivanje javnih ključeva. Javni ključevi se razmjenjuju kako bi se uspostavila veza na sličan način kao SSH. Za pregovaranje o ključevima i povezivanje bez pokretanja zasebnog demona u korisničkom prostoru, mehanizam Noise_IK iz Noise Protocol Frameworkslično održavanju authorized_keys u SSH. Prijenos podataka se vrši enkapsulacijom u UDP pakete. Podržava promjenu IP adrese VPN servera (roming) bez prekida veze i automatskog ponovnog konfigurisanja klijenta.

Za enkripciju polovan stream cipher ChaCha20 i algoritam za provjeru autentičnosti poruke (MAC) Poly1305, dizajnirao Daniel Bernstein (Daniel J. Bernstein), Tanya Lange
(Tanja Lange) i Peter Schwabe. ChaCha20 i Poly1305 su pozicionirani kao brži i sigurniji analozi AES-256-CTR i HMAC, čija softverska implementacija omogućava postizanje fiksnog vremena izvršenja bez upotrebe posebne hardverske podrške. Za generiranje zajedničkog tajnog ključa, u implementaciji se koristi Diffie-Hellman protokol eliptičke krivulje. Curve25519, koji je također predložio Daniel Bernstein. Algoritam koji se koristi za heširanje je BLAKE2s (RFC7693).

u testiranje Performanse WireGuard su pokazale 3.9 puta veću propusnost i 3.8 puta veći odziv u odnosu na OpenVPN (256-bitni AES sa HMAC-SHA2-256). U poređenju sa IPsec-om (256-bit ChaCha20+Poly1305 i AES-256-GCM-128), WireGuard pokazuje neznatno poboljšanje performansi (13-18%) i niže kašnjenje (21-23%). Testovi su obavljeni korišćenjem brzih implementacija algoritama za šifrovanje razvijenih od strane projekta - prenošenje na standardni Crypto API kernela može dovesti do lošijih performansi.

VPN WireGuard je prihvaćen u net-next granu i predviđen je za uključivanje u Linux 5.6 kernel

izvor: opennet.ru

Dodajte komentar