Ang VPN WireGuard ay tinanggap sa net-next branch at nakatakdang isama sa Linux 5.6 kernel

David Miller (David S. Miller), responsable para sa networking subsystem ng Linux kernel, tinanggap sa net-next branch mga patch sa pagpapatupad ng interface ng VPN mula sa proyekto WireGuard. Sa unang bahagi ng susunod na taon, ang mga pagbabagong naipon sa net-next branch ay magiging batayan para sa pagpapalabas ng Linux kernel 5.6.

Ang mga pagtatangka na itulak ang WireGuard code sa pangunahing kernel ay ginawa sa nakalipas na ilang taon, ngunit nanatiling hindi matagumpay dahil sa pagkakatali sa pagmamay-ari na pagpapatupad ng mga cryptographic function na ginamit upang mapabuti ang pagganap. Sa una, ang mga function na ito ay iminungkahi para sa kernel bilang karagdagang mababang antas ng Zinc API, na maaaring palitan sa kalaunan ang karaniwang Crypto API.

Kasunod ng mga talakayan sa kumperensya ng Kernel Recipes, ang mga tagalikha ng WireGuard noong Setyembre gumawa ng kompromiso na desisyon ilipat ang iyong mga patch upang magamit ang Crypto API na available sa core, kung saan may mga reklamo ang mga developer ng WireGuard sa larangan ng pagganap at pangkalahatang seguridad. Napagpasyahan na ipagpatuloy ang pagbuo ng Zinc API, ngunit bilang isang hiwalay na proyekto.

Noong Nobyembre, ang mga developer ng kernel nagpunta bilang tugon sa isang kompromiso at sumang-ayon na ilipat ang bahagi ng code mula sa Zinc patungo sa pangunahing kernel. Sa pangkalahatan, ang ilang bahagi ng Zinc ay ililipat sa core, ngunit hindi bilang isang hiwalay na API, ngunit bilang bahagi ng subsystem ng Crypto API. Halimbawa, ang Crypto API na kasama mabilis na pagpapatupad ng ChaCha20 at Poly1305 algorithm na inihanda sa WireGuard.

Kaugnay ng paparating na paghahatid ng WireGuard sa pangunahing core, ang tagapagtatag ng proyekto inihayag tungkol sa muling pagsasaayos ng repositoryo. Upang pasimplehin ang pag-unlad, ang monolithic na "WireGuard.git" na repository, na idinisenyo upang umiral nang hiwalay, ay papalitan ng tatlong magkahiwalay na mga repositoryo, na mas angkop para sa pag-aayos ng trabaho gamit ang code sa pangunahing kernel:

  • wireguard-linux.git - isang kumpletong kernel tree na may mga pagbabago mula sa proyekto ng Wireguard, ang mga patch mula sa kung saan ay susuriin para maisama sa kernel at regular na ililipat sa net/net-next branch.
  • wireguard-tool.git - isang repositoryo para sa mga utility at script na tumatakbo sa espasyo ng gumagamit, tulad ng wg at wg-quick. Maaaring gamitin ang repositoryo upang lumikha ng mga pakete para sa mga pamamahagi.
  • wireguard-linux-compat.git - isang repository na may variant ng module, na ibinibigay nang hiwalay mula sa kernel at kasama ang compat.h layer upang matiyak ang pagiging tugma sa mas lumang mga kernel. Ang pangunahing pag-unlad ay isasagawa sa wireguard-linux.git repository, ngunit hangga't may pagkakataon at pangangailangan sa mga user, isang hiwalay na bersyon ng mga patch ay susuportahan din sa gumaganang anyo.

Paalalahanan ka namin na ang VPN WireGuard ay ipinatupad batay sa mga modernong pamamaraan ng pag-encrypt, nagbibigay ng napakataas na pagganap, madaling gamitin, walang komplikasyon at napatunayan na ang sarili sa maraming malalaking deployment na nagpoproseso ng malalaking volume ng trapiko. Ang proyekto ay nabuo mula noong 2015, na-audit at pormal na pagpapatunay ginamit na mga paraan ng pag-encrypt. Ang suporta ng WireGuard ay isinama na sa NetworkManager at systemd, at ang mga patch ng kernel ay kasama sa mga base distribution Hindi matatag si Debian, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph ΠΈ ALT.

Ginagamit ng WireGuard ang konsepto ng encryption key routing, na kinabibilangan ng pag-attach ng pribadong key sa bawat network interface at paggamit nito upang itali ang mga pampublikong key. 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 gumagamit, 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 at awtomatikong muling i-configure ang kliyente.

Para sa pag-encrypt ginamit stream cipher ChaCha20 at message authentication algorithm (MAC) Poly1305, dinisenyo ni Daniel Bernstein (Daniel J. Bernstein), Tanya Lange
(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).

Sa pagsubok Nagpakita ang Performance WireGuard ng 3.9 beses na mas mataas na throughput at 3.8 beses na mas mataas na pagtugon kumpara sa OpenVPN (256-bit AES na may HMAC-SHA2-256). Kung ikukumpara sa IPsec (256-bit ChaCha20+Poly1305 at AES-256-GCM-128), nagpapakita ang WireGuard ng bahagyang pagpapabuti ng performance (13-18%) at mas mababang latency (21-23%). Ang mga pagsubok ay isinagawa gamit ang mabilis na pagpapatupad ng mga algorithm ng pag-encrypt na binuo ng proyekto - ang paglilipat sa karaniwang Crypto API ng kernel ay maaaring humantong sa mas masamang pagganap.

Ang VPN WireGuard ay tinanggap sa net-next branch at nakatakdang isama sa Linux 5.6 kernel

Pinagmulan: opennet.ru

Magdagdag ng komento