Do jádra Linux 5.6 byl přidán VPN WireGuard

Dnes Linus přenesl do svého repozitáře větev net-next s VPN rozhraními WireGuard. O této události oznámili v mailing listu WireGuard.

Do jádra Linux 5.6 byl přidán VPN WireGuard

V tuto chvíli probíhá sběr kódu pro nové jádro Linux 5.6. WireGuard je rychlá VPN nové generace, která implementuje moderní kryptografii. Byla původně vyvíjena jako jednodušší a pohodlnější alternativa k existujícím VPN. Autorem je kanadský odborník na informační bezpečnost Jason Donenfeld. V srpnu 2018 byl WireGuard oceněn Linusem Torvalds. Přibližně v té době začala práce na zahrnutí VPN do jádra Linux. Proces se mírně protáhl.

„Vidím, že Jason udělal pull request na zahrnutí WireGuard do jádra,“ psal Linus 2. srpna 2018. „Mohu ještě jednou vyjádřit svou lásku k této VPN a doufat v brzké sloučení? Možná, že kód není ideální, ale prohlédl jsem si ho a ve srovnání s hrůzami OpenVPN a IPSec je to skutečné umělecké dílo.“

Nesplnilo se Linusovo přání, sloučení se prodloužilo o jeden a půl roku. Hlavním problémem byla vazba na vlastní implementace kryptografických funkcí, které byly používány pro zvýšení výkonu. Po dlouhých jednáních v září 2019 bylo přijato kompromisní řešení převést patche na existující funkce v jádře Crypto API, na které mají vývojáři WireGuard výhrady z hlediska výkonu a celkové bezpečnosti. Rozhodli se však vyčlenit nativní kryptofunkce WireGuard do samostatného nízkoúrovňového Zinc API a postupem času je portovat do jádra. V listopadu vývojáři jádra dodrželi svůj slib a souhlasili převést do hlavního jádra část kódu ze Zinc. Například v Crypto API byly zahrnuty připravili v WireGuard rychlé implementace algoritmů ChaCha20 a Poly1305.

Nakonec, 9. prosince 2019, David Miller, zodpovědný za síťový subsystem jádra Linux, přijal přidal do větve net-next patche implementaci VPN rozhraní z projektu WireGuard.

A dnes 29. ledna 2020 byly změny zaslány Linusovi k zahrnutí do jádra.

Do jádra Linux 5.6 byl přidán VPN WireGuard

Uvedené výhody WireGuard oproti jiným VPN řešením:

  • Jednoduché použití.
  • Používá moderní kryptografii: Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF atd.
  • Kompaktní a čitelný kód, snadnější na prozkoumání zranitelností.
  • Vysoký výkon.
  • Jasné a dobře promyšlené specification.

Všechna hlavní logika WireGuard zabírá méně než 4000 řádků kódu, zatímco OpenVPN a IPSec jsou to stovky tisíc řádků.

„Ve WireGuard se uplatňuje koncept směrování na základě šifrovacích klíčů, který předpokládá přiřazení soukromého klíče k každému síťovému rozhraní a použití k propojení veřejných klíčů. Výměna veřejných klíčů pro ustanovení spojení se provádí analogicky s SSH. K dohodě klíčů a spojení bez spuštění samostatného démona v uživatelském prostoru se používá mechanismus Noise_IK z Noise Protocol Framework, podobný udržování authorized_keys v SSH. Přenos dat se provádí prostřednictvím zapouzdření do UDP paketů. Podporována je změna IP adresy VPN serveru (roaming) bez přerušení spojení s automatickým přeprogramováním klienta, — píše Opennet.

Pro šifrování se používá proudové šifrování ChaCha20 a algoritmus pro autentizaci zpráv (MAC) Poly1305, vyvinuté Danielem Bernsteinem (Daniel J. Bernstein), Tanjou Lange a Peterem Schwabe. ChaCha20 a Poly1305 jsou uváděny jako rychlejší a bezpečnější analogy AES-256-CTR a HMAC, jejichž softwarová implementace umožňuje dosáhnout konstantního času vykonávání bez zapojení speciální hardwarové podpory. Pro generaci sdíleného tajného klíče se používá protokol Diffie-Hellman na eliptických křivkách ve variantě Curve25519, také navržený Danielem Bernsteinem. Pro hashování se používá algoritmus BLAKE2s (RFC7693)».

Výsledky testů výkonu z oficiálního webu:

Šířka pásma (megabit/s)
Do jádra Linux 5.6 byl přidán VPN WireGuard

Ping (ms)
Do jádra Linux 5.6 byl přidán VPN WireGuard

Testovací konfigurace:

  • Intel Core i7-3820QM a Intel Core i7-5200U
  • Gigabitové karty Intel 82579LM a Intel I218LM
  • Linux 4.6.1
  • Konfigurace WireGuard: 256bitový ChaCha20 s Poly1305 pro MAC
  • První konfigurace IPsec: 256bitový ChaCha20 s Poly1305 pro MAC
  • Druhá konfigurace IPsec: AES-256-GCM-128 (s AES-NI)
  • Konfigurace OpenVPN: ekvivalentní šifrovací sada 256bitového AES s HMAC-SHA2-256, režim UDP
  • Výkon byl měřen pomocí iperf3, ukázán průměrný výsledek za 30 minut.

Teoreticky, po integraci do síťového zásobníku by měl WireGuard fungovat ještě rychleji. Ale v praxi to nemusí být tak kvůli přechodu na vestavěné kryptografické funkce Crypto API. Možná, že ne všechny z nich jsou ještě optimalizovány na úroveň efektivity nativního WireGuard.

„Z mého pohledu je WireGuard pro uživatele vůbec ideální. Všechna nízkoúrovňová řešení jsou přijata ve specifikaci, takže příprava typické VPN infrastruktury zabere jen pár minut. Není možné se zmýlit v konfiguraci, — psali na Habru v roce 2018. — Proces instalace je podrobně popsán na oficiálních stránkách, je třeba zvlášť vyzdvihnout skvělou podporu OpenWRT. Takové jednoduchosti použití a kompaktnosti kódové základny bylo dosaženo díky zrušení distribuce klíčů. Není tu složitý systém certifikátů a veškerého toho firemního chaosu, krátké šifrovací klíče se rozšiřují přibližně jako SSH klíče.

Projekt WireGuard se vyvíjí od roku 2015, prošel auditem a formální verifikací. Podpora WireGuard je integrována v NetworkManageru a systemd, a patche pro jádro jsou součástí základní sestavy distribucí Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph a ALT.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster