Ang VPN WireGuard gidawat sa net-next branch ug gitakda nga ilakip sa Linux 5.6 kernel

David Miller (David S. Miller), responsable sa networking subsystem sa Linux kernel, gidawat sa net-sunod nga sanga mga patsa uban ang pagpatuman sa interface sa VPN gikan sa proyekto WireGuard. Sa sayong bahin sa sunod tuig, ang mga pagbag-o nga natipon sa net-sunod nga sanga mahimong basehan sa pagpagawas sa Linux kernel 5.6.

Ang mga pagsulay sa pagduso sa WireGuard code ngadto sa nag-unang kernel nahimo sa milabay nga pipila ka mga tuig, apan nagpabilin nga wala molampos tungod sa pagkahigot sa proprietary nga pagpatuman sa cryptographic functions nga gigamit sa pagpalambo sa performance. Sa sinugdan, kini nga mga gimbuhaton gisugyot alang sa kernel isip usa ka dugang nga ubos nga lebel nga Zinc API, nga sa katapusan mahimong mopuli sa standard Crypto API.

Pagkahuman sa mga diskusyon sa komperensya sa Kernel Recipes, ang mga tiglalang sa WireGuard kaniadtong Septyembre mihimo ug desisyon sa pagkompromiso ibalhin ang imong mga patch aron magamit ang Crypto API nga magamit sa kinauyokan, diin ang mga developer sa WireGuard adunay mga reklamo sa natad sa pasundayag ug kinatibuk-ang seguridad. Nakahukom nga magpadayon sa pagpalambo sa Zinc API, apan isip usa ka bulag nga proyekto.

Sa Nobyembre, ang mga developer sa kernel miadto agig tubag sa usa ka pagkompromiso ug miuyon nga ibalhin ang bahin sa code gikan sa Zinc ngadto sa punoan nga kernel. Sa tinuud, ang pipila ka mga sangkap sa Zinc ibalhin sa kinauyokan, apan dili ingon usa ka bulag nga API, apan ingon bahin sa subsystem sa Crypto API. Pananglitan, ang Crypto API na apil paspas nga pagpatuman sa ChaCha20 ug Poly1305 nga mga algorithm nga giandam sa WireGuard.

May kalabotan sa umaabot nga paghatud sa WireGuard sa panguna nga kinauyokan, ang nagtukod sa proyekto gipahibalo mahitungod sa restructuring sa repository. Aron pasimplehon ang pag-uswag, ang monolithic nga "WireGuard.git" nga repository, nga gidisenyo nga maglungtad nga nag-inusara, pulihan sa tulo nga bulag nga mga repositoryo, nga mas haum alang sa pag-organisar sa trabaho nga adunay code sa panguna nga kernel:

  • wireguard-linux.git - usa ka kompleto nga punoan sa kernel nga adunay mga pagbag-o gikan sa proyekto sa Wireguard, ang mga patch nga gikan niini susihon aron maapil sa kernel ug kanunay nga ibalhin sa net/net-next nga mga sanga.
  • wireguard-mga gamit.git - usa ka repository alang sa mga utilities ug mga script nga gipadagan sa user space, sama sa wg ug wg-quick. Ang repository mahimong magamit sa paghimo og mga pakete alang sa mga pag-apod-apod.
  • wireguard-linux-compat.git - usa ka tipiganan nga adunay usa ka variant sa module, gihatag nga gilain gikan sa kernel ug lakip ang compat.h layer aron masiguro ang pagkaangay sa mga tigulang nga kernel. Ang nag-unang pag-uswag pagahimoon sa wireguard-linux.git repository, apan basta adunay oportunidad ug panginahanglan sa mga tiggamit, ang usa ka bulag nga bersyon sa mga patch suportahan usab sa pagtrabaho nga porma.

Pahinumdum kami kanimo nga ang VPN WireGuard gipatuman pinasukad sa modernong mga pamaagi sa pag-encrypt, naghatag labi ka taas nga pasundayag, dali gamiton, wala’y mga komplikasyon ug napamatud-an ang kaugalingon sa daghang daghang mga pag-deploy nga nagproseso sa daghang mga volume sa trapiko. Ang proyekto nag-uswag sukad sa 2015, gi-audit ug pormal nga verification mga pamaagi sa pag-encrypt nga gigamit. Ang suporta sa WireGuard gisagol na sa NetworkManager ug systemd, ug ang mga patch sa kernel gilakip sa mga base distribution Dili malig-on si Debian, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph ΠΈ ALT.

Gigamit sa WireGuard ang konsepto sa encryption key routing, nga naglakip sa paglakip sa usa ka pribado nga yawe sa matag interface sa network ug paggamit niini aron mabugkos ang mga yawe sa publiko. Ang mga yawe sa publiko gibaylo aron magtukod usa ka koneksyon sa parehas nga paagi sa SSH. Aron makigsabot sa mga yawe ug magkonektar nga walay pagdagan sa usa ka bulag nga daemon sa user space, ang Noise_IK nga mekanismo gikan sa Framework sa Noise Protocolsusama sa pagmintinar sa authorized_keys sa SSH. Ang pagpadala sa datos gihimo pinaagi sa encapsulation sa mga pakete sa UDP. Gisuportahan niini ang pagbag-o sa IP address sa VPN server (roaming) nga wala gidiskonekta ang koneksyon ug awtomatiko nga gi-configure ang kliyente.

Alang sa pag-encrypt gigamit stream cipher ChaCha20 ug message authentication algorithm (MAC) Poly1305, gidisenyo ni Daniel Bernstein (Daniel J. Bernstein), Tanya Lange
(Tanja Lange) ug Peter Schwabe. Ang ChaCha20 ug Poly1305 gipahimutang nga mas paspas ug mas luwas nga mga analogue sa AES-256-CTR ug HMAC, ang pagpatuman sa software nga nagtugot sa pagkab-ot sa usa ka pirmi nga oras sa pagpatuman nga walay paggamit sa espesyal nga suporta sa hardware. Aron makamugna og usa ka gipaambit nga sekreto nga yawe, ang elliptic curve nga Diffie-Hellman protocol gigamit sa pagpatuman Curve25519, gisugyot usab ni Daniel Bernstein. Ang algorithm nga gigamit alang sa pag-hash mao ang BLAKE2s (RFC7693).

sa pagsulay Gipakita sa Performance WireGuard ang 3.9 ka beses nga mas taas nga throughput ug 3.8 ka beses nga mas taas nga pagtubag kumpara sa OpenVPN (256-bit AES nga adunay HMAC-SHA2-256). Kung itandi sa IPsec (256-bit ChaCha20 + Poly1305 ug AES-256-GCM-128), ang WireGuard nagpakita og gamay nga pag-uswag sa performance (13-18%) ug ubos nga latency (21-23%). Gihimo ang mga pagsulay gamit ang paspas nga pagpatuman sa mga algorithm sa pag-encrypt nga gihimo sa proyekto - ang pagbalhin sa sumbanan nga Crypto API sa kernel mahimong mosangput sa mas grabe nga pasundayag.

Ang VPN WireGuard gidawat sa net-next branch ug gitakda nga ilakip sa Linux 5.6 kernel

Source: opennet.ru

Idugang sa usa ka comment