VPN WireGuard iekļauts Linux kodolā 5.6

Å odien Linuss pārcēla sev tÄ«kla nākamo filiāli ar VPN saskarnēm WireGuard. Par Å”o notikumu сŠ¾Š¾Š±Ń‰ŠøŠ»Šø WireGuard adresātu sarakstā.

VPN WireGuard iekļauts Linux kodolā 5.6

PaÅ”laik turpinās kodu vākÅ”ana jaunajam Linux 5.6 kodolam. WireGuard ir ātrs nākamās paaudzes VPN, kas ievieÅ” modernu kriptogrāfiju. Sākotnēji tas tika izstrādāts kā vienkārŔāka un ērtāka alternatÄ«va esoÅ”ajiem VPN. Autors ir kanādieÅ”u informācijas droŔības speciālists Džeisons A. Donenfelds. 2018. gada augustā WireGuard saņēma uzslavas Linuss Torvalds. Ap to laiku sākās VPN iekļauÅ”ana Linux kodolā. Process aizņēma nedaudz ilgāku laiku.

ā€œEs redzu, ka Džeisons ir iesniedzis pieprasÄ«jumu iekļaut WireGuard kodolā,ā€ Linuss rakstÄ«ja 2. gada 2018. augustā. ā€” Vai es varu vēlreiz apliecināt savu mÄ«lestÄ«bu pret Å”o VPN un cerēt uz drÄ«zu apvienoÅ”anos? Kods var nebÅ«t ideāls, bet es to paskatÄ«jos, un, salÄ«dzinot ar OpenVPN un IPSec Å”ausmām, tas ir Ä«sts mākslas darbs.

Neskatoties uz Linusa vēlmi, apvienoÅ”anās ievilkās pusotru gadu. Galvenā problēma izrādÄ«jās saistÄ«ta ar patentētu kriptogrāfijas funkciju ievieÅ”anu, kas tika izmantota veiktspējas uzlaboÅ”anai. Pēc ilgām sarunām 2019. gada septembrÄ« tā arÄ« bija tika pieņemts kompromisa lēmums tulkot ielāpus kodolā pieejamajām Crypto API funkcijām, par kurām WireGuard izstrādātājiem ir sÅ«dzÄ«bas veiktspējas un vispārējās droŔības jomā. Bet viņi nolēma nodalÄ«t vietējās WireGuard kriptogrāfijas funkcijas atseviŔķā zema lÄ«meņa cinka API un galu galā portēt tās uz kodolu. NovembrÄ« kodola izstrādātāji turēja solÄ«jumu un vienojās pārsÅ«tÄ«t daļu koda no cinka uz galveno kodolu. Piemēram, Crypto API iekļauts ātras ChaCha20 un Poly1305 algoritmu ievieÅ”anas, kas sagatavotas programmā WireGuard.

Visbeidzot, 9. gada 2019. decembrÄ« Deivids S. Millers, kurÅ” bija atbildÄ«gs par Linux kodola tÄ«kla apakÅ”sistēmu, pieņemts uz tÄ«klu-nākamo filiāli ielāpus ar VPN saskarnes ievieÅ”anu no WireGuard projekta.

Un Å”odien, 29. gada 2020. janvārÄ«, izmaiņas tika iekļautas Linusā, lai tās iekļautu kodolā.

VPN WireGuard iekļauts Linux kodolā 5.6

Apgalvotās WireGuard priekŔrocības salīdzinājumā ar citiem VPN risinājumiem:

  • Ērti lietojams.
  • Izmanto modernu kriptogrāfiju: Noise protokolu ietvars, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF u.c.
  • Kompakts, lasāms kods, vieglāk izmeklēt ievainojamÄ«bas.
  • Augsta veiktspēja.
  • Skaidrs un izstrādāts specifikācija.

Visa WireGuard pamata loÄ£ika aizņem mazāk nekā 4000 koda rindiņu, savukārt OpenVPN un IPSec prasa simtiem tÅ«kstoÅ”u rindiņu.

"WireGuard izmanto Å”ifrÄ“Å”anas atslēgas marÅ”rutÄ“Å”anas koncepciju, kas ietver privātās atslēgas pievienoÅ”anu katram tÄ«kla interfeisam un publisko atslēgu izmantoÅ”anu, lai to saistÄ«tu. Publiskās atslēgas tiek apmainÄ«tas, lai izveidotu savienojumu lÄ«dzÄ«gi kā SSH. Lai vienotos par atslēgām un izveidotu savienojumu, nepalaižot atseviŔķu dēmonu lietotāja telpā, Noise_IK mehānisms no TrokŔņa protokola sistēmalÄ«dzÄ«gi kā Author_keys uzturÄ“Å”ana SSH. Datu pārraide tiek veikta, iekapsulējot UDP paketēs. Tas atbalsta VPN servera IP adreses maiņu (viesabonÄ“Å”ana), neatvienojot savienojumu ar automātisku klienta pārkonfigurāciju, - raksta Opennet.

Å ifrÄ“Å”anai lietots straumes Å”ifrs ChaCha20 un ziņojumu autentifikācijas algoritms (MAC) Poly1305, dizains Daniels Bernsteins (Daniels J. Bernsteins), Tanja Lange un PÄ«ters Å vābe. ChaCha20 un Poly1305 ir pozicionēti kā ātrāki un droŔāki AES-256-CTR un HMAC analogi, kuru programmatÅ«ras ievieÅ”ana ļauj sasniegt fiksētu izpildes laiku, neizmantojot Ä«paÅ”u aparatÅ«ras atbalstu. Lai Ä£enerētu koplietotu slepeno atslēgu, ievieÅ”anā tiek izmantots eliptiskās lÄ«knes Difija-Helmana protokols Curve25519, ko ierosinājis arÄ« Daniels Bernsteins. JaukÅ”anai izmantotais algoritms ir BLAKE2s (RFC7693)'.

rezultātus veiktspējas testi no oficiālās vietnes:

Joslas platums (megabits/s)
VPN WireGuard iekļauts Linux kodolā 5.6

Ping (ms)
VPN WireGuard iekļauts Linux kodolā 5.6

Testa konfigurācija:

  • Intel Core i7-3820QM un Intel Core i7-5200U
  • Gigabit kartes Intel 82579LM un Intel I218LM
  • Linux 4.6.1
  • WireGuard konfigurācija: 256 bitu ChaCha20 ar Poly1305 priekÅ” MAC
  • Pirmā IPsec konfigurācija: 256 bitu ChaCha20 ar Poly1305 MAC
  • Otrā IPsec konfigurācija: AES-256-GCM-128 (ar AES-NI)
  • OpenVPN konfigurācija: AES 256 bitu ekvivalents Å”ifru komplekts ar HMAC-SHA2-256, UDP režīms
  • Veiktspēja tika mērÄ«ta, izmantojot iperf3, parāda vidējo rezultātu 30 minÅ«Å”u laikā.

Teorētiski, kad WireGuard ir integrēts tīkla kaudzē, tam vajadzētu darboties vēl ātrāk. Taču patiesībā tas ne vienmēr tā būs, jo notiek pāreja uz kodolā iebūvētajām Crypto API kriptogrāfijas funkcijām. Varbūt ne visi no tiem vēl ir optimizēti vietējā WireGuard veiktspējas līmenim.

ā€œNo mana viedokļa WireGuard parasti ir ideāls lietotājam. Visi zema lÄ«meņa lēmumi tiek pieņemti specifikācijā, tāpēc tipiskas VPN infrastruktÅ«ras sagatavoÅ”anas process aizņem tikai dažas minÅ«tes. Ir gandrÄ«z neiespējami sajaukt konfigurāciju - ŠæŠøсŠ°Š»Šø Habrē 2018. gadā. ā€” UzstādÄ«Å”anas process sÄ«ki aprakstÄ«ts oficiālajā vietnē es vēlētos atseviŔķi atzÄ«mēt izcilo OpenWRT atbalsts. Å Ä« koda bāzes lietoÅ”anas vienkārŔība un kompaktums tika panākts, novērÅ”ot atslēgu izplatÄ«Å”anu. Nav sarežģītas sertifikātu sistēmas un visas Ŕīs korporatÄ«vās Å”ausmas; Ä«sās Å”ifrÄ“Å”anas atslēgas tiek izplatÄ«tas lÄ«dzÄ«gi kā SSH atslēgas.

WireGuard projekts attÄ«stās kopÅ” 2015. gada, tam ir veikts audits un formāla pārbaude. WireGuard atbalsts ir integrēts NetworkManager un systemd, un kodola ielāpi ir iekļauti Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph un ALT bāzes izplatÄ«jumos.

Avots: www.habr.com

Pievieno komentāru