VPN WireGuard vključen v jedro Linuxa 5.6

Danes je Linus preselil podružnico net-next z vmesniki VPN k sebi WireGuard. O tem dogodku сообщили na poštnem seznamu WireGuard.

VPN WireGuard vključen v jedro Linuxa 5.6

Trenutno poteka zbiranje kode za novo jedro Linuxa 5.6. WireGuard je hiter VPN naslednje generacije, ki izvaja sodobno kriptografijo. Prvotno je bil razvit kot enostavnejša in priročnejša alternativa obstoječim VPN-jem. Avtor je kanadski strokovnjak za informacijsko varnost Jason A. Donenfeld. Avgusta 2018 je WireGuard prejel pohvalo avtor Linus Torvalds. Približno takrat se je začelo delo za vključitev VPN v jedro Linuxa. Postopek je trajal malo dlje.

»Vidim, da je Jason vložil zahtevo za vključitev WireGuarda v jedro,« je 2. avgusta 2018 zapisal Linus. — Ali lahko samo še enkrat izrazim svojo ljubezen do tega VPN-ja in upam na kmalu združitev? Koda morda ni popolna, vendar sem jo pogledal in v primerjavi z grozotami OpenVPN in IPSec je prava umetnina.«

Kljub Linusovi želji se je združitev vlekla leto in pol. Izkazalo se je, da je glavna težava povezana z lastniškimi implementacijami kriptografskih funkcij, ki so bile uporabljene za izboljšanje zmogljivosti. Po dolgotrajnih pogajanjih septembra 2019 je bilo sprejeta je bila kompromisna odločitev prevesti popravke v funkcije Crypto API, ki so na voljo v jedru, do katerega imajo razvijalci WireGuarda pritožbe na področju zmogljivosti in splošne varnosti. Vendar so se odločili ločiti izvorne kripto funkcije WireGuard v ločen nizkonivojski Zinc API in jih sčasoma prenesti v jedro. Novembra so razvijalci jedra držali obljubo in dogovorjeno prenesite del kode iz Zinca v glavno jedro. Na primer v Crypto API vključeno hitre implementacije algoritmov ChaCha20 in Poly1305 pripravljene v WireGuardu.

Končno je 9. decembra 2019 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.

In danes, 29. januarja 2020, je Linus poslal spremembe za vključitev v jedro.

VPN WireGuard vključen v jedro Linuxa 5.6

Zatrjevane prednosti WireGuard pred drugimi rešitvami VPN:

  • Enostaven za uporabo.
  • Uporablja sodobno kriptografijo: Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF itd.
  • Kompaktna, berljiva koda, lažja za raziskovanje ranljivosti.
  • Visoka zmogljivost.
  • Jasno in dodelano specifikacijo.

Vsa osnovna logika WireGuarda zavzame manj kot 4000 vrstic kode, medtem ko OpenVPN in IPSec zahtevata na stotine tisoč vrstic.

»WireGuard uporablja koncept usmerjanja šifrirnega ključa, ki vključuje pripenjanje zasebnega ključa vsakemu omrežnemu vmesniku in uporabo javnih ključev za njegovo vezavo. Javni ključi se izmenjujejo za vzpostavitev povezave na podoben način kot SSH. Za pogajanja 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 s samodejno rekonfiguracijo odjemalca, - piše Opennet.

Za šifriranje rabljeni tokovna šifra ChaCha20 in algoritem za preverjanje pristnosti sporočil (MAC) Poly1305, oblikoval Daniel Bernstein (Daniel J. Bernstein), 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)".

Ugotovitve testi delovanja z uradne spletne strani:

Pasovna širina (megabit/s)
VPN WireGuard vključen v jedro Linuxa 5.6

Ping (ms)
VPN WireGuard vključen v jedro Linuxa 5.6

Testna konfiguracija:

  • Intel Core i7-3820QM in Intel Core i7-5200U
  • Gigabitne kartice Intel 82579LM in Intel I218LM
  • Linux 4.6.1
  • Konfiguracija WireGuard: 256-bitni ChaCha20 s Poly1305 za MAC
  • Prva konfiguracija IPsec: 256-bitni ChaCha20 s Poly1305 za MAC
  • Druga konfiguracija IPsec: AES-256-GCM-128 (z AES-NI)
  • Konfiguracija OpenVPN: AES 256-bitni enakovredni šifrirni paket s HMAC-SHA2-256, način UDP
  • Učinkovitost je bila izmerjena z iperf3, prikazuje povprečni rezultat v 30 minutah.

Teoretično bi moral WireGuard, ko je integriran v omrežni sklad, delovati še hitreje. Toda v resnici to ne bo nujno tako zaradi prehoda na kriptografske funkcije Crypto API, vgrajene v jedro. Morda vsi še niso optimizirani za raven zmogljivosti domačega WireGuarda.

»Z mojega vidika je WireGuard na splošno idealen za uporabnika. Vse nizkonivojske odločitve so sprejete v specifikaciji, zato postopek priprave tipične VPN infrastrukture traja le nekaj minut. Skoraj nemogoče je pokvariti konfiguracijo - писали na Habréju leta 2018. — Postopek namestitve podrobno opisano na uradni spletni strani bi rad posebej opozoril na odlično Podpora za OpenWRT. Ta enostavnost uporabe in kompaktnost kodne baze je bila dosežena z odpravo porazdelitve ključev. Ni zapletenega sistema potrdil in vse te korporativne groze; kratki šifrirni ključi se distribuirajo podobno kot ključi SSH.«

Projekt WireGuard se razvija od leta 2015, revidiran je in formalno preverjanje. Podpora za WireGuard je integrirana v NetworkManager in systemd, popravki jedra pa so vključeni v osnovne distribucije Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph in ALT.

Vir: www.habr.com

Dodaj komentar