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.
Kujtoj këtë VPN WireGuard është zbatuar duke përdorur metoda moderne të enkriptimit, ofron performancë të jashtëzakonshme, është i lehtë për t’u përdorur dhe nuk ka ndërlikime. Ka provuar veten në një numër implementimesh në shkallë të gjerë që trajtojnë vëllime të mëdha trafiku. Projekti ka qenë në zhvillim që nga viti 2015 dhe i është nënshtruar një auditimi dhe verifikimi formal të metodave të tij të enkriptimit. WireGuard përdor një koncept të rrugëzimit të enkriptimit të bazuar në çelës, i cili përfshin lidhjen e një çelësi privat në secilën ndërfaqe rrjeti dhe përdorimin e çelësave publikë për lidhjen e çelësave.
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ë në hapësirën e përdoruesit, përdoret mekanizmi Noise_IK nga Noise Protocol Framework, i ngjashëm me mirëmbajtjen e authorized_keys në SSH. Transferimi i të dhënave kryhet nëpërmjet enkapsulimit në paketa UDP. Ndryshimi mbështetet. adresat IP Servera VPN (roaming) pa ndërprerje të lidhjes me rikonfigurim 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
