Nová implementace VPN WireGuard přidána do kódové základny FreeBSD

Zdrojový strom FreeBSD byl upraven pomocí nové implementace VPN WireGuard založené na kódu z modulu jádra, který společně připravily hlavní vývojové týmy FreeBSD a WireGuard se vstupy Jasona A. Donenfelda, autora VPN WireGuard, a Johna H. Baldwina ), známý vývojář GDB a FreeBSD, který implementoval podporu SMP a NUMA v jádře FreeBSD na počátku 2000. století. Jakmile je ovladač přijat do FreeBSD (sys/dev/wg), bude od této chvíle vyvíjen a udržován v úložišti FreeBSD.

Před přijetím kódu byla provedena úplná revize změn s podporou FreeBSD Foundation, během níž byla také analyzována interakce ovladače se zbytkem jaderných subsystémů a možnost použití kryptografických primitiv poskytovaných jádro bylo hodnoceno.

Pro použití kryptografických algoritmů vyžadovaných ovladačem bylo rozšířeno rozhraní API pro krypto subsystém jádra FreeBSD, ke kterému byla přidána vazba, která umožňuje použití algoritmů, které nejsou podporovány ve FreeBSD prostřednictvím standardního kryptografického API, s využitím implementace nezbytných algoritmů z knihovny libsodium. . Z algoritmů zabudovaných do ovladače zbývá pouze kód pro výpočet hash Blake2, protože implementace tohoto algoritmu poskytovaná ve FreeBSD je svázána s pevnou velikostí hash.

V průběhu procesu revize byla navíc provedena optimalizace kódu, která umožnila zvýšit efektivitu rozložení zátěže na vícejádrových CPU (bylo zajištěno jednotné vyvážení vazby úloh šifrování a dešifrování paketů na jádra CPU). V důsledku toho se režie zpracování paketů přiblížila implementaci ovladače pro Linux. Kód také poskytuje možnost použít ovladač ossl k urychlení operací šifrování.

Na rozdíl od předchozího pokusu o integraci WireGuard do FreeBSD, nová implementace používá nástroj stock wg, spíše než upravenou verzi ifconfig, která umožňovala jednotnou konfiguraci mezi Linuxem a FreeBSD. Utilita wg, stejně jako ovladač, jsou součástí zdrojů FreeBSD, což bylo umožněno změnou licence na kód wg (kód je nyní dostupný pod licencemi MIT a GPL). Poslední pokus o začlenění WireGuard do FreeBSD byl proveden v roce 2020, ale skončil skandálem, v důsledku čehož byl odstraněn již přidaný kód z důvodu nízké kvality, nedbalé manipulace s bufferem, používání pahýlů místo kontrol, neúplná implementace protokolu a porušení licence GPL.

Připomeňme, že VPN WireGuard je implementován na základě moderních šifrovacích metod, poskytuje velmi vysoký výkon, je snadno použitelný, bez komplikací a osvědčil se v řadě velkých nasazení, která zpracovávají velké objemy provozu. Projekt se rozvíjí od roku 2015, prošel auditem a formálním ověřením používaných šifrovacích metod. WireGuard využívá koncept směrování šifrovacího klíče, který zahrnuje navázání soukromého klíče na každé síťové rozhraní a použití veřejných klíčů k navázání.

Výměna veřejných klíčů pro navázání spojení je podobná SSH. K vyjednávání klíčů a připojení bez spuštění samostatného démona uživatelského prostoru se používá mechanismus Noise_IK rámce Noise Protocol Framework, podobně jako udržování autorizovaných_klíčů v SSH. Přenos dat se provádí zapouzdřením do UDP paketů. Podporuje změnu IP adresy VPN serveru (roaming) bez přerušení spojení s automatickou rekonfigurací klienta.

Šifrování využívá proudovou šifru ChaCha20 a algoritmus autentizace zpráv Poly1305 (MAC), který vyvinuli Daniel J. Bernstein, Tanja Lange a Peter Schwabe. ChaCha20 a Poly1305 jsou umístěny jako rychlejší a bezpečnější analogy AES-256-CTR a HMAC, jejichž softwarová implementace umožňuje dosáhnout pevné doby provádění bez nutnosti speciální hardwarové podpory. Pro generování sdíleného tajného klíče se používá protokol Elliptic Curve Diffie-Hellman v implementaci Curve25519, který rovněž navrhl Daniel Bernstein. Pro hashování se používá algoritmus BLAKE2s (RFC7693).

Zdroj: opennet.ru

Přidat komentář