Linux 5.6 kodolā iekļauta VPN WireGuard

Šodien Linuss pārcēla net-next zaru ar VPN saskarnēm. WireGuard. Par šo notikumu ziņoja WireGuard izsūtīšanas sarakstā.

Linux 5.6 kodolā iekļauta VPN WireGuard

Pašreiz notiek koda vākšana jaunajam Linux 5.6 kodolam. WireGuard ir ātrs nākamās paaudzes VPN ar mūsdienīgu kriptogrāfiju. Tas sākotnēji tika izstrādāts kā vienkāršāka un ērtāka alternatīva esošajiem VPN. Autors ir Kanādas kiberdrošības speciālists Džesons Donenfīlds (Jason A. Donenfeld). 2018. gada augustā WireGuard guva atzinību no Linusa Torvalda. Ap to laiku sākās darbs pie VPN iekļaušanas Linux kodolā. Process nedaudz ieilga.

„Redzu, ka Džesons izveidoja pieprasījumu WireGuard iekļaušanai kodolā,” rakstīja Linuss 2018. gada 2. augustā. „Vai es varu vēlreiz izteikt savu mīlestību pret šo VPN un cerēt uz ātru apvienošanos? Varbūt kods nav ideāls, bet es to esmu pārskatījis, un salīdzinājumā ar OpenVPN un IPSec šausmām tas ir īsts mākslas darbs.”

Neskatoties uz Linusa vēlēšanos, apvienošanās ieilga pusotra gada. Galvenā problēma izrādījās saistībā ar pašu īstenojumu kriptogrāfiskajām funkcijām, kas tika izmantotas veiktspējas uzlabošanai. Pēc ilgām pārrunām 2019. gada septembrī tika pieņemts kompromisa lēmums pārcelt plāksterus uz kodolā esošajām Crypto API funkcijām, par kurām WireGuard izstrādātāji ir izvirzījuši pretenzijas saistībā ar veiktspēju un vispārējo drošību. Taču nolēmām, ka WireGuard natīvas kriptogrāfiskās funkcijas tiks izdalītas atsevišķā zemā līmeņa Zinc API un laika gaitā tiks portētas kodolā. Novembrī kodola izstrādātāji turēja solījumu un piekrīt pārcelt kodola galvenajā daļā kodu no Zinc. Piemēram, Crypto API ir iekļauti preparētās WireGuard ātrās algoritmu ChaCha20 un Poly1305 realizācijas.

Līdz galam, 2019. gada 9. decembrī Deivids Millers (David S. Miller), kurš atbild par Linux kodola tīkla apakšsistēmu, ir pieņēmis ir sastāvdaļa net-next zara labojumi ar WireGuard projekta VPN saskarnes īstenojumu.

Un šodien, 2020. gada 29. janvārī, izmaiņas nosūtītas Linusam kodola iekļaušanai.

Linux 5.6 kodolā iekļauta VPN WireGuard

WireGuard norādītās priekšrocības salīdzinājumā ar citiem VPN risinājumiem:

  • Vienkārši lietojams.
  • Izmanto mūsdienīgu kriptogrāfiju: Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF utt.
  • Kompakts, saprotams kods, vieglāk pētīt ievainojamības.
  • Augsta veiktspēja.
  • Skaidra un izstrādāta specifikācija.

Visa pamata WireGuard loģika aizņem mazāk par 4000 koda rindiņām, kamēr OpenVPN un IPSec ir simtiem tūkstošu rindiņu.

WireGuard izmanto atslēgu maršrutēšanas konceptu, kas paredz saistīšanu ar katru tīkla saskarni ar privāto atslēgu un publisko atslēgu sasaistīšanu. Publisko atslēgu apmaiņa, lai izveidotu savienojumu, tiek veikta līdzīgi kā SSH. Atslēgu saderināšanai un savienojuma izveidei bez atsevišķa lietotāja demona palaišanas tiek izmantots Noise_IK mehānisms no Noise Protocol Framework, kas ir līdzīgs authorized_keys uzturēšanai SSH. Datu pārraide tiek veikta, iepakojot to UDP paketes. Atbalsta VPN servera IP adrešu maiņu (roaming), nepārtraucot savienojumu ar automātisku klienta pārkonfigurāciju, — raksta Opennet.

Lai šifrētu tiek izmantota plūstošā šifra ChaCha20 un ziņojumu autentifikācijas algoritms (MAC) Poly1305, ko izstrādājuši Deivids Bernšteins (Daniel J. Bernstein), Tanja Lange un Peter Schwabe. ChaCha20 un Poly1305 tiek pozicionēti kā ātrāki un drošāki AES-256-CTR un HMAC analogi, kuru programmatūras īstenojums ļauj sasniegt noteiktu izpildes laiku bez speciālās aparatūras atbalsta. Kopējā slepenā atslēga tiek ģenerēta, izmantojot eliptisko līkņu Diffie-Hellman protokolu Curve25519, ko arī piedāvāja Daniel Bernstein. Hashēšanai tiek izmantots algoritms BLAKE2s (RFC7693)».

Rezultāti veiktspējas testi no oficiālās vietnes:

Caurlaidspēja (megabiti/s)
Linux 5.6 kodolā iekļauta VPN WireGuard

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

Testēšanas konfigurācija:

  • Intel Core i7-3820QM un Intel Core i7-5200U
  • Gigabit Intel 82579LM un Intel I218LM kartes
  • Linux 4.6.1
  • WireGuard konfigurācija: 256 bitu ChaCha20 ar Poly1305 MAC
  • Pirma konfigurācija IPsec: 256 bitu ChaCha20 ar Poly1305 MAC
  • Otrā konfigurācija IPsec: AES-256-GCM-128 (ar AES-NI)
  • OpenVPN konfigurācija: ekvivalentais šifrošanas komplekts 256 bitu AES ar HMAC-SHA2-256, UDP režīmā
  • Veiktspēja tika mērīta ar iperf3, vidējais rezultāts par 30 minūtēm.

Teorētiski, pēc integrēšanas tīkla stekā WireGuard vajadzētu darboties vēl ātrāk. Bet reālajā praksē tas ne vienmēr tā būs, ņemot vērā pāreju uz kodolā iekļautajām kriptogrāfiskajām funkcijām Crypto API. Iespējams, ne visas no tām ir vēl optimizētas līdz native WireGuard veiktspējas līmenim.

Manā skatījumā, WireGuard ir ideāls lietotājam. Visas zemākā līmeņa procedūras ir norādītas specifikācijā, tāpēc tipiskas VPN infrastruktūras konfigurēšanas process aizņem vien dažas minūtes. Sačakarēt konfigurāciju praktiski nav iespējams, — rakstīja rakstā Habrā 2018. gadā. — Uzstādīšanas process ir detalizēti aprakstīts oficiālajā vietnē, atsevišķi jāuzsver lieliska OpenWRT atbalsts. Šādas lietošanas vienkāršības un koda bāzes kompaktnes iespējas ir sasniegtas, atsakoties no atslēgu izplatīšanas. Šeit nav sarežģītas sertifikātu sistēmas un visa šī uzņēmuma murga, īsas šifrēšanas atslēgas tiek izplatītas aptuveni tāpat kā SSH atslēgas.

WireGuard projekts ir attīstījies kopš 2015. gada, tas ir izgājis auditu un formālu verifikāciju. WireGuard atbalsts ir integrēts NetworkManager un systemd, un kodola plāksteri ir iekļauti Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph un ALT pamata izplatījumu sastāvā.

Avots: habr.com

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster