Į FreeBSD kodų bazę buvo įtrauktas naujas VPN diegimas „WireGuard“.

FreeBSD šaltinio medis buvo atnaujintas naudojant naują VPN WireGuard diegimą, pagrįstą branduolio modulio kodu, kurį kartu sukūrė pagrindinės FreeBSD ir WireGuard kūrimo komandos kartu su Jasonu A. Donenfeldu, VPN WireGuard autoriumi ir Johnu H. Baldwinu). gerai žinomas GDB ir FreeBSD kūrėjas, 2000-ųjų pradžioje įdiegęs SMP ir NUMA palaikymą FreeBSD branduolyje. Kai tvarkyklė bus priimta į FreeBSD (sys/dev/wg), jos kūrimas ir priežiūra nuo šiol bus atliekami FreeBSD saugykloje.

Prieš priimant kodą, su „FreeBSD Foundation“ pagalba buvo atlikta visa pakeitimų peržiūra, kurios metu taip pat buvo išanalizuota tvarkyklės sąveika su likusiais branduolio posistemiais bei galimybė panaudoti branduolio teikiamus kriptografinius primityvus. buvo įvertintas.

Norint naudoti tvarkyklei reikalingus kriptografinius algoritmus, buvo išplėsta FreeBSD branduolio kriptovaliutų posistemio API, prie kurios pridėtas laidas, leidžiantis per standartinę kriptografinę API naudoti algoritmus, kurių FreeBSD nepalaiko, naudojant įdiegtą reikiamus algoritmus iš libsodium bibliotekos. Iš tvarkyklėje integruotų algoritmų liko tik Blake2 maišos skaičiavimo kodas, nes šio FreeBSD pateikto algoritmo įgyvendinimas yra susietas su fiksuotu maišos dydžiu.

Be to, peržiūros metu buvo atliktas kodo optimizavimas, kuris leido padidinti kelių branduolių procesorių apkrovos paskirstymo efektyvumą (užtikrintas vienodas paketų šifravimo ir iššifravimo užduočių priskyrimo CPU branduoliams balansavimas). Dėl to paketų apdorojimo išlaidos buvo artimos Linux tvarkyklės diegimo sąnaudoms. Kodas taip pat suteikia galimybę naudoti ossl tvarkyklę šifravimo operacijoms paspartinti.

Skirtingai nuo ankstesnio bandymo integruoti WireGuard į FreeBSD, naujajame diegime naudojama standartinė wg programa, o ne modifikuota ifconfig versija, kuri leidžia suvienodinti Linux ir FreeBSD konfigūraciją. Wg įrankis, taip pat tvarkyklė, yra įtraukti į FreeBSD šaltinio kodą, o tai tapo įmanoma pakeitus wg kodo licenciją (kodas dabar prieinamas pagal MIT ir GPL licencijas). Paskutinis bandymas įtraukti WireGuard į FreeBSD buvo atliktas 2020 m., tačiau baigėsi skandalu, dėl ko jau pridėtas kodas buvo pašalintas dėl nekokybiško, neatsargaus darbo su buferiais, stubų naudojimo vietoj patikrų, nepilno diegimo. protokolo ir GPL licencijos pažeidimo.

Primename, kad VPN WireGuard yra įdiegtas remiantis šiuolaikiniais šifravimo metodais, užtikrina labai aukštą našumą, yra paprastas naudoti, nesukelia komplikacijų ir pasitvirtino daugelyje didelių diegimų, apdorojančių didelius srautus. Projektas vystomas nuo 2015 m., buvo atliktas auditas ir formalus naudojamų šifravimo metodų patikrinimas. „WireGuard“ naudoja šifravimo rakto nukreipimo koncepciją, kuri apima privataus rakto prijungimą prie kiekvienos tinklo sąsajos ir jo naudojimą viešiesiems raktams susieti.

Viešaisiais raktais keičiamasi, kad būtų užmegztas ryšys panašiai kaip SSH. Norint derėtis dėl raktų ir prisijungti nepaleidžiant atskiro demono vartotojo erdvėje, naudojamas Noise Protocol Framework Noise_IK mechanizmas, panašus į įgaliotųjų_raktų palaikymą SSH. Duomenų perdavimas vykdomas inkapsuliuojant į UDP paketus. Jis palaiko VPN serverio IP adreso keitimą (tarptinklinį ryšį) neatjungiant ryšio su automatiniu kliento perkonfigūravimu.

Šifravimui naudojamas ChaCha20 srauto šifras ir Poly1305 pranešimų autentifikavimo algoritmas (MAC), kurį sukūrė Daniel J. Bernstein, Tanja Lange ir Peter Schwabe. ChaCha20 ir Poly1305 yra išdėstyti kaip greitesni ir saugesni AES-256-CTR ir HMAC analogai, kurių programinė įranga leidžia pasiekti fiksuotą vykdymo laiką nenaudojant specialios aparatinės įrangos. Norint generuoti bendrą slaptąjį raktą, Curve25519 įgyvendinime naudojamas elipsinės kreivės Diffie-Hellman protokolas, kurį taip pat pasiūlė Daniel Bernstein. BLAKE2s algoritmas (RFC7693) naudojamas maišymui.

Šaltinis: opennet.ru

Добавить комментарий