Ang VPN WireGuard ay kasama sa Linux kernel 5.6

Ngayon inilipat ni Linus ang net-next branch na may mga interface ng VPN sa kanyang sarili WireGuard. Tungkol sa kaganapang ito сообщили sa WireGuard mailing list.

Ang VPN WireGuard ay kasama sa Linux kernel 5.6

Kasalukuyang nagpapatuloy ang pangongolekta ng code para sa bagong Linux 5.6 kernel. Ang WireGuard ay isang mabilis, susunod na henerasyong VPN na gumagamit ng makabagong kriptograpiya. Ito ay orihinal na binuo bilang isang mas simple at mas maginhawang alternatibo sa mga umiiral na VPN. Ang may-akda ay ang Canadian information security specialist na si Jason A. Donenfeld. Noong Agosto 2018, ang WireGuard nakatanggap ng papuri ni Linus Torvalds. Noong panahong iyon, nagsimula ang trabaho na isama ang VPN sa Linux kernel. Medyo natagalan ang proseso.

"Nakikita ko na gumawa ng pull request si Jason na isama ang WireGuard sa kernel," isinulat ni Linus noong Agosto 2, 2018. β€” Maaari ko bang muling ipahayag ang aking pag-ibig para sa VPN na ito at umaasa sa isang pagsasanib sa lalong madaling panahon? Maaaring hindi perpekto ang code, ngunit tiningnan ko ito, at kumpara sa mga kakila-kilabot ng OpenVPN at IPSec, ito ay isang tunay na gawa ng sining."

Sa kabila ng kagustuhan ni Linus, tumagal ang pagsasanib sa loob ng isang taon at kalahati. Ang pangunahing problema ay nakatali sa pagmamay-ari na pagpapatupad ng mga cryptographic function, na ginamit upang mapabuti ang pagganap. Pagkatapos ng mahabang negosasyon noong Setyembre 2019 ito ay isang kompromiso na desisyon ang ginawa isalin ang mga patch sa mga function ng Crypto API na available sa kernel, kung saan may mga reklamo ang mga developer ng WireGuard sa larangan ng pagganap at pangkalahatang seguridad. Ngunit nagpasya silang paghiwalayin ang katutubong WireGuard crypto function sa isang hiwalay na mababang antas ng Zinc API at sa huli ay i-port ang mga ito sa kernel. Noong Nobyembre, tinupad ng mga developer ng kernel ang kanilang pangako at sumang-ayon ilipat ang bahagi ng code mula sa Zinc patungo sa pangunahing kernel. Halimbawa, sa Crypto API kasama mabilis na pagpapatupad ng ChaCha20 at Poly1305 algorithm na inihanda sa WireGuard.

Sa wakas, noong Disyembre 9, 2019, si David S. Miller, na responsable para sa networking subsystem ng Linux kernel, tinanggap sa net-next branch mga patch sa pagpapatupad ng isang interface ng VPN mula sa proyektong WireGuard.

At ngayon, Enero 29, 2020, ang mga pagbabago ay napunta kay Linus para maisama sa kernel.

Ang VPN WireGuard ay kasama sa Linux kernel 5.6

Inaangkin na mga pakinabang ng WireGuard sa iba pang mga solusyon sa VPN:

  • Madaling gamitin.
  • Gumagamit ng modernong cryptography: Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, atbp.
  • Compact, nababasang code, mas madaling imbestigahan para sa mga kahinaan.
  • Mataas na pagganap.
  • Malinaw at detalyado espesipikasyon.

Ang lahat ng pangunahing lohika ng WireGuard ay tumatagal ng mas mababa sa 4000 linya ng code, samantalang ang OpenVPN at IPSec ay nangangailangan ng daan-daang libong linya.

β€œGinagamit ng WireGuard ang konsepto ng pagruruta ng susi ng pag-encrypt, na kinabibilangan ng pag-attach ng pribadong key sa bawat interface ng network at paggamit ng mga pampublikong key upang itali ito. Ang mga pampublikong susi ay ipinagpapalit upang magtatag ng koneksyon sa katulad na paraan sa SSH. Upang makipag-ayos ng mga susi at kumonekta nang hindi nagpapatakbo ng hiwalay na daemon sa espasyo ng user, ang mekanismo ng Noise_IK ay mula sa Framework ng Noise Protocolkatulad ng pagpapanatili ng authorized_keys sa SSH. Ang paghahatid ng data ay isinasagawa sa pamamagitan ng encapsulation sa mga UDP packet. Sinusuportahan nito ang pagbabago ng IP address ng VPN server (roaming) nang hindi dinidiskonekta ang koneksyon sa awtomatikong muling pagsasaayos ng kliyente, - writes Opennet.

Para sa pag-encrypt ginamit stream cipher ChaCha20 at message authentication algorithm (MAC) Poly1305, dinisenyo ni Daniel Bernstein (Daniel J. Bernstein), Tanja Lange at Peter Schwabe. Ang ChaCha20 at Poly1305 ay nakaposisyon bilang mas mabilis at mas ligtas na mga analogue ng AES-256-CTR at HMAC, ang pagpapatupad ng software na nagbibigay-daan sa pagkamit ng isang nakapirming oras ng pagpapatupad nang hindi gumagamit ng espesyal na suporta sa hardware. Upang bumuo ng isang nakabahaging lihim na susi, ang elliptic curve na Diffie-Hellman protocol ay ginagamit sa pagpapatupad Curve25519, iminungkahi din ni Daniel Bernstein. Ang algorithm na ginagamit para sa pag-hash ay BLAKE2s (RFC7693)'.

Natuklasan mga pagsubok sa pagganap mula sa opisyal na website:

Bandwidth (megabit/s)
Ang VPN WireGuard ay kasama sa Linux kernel 5.6

Ping (ms)
Ang VPN WireGuard ay kasama sa Linux kernel 5.6

Pagsusuri ng configuration:

  • Intel Core i7-3820QM at Intel Core i7-5200U
  • Gigabit card Intel 82579LM at Intel I218LM
  • Linux 4.6.1
  • Configuration ng WireGuard: 256-bit ChaCha20 na may Poly1305 para sa MAC
  • Unang configuration ng IPsec: 256-bit ChaCha20 na may Poly1305 para sa MAC
  • Pangalawang IPsec configuration: AES-256-GCM-128 (na may AES-NI)
  • Configuration ng OpenVPN: AES 256-bit equivalent cipher suite na may HMAC-SHA2-256, UDP mode
  • Ang pagganap ay sinusukat gamit ang iperf3, ay nagpapakita ng average na resulta sa loob ng 30 minuto.

Sa teorya, sa sandaling isinama sa network stack, ang WireGuard ay dapat gumana nang mas mabilis. Ngunit sa katotohanan ay hindi ito ang mangyayari dahil sa paglipat sa Crypto API cryptographic function na binuo sa kernel. Marahil hindi pa lahat ng mga ito ay na-optimize sa antas ng pagganap ng katutubong WireGuard.

"Mula sa aking pananaw, ang WireGuard ay karaniwang perpekto para sa gumagamit. Ang lahat ng mga desisyon sa mababang antas ay ginawa sa detalye, kaya ang proseso ng paghahanda ng isang tipikal na imprastraktura ng VPN ay tumatagal lamang ng ilang minuto. Halos imposibleng magkamali sa pagsasaayos - nagsulat sa HabrΓ© noong 2018. β€” Proseso ng pag-install inilarawan nang detalyado sa opisyal na website, nais kong hiwalay na tandaan ang mahusay Suporta sa OpenWRT. Ang kadalian ng paggamit at pagiging compact ng code base ay nakamit sa pamamagitan ng pag-aalis ng pamamahagi ng mga susi. Walang kumplikadong sistema ng sertipiko at lahat ng corporate horror na ito; ang mga maiikling encryption key ay ibinahagi katulad ng mga SSH key.

Ang proyekto ng WireGuard ay nabuo mula noong 2015, na-audit ito at pormal na pagpapatunay. Ang suporta ng WireGuard ay isinama sa NetworkManager at systemd, at ang mga kernel patch ay kasama sa mga base distribution ng Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph at ALT.

Pinagmulan: www.habr.com

Magdagdag ng komento