Danes je Linus prenesel vejo net-next z VPN-vmesniki . O tem dogodku v poštni seznam 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 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 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 da prenesejo v glavno jedro del kode iz Zinc. Na primer, v Crypto API 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, v sestavku veje net-next z implementacijo VPN-vmesnika projekta WireGuard.
In danes, 29. januarja 2020, so spremembe odšle k Linusu za vključitev v jedro.

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 , 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, — Opennet.
Za šifriranje tokovni šifrirnik in algoritem za avtorizacijo sporočil (MAC) , razvit s strani Daniela Bernstein-a (), 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 , kot ga je predlagal Daniel Bernstein. Za hashanje se uporablja algoritem ».
Rezultati s uradne spletne strani:
Prepustnost (megabit/s)

Ping (ms)

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, — na Habrju leta 2018. — Postopek namestitve na uradni spletni strani, posebej želim poudariti odlično . 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 . 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
