Å odien Linuss pÄrcÄla sev tÄ«kla nÄkamo filiÄli ar VPN saskarnÄm WireGuard. Par Å”o notikumu ŃŠ¾Š¾Š±ŃŠøŠ»Šø WireGuard adresÄtu sarakstÄ.
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Ä.
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.
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)'.
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.