U Linux kernel 5.6 uključen je VPN WireGuard

Danas je Linus prebacio granu net-next sa VPN sučeljima na svoj repo. WireGuard. O ovom događaju javili su je objavljeno na mailing listi WireGuard.

U Linux kernel 5.6 uključen je VPN WireGuard

U ovom trenutku traje prikupljanje koda za novu verziju Linux kernela 5.6. WireGuard je brzi VPN nove generacije koji koristi modernu kriptografiju. Prvotno je razvijen kao jednostavnija i praktičnija alternativa postojećim VPN-ima. Autor je kanadski stručnjak za informatičku sigurnost Jason A. Donenfeld. U kolovozu 2018. WireGuard dobio je pohvale od Linusa Torvaldsa. Otprilike u to vrijeme započeo je rad na uključivanju VPN-a u Linux kernel. Proces je malo potrajao.

„Vidim da je Jason napravio pull request za uključivanje WireGuard-a u kernel“, pisao je Linus 2. kolovoza 2018. – „Mogu li još jednom izraziti svoju ljubav prema ovom VPN-u i nadati se brzom spajanju? Možda kod nije savršen, ali pregledao sam ga, i u usporedbi s užasima OpenVPN i IPSec, ovo je pravo remek-djelo.“

Unatoč Linusovoj želji, spajanje se prolongiralo na godinu i pol. Glavni problem bio je vezan uz vlastite realizacije kriptografskih funkcija koje su se koristile za poboljšanje performansi. Nakon dugih pregovora u rujnu 2019. donijeto je kompromisno rješenje da se zakrpe prevede na postojeće funkcije Crypto API u kernelu, koje su programeri WireGuard-a kritizirali po pitanju performansi i opće sigurnosti. No odlučeno je da se izvorne kripto funkcije WireGuard-a izdvoje u odvojeni niskonivozni Zinc API i s vremenom ih portirati u kernel. U studenom su programeri kernela ispunili obećanje i pristali premjestiti dio koda iz Zinc-a u glavni kernel. Na primjer, u Crypto API su uključene pripremljene u WireGuard brze realizacije algoritama ChaCha20 i Poly1305.

Na kraju, 9. prosinca 2019. David S. Miller, zadužen za mrežni podsustav Linux kernela, prihvatio u sklopu grane net-next zakrpe s realizacijom VPN sučelja iz projekta WireGuard.

A danas, 29. siječnja 2020. godine, promjene su poslane Linusu za uključivanje u kernel.

U Linux kernel 5.6 uključen je VPN WireGuard

Izjavene prednosti WireGuarda u odnosu na druga VPN rešenja:

  • Jednostavan za korišćenje.
  • Koristi modernu kriptografiju: Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF itd.
  • Kompaktan i čitljiv kod, lakše istražiti na ranjivosti.
  • Visoka performansa.
  • Jasno i razrađeno specifikacija.

Cjela osnovna logika WireGuard zauzima manje od 4000 redaka koda, dok OpenVPN i IPSec sadrže stotine tisuća redaka.

U WireGuard-u se primjenjuje koncept usmjeravanja prema šifrirnim ključevima, koji podrazumijeva vezivanje privatnog ključa za svaki mrežni sučelje i korištenje za povezivanje javnih ključeva. Razmjena javnih ključeva radi uspostavljanja veze vrši se analogno SSH-u. Kako bi se dogovorili ključevi i veza bez pokretanja posebnog demona u korisničkom prostoru, koristi se mehanizam Noise_IK iz Noise Protocol Framework, sličan održavanju authorized_keys u SSH-u. Prijenos podataka vrši se putem enkapsulacije u UDP paketima. Podržava se promjena IP adrese VPN poslužitelja (roaming) bez prekida veze, uz automatsku ponovu konfiguraciju klijenta, — piše Opennet.

Za šifriranje koristi se stream cipher ChaCha20 i algoritam za autentifikaciju poruka (MAC) Poly1305, razvijeni od strane Daniela Bernsteina (Daniel J. Bernstein), Tanja Lange i Peter Schwabe. ChaCha20 i Poly1305 pozicionirani su kao brži i sigurniji analozi AES-256-CTR i HMAC, čija softverska implementacija omogućava postizanje fiksnog vremena izvođenja bez korištenja posebne hardverske podrške. Za generiranje zajedničkog tajnog ključa koristi se Diffie-Hellman protokol na eliptičnim krivuljama u izvedbi Curve25519, također predložen od strane Daniela Bernstein-a. Za hashiranje se koriste algoritmi BLAKE2s (RFC7693)».

Rezultati testova performansi s službene stranice:

Propusnost (megabita/s)
U Linux kernel 5.6 uključen je VPN WireGuard

Ping (ms)
U Linux kernel 5.6 uključen je VPN WireGuard

Testna konfiguracija:

  • Intel Core i7-3820QM i Intel Core i7-5200U
  • Gigabitne kartice Intel 82579LM i 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 šifrovački skup 256-bitnog AES-a s HMAC-SHA2-256, UDP način
  • Performanse su mjereni pomoću iperf3, prikazan prosječan rezultat za 30 minuta.

Teoretski, nakon integracije u mrežni stog, WireGuard bi trebao raditi još brže. No, u stvarnosti to možda neće biti slučaj zbog prelaska na ugrađene kriptografske funkcije u Crypto API-ju. Moguće je da nisu sve od njih još optimizirane do razine performansi nativnog WireGuarda.

"S mog stajališta, WireGuard je u potpunosti idealan za korisnika. Sva niskorazinska rješenja utvrđena su u specifikaciji, pa priprema tipične VPN infrastrukture traje samo nekoliko minuta. Greška u konfiguraciji je gotovo nemoguća, — pisali na Habr-u 2018. godine. — Proces instalacije detaljno je opisan na službenoj stranici, posebno bih istaknuo izvrsnu podršku za OpenWRT. Ova jednostavnost korištenja i kompaktna baza koda postignuta je odbacivanjem distribucije ključeva. Nema složenog sustava certifikata i cijele te korporativne zbrke, kratki ključevi šifriranja distribuiraju se otprilike kao SSH ključevi.

Projekt WireGuard razvija se od 2015. godine, prošao je audite i formalnu verifikaciju. Podrška za WireGuard integrirana je u NetworkManager i systemd, a zakrpe za jezgru uključene su u osnovni sastav distribucija Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph i ALT.

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster