O nouă implementare a VPN WireGuard a fost adăugată în baza de cod FreeBSD

În arborele sursă al textelor FreeBSD au fost acceptate modificări cu o nouă implementare a VPN WireGuard, bazată pe codul modulului kernel, pregătit în comun de echipele principale de dezvoltare FreeBSD și WireGuard, cu participarea lui Jason Donenfeld, autorul VPN WireGuard, și John Baldwin, un cunoscut dezvoltator GDB și FreeBSD, care în începutul anilor 2000 a implementat suportul SMP și NUMA în kernelul FreeBSD. După acceptarea driverului în FreeBSD (sys/dev/wg), dezvoltarea și întreținerea acestuia vor fi realizate de acum înainte în repository-ul FreeBSD.

Înainte de acceptarea codului, cu sprijinul organizației FreeBSD Foundation, a fost efectuată o revizuire completă a modificărilor, în cadrul căreia a fost analizată și interacțiunea driverului cu celelalte subsisteme ale kernelului, precum și evaluată posibilitatea utilizării primitivlor criptografice furnizate de kernel.

Pentru utilizarea algoritmilor criptografici necesari driverului, a fost extins API-ul subsistemului criptografic al kernelului FreeBSD, în care a fost adăugată o interfață care permite utilizarea algoritmilor neacceptați în FreeBSD prin intermediul API-ului criptografic standard, folosind implementarea algoritmilor necesari din biblioteca libsodium. Din algoritmii încorporați în driver a rămas doar codul pentru calcularea hash-urilor Blake2, deoarece implementarea acestui algoritm furnizată în FreeBSD este legată de mărimea fixă a hash-ului.

În plus, în timpul revizuirii a fost realizată o optimizare a codului care a permis îmbunătățirea eficienței distribuirii sarcinii pe CPU-uri multicore (asigurând o balansare uniformă a legării sarcinilor de criptare și decriptare a pachetelor pe nucleele CPU). Drept urmare, cheltuielile indirecte în procesarea pachetelor au fost apropiate de implementarea driverului pentru Linux. În cod a fost asigurată de asemenea posibilitatea utilizării driverului ossl pentru accelerarea operațiunilor de criptare.

Spre deosebire de încercarea anterioară de integrare a WireGuard în FreeBSD, noua implementare utilizează utilitarul standard wg, nu o versiune modificată a ifconfig, ceea ce a permis uniformizarea configurării între Linux și FreeBSD. Utilitarul wg, la fel ca și driverul, este inclus în codurile sursă ale FreeBSD, ceea ce a devenit posibil datorită schimbării licenței pentru codul wg (acum disponibil sub licențele MIT și GPL). Încercarea anterioară de a include WireGuard în FreeBSD a fost realizată în 2020, dar a fost încheiată cu un scandal, în urma căruia codul deja adăugat a fost eliminat din cauza calității scăzute, a lipsei de rigurozitate în lucrul cu buffer-ele, a utilizării stubs în loc de verificări, a implementării incomplete a protocolului și a încălcării licenței GPL.

Reamintim că VPN WireGuard este implementat pe baza metodologiilor moderne de criptare, oferă performanțe foarte ridicate, este ușor de utilizat, fără complicații și s-a dovedit fiabil în numeroase implementări majore care procesează volume mari de trafic. Proiectul este în dezvoltare din 2015, a trecut auditul și verificarea formală a metodelor de criptare aplicate. WireGuard utilizează conceptul de rutare pe baza cheilor de criptare, ceea ce implică legarea unui cheie privată la fiecare interfață de rețea și utilizarea acesteia pentru asociarea cheilor publice.

Schimbul de chei publice pentru stabilirea conexiunii se realizează similar cu SSH. Pentru negocierea cheilor și conectarea fără a lansa un daemon separat în spațiul utilizatorului, se aplică mecanismul Noise_IK din Noise Protocol Framework, similar cu menținerea authorized_keys în SSH. Transferul de date se face prin encapsularea în pachete UDP. Se suportă schimbarea adrese IP Servere VPN (roaming) fără întreruperea conexiunii cu reconfigurarea automată a clientului.

Pentru criptare se utilizează cifra pe flux ChaCha20 și algoritmul de autentificare a mesajelor (MAC) Poly1305, dezvoltați de Daniel Bernstein, Tanja Lange și Peter Schwabe. ChaCha20 și Poly1305 sunt considerate analogi mai rapizi și mai siguri ai AES-256-CTR și HMAC, a căror implementare software permite obținerea unui timp de execuție fix fără a necesita suport hardware specializat. Pentru generarea cheii secrete comune, se folosește protocolul Diffie-Hellman pe curbe eliptice în implementarea Curve25519, de asemenea propusă de Daniel Bernstein. Algoritmul BLAKE2s (RFC7693) este utilizat pentru hashing.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster