Nova implementacija VPN WireGuard dodana v kodno zbirko FreeBSD

Izvorno drevo FreeBSD je bilo spremenjeno z novo implementacijo VPN WireGuard, ki temelji na kodi modula jedra, ki sta jo skupaj pripravili glavni razvojni ekipi FreeBSD in WireGuard s prispevki Jasona A. Donenfelda, avtorja VPN WireGuard, in Johna H. Baldwina), dobro -znani razvijalec GDB in FreeBSD, ki je implementiral podporo SMP in NUMA v jedro FreeBSD v zgodnjih 2000-ih. Ko je gonilnik sprejet v FreeBSD (sys/dev/wg), bo od zdaj naprej razvit in vzdrževan v repozitoriju FreeBSD.

Preden je bila koda sprejeta, je bil s podporo FreeBSD Foundation opravljen popoln pregled sprememb, med katerim je bila analizirana tudi interakcija gonilnika s preostalimi podsistemi jedra in možnost uporabe kriptografskih primitivov, ki jih ponuja jedro je bilo ocenjeno.

Za uporabo kriptografskih algoritmov, ki jih zahteva gonilnik, je bil razširjen API kripto podsistema jedra FreeBSD, ki mu je bila dodana vezava, ki omogoča uporabo algoritmov, ki niso podprti v FreeBSD prek standardnega kripto API-ja, z uporabo implementacije potrebnih algoritmov iz knjižnice libsodium . Od algoritmov, vgrajenih v gonilnik, je ostala samo koda za izračun zgoščenih vrednosti Blake2, saj je implementacija tega algoritma, ki je na voljo v FreeBSD, vezana na fiksno velikost zgoščenih vrednosti.

Poleg tega je bila med postopkom pregleda izvedena optimizacija kode, ki je omogočila povečanje učinkovitosti porazdelitve obremenitve na večjedrnih procesorjih (zagotovljeno je bilo enotno uravnoteženje vezave nalog šifriranja in dešifriranja paketov na jedra procesorjev). Posledično so bili režijski stroški obdelave paketov približani izvedbi gonilnika za Linux. Koda omogoča tudi uporabo gonilnika ossl za pospešitev operacij šifriranja.

Za razliko od prejšnjega poskusa integracije WireGuarda v FreeBSD nova izvedba uporablja standardni pripomoček wg namesto spremenjene različice ifconfig, ki je omogočal poenoteno konfiguracijo med Linuxom in FreeBSD. Pripomoček wg in gonilnik sta vključena v vire FreeBSD, kar je omogočila licenčna sprememba kode wg (koda je zdaj na voljo pod licencama MIT in GPL). Zadnji poskus vključitve WireGuarda v FreeBSD je bil izveden leta 2020, vendar se je končal s škandalom, zaradi katerega je bila že dodana koda odstranjena zaradi nizke kakovosti, neprevidnega ravnanja z medpomnilnikom, uporabe škrbin namesto preverjanj, nepopolne implementacije protokola in kršitev licence GPL.

Spomnimo, VPN WireGuard je implementiran na podlagi sodobnih metod šifriranja, zagotavlja zelo visoko zmogljivost, je enostaven za uporabo, brez zapletov in se je izkazal v številnih velikih implementacijah, ki obdelujejo velike količine prometa. Projekt se razvija od leta 2015, opravil je revizijo in formalno preverjanje uporabljenih metod šifriranja. WireGuard uporablja koncept usmerjanja šifrirnega ključa, ki vključuje vezavo zasebnega ključa na vsak omrežni vmesnik in uporabo javnih ključev za povezovanje.

Izmenjava javnih ključev za vzpostavitev povezave je podobna SSH. Za pogajanje o ključih in povezovanje brez zagona ločenega demona uporabniškega prostora se uporablja mehanizem Noise_IK ogrodja protokola Noise, podobno vzdrževanju authorized_keys v SSH. Prenos podatkov poteka z enkapsulacijo v paketih UDP. Podpira spreminjanje naslova IP strežnika VPN (gostovanje) brez prekinitve povezave s samodejno rekonfiguracijo odjemalca.

Šifriranje uporablja tokovno šifro ChaCha20 in algoritem za preverjanje pristnosti sporočil (MAC) Poly1305, ki so ga razvili Daniel J. Bernstein, Tanja Lange in Peter Schwabe. ChaCha20 in Poly1305 sta postavljena kot hitrejša in varnejša analoga AES-256-CTR in HMAC, katerih programska izvedba omogoča doseganje fiksnega časa izvajanja brez posebne strojne podpore. Za ustvarjanje skupnega tajnega ključa se uporablja Diffie-Hellmanov protokol eliptične krivulje v izvedbi Curve25519, ki ga je prav tako predlagal Daniel Bernstein. Za zgoščevanje se uporablja algoritem BLAKE2s (RFC7693).

Vir: opennet.ru

Dodaj komentar