VPN WireGuard uključen u Linux kernel 5.6

Danas je Linus preselio net-next granu s VPN sučeljima k sebi WireGuard. O ovom događaju сообщили na mailing listi WireGuarda.

VPN WireGuard uključen u Linux kernel 5.6

Trenutno je u tijeku prikupljanje koda za novu jezgru Linuxa 5.6. WireGuard je brz VPN sljedeće generacije koji koristi najsuvremeniju kriptografiju. Izvorno je razvijen kao jednostavnija i praktičnija alternativa postojećim VPN-ovima. Autor je kanadski stručnjak za informacijsku sigurnost Jason A. Donenfeld. U kolovozu 2018. WireGuard dobio pohvale od strane Linusa Torvaldsa. Otprilike u to vrijeme počeo je rad na uključivanju VPN-a u Linux kernel. Proces se malo odužio.

"Vidim da je Jason podnio zahtjev za povlačenjem za uključivanje WireGuarda u kernel", napisao je Linus 2. kolovoza 2018. — Mogu li samo još jednom izjaviti svoju ljubav prema ovom VPN-u i nadati se skorom spajanju? Kod možda nije savršen, ali pogledao sam ga i u usporedbi s užasima OpenVPN-a i IPSeca, pravo je umjetničko djelo."

Unatoč Linusovim željama, spajanje se oteglo godinu i pol. Ispostavilo se da je glavni problem vezan uz vlasničke implementacije kriptografskih funkcija koje su korištene za poboljšanje performansi. Nakon dugotrajnih pregovora u rujnu 2019. i jest donesena je kompromisna odluka prevesti zakrpe na Crypto API funkcije dostupne u kernelu, na koje WireGuard programeri imaju pritužbi u području performansi i opće sigurnosti. Ali odlučili su odvojiti izvorne WireGuard kripto funkcije u zasebni Zinc API niske razine i na kraju ih prenijeti na kernel. U studenom su programeri kernela održali obećanje i dogovoren prenijeti dio koda iz Zinca u glavni kernel. Na primjer, u Crypto API-ju uključeno brze implementacije ChaCha20 i Poly1305 algoritama pripremljenih u WireGuardu.

Konačno, 9. prosinca 2019., David S. Miller, odgovoran za mrežni podsustav jezgre Linuxa, prihvatio na net-sljedeću granu zakrpe uz implementaciju VPN sučelja iz projekta WireGuard.

A danas, 29. siječnja 2020., promjene su otišle u Linus za uključivanje u kernel.

VPN WireGuard uključen u Linux kernel 5.6

Navedene prednosti WireGuarda u odnosu na druga VPN rješenja:

  • Jednostavan za korištenje.
  • Koristi modernu kriptografiju: Noise protokol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF itd.
  • Kompaktan, čitljiv kod, lakši za istraživanje ranjivosti.
  • Visoke performanse.
  • Jasno i razrađeno specifikacija.

Sva ključna logika WireGuarda zauzima manje od 4000 redaka koda, dok OpenVPN i IPSec zahtijevaju stotine tisuća redaka.

“WireGuard koristi koncept usmjeravanja enkripcijskih ključeva, što uključuje pripajanje privatnog ključa svakom mrežnom sučelju i korištenje javnih ključeva za njegovo povezivanje. Javni ključevi se razmjenjuju za uspostavljanje veze na sličan način kao SSH. Za dogovaranje ključeva i povezivanje bez pokretanja zasebnog demona u korisničkom prostoru, mehanizam Noise_IK iz Noise Protocol Frameworkslično održavanju authorized_keys u SSH. Prijenos podataka provodi se enkapsulacijom u UDP paketima. Podržava promjenu IP adrese VPN poslužitelja (roaming) bez prekida veze s automatskom rekonfiguracijom klijenta, - piše: Opennet.

Za šifriranje polovan potočna šifra ChaCha20 i algoritam provjere autentičnosti poruke (MAC) Poly1305, dizajnirao Daniel Bernstein (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ćuje postizanje fiksnog vremena izvršenja bez upotrebe posebne hardverske podrške. Za generiranje zajedničkog tajnog ključa u implementaciji se koristi Diffie-Hellmanov protokol eliptične krivulje Curve25519, također predložio Daniel Bernstein. Algoritam koji se koristi za raspršivanje je BLAKE2s (RFC7693)".

Nalazi testovi performansi sa službene stranice:

Propusnost (megabit/s)
VPN WireGuard uključen u Linux kernel 5.6

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

Konfiguracija testa:

  • Intel Core i7-3820QM i Intel Core i7-5200U
  • Gigabitne kartice Intel 82579LM i Intel I218LM
  • Linux 4.6.1
  • WireGuard konfiguracija: 256-bitni ChaCha20 s Poly1305 za MAC
  • Prva IPsec konfiguracija: 256-bitni ChaCha20 s Poly1305 za MAC
  • Druga IPsec konfiguracija: AES-256-GCM-128 (s AES-NI)
  • OpenVPN konfiguracija: AES 256-bitni ekvivalentni paket šifri s HMAC-SHA2-256, UDP način rada
  • Izvedba je mjerena pomoću iperf3, prikazuje prosječni rezultat tijekom 30 minuta.

U teoriji, nakon integracije u mrežni skup, WireGuard bi trebao raditi čak i brže. Ali u stvarnosti to neće nužno biti slučaj zbog prijelaza na Crypto API kriptografske funkcije ugrađene u kernel. Možda nisu svi još optimizirani za razinu performansi izvornog WireGuarda.

“S moje točke gledišta, WireGuard je općenito idealan za korisnika. Sve odluke niske razine donose se u specifikaciji, tako da proces pripreme tipične VPN infrastrukture traje samo nekoliko minuta. Gotovo je nemoguće pogriješiti u konfiguraciji - писали na Habréu 2018. — Postupak instalacije detaljno opisano na službenoj web stranici, želio bih posebno istaknuti izvrsno OpenWRT podrška. Ova jednostavnost korištenja i kompaktnost kodne baze postignuti su eliminacijom distribucije ključeva. Ne postoji složeni sustav certifikata i sav taj korporativni užas; kratki ključevi za šifriranje distribuiraju se poput SSH ključeva.”

Projekt WireGuard razvija se od 2015. godine, prošao je reviziju i formalna provjera. Podrška za WireGuard integrirana je u NetworkManager i systemd, a zakrpe kernela uključene su u osnovne distribucije Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph i ALT.

Izvor: www.habr.com

Dodajte komentar