Opublikowano VPN WireGuard dla systemu Windows oraz WireGuardNT 1.0

Jason A. Donenfeld, autor VPN WireGuard, zaprezentował pierwsze znaczące wydanie oprogramowania klienckiego WireGuard dla systemu Windows 1.0 oraz sterowników WireGuardNT 1.0 z portem VPN WireGuard dla jądra Windows 10 i 11, wspierającego architektury AMD64, x86 oraz ARM64. Kod komponentów do jądra Windows rozprowadzany jest na licencji GPLv2, a oprogramowania klienckiego na licencji MIT.

Port oparty jest na bazie kodu głównej implementacji WireGuard dla jądra Linux, która została przetłumaczona na wykorzystanie bytów jądra Windows oraz stosu sieciowego NDIS. W porównaniu do implementacji wireguard-go, działającej w przestrzeni użytkownika i wykorzystującej interfejs sieciowy Wintun, WireGuardNT wyróżnia się znacznym wzrostem wydajności dzięki wykluczeniu operacji przełączania kontekstów oraz kopiowania zawartości pakietów z jądra do przestrzeni użytkownika. Podobnie jak w implementacjach dla Linuxa, OpenBSD i FreeBSD w WireGuardNT cała logika przetwarzania protokołów działa bezpośrednio na poziomie stosu sieciowego.

Wersja 1.0 jest uznawana za rodzaj kamienia milowego, który oznacza rozwiązanie szeregu problemów i realizację założonych celów, takich jak: zaangażowanie funkcji NdisWdfGetAdapterContextFromAdapterHandle() zamiast mniej bezpiecznego przechowywania stanu sterownika w polu Reserved oraz wykorzystania niedokumentowanych przesunięć; poprawne i szybkie śledzenie rozmiaru MTU (Maximum Transmission Unit) poprzez przechwytywanie wywołań systemowych; wykorzystanie w kodzie standardu C23.

Przypomnijmy, że VPN WireGuard oparty jest na nowoczesnych metodach szyfrowania, zapewnia bardzo wysoką wydajność, jest łatwy w użyciu, pozbawiony komplikacji oraz dobrze sprawdził się w kilku dużych wdrożeniach obsługujących znaczne ilości ruchu. Projekt rozwija się od 2015 roku, przeszedł audyt oraz formalną weryfikację stosowanych metod szyfrowania. W WireGuard zastosowano koncepcję routingu opartą na kluczach szyfrujących, co polega na przypisaniu do każdego interfejsu sieciowego klucza prywatnego oraz zastosowaniu go do powiązania kluczy publicznych.

Wymiana otwartych kluczy do nawiązywania połączenia odbywa się analogicznie jak w SSH. Do negocjacji kluczy i połączenia bez uruchamiania osobnego demona w przestrzeni użytkownika zastosowano mechanizm Noise_IK z Noise Protocol Framework, podobny do utrzymywania pliku authorized_keys w SSH. Przesył danych odbywa się poprzez enkapsulację w pakietach UDP. Obsługiwana jest zmiana adresy IP Serwery VPN (roaming) bez rozłączenia połączenia z automatycznym przestawieniem klienta.

Do szyfrowania wykorzystywany jest strumieniowy szyfr ChaCha20 oraz algorytm uwierzytelniania wiadomości (MAC) Poly1305, opracowane przez Däniela Bernsteina, Tanję Lange oraz Petera Schwabe. ChaCha20 i Poly1305 są reklamowane jako szybsze i bezpieczniejsze alternatywy dla AES-256-CTR i HMAC, przy czym ich programowa implementacja pozwala na osiągnięcie stałego czasu wykonania bez wsparcia sprzętowego. Do generowania wspólnego tajnego klucza stosowany jest protokół Diffiego-Hellmana na krzywych eliptycznych w implementacji Curve25519, również zaproponowanej przez Däniela Bernsteina. Do haszowania wykorzystuje się algorytm BLAKE2s (RFC7693).

Źródło: opennet.ru

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