Do kódovej základne FreeBSD bola pridaná nová implementácia VPN, WireGuard.

Zdrojový strom FreeBSD bol aktualizovaný o novú implementáciu VPN WireGuard, založenú na kóde modulu jadra, ktorý spoločne vytvorili hlavné vývojové tímy FreeBSD a WireGuard s príspevkami Jasona A. Donenfelda, autora VPN WireGuard, a Johna H. Baldwina ), známy vývojár GDB a FreeBSD, ktorý implementoval podporu pre SMP a NUMA v jadre FreeBSD na začiatku 2000. storočia. Po prijatí ovládača do FreeBSD (sys/dev/wg) sa jeho vývoj a údržba bude odteraz vykonávať v úložisku FreeBSD.

Pred prijatím kódu bola vykonaná úplná revízia zmien s podporou nadácie FreeBSD, počas ktorej sa analyzovala aj interakcia ovládača so zvyškom subsystémov jadra a možnosť použitia kryptografických primitív poskytovaných jadrom. bola hodnotená.

Aby bolo možné použiť kryptografické algoritmy vyžadované ovládačom, bolo rozšírené API kryptosubsystému jadra FreeBSD, ku ktorému bol pridaný zväzok, ktorý umožňuje použitie algoritmov, ktoré nie sú podporované vo FreeBSD prostredníctvom štandardného krypto-API s použitím implementácie potrebné algoritmy z knižnice libsodium. Z algoritmov zabudovaných do ovládača zostal iba kód na výpočet hash Blake2, pretože implementácia tohto algoritmu poskytovaná vo FreeBSD je viazaná na pevnú veľkosť hash.

Okrem toho bola počas procesu revízie vykonaná optimalizácia kódu, ktorá umožnila zvýšiť efektivitu rozloženia záťaže na viacjadrové CPU (bolo zabezpečené rovnomerné vyváženie prideľovania úloh šifrovania a dešifrovania paketov jadrám CPU). Výsledkom bolo, že réžia pri spracovaní paketov bola blízka réžii implementácie ovládača pre Linux. Kód tiež poskytuje možnosť použiť ovládač ossl na urýchlenie operácií šifrovania.

Na rozdiel od predchádzajúceho pokusu o integráciu WireGuard do FreeBSD, nová implementácia používa skôr štandardnú utilitu wg než upravenú verziu ifconfig, ktorá umožňuje zjednotiť konfiguráciu na Linuxe a FreeBSD. Pomôcka wg, ako aj ovládač sú zahrnuté v zdrojovom kóde FreeBSD, čo bolo umožnené zmenou licencie pre kód wg (kód je teraz dostupný pod licenciami MIT a GPL). Posledný pokus o začlenenie WireGuard do FreeBSD bol urobený v roku 2020, skončil sa však škandálom, v dôsledku čoho bol už pridaný kód odstránený z dôvodu nízkej kvality, nedbalej práce s vyrovnávacími pamäťami, používanie stubov namiesto kontrol, neúplná implementácia protokolu a porušenie GPL licencie.

Pripomeňme, že VPN WireGuard je implementovaný na báze moderných metód šifrovania, poskytuje veľmi vysoký výkon, je jednoduchý na používanie, bez komplikácií a osvedčil sa v množstve veľkých nasadení, ktoré spracovávajú veľké objemy prevádzky. Projekt sa vyvíja od roku 2015, prešiel auditom a formálnym overením používaných metód šifrovania. WireGuard využíva koncept smerovania šifrovacieho kľúča, ktorý zahŕňa pripojenie súkromného kľúča ku každému sieťovému rozhraniu a jeho použitie na viazanie verejných kľúčov.

Verejné kľúče sa vymieňajú na vytvorenie spojenia podobným spôsobom ako SSH. Na vyjednávanie kľúčov a pripojenie bez spustenia samostatného démona v užívateľskom priestore sa používa mechanizmus Noise_IK rámca Noise Protocol Framework, podobne ako udržiavanie autorizovaných_ kľúčov v SSH. Prenos dát sa uskutočňuje prostredníctvom zapuzdrenia do paketov UDP. Podporuje zmenu IP adresy VPN servera (roaming) bez prerušenia spojenia 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

Pridať komentár