Astăzi, Linus a transferat ramura net-next cu interfețe VPN. . Despre acest eveniment în lista de distribuție WireGuard.

În prezent, se continuă colectarea codului pentru noul nucleu Linux 5.6. WireGuard este un VPN de nouă generație, care implementează criptografie modernă. A fost dezvoltat inițial ca o alternativă mai simplă și mai convenabilă la VPN-urile existente. Autorul este specialistul canadian în securitate informațională Jason Donenfeld. În august 2018, WireGuard de Linus Torvalds. Aproximativ în acea perioadă a început munca de includere a VPN-ului în nucleul Linux. Procesul s-a întins puțin.
„Văd că Jason a făcut un pull request pentru includerea WireGuard în nucleu”, scria Linus pe 2 august 2018. „Pot să îmi exprim din nou dragostea pentru acest VPN și să sper la o fuziune rapidă? Poate că codul nu este perfect, dar l-am revizuit, iar comparativ cu ororile OpenVPN și IPSec, acesta este o adevărată lucrare de artă.”
În ciuda dorinței lui Linus, fuziunea a durat un an și jumătate. Principala problemă a fost legată de implementările proprii ale funcțiilor criptografice, care au fost utilizate pentru a îmbunătăți performanța. După negocieri îndelungate, în septembrie 2019 a fost de a transfera patch-urile pe funcțiile existente în nucleu de tip Crypto API, la care dezvoltatorii WireGuard aveau obiecții privind performanța și securitatea generală. Dar s-a decis ca funcțiile criptografice nativ ale WireGuard să fie separate în API-uri Zinc de nivel jos și, în timp, să fie portate în nucleu. În noiembrie, dezvoltatorii nucleului și-au respectat promisiunea și să transfere în nucleul principal o parte din cod din Zinc. De exemplu, în Crypto API sunt pregătite în WireGuard implementări rapide ale algoritmilor ChaCha20 și Poly1305.
În cele din urmă, pe 9 decembrie 2019, David Miller, responsabil pentru subsistemul de rețea al nucleului Linux, a adăugat în ramura net-next implementarea interfeței VPN din proiectul WireGuard.
Iar astăzi, pe 29 ianuarie 2020, modificările au fost trimise lui Linus pentru a fi incluse în nucleu.

Avantajele declarate ale WireGuard față de alte soluții VPN:
- Ușor de utilizat.
- Folosește criptografie modernă: Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF etc.
- Cod compact și lizibil, mai ușor de examinat pentru vulnerabilități.
- Performanță ridicată.
- Clar și bine structurat .
Toată logica principală a WireGuard ocupă mai puțin de 4000 de linii de cod, în timp ce OpenVPN și IPSec constau în sute de mii de linii.
În WireGuard se aplică conceptul de rutare pe baza cheilor de criptare, care implică alocarea unui cheie privată pentru fiecare interfață de rețea și utilizarea acesteia pentru asocierea unei chei publice. Schimbul de chei publice pentru stabilirea conexiunii se realizează similar cu SSH. Pentru negocierea cheilor și conectare fără a lansa un demon separat în spațiul utilizatorului se utilizează mecanismul Noise_IK din , similar cu menținerea authorized_keys în SSH. Transmiterea datelor se efectuează prin încapsulare în pachete UDP. Se suportă schimbarea adresei IP a serverului VPN (roaming) fără a întrerupe conexiunea, cu reconfigurarea automată a clientului, — Opennet.
Pentru criptare fluxul de criptare și algoritmul de autentificare a mesajelor (MAC) , dezvoltați de Daniel Bernstein (), Tanja Lange și Peter Schwabe. ChaCha20 și Poly1305 sunt poziționați ca fiind analogi mai rapizi și mai siguri ai AES-256-CTR și HMAC, implementarea software-ului cărora permite obținerea unor timpuri fixe de execuție fără a necesita suport hardware special. Pentru generarea cheii secrete comune se utilizează protocolul Diffie-Hellman pe curve eliptice în implementarea , de asemenea, propus de Daniel Bernstein. Algoritmul utilizat pentru hash-uri este ».
Rezultate de pe site-ul oficial:
Lățimea de bandă (megabiți/s)

Ping (ms)

Configurația de test:
- Intel Core i7-3820QM și Intel Core i7-5200U
- Plăci de rețea Intel 82579LM și Intel I218LM
- Linux 4.6.1
- Configurația WireGuard: ChaCha20 de 256 biți cu Poly1305 pentru MAC
- Prima configurație IPsec: ChaCha20 de 256 biți cu Poly1305 pentru MAC
- A doua configurație IPsec: AES-256-GCM-128 (cu AES-NI)
- Configurația OpenVPN: pachet de criptare echivalent cu AES de 256 biți cu HMAC-SHA2-256, modul UDP
- Performanța a fost măsurată folosind
iperf3, rezultatul mediu fiind prezentat pentru 30 de minute.
Teoretic, după integrarea în stiva de rețea, WireGuard ar trebui să funcționeze și mai rapid. Însă, în realitate, acest lucru nu este neapărat garantat din cauza trecerii la funcții criptografice încorporate în nucleu prin Crypto API. Este posibil ca nu toate acestea să fie încă optimizate la nivelul performanțelor nativului WireGuard.
Din punctul meu de vedere, WireGuard este perfect pentru utilizator. Toate soluțiile de nivel inferior sunt stipulate în specificații, astfel încât procesul de configurare a unei infrastructuri VPN tipice durează doar câteva minute. Practic, este imposibil să greșești în configurare, — în Habr în 2018. — Procesul de instalare pe site-ul oficial, merită să menționăm în mod special excelenta . O astfel de ușurință de utilizare și compactitate a bazei de cod a fost realizată prin renunțarea la distribuirea cheilor. Nu există un sistem complex de certificate și toată acea nebunie corporativă, cheile de criptare scurte sunt distribuite aproximativ ca cheile SSH.
Proiectul WireGuard se dezvoltă din 2015, a trecut auditul și . Suportul pentru WireGuard este integrat în NetworkManager și systemd, iar patch-urile pentru kernel sunt incluse în distribuțiile de bază Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph și ALT.
Sursa: habr.com
