WireGuard - WireGuard

WireGuard
Logo WireGuard.svg
Pierwotny autor (autorzy) Jason A. Donenfeld
Deweloper(zy) Jason A. Donenfeld
Wersja stabilna
1.0.20210219 / 19 lutego 2021 ; 7 miesięcy temu ( 19 lutego 2021 )
Magazyn
Napisane w C ( Linux , moduły jądra FreeBSD , NetBSD , sterowniki jądra OpenBSD ), Go (implementacja w przestrzeni użytkownika)
System operacyjny
Rodzaj Wirtualnej sieci prywatnej
Licencja różne darmowe i open-source
Strona internetowa www .wireguard .com

WireGuard to protokół komunikacyjny i bezpłatne oprogramowanie typu open source , które implementuje szyfrowane wirtualne sieci prywatne (VPN) i zostało zaprojektowane z myślą o łatwości użytkowania, wysokiej wydajności i niskiej powierzchni ataku . Ma na celu lepszą wydajność i większą moc niż IPsec i OpenVPN , dwa popularne protokoły tunelowania . Protokół WireGuard przekazuje ruch przez UDP .

W marcu 2020 r. wersja oprogramowania dla Linuksa osiągnęła stabilną wersję produkcyjną i została włączona do jądra Linuksa 5.6 i przeniesiona do wcześniejszych jąder Linuksa w niektórych dystrybucjach Linuksa . Komponenty jądra Linux są objęte licencją GNU General Public License (GPL) w wersji 2; inne implementacje są objęte GPLv2 lub innymi wolnymi/open-source licencjami.

Protokół

WireGuard wykorzystuje następujące elementy:

W maju 2019 r. naukowcy z INRIA opublikowali sprawdzony maszynowo dowód WireGuard, wyprodukowany przy użyciu asystenta weryfikacji CryptoVerif .

Opcjonalny wstępnie współdzielony tryb klucza symetrycznego

WireGuard obsługuje tryb wstępnie współdzielonego klucza symetrycznego, który zapewnia dodatkową warstwę szyfrowania symetrycznego, aby złagodzić wszelkie przyszłe postępy w obliczeniach kwantowych. Ryzyko polega na tym, że ruch jest przechowywany, dopóki komputery kwantowe nie będą w stanie złamać Curve25519 ; w którym momencie ruch może zostać odszyfrowany. Wstępnie współdzielone klucze są „zazwyczaj kłopotliwe z punktu widzenia zarządzania kluczami i mogą być bardziej skradzione”, ale w krótszym okresie, jeśli klucz symetryczny zostanie naruszony, klucze Curve25519 nadal zapewniają więcej niż wystarczającą ochronę.

Sieć

WireGuard używa tylko UDP i dlatego nie działa w sieciach, które blokują ruch UDP. Różni się to od alternatyw, takich jak OpenVPN, ze względu na wiele wad routingu TCP-over-TCP.

WireGuard w pełni obsługuje IPv6, zarówno wewnątrz, jak i na zewnątrz tunelu. Obsługuje tylko warstwę 3 zarówno dla IPv4, jak i IPv6 i może enkapsulować v4 w v6 i odwrotnie.

WireGuard obsługuje wiele topologii :

  • Punkt-punkt
  • Gwiazdka (serwer/klient)
    • Punkt końcowy klienta nie musi być zdefiniowany przed rozpoczęciem wysyłania danych przez klienta.
    • Punkty końcowe klienta mogą być predefiniowane statycznie.
  • Siatka

Ponieważ obsługiwany jest punkt-punkt , można tworzyć inne topologie, ale nie w tym samym tunelu.

Rozciągliwość

WireGuard został zaprojektowany do rozszerzenia o programy i skrypty innych firm. Zostało to wykorzystane do rozszerzenia WireGuard o różne funkcje, w tym bardziej przyjazne dla użytkownika interfejsy zarządzania (w tym łatwiejszą konfigurację kluczy), rejestrowanie, dynamiczne aktualizacje zapory i integrację z LDAP .

Wykluczenie tak złożonych funkcji z minimalnej podstawowej bazy kodu poprawia jej stabilność i bezpieczeństwo. W celu zapewnienia bezpieczeństwa WireGuard ogranicza opcje implementacji kontroli kryptograficznych, ogranicza wybór procesów wymiany kluczy i mapuje algorytmy do małego podzbioru nowoczesnych prymitywów kryptograficznych . Jeśli w którymkolwiek z prymitywów zostanie znaleziona usterka, można wydać nową wersję, która rozwiąże problem. Ponadto ustawienia konfiguracyjne, które wpływają na bezpieczeństwo całej aplikacji, nie mogą być modyfikowane przez nieuprzywilejowanych użytkowników.

Przyjęcie

WireGuard ma na celu zapewnienie prostej i efektywnej implementacji wirtualnej sieci prywatnej. W przeglądzie Ars Technica z 2018 r. stwierdzono, że popularne technologie VPN, takie jak OpenVPN i IPsec, są często skomplikowane w konfiguracji, łatwo się rozłączają (w przypadku braku dalszej konfiguracji), wymagają dużo czasu na wynegocjowanie ponownego połączenia, mogą używać przestarzałych szyfrów i mają stosunkowo duże możliwości bazy kodu zawierające odpowiednio ponad 400 000 i 600 000 linii kodu, co utrudnia debugowanie.

Projekt WireGuard ma na celu zmniejszenie tych problemów, mając na celu domyślnie uczynić tunel bezpieczniejszym i łatwiejszym w zarządzaniu. Korzystając z wersjonowania pakietów kryptograficznych, koncentruje się na szyfrach uważanych za jedne z najbezpieczniejszych obecnych metod szyfrowania, a w czasie przeglądu Ars Technica miał bazę kodu obejmującą około 4000 wierszy kodu jądra, około 1% zarówno OpenVPN, jak i IPsec , co ułatwia przeprowadzanie audytów bezpieczeństwa . WireGuard został doceniony przez twórcę jądra Linuksa Linusa Torvaldsa, który nazwał go „dziełem sztuki” w przeciwieństwie do OpenVPN i IPsec. Ars Technica poinformował, że podczas testów stabilne tunele można było łatwo tworzyć za pomocą WireGuard, w porównaniu z alternatywami, i skomentował, że „trudno byłoby wrócić” do długich opóźnień ponownego połączenia, w porównaniu z natychmiastowymi ponownymi połączeniami WireGuard „bez bzdur”.

Senator z Oregonu Ron Wyden zalecił Narodowemu Instytutowi Standardów i Technologii (NIST) ocenę WireGuard jako zamiennika dla istniejących technologii, takich jak IPsec i OpenVPN .

Dostępność

Realizacje

Implementacje protokołu WireGuard obejmują:

  • Początkowa implementacja Donefelda, napisana w C and Go.
  • BoringTun firmy Cloudflare , implementacja przestrzeni użytkownika napisana w języku Rust .
  • Implementacja Matta Dunwoodiego dla OpenBSD, napisana w C.
  • Implementacja Ryoty Ozaki wg(4) dla NetBSD jest napisana w C.
  • Implementacja FreeBSD jest napisana w C i dzieli większość ścieżki danych z implementacją OpenBSD.
  • Projekt OpenWrt : WireGuard
  • Natywna implementacja jądra systemu Windows o nazwie „wireguard-nt”, od sierpnia 2021 r.
  • OPNsense za pośrednictwem standardowego pakietu os-WireGuard
  • pfSense za pośrednictwem standardowego pakietu (pfSense-pkg-WireGuard) (pakiet społecznościowy zatwierdzony przez Netgate)

Wsparcie dla Linuksa

Programy przestrzeni użytkownika obsługujące WireGuard obejmują:

Historia

Wczesne migawki bazy kodu istnieją od 30 czerwca 2016 r. Czterech wczesnych użytkowników WireGuard to dostawcy usług VPN Mullvad , AzireVPN, IVPN i cryptostorm. WireGuard otrzymał darowizny od Mullvad, Private Internet Access , IVPN , Fundacji NLnet, a teraz także od OVPN.

Od czerwca 2018 r. twórcy WireGuard zalecają traktowanie kodu i protokołu jako eksperymentalnych i ostrzegają, że nie osiągnęli jeszcze stabilnego wydania zgodnego ze śledzeniem CVE wszelkich wykrytych luk w zabezpieczeniach.

9 grudnia 2019 r. David Miller – główny opiekun stosu sieciowego Linuksa – zaakceptował łatki WireGuard do drzewa opiekunów „net-next”, aby włączyć je do nadchodzącego jądra.

28 stycznia 2020 r. Linus Torvalds połączył drzewo net-next Davida Millera, a WireGuard wszedł do głównego drzewa jądra Linuksa.

20 marca 2020 r. deweloperzy Debiana włączyli opcje budowania modułów dla WireGuard w konfiguracji jądra dla wersji Debiana 11 (testowanie).

29 marca 2020 WireGuard został włączony do drzewa wydania Linux 5.6. Wersja oprogramowania dla systemu Windows pozostaje w fazie beta.

30 marca 2020 r. programiści Androida dodali natywną obsługę jądra dla WireGuard w swoim ogólnym obrazie jądra.

22 kwietnia 2020 r. deweloper NetworkManager Beniamino Galvani połączył obsługę GUI dla WireGuard.

12 maja 2020 r. Matt Dunwoodie zaproponował poprawki do natywnej obsługi jądra WireGuard w OpenBSD .

22 czerwca 2020, po pracy Matta Dunwoodie i Jasona A. Donenfelda, wsparcie WireGuard zostało zaimportowane do OpenBSD.

23 listopada 2020 r. Jason A. Donenfeld wydał aktualizację pakietu Windows poprawiającą instalację, stabilność, obsługę ARM i funkcje korporacyjne .

29 listopada 2020 r. obsługa WireGuard została zaimportowana do jądra FreeBSD 13.

W dniu 19 stycznia 2021 roku, wsparcie WireGuard dodano do podglądu w pfSense Community Edition (CE) 2.5.0 migawek rozwojowych.

W marcu 2021 r. obsługa trybu jądra WireGuard została usunięta z FreeBSD 13.0, wciąż w fazie testów, po tym, jak pilne czyszczenie kodu we FreeBSD WireGuard nie mogło zostać szybko zakończone. Oparte na FreeBSD pfSense Community Edition (CE) 2.5.0 i pfSense Plus 21.02 usunęły również WireGuard oparty na jądrze.

W maju 2021 r. obsługa WireGuard została ponownie wprowadzona do migawek programistycznych pfSense CE i pfSense Plus jako pakiet eksperymentalny napisany przez członka społeczności pfSense, Christiana McDonald. Pakiet WireGuard dla pfSense zawiera trwające prace rozwojowe WireGuard w trybie jądra autorstwa Jasona A. Donenfelda, które pierwotnie były sponsorowane przez firmę Netgate

W czerwcu 2021 r. oficjalne repozytoria pakietów dla pfSense CE 2.5.2 i pfSense Plus 21.05 zawierały pakiet WireGuard

Zobacz też

Uwagi

Bibliografia

Zewnętrzne linki