Zdrojový strom FreeBSD bol aktualizovaný o novú implementáciu VPN. WireGuard, založený na kóde modulov jadra, ktorý spoločne pripravili vývojové tímy jadra FreeBSD a WireGuard s Jasonom A. Donenfeldom, autorom knihy VPN WireGuard, a John H. Baldwin, renomovaný vývojár GDB a FreeBSD, ktorý implementoval podporu SMP a NUMA v jadre FreeBSD začiatkom roku 2000. Po prijatí ovládača do FreeBSD (sys/dev/wg) sa jeho vývoj a údržba budú uskutočňovať v repozitári FreeBSD.
Pred prijatím kódu sa s podporou FreeBSD Foundation vykonala úplná kontrola zmien, počas ktorej sa analyzovala interakcia ovládača s ostatnými subsystémami jadra a posúdila sa možnosť použitia kryptografických primitív poskytovaných jadrom.
Na podporu požadovaných kryptografických algoritmov ovládača bolo API kryptografického subsystému jadra FreeBSD rozšírené o obal, ktorý umožňuje použitie algoritmov nepodporovaných FreeBSD prostredníctvom štandardného kryptografického API s využitím implementácie požadovaných algoritmov z knižnice libsodium. Z algoritmov zabudovaných v ovládači bol zachovaný iba kód na výpočet Blake2 hashov, pretože implementácia tohto algoritmu vo FreeBSD sa spolieha na pevnú veľkosť hashu.
Okrem toho sa počas procesu kontroly vykonali optimalizácie kódu s cieľom zlepšiť efektivitu rozloženia záťaže na viacjadrových procesoroch (zabezpečené rovnomerné vyváženie úloh šifrovania a dešifrovania paketov medzi jadrami procesora). V dôsledku toho sa réžia spracovania paketov priblížila k réžii implementácie ovládača. LinuxKód tiež umožňuje použiť ovládač ossl na zrýchlenie šifrovacích operácií.
Na rozdiel od predchádzajúceho pokusu o integráciu WireGuard Vo FreeBSD nová implementácia používa štandardný nástroj wg namiesto upravenej verzie ifconfig, čo umožnilo zjednotiť konfiguráciu v Linux a FreeBSD. Nástroj wg, rovnako ako ovládač, je zahrnutý v zdrojovom kóde FreeBSD, čo bolo možné vďaka zmene licencie kódu wg (kód je teraz dostupný pod licenciami MIT a GPL). Predchádzajúci pokus o zahrnutie WireGuard Pokus o zlúčenie do FreeBSD sa uskutočnil v roku 2020, ale skončil kontroverziou, pričom už pridaný kód bol odstránený kvôli nízkej kvalite, zlému spracovaniu vyrovnávacej pamäte, použitiu stubov namiesto kontrol, neúplnej implementácii protokolu a porušovaniu licencie GPL.
Pripomeňme si, že VPN WireGuard Vďaka implementácii s využitím moderných šifrovacích metód poskytuje veľmi vysoký výkon, je ľahko použiteľný, bez komplikácií a osvedčil sa v mnohých rozsiahlych nasadeniach spracovávajúcich veľké objemy prevádzky. Projekt je vo vývoji od roku 2015 a prešiel auditom a formálnym overením svojich šifrovacích metód. WireGuard Používa sa koncept smerovania na základe kľúčov, ktorý zahŕňa viazanie súkromného kľúča na každé sieťové rozhranie a použitie verejných kľúčov na viazanie.
Výmena verejných kľúčov na nadviazanie pripojenia je podobná SSH. Na vyjednávanie kľúčov a pripojenie bez spustenia samostatného démona v používateľskom priestore sa používa mechanizmus Noise_IK z Noise Protocol Framework, podobne ako údržba authorized_keys v SSH. Prenos dát sa vykonáva prostredníctvom zapuzdrenia v UDP paketoch. Zmena je podporovaná. IP adresy VPN servery (roaming) bez prerušenia pripojenia s automatickou rekonfiguráciou klienta.
Šifrovanie využíva prúdovú šifru ChaCha20 a algoritmus overovania správ Poly1305 (MAC), ktorý vyvinuli Daniel J. Bernstein, Tanja Lange a Peter Schwabe. ChaCha20 a Poly1305 sú umiestnené ako rýchlejšie a bezpečnejšie analógy AES-256-CTR a HMAC, ktorých softvérová implementácia umožňuje dosiahnuť fixný čas vykonávania bez použitia špeciálnej hardvérovej podpory. Na generovanie zdieľaného tajného kľúča sa v implementácii Curve25519 používa protokol eliptická krivka Diffie-Hellman, ktorý navrhol aj Daniel Bernstein. Na hashovanie sa používa algoritmus BLAKE2s (RFC7693).
Zdroj: opennet.ru
