Nova VPN implementacija, WireGuard, dodana je FreeBSD bazi koda.

Izvorno stablo FreeBSD-a ažurirano je novom implementacijom VPN WireGuarda, temeljenog na kodu modula kernela koji su zajednički izradili glavni razvojni timovi FreeBSD i WireGuard uz doprinose Jasona A. Donenfelda, autora VPN WireGuarda, i Johna H. Baldwina ), poznati programer GDB-a i FreeBSD-a, koji je implementirao podršku za SMP i NUMA u FreeBSD kernel početkom 2000-ih. Nakon što je upravljački program prihvaćen u FreeBSD (sys/dev/wg), njegov razvoj i održavanje će se od sada provoditi u FreeBSD repozitoriju.

Prije prihvaćanja koda, uz podršku FreeBSD Foundationa, provedena je potpuna revizija promjena, tijekom koje je također analizirana interakcija upravljačkog programa s ostatkom podsustava jezgre i mogućnost korištenja kriptografskih primitiva koje kernel pruža je ocijenjeno.

Za korištenje kriptografskih algoritama koje zahtijeva upravljački program, API kripto-podsustava jezgre FreeBSD je proširen, kojemu je dodan pojas koji omogućuje korištenje algoritama koji nisu podržani u FreeBSD-u kroz standardni kripto-API, koristeći implementaciju potrebne algoritme iz knjižnice libsodium. Od algoritama ugrađenih u upravljački program, preostao je samo kod za izračun Blake2 hash-ova, budući da je implementacija ovog algoritma u FreeBSD-u vezana uz fiksnu veličinu hash-a.

Osim toga, tijekom postupka pregleda provedena je optimizacija koda, što je omogućilo povećanje učinkovitosti raspodjele opterećenja na višejezgrenim procesorima (osigurano je jednoliko balansiranje dodjele zadataka enkripcije i dešifriranja paketa jezgrama procesora). Kao rezultat toga, opterećenje prilikom obrade paketa bilo je blizu onoga kod implementacije upravljačkog programa za Linux. Kod također pruža mogućnost korištenja ossl drajvera za ubrzavanje operacija šifriranja.

Za razliku od prethodnog pokušaja integracije WireGuarda u FreeBSD, nova implementacija koristi standardni uslužni program wg, umjesto modificirane verzije ifconfiga, što omogućuje objedinjavanje konfiguracije na Linuxu i FreeBSD-u. Uslužni program wg, kao i upravljački program, uključen je u izvorni kod FreeBSD-a, što je omogućeno promjenom licence za wg kod (kod je sada dostupan pod licencama MIT i GPL). Posljednji pokušaj uključivanja WireGuarda u FreeBSD napravljen je 2020. godine, ali je završio skandalom, zbog čega je već dodani kod uklonjen zbog niske kvalitete, nemarnog rada s međuspremnicima, korištenja stubova umjesto provjera, nepotpune implementacije protokola i kršenje GPL licence.

Podsjetimo, VPN WireGuard implementiran je na temelju suvremenih metoda enkripcije, pruža vrlo visoke performanse, jednostavan je za korištenje, lišen komplikacija i dokazao se u nizu velikih implementacija koje obrađuju velike količine prometa. Projekt se razvija od 2015. godine, prošao je reviziju i formalnu provjeru korištenih metoda šifriranja. WireGuard koristi koncept usmjeravanja ključa za enkripciju, koji uključuje vezanje privatnog ključa za svako mrežno sučelje i korištenje javnih ključeva za povezivanje.

Razmjena javnih ključeva za uspostavljanje veze slična je SSH-u. Za dogovaranje ključeva i povezivanje bez pokretanja zasebnog demona korisničkog prostora koristi se Noise_IK mehanizam Noise Protocol Frameworka, slično održavanju authorized_keys u SSH-u. Prijenos podataka provodi se enkapsulacijom u UDP paketima. Podržava promjenu IP adrese VPN poslužitelja (roaming) bez prekida veze s automatskom rekonfiguracijom klijenta.

Enkripcija koristi šifru toka ChaCha20 i algoritam za provjeru autentičnosti poruka (MAC) Poly1305 koji su razvili Daniel J. Bernstein, Tanja Lange i Peter Schwabe. ChaCha20 i Poly1305 pozicionirani su kao brži i sigurniji analozi AES-256-CTR i HMAC, čija softverska implementacija omogućuje postizanje fiksnog vremena izvršenja bez uključivanja posebne hardverske podrške. Za generiranje zajedničkog tajnog ključa koristi se Diffie-Hellmanov protokol eliptične krivulje u implementaciji Curve25519, koju je također predložio Daniel Bernstein. Za raspršivanje se koristi BLAKE2s algoritam (RFC7693).

Izvor: opennet.ru

Dodajte komentar