"Darating" ang WireGuard sa Linux kernel - bakit?

Sa katapusan ng Hulyo, iminungkahi ng mga developer ng WireGuard VPN tunnel set ng patch, na gagawing bahagi ng Linux kernel ang kanilang VPN tunneling software. Gayunpaman, ang eksaktong petsa ng pagpapatupad ng "ideya" ay nananatiling hindi alam. Sa ibaba ng hiwa ay pag-uusapan natin ang tool na ito nang mas detalyado.

"Darating" ang WireGuard sa Linux kernel - bakit?
/ larawan Tambako Ang Jaguar CC

Maikling tungkol sa proyekto

Ang WireGuard ay isang susunod na henerasyong VPN tunnel na nilikha ni Jason A. Donenfeld, CEO ng Edge Security. Ang proyekto ay binuo bilang pinasimple at isang mabilis na alternatibo sa OpenVPN at IPsec. Ang unang bersyon ng produkto ay naglalaman lamang ng 4 na libong linya ng code. Para sa paghahambing, ang OpenVPN ay may humigit-kumulang 120 libong linya, at IPSec - 420 libo.

Sa ayon sa mga developer, madaling i-configure ang WireGuard at nakakamit ang seguridad ng protocol sa pamamagitan ng napatunayang cryptographic algorithm. Kapag nagpapalit ng network: Kailangang kumonekta muli ang Wi-Fi, LTE o Ethernet sa VPN server sa bawat oras. Hindi tinatapos ng mga server ng WireGuard ang koneksyon, kahit na nakatanggap ang user ng bagong IP address.

Sa kabila ng katotohanan na ang WireGuard ay orihinal na idinisenyo para sa Linux kernel, ang mga developer inaalagaan at tungkol sa isang portable na bersyon ng tool para sa mga Android device. Ang application ay hindi pa ganap na binuo, ngunit maaari mo itong subukan ngayon. Para dito kailangan mo maging isa sa mga tester.

Sa pangkalahatan, ang WireGuard ay medyo sikat at naging ipinatupad ilang VPN provider, gaya ng Mullvad at AzireVPN. Nai-publish online malaking bilang ng mga gabay sa pag-setup ang desisyong ito. Halimbawa, may mga gabay, na nilikha ng mga gumagamit, at mayroong mga gabay, inihanda ng mga may-akda ng proyekto.

Teknikal na mga detalye

Π’ opisyal na dokumentasyon (p. 18) nabanggit na ang throughput ng WireGuard ay apat na beses na mas mataas kaysa sa OpenVPN: 1011 Mbit/s kumpara sa 258 Mbit/s, ayon sa pagkakabanggit. Ang WireGuard ay nauuna din sa karaniwang solusyon para sa Linux IPsec - mayroon itong 881 Mbit/s. Nahihigitan din nito ito sa kadalian ng pag-setup.

Pagkatapos na palitan ang mga susi (ang koneksyon ng VPN ay sinisimulan na katulad ng SSH) at ang koneksyon ay naitatag, ang WireGuard ay humahawak sa lahat ng iba pang mga gawain nang mag-isa: hindi na kailangang mag-alala tungkol sa pagruruta, kontrol ng estado, atbp. Ang mga karagdagang pagsisikap sa pagsasaayos ay magkakaroon lamang kinakailangan kung gusto mong gumamit ng simetriko na pag-encrypt.

"Darating" ang WireGuard sa Linux kernel - bakit?
/ larawan Anders Hojbjerg CC

Upang mai-install, kakailanganin mo ng pamamahagi na may Linux kernel na mas luma sa 4.1. Ito ay matatagpuan sa mga repositoryo ng mga pangunahing distribusyon ng Linux.

$ sudo add-apt-repository ppa:hda-me/wireguard
$ sudo apt update
$ sudo apt install wireguard-dkms wireguard-tools

Tulad ng tala ng mga editor ng xakep.ru, madali din ang pagpupulong sa sarili mula sa mga pinagmulang teksto. Ito ay sapat na upang buksan ang interface at bumuo ng pampubliko at pribadong mga susi:

$ sudo ip link add dev wg0 type wireguard
$ wg genkey | tee privatekey | wg pubkey > publickey

WireGuard hindi gumagamit interface para sa pagtatrabaho sa isang crypto provider Cryptoapi. Sa halip, isang stream cipher ang ginagamit ChaCha20, cryptographic pagsingit ng imitasyon Poly1305 at proprietary cryptographic hash functions.

Ang lihim na susi ay nabuo gamit ang Protocol ng Diffie-Hellman batay sa elliptic curve Curve25519. Kapag nagha-hash, ginagamit nila mga function ng hash BLAKE2 ΠΈ SipHash. Dahil sa format ng timestamp TAI64N itinatapon ng protocol ang mga packet na may mas maliit na halaga ng timestamp, sa gayon pagpigil sa DoS- ΠΈ muling pag-atake.

Sa kasong ito, ginagamit ng WireGuard ang function na ioctl upang kontrolin ang I/O (dating ginamit netlink), na ginagawang mas malinis at mas simple ang code. Maaari mong i-verify ito sa pamamagitan ng pagtingin sa code ng pagsasaayos.

Mga plano ng developer

Sa ngayon, ang WireGuard ay isang out-of-tree kernel module. Ngunit ang may-akda ng proyekto ay si Jason Donenfeld Siya ay nagsasalita, na ang oras ay dumating na para sa ganap na pagpapatupad sa Linux kernel. Dahil ito ay mas simple at mas maaasahan kaysa sa iba pang mga solusyon. Jason sa bagay na ito sumusuporta kahit si Linus Torvalds mismo ay tinawag ang WireGuard code bilang isang "gawa ng sining."

Ngunit walang nagsasalita tungkol sa eksaktong mga petsa para sa pagpapakilala ng WireGuard sa kernel. AT mahirap mangyayari ito sa paglabas ng August Linux kernel 4.18. Gayunpaman, may posibilidad na mangyari ito sa malapit na hinaharap: sa bersyon 4.19 o 5.0.

Kapag naidagdag ang WireGuard sa kernel, ang mga developer gusto tapusin ang application para sa mga Android device at magsimulang magsulat ng application para sa iOS. Mayroon ding mga plano na kumpletuhin ang mga pagpapatupad sa Go at Rust at i-port ang mga ito sa macOS, Windows at BSD. Pinlano din na ipatupad ang WireGuard para sa higit pang "mga kakaibang sistema": DPDK, FPGA, pati na rin ang maraming iba pang mga kawili-wiling bagay. Lahat sila ay nakalista sa to-do-list mga may-akda ng proyekto.

PS Ilan pang artikulo mula sa aming corporate blog:

Ang pangunahing direksyon ng aming aktibidad ay ang pagkakaloob ng mga serbisyo sa ulap:

Virtual Infrastructure (IaaS) | Pagho-host ng PCI DSS | Ulap FZ-152 | Pagho-host ng SAP | Virtual na imbakan | Pag-encrypt ng data sa cloud | Imbakan ng ulap

Pinagmulan: www.habr.com

Magdagdag ng komento