Një implementim i ri VPN, WireGuard, është shtuar në bazën e kodeve FreeBSD.

Pema burimore e FreeBSD është përditësuar me një implementim të ri të VPN WireGuard, bazuar në kodin e modulit të kernelit të prodhuar bashkërisht nga ekipet kryesore të zhvillimit të FreeBSD dhe WireGuard me kontribute nga Jason A. Donenfeld, autor i VPN WireGuard dhe John H. Baldwin ). një zhvillues i njohur i GDB dhe FreeBSD, i cili zbatoi mbështetje për SMP dhe NUMA në kernelin FreeBSD në fillim të viteve 2000. Pasi drejtuesi të pranohet në FreeBSD (sys/dev/wg), zhvillimi dhe mirëmbajtja e tij tani e tutje do të kryhen në depon e FreeBSD.

Përpara se kodi të pranohej, u krye një rishikim i plotë i ndryshimeve me mbështetjen e Fondacionit FreeBSD, gjatë të cilit u analizua edhe ndërveprimi i drejtuesit me pjesën tjetër të nënsistemeve të kernelit dhe mundësia e përdorimit të primitivëve kriptografikë të ofruar nga kerneli. u vlerësua.

Për të përdorur algoritmet kriptografike të kërkuara nga drejtuesi, u zgjerua API i kripto-nënsistemit të kernelit FreeBSD, të cilit iu shtua një parzmore që lejon përdorimin e algoritmeve që nuk mbështeten në FreeBSD përmes kripto-API standarde, duke përdorur zbatimin e algoritmet e nevojshme nga biblioteka e libsodiumit. Nga algoritmet e integruara në drejtues, ka mbetur vetëm kodi për llogaritjen e hasheve të Blake2, pasi zbatimi i këtij algoritmi i ofruar në FreeBSD është i lidhur me një madhësi fikse hash.

Për më tepër, gjatë procesit të rishikimit, u krye optimizimi i kodit, i cili bëri të mundur rritjen e efikasitetit të shpërndarjes së ngarkesës në CPU me shumë bërthama (u sigurua balancimi uniform i caktimit të detyrave të kriptimit dhe deshifrimit të paketave në bërthamat e CPU). Si rezultat, shpenzimi i përgjithshëm gjatë përpunimit të paketave ishte afër atij të implementimit të drejtuesve të Linux. Kodi gjithashtu ofron mundësinë për të përdorur drejtuesin ossl për të shpejtuar operacionet e kriptimit.

Ndryshe nga përpjekja e mëparshme për të integruar WireGuard në FreeBSD, zbatimi i ri përdor mjetin standard wg, në vend të një versioni të modifikuar të ifconfig, i cili bën të mundur unifikimin e konfigurimit në Linux dhe FreeBSD. Shërbimi wg, si dhe drejtuesi, përfshihen në kodin burimor të FreeBSD, i cili u bë i mundur duke ndryshuar licencën për kodin wg (kodi është tani i disponueshëm nën licencat MIT dhe GPL). Përpjekja e fundit për të përfshirë WireGuard në FreeBSD u bë në vitin 2020, por përfundoi në një skandal, si rezultat i të cilit kodi tashmë i shtuar u hoq për shkak të cilësisë së ulët, punës së pakujdesshme me buffers, përdorimit të cungëve në vend të kontrolleve, zbatimit jo të plotë. të protokollit dhe shkelje të licencës GPL.

Kujtojmë që VPN WireGuard zbatohet në bazë të metodave moderne të kriptimit, ofron performancë shumë të lartë, është i lehtë për t'u përdorur, pa komplikime dhe e ka provuar veten në një numër vendosjesh të mëdha që përpunojnë sasi të mëdha trafiku. Projekti është duke u zhvilluar që nga viti 2015, ka kaluar auditimin dhe verifikimin formal të metodave të kriptimit të përdorura. WireGuard përdor konceptin e drejtimit të çelësit të enkriptimit, i cili përfshin lidhjen e një çelësi privat në secilën ndërfaqe të rrjetit dhe përdorimin e çelësave publikë për t'u lidhur.

Shkëmbimi i çelësave publikë për të krijuar një lidhje është i ngjashëm me SSH. Për të negociuar çelësat dhe për t'u lidhur pa ekzekutuar një daemon të veçantë të hapësirës së përdoruesit, përdoret mekanizmi Noise_IK i Kornizës së Protokollit të Zhurmës, i ngjashëm me mbajtjen e çelësave të autorizuar në SSH. Transmetimi i të dhënave kryhet përmes kapsulimit në pako UDP. Ai mbështet ndryshimin e adresës IP të serverit VPN (roaming) pa ndërprerë lidhjen me rikonfigurimin automatik të klientit.

Kriptimi përdor shifrën e transmetimit ChaCha20 dhe algoritmin e vërtetimit të mesazheve Poly1305 (MAC) të zhvilluar nga Daniel J. Bernstein, Tanja Lange dhe Peter Schwabe. ChaCha20 dhe Poly1305 pozicionohen si analoge më të shpejtë dhe më të sigurt të AES-256-CTR dhe HMAC, zbatimi i softuerit të të cilave lejon arritjen e një kohe fikse ekzekutimi pa përfshirë mbështetje të veçantë harduerike. Për të gjeneruar një çelës sekret të përbashkët, përdoret protokolli i kurbës eliptike Diffie-Hellman në zbatimin Curve25519, i propozuar gjithashtu nga Daniel Bernstein. Për hash, përdoret algoritmi BLAKE2s (RFC7693).

Burimi: opennet.ru

Shto një koment