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

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 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 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 pārcelt kodola galvenajā daļā kodu no Zinc. Piemēram, Crypto API 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 sastāvdaļa net-next zara ar WireGuard projekta VPN saskarnes īstenojumu.
Un šodien, 2020. gada 29. janvārī, izmaiņas nosūtītas Linusam kodola iekļaušanai.

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 .
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 , 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, — Opennet.
Lai šifrētu plūstošā šifra un ziņojumu autentifikācijas algoritms (MAC) , ko izstrādājuši Deivids Bernšteins (), 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 , ko arī piedāvāja Daniel Bernstein. Hashēšanai tiek izmantots algoritms ».
Rezultāti no oficiālās vietnes:
Caurlaidspēja (megabiti/s)

Ping (ms)

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ā Habrā 2018. gadā. — Uzstādīšanas process oficiālajā vietnē, atsevišķi jāuzsver lieliska . Šā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 . 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
