V jedro Linux 5.6 so vključili VPN WireGuard

Danes je Linus prenesel vejo net-next z VPN-vmesniki WireGuard. O tem dogodku su javili v poštni seznam WireGuard.

V jedro Linux 5.6 so vključili VPN WireGuard

Trenutno se nadaljuje zbiranje kode za novo jedro Linux 5.6. WireGuard je hitra VPN nove generacije, ki implementira sodobno kriptografijo. Sprva je bil zasnovan kot preprostejša in bolj uporabniku prijazna alternativa obstoječim VPN. Avtor je kanadski strokovnjak za informacijsko varnost Jason Donenfeld. Avgusta 2018 je WireGuard prejel priznanje od Linusa Torvaldsa. Približno v tem obdobju se je začelo delo na vključitvi VPN v jedro Linux. Postopek se je nekoliko zavlekel.

„Vidim, da je Jason pripravil povratni poziv za vključitev WireGuard v jedro, — je 2. avgusta 2018 pisal Linus. — Lahko samo še enkrat izrazim svojo ljubezen do te VPN in upam na hitro združitev? Morda koda ne bo idealna, a sem jo pregledal in v primerjavi s grozotami OpenVPN in IPSec je to pravo umetniško delo.”

Kljub Linusovim željam se je združitev zavlekla za eno in pol leta. Glavna težava je bila vezana na lastne implementacije kriptografskih funkcij, ki so se uporabljale za izboljšanje zmogljivosti. Po dolgem dogovarjanju so septembra 2019 sprejeli kompromisno rešitev za prenos popravkov na obstoječe v jedru funkcije Crypto API, do katerih imajo razvijalci WireGuard pomisleke glede zmogljivosti in splošne varnosti. Odločeno je bilo, da se naravne kriptofunkcije WireGuard izločijo v ločeno nizko ravninsko Zinc API in jih s časom prenesejo v jedro. Novembra so razvijalci jedra izpolnili obljubo in se strinjali da prenesejo v glavno jedro del kode iz Zinc. Na primer, v Crypto API vključeni so pripravili hitre izvedbe algoritmov ChaCha20 in Poly1305 v WireGuard.

Na koncu je 9. decembra 2019 David Miller, odgovoren za omrežno podnaročje jedra Linux, je sprejel v sestavku veje net-next popravki z implementacijo VPN-vmesnika projekta WireGuard.

In danes, 29. januarja 2020, so spremembe odšle k Linusu za vključitev v jedro.

V jedro Linux 5.6 so vključili VPN WireGuard

Izpostavljene prednosti WireGuard pred drugimi VPN rešitvami:

  • Enostaven za uporabo.
  • Uporablja sodobno kriptografijo: Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF itd.
  • Kompaktna in berljiva koda, lažje raziskovati na ranljivosti.
  • Visoke performanse.
  • Jasna in dobro premišljena спецификация.

Vsa glavna logika WireGuard vzame manj kot 4000 vrstic kode, medtem ko OpenVPN in IPSec štejeta na stotine tisoč vrstic.

V WireGuardu se uporablja koncept usmerjanja na podlagi šifrirnih ključev, ki predvideva vezavo zaprtega ključa na vsakomur omrežnem vmesniku in aplicira odprte ključe za povezovanje. Izmenjava odprtih ključev za vzpostavitev povezave poteka po analogiji s SSH. Za usklajevanje ključev in povezavo brez zagonjenja ločenega demona v prostoru uporabnika se uporablja mehanizem Noise_IK iz Noise Protocol Framework, podoben vzdrževanju authorized_keys v SSH. Prenos podatkov se izvaja preko inkapsulacije v UDP pakete. Podprta je sprememba IP-naslova VPN strežnika (roaming) brez prekinitev povezave z avtomatskim ponastavljanjem odjemalca, — , that multimodelity is a sine qua non condition primarily for Opennet.

Za šifriranje koristi se tokovni šifrirnik ChaCha20 in algoritem za avtorizacijo sporočil (MAC) Poly1305, razvit s strani Daniela Bernstein-a (Daniel J. Bernstein), Tanja Lange in Peter Schwabe. ChaCha20 in Poly1305 sta pozicionirana kot hitrejša in varnejša alternativa AES-256-CTR in HMAC, programska realizacija katerih omogoča dosego fiksnega časa izvajanja brez angažiranja posebne strojne podpore. Za generiranje skupnega tajnega ključa se uporablja Diffie-Hellmanov protokol na eliptičnih krivuljah v realizaciji Curve25519, kot ga je predlagal Daniel Bernstein. Za hashanje se uporablja algoritem BLAKE2s (RFC7693)».

Rezultati testov zmogljivosti s uradne spletne strani:

Prepustnost (megabit/s)
V jedro Linux 5.6 so vključili VPN WireGuard

Ping (ms)
V jedro Linux 5.6 so vključili VPN WireGuard

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 (s AES-NI)
  • Konfiguracija OpenVPN: ekvivalentni šifri komplet 256-bitnega AES s HMAC-SHA2-256, način UDP
  • Zmogljivost je bila merjena s iperf3, prikazuje povprečen rezultat v 30 minutah.

Teoretično, po integraciji v omrežni sklad bi moral WireGuard delovati še hitreje. Vendar to v praksi ne nujno bo, zaradi prehoda na v jedro vgrajene kriptografske funkcije Crypto API. Morda še niso vse optimizirane do ravni učinkovitosti nativnega WireGuarda.

"Z mojega stališča je WireGuard popoln za uporabnika. Vsa nizko nivojska odločitev je sprejeta v specifikaciji, zato priprava tipične VPN infrastrukture traja le nekaj minut. Zmeda v konfiguraciji je skoraj nemogoča, — pisali na Habrju leta 2018. — Postopek namestitve je podrobno opisan na uradni spletni strani, posebej želim poudariti odlično podporo OpenWRT. Takšne enostavnosti uporabe in kompaktne kode so dosežene z opustitvijo distribucije ključev. Tukaj ni zapletene certifikatne system in vse te korporativne grozote, kratki šifrirni ključi se širijo približno tako, kot SSH ključi.

Projekt WireGuard se razvija od leta 2015, opravil je revizijo in formalno verifikacijo. Podpora WireGuard je integrirana v NetworkManager in systemd, popravki za jedro pa so vključeni v osnovno sestavo distribucij Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph in ALT.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster