VPN WireGuard je bil sprejet v podružnico net-next in je predviden za vključitev v jedro Linuxa 5.6

David Miller (David S. Miller), odgovoren za omrežni podsistem jedra Linuxa, sprejeto do net-naslednje podružnice obliži z implementacijo vmesnika VPN iz projekta WireGuard. V začetku naslednjega leta bodo spremembe, zbrane v veji net-next, tvorile osnovo za izdajo jedra Linux 5.6.

V zadnjih nekaj letih so bili poskusi potisniti kodo WireGuard v glavno jedro, vendar so ostali neuspešni, ker je bila vezana na lastniške izvedbe kriptografskih funkcij, ki so bile uporabljene za izboljšanje zmogljivosti. Sprva so bile te funkcije predlagano za jedro kot dodaten nizkonivojski Zinc API, ki bi lahko sčasoma nadomestil standardni Crypto API.

Po razpravah na konferenci Kernel Recipes so ustvarjalci WireGuard septembra sprejela kompromisno odločitev prenesite svoje popravke za uporabo Crypto API, ki je na voljo v jedru, do katerega imajo razvijalci WireGuarda pritožbe na področju zmogljivosti in splošne varnosti. Odločeno je bilo nadaljevati razvoj Zinc API-ja, vendar kot ločen projekt.

Novembra razvijalci jedra šel kot odgovor na kompromis in se strinjal s prenosom dela kode iz Zinca v glavno jedro. V bistvu bodo nekatere komponente Zinc premaknjene v jedro, vendar ne kot ločen API, temveč kot del podsistema Crypto API. Na primer že Crypto API vključeno hitre implementacije algoritmov ChaCha20 in Poly1305 pripravljene v WireGuardu.

V zvezi s prihajajočo dostavo WireGuard v glavnem jedru, ustanovitelj projekta napovedal o prestrukturiranju repozitorija. Za poenostavitev razvoja bo monolitno skladišče »WireGuard.git«, ki je bilo zasnovano tako, da obstaja ločeno, nadomeščeno s tremi ločenimi skladišči, bolj primernimi za organizacijo dela s kodo v glavnem jedru:

  • wireguard-linux.git - celotno drevo jedra s spremembami iz projekta Wireguard, popravki iz katerega bodo pregledani za vključitev v jedro in redno prenašani v veje net/net-next.
  • wireguard-tools.git - repozitorij za pripomočke in skripte, ki se izvajajo v uporabniškem prostoru, kot sta wg in wg-quick. Repozitorij se lahko uporablja za ustvarjanje paketov za distribucije.
  • wireguard-linux-compat.git - repozitorij z različico modula, ki je dobavljen ločeno od jedra in vključuje plast compat.h za zagotavljanje združljivosti s starejšimi jedri. Glavni razvoj bo potekal v repozitoriju wireguard-linux.git, a dokler bo med uporabniki možnost in potreba, bo ločena različica popravkov podprta tudi v delovni obliki.

Naj vas spomnimo, da je VPN WireGuard implementiran na podlagi sodobnih metod šifriranja, zagotavlja zelo visoko zmogljivost, je enostaven za uporabo, brez zapletov in se je izkazal v številnih velikih uvedbah, ki obdelujejo velike količine prometa. Projekt se razvija od leta 2015, je bil revidiran in formalno preverjanje uporabljene metode šifriranja. Podpora za WireGuard je že integrirana v NetworkManager in systemd, popravki jedra pa so vključeni v osnovne distribucije Debian nestabilen, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Podgraf и ALT.

WireGuard uporablja koncept usmerjanja šifrirnega ključa, ki vključuje pripenjanje zasebnega ključa vsakemu omrežnemu vmesniku in njegovo uporabo za vezavo javnih ključev. Javni ključi se izmenjujejo za vzpostavitev povezave na podoben način kot SSH. Za pogajanje o ključih in povezovanje brez izvajanja ločenega demona v uporabniškem prostoru je mehanizem Noise_IK iz Noise Protocol Frameworkpodobno vzdrževanju authorized_keys v SSH. Prenos podatkov poteka z enkapsulacijo v paketih UDP. Podpira spreminjanje naslova IP strežnika VPN (gostovanje) brez prekinitve povezave in samodejno ponovno konfiguracijo odjemalca.

Za šifriranje rabljeni tokovna šifra ChaCha20 in algoritem za preverjanje pristnosti sporočil (MAC) Poly1305, oblikoval Daniel Bernstein (Daniel J. Bernstein), Tanya Lange
(Tanja Lange) in Peter Schwabe. ChaCha20 in Poly1305 sta postavljena kot hitrejša in varnejša analoga AES-256-CTR in HMAC, katerih programska izvedba omogoča doseganje fiksnega časa izvajanja brez uporabe posebne strojne podpore. Za generiranje skupnega tajnega ključa se v implementaciji uporablja Diffie-Hellmanov protokol eliptične krivulje Curve25519, ki ga je prav tako predlagal Daniel Bernstein. Algoritem, uporabljen za zgoščevanje, je BLAKE2s (RFC7693).

Ob testiranje Zmogljivost WireGuard je pokazala 3.9-krat večjo prepustnost in 3.8-krat večjo odzivnost v primerjavi z OpenVPN (256-bitni AES s HMAC-SHA2-256). V primerjavi z IPsec (256-bitni ChaCha20+Poly1305 in AES-256-GCM-128) kaže WireGuard rahlo izboljšanje zmogljivosti (13–18 %) in nižjo zakasnitev (21–23 %). Preizkusi so bili izvedeni s hitrimi implementacijami šifrirnih algoritmov, razvitih v okviru projekta – prehod na standardni Crypto API jedra lahko povzroči slabšo zmogljivost.

VPN WireGuard je bil sprejet v podružnico net-next in je predviden za vključitev v jedro Linuxa 5.6

Vir: opennet.ru

Dodaj komentar