David Miller (), který odpovídá za síťový subsystém jádra Linux, přidal do větve net-next s implementací VPN rozhraní z projektu . Na začátku příštího roku se změny nahromaděné v větvi net-next stanou základem pro vydání jádra Linux 5.6.
Pokusy o prosazení kódu WireGuard do hlavní větve jádra probíhaly v posledních několika letech, ale zůstaly bez výsledku kvůli závislosti na vlastních implementacích kryptografických funkcí, které byly použity ke zvýšení výkonu. Zpočátku tyto funkce byly pro jádro jako doplňkový nízkoúrovňový API Zinc, který by postupně mohl nahradit standardní Crypto API.
Po jednáních na konferenci Kernel Recipes, tvůrci WireGuard v září převést své patche na používání stávajícího Crypto API v jádře, k němuž mají vývojáři WireGuard výhrady ohledně výkonu a celkové bezpečnosti. API Zinc bylo rozhodnuto nadále vyvíjet jako samostatný projekt.
V listopadu vývojáři jádra na vzájemný kompromis a souhlasili s přesunem části kódu ze Zinc do hlavního jádra. V podstatě některé komponenty Zinc budou převedeny do jádra, ale ne jako samostatný API, ale jako součást subsystému Crypto API. Například v Crypto API již připravené v WireGuard rychlé implementace algoritmů ChaCha20 a Poly1305.
V souvislosti se nadcházející dodávkou WireGuard do hlavního jádra, zakladatel projektu o restrukturalizaci repozitáře. Aby se usnadnil vývoj, na místo monolitického repozitáře „WireGuard.git“, který byl určen pro samostatné existování, přijdou tři samostatné repozitáře, lépe vyhovující organizaci práce s kódem v hlavním jádře:
- — kompletní strom jádra se změnami od projektu WireGuard, jehož patche budou recenzovány pro zahrnutí do jádra a pravidelně přenášeny do větví net/net-next.
- — repozitář pro spouštěné v uživatelském prostoru nástroje a skripty, jako jsou wg a wg-quick. Tento repozitář lze použít pro vytvoření balíčků pro distribuce.
- — repozitář s variantou modulu, dodávaného odděleně od jádra a zahrnující vrstvu compat.h pro zajištění kompatibility se staršími jádry. Hlavní vývoj bude probíhat v repozitáři wireguard-linux.git, ale prozatím bude také podporována oddělená varianta patchů pro potřeby uživatelů.
Připomínáme, že VPN WireGuard je realizována na základě moderních metod šifrování, poskytuje velmi vysoký výkon, je snadno použitelná, zbavena komplikací a prokázala se v řadě velkých nasazení zpracovávajících velké objemy provozu. Projekt se vyvíjí od roku 2015, prošel auditem a používaných metod šifrování. Podpora WireGuard je již integrovaná do NetworkManager a systemd, a patche pro jádro jsou součástí základních distribucí. , Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, a .
Ve WireGuard se používá koncept směrování na základě klíčů šifrování, který předpokládá přiřazení uzavřeného klíče k každému síťovému rozhraní a použití pro propojení otevřených klíčů. Výměna otevřených klíčů pro navázání spojení probíhá analogicky k SSH. Pro vyjednávání klíčů a navázání spojení bez spuštění samostatného démona v uživatelském prostoru se používá mechanismus Noise_IK z , podobný udržování authorized_keys v SSH. Přenos dat probíhá prostřednictvím enkapsulace do paketů UDP. Podporována je změna IP adresy VPN serveru (roaming) bez přerušení spojení a automatickým přeprogramováním klienta.
Pro šifrování proudové šifrování a algoritmus pro autentizaci zpráv (MAC) , vyvinuté Danielem Bernsteinem (), Tanjou Lange
(Tanja Lange) a Peterem Schwabem (Peter Schwabe). ChaCha20 a Poly1305 jsou vychvalovány jako rychlejší a bezpečnější alternativy k AES-256-CTR a HMAC, přičemž jejich softwarová implementace umožňuje dosáhnout stanoveného času zpracování bez použití speciální hardwarové podpory. Pro generování společného tajného klíče se používá protokol Diffie-Hellman na eliptických křivkách v implementaci , také navrhovaný Danielem Bernsteinem. Pro hašování se používá algoritmus .
Při výkonu WireGuard prokázal 3.9krát vyšší propustnost a 3.8krát vyšší odezvu v porovnání s OpenVPN (256-bit AES s HMAC-SHA2-256). V porovnání s IPsec (256-bit ChaCha20+Poly1305 a AES-256-GCM-128) vykazuje WireGuard mírné předstihy v výkonu (13-18%) a snížení latence (21-23%). Testy byly provedeny s využitím rychlých implementací šifrovacích algoritmů vyvíjených projektem — přechod na standardní Crypto API jádra by mohl vést ke zhoršení výkonu.
Zdroj: opennet.ru
