Do jądra Linux 5.6 włączono VPN WireGuard

Dziś Linus przeniósł do siebie gałąź net-next z interfejsami VPN WireGuard. O tym wydarzeniu donieśli w liście mailingowym WireGuard.

Do jądra Linux 5.6 włączono VPN WireGuard

Obecnie trwa zbieranie kodu dla nowego jądra Linux 5.6. WireGuard to nowoczesny VPN nowej generacji, który wykorzystuje współczesną kryptografię. Został opracowany jako prostsza i bardziej przyjazna alternatywa dla istniejących VPN. Autor – kanadyjski specjalista ds. bezpieczeństwa informacji Jason Donenfeld. W sierpniu 2018 roku WireGuard otrzymał pochwałę od Linusa Torvaldsa. W tym czasie rozpoczęła się praca nad włączeniem VPN do jądra Linux. Proces nieco się wydłużył.

„Widzę, że Jason zrobił pull request w celu włączenia WireGuard do jądra – pisał Linus 2 sierpnia 2018 roku. – Mogę tylko jeszcze raz wyrazić moją miłość do tego VPN i mieć nadzieję na szybkie połączenie? Może kod nie jest idealny, ale przeglądałem go i w porównaniu z okropieństwami OpenVPN i IPSec, to prawdziwe dzieło sztuki”.

Niemniej jednak, wbrew życzeniu Linusa, połączenie zajęło półtora roku. Głównym problemem okazała się wiązanie z własnymi implementacjami funkcji kryptograficznych, które były stosowane w celu zwiększenia wydajności. Po długich negocjacjach we wrześniu 2019 roku podjęto kompromisową decyzję przenieść łatki na istniejące w jądrze funkcje Crypto API, do których deweloperzy WireGuard mieli zastrzeżenia w obszarze wydajności i ogólnego bezpieczeństwa. Postanowiono też wydzielić natywne funkcje kryptograficzne WireGuard do osobnego niskopoziomowego API Zinc i z czasem przenieść je do jądra. W listopadzie deweloperzy jądra dotrzymali obietnicy i zgodzili się przenieść do głównego jądra część kodu z Zinc. Na przykład w Crypto API włączone przygotowane w WireGuard szybkie implementacje algorytmów ChaCha20 i Poly1305.

Ostatecznie, 9 grudnia 2019 roku David Miller, odpowiedzialny za podsystem sieciowy jądra Linux, przyjął włączył do gałęzi net-next łatek implementację interfejsu VPN z projektu WireGuard.

A dziś, 29 stycznia 2020 roku, zmiany zostały przesłane do Linusa w celu włączenia do jądra.

Do jądra Linux 5.6 włączono VPN WireGuard

Ogłoszone zalety WireGuard w porównaniu do innych rozwiązań VPN:

  • Łatwy w użyciu.
  • Wykorzystuje nowoczesną kryptografię: Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF itd.
  • Kompaktowy, czytelny kod, łatwiejszy do badania pod kątem podatności.
  • Wysoka wydajność.
  • Jasne i przemyślane specyfikacja.

Cała główna logika WireGuard zajmuje mniej niż 4000 linijek kodu, podczas gdy OpenVPN i IPSec to setki tysięcy linijek.

„WireGuard stosuje koncepcję routingu na podstawie kluczy szyfrowania, która zakłada powiązanie z każdym interfejsem sieciowym klucza prywatnego i jego użycie do powiązania kluczy publicznych. Wymiana kluczy publicznych w celu ustanowienia połączenia odbywa się analogicznie do SSH. W celu uzgodnienia kluczy i połączenia bez uruchamiania osobnego demona w przestrzeni użytkownika stosuje się mechanizm Noise_IK z Noise Protocol Framework, podobny do utrzymania authorized_keys w SSH. Przesył danych odbywa się przez enkapsulację w pakiety UDP. Obsługiwane jest zmienianie adresu IP serwera VPN (roaming) bez przerywania połączenia z automatyczną rekonfiguracją klienta, — pisze Opennet.

Do szyfrowania jest używane strumieniowy szyfr ChaCha20 i algorytm autoryzacji wiadomości (MAC) Poly1305, opracowane przez Daniela Bernsteina (Daniel J. Bernstein), Tanja Lange i Peter Schwabe. ChaCha20 i Poly1305 są pozycjonowane jako szybsze i bezpieczniejsze odpowiedniki AES-256-CTR i HMAC, których implementacja programowa pozwala osiągnąć stały czas wykonania bez zaangażowania specjalnego wsparcia sprzętowego. Do generacji wspólnego klucza tajnego stosuje się protokół Diffiego-Hellmana na krzywych eliptycznych w implementacji Curve25519, także zaproponowanej przez Daniela Bernsteina. Do haszowania stosowany jest algorytm BLAKE2s (RFC7693)».

Wyniki testów wydajności z oficjalnej strony:

Przepustowość (megabit/s)
Do jądra Linux 5.6 włączono VPN WireGuard

Ping (ms)
Do jądra Linux 5.6 włączono VPN WireGuard

Konfiguracja testowa:

  • Intel Core i7-3820QM i Intel Core i7-5200U
  • Karty Gigabit Intel 82579LM i Intel I218LM
  • Linux 4.6.1
  • Konfiguracja WireGuard: 256-bitowy ChaCha20 z Poly1305 dla MAC
  • Pierwsza konfiguracja IPsec: 256-bitowy ChaCha20 z Poly1305 dla MAC
  • Druga konfiguracja IPsec: AES-256-GCM-128 (z AES-NI)
  • Konfiguracja OpenVPN: odpowiednik szyfru 256-bitowego AES z HMAC-SHA2-256, tryb UDP
  • Wydajność była mierzona za pomocą iperf3, pokazano średni wynik za 30 minut.

Teoretycznie, po integracji w stosie sieciowym WireGuard powinien działać jeszcze szybciej. Jednak w rzeczywistości niekoniecznie tak będzie z powodu przejścia na wbudowane w jądro funkcje kryptograficzne Crypto API. Możliwe, że nie wszystkie z nich są jeszcze zoptymalizowane do poziomu wydajności natywnego WireGuard.

„Moim zdaniem, WireGuard jest idealny dla użytkownika. Wszystkie low-level rozwiązania zostały uwzględnione w specyfikacji, dlatego proces przygotowania typowej infrastruktury VPN trwa zaledwie kilka minut. Pomylenie w konfiguracji jest praktycznie niemożliwe, — pisaliśmy na Habra w 2018 roku. — Proces instalacji jest szczegółowo opisany na oficjalnej stronie, warto szczególnie wyróżnić doskonałą obsługę OpenWRT. Taką prostotę użycia i kompaktowość kodu udało się osiągnąć dzięki zrezygnowaniu z dystrybucji kluczy. Nie ma tutaj skomplikowanego systemu certyfikatów i całego tego korporacyjnego koszmaru, krótkie klucze szyfrowania są rozpowszechniane mniej więcej jak klucze SSH.

Projekt WireGuard rozwija się od 2015 roku, przeszedł audyt i formalną weryfikację. Obsługa WireGuard jest zintegrowana z NetworkManager i systemd, a łatki do jądra są częścią podstawowej zawartości dystrybucji Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph i ALT.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster