0Pricing
Cryptology Academy · Lekcja

WireGuard: VPN z ChaCha20 i Curve25519

Proszę poznać minimalistyczny projekt kryptograficzny WireGuard wykorzystujący ChaCha20-Poly1305, Curve25519 i BLAKE2.

WireGuard: VPN z ChaCha20 i Curve25519 to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cryptology Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Filozofia projektowa WireGuard

WireGuard zaprojektowano z radykalną prostotą jako jednym z głównych celów. Jego baza kodu liczy około 4000 wierszy, w porównaniu z 70 000 w OpenVPN i ponad 400 000 w strongSwan IPsec. Mniejsza liczba wierszy oznacza mniej potencjalnych luk oraz na tyle mały zakres do audytu, że pojedynczy inżynier może go dokładnie przeanalizować. Ta prostota jest świadomym wyborem dotyczącym bezpieczeństwa, a nie ograniczeniem funkcjonalności.

Stałe prymitywy kryptograficzne

W przeciwieństwie do OpenVPN i IPsec WireGuard nie negocjuje algorytmów kryptograficznych. Każde połączenie WireGuard korzysta z tego samego, stałego zestawu prymitywów: Curve25519 do ECDH, ChaCha20-Poly1305 do uwierzytelnionego szyfrowania, BLAKE2s do haszowania oraz SipHash-2-4 do zabezpieczania tablic mieszających. Eliminuje to negocjację szyfru, a tym samym usuwa całą klasę ataków downgrade.

Uzgadnianie w ramach Noise Protocol Framework

WireGuard implementuje wzorzec uzgadniania Noise_IKpsk2 z Noise Protocol Framework. Framework ten zapewnia metodyczne podejście do tworzenia protokołów wymiany kluczy o możliwych do udowodnienia właściwościach bezpieczeństwa. Wzorzec IKpsk2 korzysta ze statycznych i efemerycznych par kluczy oraz opcjonalnego klucza wstępnie współdzielonego, który zapewnia dodatkową odporność na ataki kwantowe, a uzgadnianie kończy się w ramach jednej rundy komunikacji.

Curve25519 do wymiany kluczy

Curve25519 to krzywa eliptyczna zaprojektowana przez Daniela Bernsteina z myślą o wysokiej wydajności i bezpieczeństwie. WireGuard wykorzystuje ją do uzgadniania kluczy metodą Elliptic Curve Diffie-Hellman (ECDH). Każdy peer ma statyczną parę kluczy Curve25519 służącą do długoterminowej identyfikacji, a podczas uzgadniania używane są również efemeryczne pary kluczy, które zapewniają forward secrecy. Operacje Curve25519 mają stały czas wykonania, dzięki czemu są odporne na ataki czasowe.

Szyfrowanie danych ChaCha20-Poly1305

WireGuard szyfruje wszystkie pakiety danych za pomocą ChaCha20-Poly1305 — algorytmu uwierzytelnionego szyfrowania. ChaCha20 to szyfr strumieniowy, który działa niezwykle szybko na urządzeniach bez sprzętowej akceleracji AES, takich jak smartfony i urządzenia wbudowane. Poly1305 zapewnia znacznik uwierzytelniający. Połączona konstrukcja AEAD gwarantuje wykrycie każdej modyfikacji szyfrogramu przed jego odszyfrowaniem.

BLAKE2s do haszowania

BLAKE2s to kryptograficzna funkcja skrótu zoptymalizowana pod kątem platform 32-bitowych i krótkich komunikatów. WireGuard wykorzystuje ją podczas wyprowadzania kluczy w procesie uzgadniania oraz do obliczania identyfikatora sesji. BLAKE2s jest na większości platform szybsza niż SHA-256, zapewniając równoważny poziom bezpieczeństwa. Zaprojektowano ją jako następczynię BLAKE, finalisty konkursu SHA-3.

Statyczne i efemeryczne pary kluczy

Peery WireGuard mają statyczną parę kluczy, która służy jako ich długoterminowa tożsamość. Klucze publiczne są wymieniane poza pasmem podczas konfiguracji i służą do identyfikowania peerów. Podczas każdego uzgadniania oba peery generują również efemeryczne pary kluczy. Operacja ECDH między kluczami statycznymi i efemerycznymi, połączona z operacją ECDH na parach efemerycznych, zapewnia zarówno uwierzytelnianie, jak i forward secrecy.

Routing kryptokluczowy

WireGuard implementuje routing kryptokluczowy: każdy peer w konfiguracji określa adresy IP (allowed IPs), które można osiągnąć za jego pośrednictwem. Gdy pakiet wychodzący pasuje do allowed IPs peera, jest szyfrowany dla tego peera. Pakiety przychodzące są odszyfrowywane, a ich źródłowy adres IP musi pasować do allowed IPs klucza użytego do ich odszyfrowania; w przeciwnym razie pakiety są odrzucane. Klucze definiują tablicę routingu.

Zarządzanie połączeniem oparte na timerach

WireGuard nie ma pojęcia trwałego połączenia. Jeśli nie ma przesyłanego ruchu, nie są wysyłane żadne pakiety i VPN praktycznie znika z sieci. Uzgadnianie jest uruchamiane na żądanie, gdy istnieje ruch do wysłania. Konfigurowalne ustawienie PersistentKeepalive wysyła okresowo puste pakiety, aby utrzymywać mapowania NAT dla urządzeń znajdujących się za routerami NAT.

WireGuard w jądrze Linuksa

WireGuard został włączony do głównego drzewa jądra Linuksa w wersji 5.6, wydanej w marcu 2020 roku. Działanie w przestrzeni jądra zapewnia WireGuard bezpośredni dostęp do stosu sieciowego jądra i sprzętu kryptograficznego, co daje większą przepustowość niż implementacje VPN działające w przestrzeni użytkownika. Na innych platformach — Windows, macOS, iOS i Android — WireGuard działa w przestrzeni użytkownika za pośrednictwem implementacji wieloplatformowej.

Porównanie wydajności WireGuard

Testy porównawcze konsekwentnie pokazują, że przepustowość WireGuard jest 3–4 razy większa niż OpenVPN. IPsec ze sprzętową akceleracją AES-NI konkuruje z WireGuard na systemach wyposażonych w sprzętowe wsparcie AES. Na urządzeniach ARM bez AES-NI ChaCha20 używany przez WireGuard osiąga znacznie większą wydajność niż alternatywy oparte na AES. Mniejsze zużycie procesora oznacza również dłuższy czas pracy baterii na urządzeniach mobilnych.

Prymitywy kryptograficzne WireGuard

Jakiego algorytmu WireGuard używa do szyfrowania pakietów danych?

Podsumowanie WireGuard

Podsumowanie WireGuard: około 4000 wierszy kodu zapewnia minimalną powierzchnię ataku, stałe prymitywy eliminują negocjację, uzgadnianie Noise IKpsk2 wykorzystuje Curve25519, ChaCha20-Poly1305 służy do szyfrowania danych, BLAKE2s do haszowania, routing kryptokluczowy wiąże zakresy adresów IP z kluczami publicznymi, efemeryczne klucze zapewniają forward secrecy, integracja z jądrem maksymalizuje wydajność, a bezstanowy model połączenia umożliwia uzgadnianie na żądanie.

Często zadawane pytania

Czy lekcja „WireGuard: VPN z ChaCha20 i Curve25519” jest bezpłatna?

Tak — pełny tekst „WireGuard: VPN z ChaCha20 i Curve25519” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cryptology Academy, przejdź na CoddyKit PRO. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „WireGuard: VPN z ChaCha20 i Curve25519”?

Proszę poznać minimalistyczny projekt kryptograficzny WireGuard wykorzystujący ChaCha20-Poly1305, Curve25519 i BLAKE2. Ćwiczysz Cryptology Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cryptology Academy?

Nie wymagamy żadnego doświadczenia. Cryptology Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „WireGuard: VPN z ChaCha20 i Curve25519”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cryptology Academy?

Tak. Każda lekcja Cryptology Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. IPsec: protokoły IKEv2, ESP i AH
  2. WireGuard: VPN z ChaCha20 i Curve25519
  3. OpenVPN: architektura VPN oparta na TLS
  4. Porównanie protokołów VPN: bezpieczeństwo i wydajność
← Powrót do Cryptology Academy