Në strukturën e kodit të FreeBSD janë pranuar ndryshime me një realizim të ri të VPN WireGuard, i bazuar në kodin e modulit të bërthamës, i përgatitur së bashku nga ekipet kryesore të zhvilluesve të FreeBSD dhe WireGuard me pjesëmarrjen e Jason Donenfeld, autorit të VPN WireGuard, dhe John Baldwin, një zhvillues i njohur i GDB dhe FreeBSD, i cili në fillim të viteve 2000 implementoi mbështetje për SMP dhe NUMA në bërthamën e FreeBSD. Pas miratimit të driverit në përbërjen e FreeBSD (sys/dev/wg), zhvillimi dhe mbështetje do të kryhen tani në depot e FreeBSD.
Para miratimit të kodit, nën mbështetje të organizatës FreeBSD Foundation, është kryer një rishikim i plotë i ndryshimeve, gjatë të cilit u analizua gjithashtu bashkëveprimi i driverit me nën-sistemat e tjera të bërthamës dhe u vlerësua mundësia e përdorimit të primitiveve kriptografike të ofruara nga bërthama.
Për të përdorur algoritmet kriptografike të nevojshme për driverin, është bërë zgjerimi i API të nën-sistemit kriptografik të bërthamës FreeBSD, ku është shtuar një mbështetje që lejon përdorimin e algoritmeve që nuk mbështeten në FreeBSD përmes API standard të kriptografisë, duke përdorur realizimin e algoritmeve të nevojshëm nga biblioteka libsodium. Nga algoritmet e ndërtuara në driver, është lënë vetëm kodi për llogaritjen e hash-ëve Blake2, për shkak se realizimi i ofruar në FreeBSD i këtij algoritmi është lidhur me një madhësi të fiksuar hash-i.
Për më tepër, gjatë procesit të rishikimit është kryer optimizimi i kodit, që ka lejuar rritjen e efikasitetit të shpërndarjes së ngarkesës në CPU me shumë bërthama (është siguruar një balancim i barabartë i detyrave të enkriptimit dhe dekriptimit të paketave në bërthamat e CPU). Si rezultat, kostot e procesimit të pakot janë afruar me realizimin e driverit për Linux. Në kod është siguruar gjithashtu mundësia e përdorimit të driverit ossl për të përshpejtuar operacionet e enkriptimit.
Në kundërshtim me përpjekjen e kaluar për integrimin e WireGuard në FreeBSD, në realizimin e ri është përdorur mjeti standard wg, e jo versioni i modifikuar ifconfig, çka ka lejuar unifikimin e konfigurimit në Linux dhe FreeBSD. Mjeti wg, si edhe driveri, është përfshirë në strukturën e kodit të FreeBSD, çka u bë e mundur falë ndryshimit të licencës së kodit wg (kode tani është në dispozicion nën licencat MIT dhe GPL). Përpjekja e kaluar për të përfshirë WireGuard në FreeBSD u bë në vitin 2020, por përfundoi me një skandal, në rezultatin e të cilit kodi i shtuar u hoq për shkak të cilësisë së ulët, punës së pakujdesshme me bufferat, përdorimit të pllakave në vend të kontrolleve, implementimit të paplotë të protokollit dhe shkeljes së licencës GPL.
KujtojmĂ« se VPN WireGuard Ă«shtĂ« realizuar mbi baza tĂ« metodave moderne tĂ« enkriptimit, ofron njĂ« performancĂ« shumĂ« tĂ« lartĂ«, Ă«shtĂ« i lehtĂ« pĂ«r tâu pĂ«rdorur, i thjeshtuar dhe ka treguar rezultate tĂ« mira nĂ« disa implementime tĂ« mĂ«dha qĂ« pĂ«rpunojnĂ« sasi tĂ« mĂ«dha tĂ« trafikut. Projekti ka filluar zhvillimin nĂ« vitin 2015, ka kaluar njĂ« audit dhe njĂ« verifikim formal tĂ« metodave tĂ« enkriptimit qĂ« pĂ«rdoren. NĂ« WireGuard zbatohet koncepti i ruterit nĂ«pĂ«rmjet çelĂ«sit tĂ« enkriptimit, i cili parashikon lidhjen e çdo interfeci rrjeti me njĂ« çelĂ«s tĂ« mbyllur dhe pĂ«rdorimin e tij pĂ«r lidhjen e çelĂ«save tĂ« hapur.
Arsimi i çelësve të hapur për vendosjen e lidhjes kryhet në mënyrë të ngjashme me SSH. Për pajtimin e çelësave dhe lidhjen pa nisjen e një demoni të veçantë në hapësirën e përdoruesit përdoret mekanizmi Noise_IK nga Noise Protocol Framework, e ngjashme me mbajtjen e authorized_keys në SSH. Transferimi i të dhënave bëhet përmes inkapsulimit në paketa UDP. Ndryshimi i mbështetet. adresat IP VPN-server (roaming) pa ndërprerje të lidhjes me rikonfigurim automatik të klientit.
Për enkriptimin përdoret algoritmi i rrjedhës ChaCha20 dhe algoritmi i autentikimit të mesazheve (MAC) Poly1305, të zhvilluara nga Daniel Bernstein, Tanja Lange dhe Peter Schwabe. ChaCha20 dhe Poly1305 pozicionohen si alternativa më të shpejta dhe më të sigurta për AES-256-CTR dhe HMAC, realizimi softuerik i të cilave mundëson arritjen e një kohe të fiksuar ekzekutimi pa kërkuar mbështetje të veçantë harduerike. Për gjenerimin e çelësit të fshehtë të përbashkët përdoret protokolli i Diffie-Hellman mbi kurba eliptike në zbatimin e Curve25519, gjithashtu e propozuar nga Daniel Bernstein. Për hashing përdoren algoritmi BLAKE2s (RFC7693).
Burimi: opennet.ru
