Ua ʻae ʻia ʻo VPN WireGuard i ka lālā ʻupena a hiki ke hoʻokomo ʻia i loko o ka Linux 5.6 kernel.

David Miller (David S. Miller), kuleana no ka subsystem pūnaewele o ka Linux kernel, ʻae ʻia i ka upena-lala nā pā me ka hoʻokōʻana i ka pilina VPN mai ka papahana ʻO WireGuard. I ka hoʻomaka ʻana o ka makahiki e hiki mai ana, ʻo nā hoʻololi i hōʻiliʻili ʻia i ka lālā net-next e lilo i kumu no ka hoʻokuʻu ʻana i ka Linux kernel 5.6.

Ua hana ʻia nā hoʻāʻo ʻana e pana i ka code WireGuard i loko o ka kernel nui i nā makahiki i hala iho nei, akā ʻaʻole i kūleʻa ma muli o ka hoʻopaʻa ʻia ʻana i nā hoʻokō pono o nā hana cryptographic i hoʻohana ʻia e hoʻomaikaʻi i ka hana. I ka wā mua, ʻo kēia mau hana noiʻi ʻia no ka kernel ma ke ʻano he Zinc API haʻahaʻa haʻahaʻa, hiki ke hoʻololi i ka API Crypto maʻamau.

Ma hope o nā kūkākūkā ma ka hālāwai Kernel Recipes, nā mea hana o WireGuard i Kepakemapa hana i ka hoʻoholo kuʻikahi e hoʻololi i kāu mau ʻāpana e hoʻohana i ka Crypto API i loaʻa i ke kumu, kahi i hoʻopiʻi ai nā mea hoʻomohala WireGuard i ke kahua o ka hana a me ka palekana ākea. Ua hoʻoholo ʻia e hoʻomau i ka hoʻomohala ʻana i ka Zinc API, akā ma ke ʻano he papahana kaʻawale.

I Nowemapa, nā mea hoʻomohala kernel hele i ka pane ʻana i kahi kuʻikahi a ʻae ʻia e hoʻololi i kahi ʻāpana o ke code mai Zinc i ka kernel nui. ʻO ka mea nui, e hoʻoneʻe ʻia kekahi mau mea Zinc i ke kumu, akā ʻaʻole ma ke ʻano he API kaʻawale, akā ma ke ʻano he ʻāpana o ka ʻōnaehana Crypto API. No ka laʻana, ua loaʻa ka Crypto API hui pū ʻia hoʻokō wikiwiki o ka ChaCha20 a me Poly1305 algorithm i hoʻomākaukau ʻia ma WireGuard.

E pili ana i ka lawe ʻana mai o WireGuard i ke kumu nui, ka mea nāna i hoʻokumu i ka papahana kūkala ʻia e pili ana i ka hoʻoponopono hou ʻana i ka waihona. No ka hoʻomaʻamaʻa ʻana i ka hoʻomohala ʻana, e hoʻololi ʻia ka waihona monolithic "WireGuard.git", i hoʻolālā ʻia e noho kaʻawale, e ʻekolu mau waihona ʻokoʻa, ʻoi aku ka maikaʻi no ka hoʻonohonoho ʻana i ka hana me ke code i loko o ka kernel nui:

  • wireguard-linux.git - he kumulāʻau kernel piha me nā hoʻololi mai ka papahana Wireguard, nā ʻāpana e nānā ʻia no ka hoʻokomo ʻana i loko o ka kernel a hoʻololi mau ʻia i nā lālā net/net-next.
  • wireguard-mea hana.git - he waihona no nā pono hana a me nā palapala e holo ana ma kahi o ka mea hoʻohana, e like me wg a me wg-wikiwiki. Hiki ke hoʻohana ʻia ka waihona no ka hana ʻana i nā pūʻolo no ka hāʻawi ʻana.
  • wireguard-linux-compat.git - kahi waihona me kahi ʻano ʻokoʻa o ka module, i hoʻolako ʻia i kahi kaʻawale mai ka kernel a me ka papa compat.h e hōʻoia i ka hoʻohālikelike ʻana me nā kernels kahiko. E hoʻokō ʻia ka hoʻomohala nui ma ka waihona wireguard-linux.git, akā i ka manawa e loaʻa ai ka manawa a me ka pono i waena o nā mea hoʻohana, e kākoʻo ʻia kahi ʻano ʻokoʻa o nā patch i ke ʻano hana.

E hoʻomanaʻo mākou iā ʻoe ua hoʻokō ʻia ʻo VPN WireGuard ma ke kumu o nā ʻano hoʻopunipuni hou, hāʻawi i ka hana kiʻekiʻe loa, maʻalahi ka hoʻohana ʻana, ʻaʻohe pilikia a ua hōʻoia ʻo ia iā ia iho i ka nui o nā deployments nui e hana ana i ka nui o nā kaʻa. Ke ulu nei ka papahana mai 2015, ua loiloi ʻia a hōʻoia kūhelu hoʻohana ʻia nā ʻano hoʻopunipuni. Ua hoʻohui ʻia ke kākoʻo ʻo WireGuard i NetworkManager a me systemd, a ua hoʻokomo ʻia nā ʻāpana kernel i nā māhele kumu ʻAʻole paʻa ʻo Debian, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Māhele и ALT.

Hoʻohana ʻo WireGuard i ka manaʻo o ka hoʻopili ʻana i ke kī kī, e pili ana i ka hoʻopili ʻana i kahi kī pilikino i kēlā me kēia kikowaena pūnaewele a hoʻohana iā ia e hoʻopaʻa i nā kī lehulehu. Hoʻololi ʻia nā kī lehulehu e hoʻokumu i kahi pilina ma ke ʻano like me SSH. No ke kūkākūkā ʻana i nā kī a hoʻopili me ka ʻole o ka holo ʻana i kahi daemon kaʻawale ma kahi o ka mea hoʻohana, ka mīkini Noise_IK mai Kūlana Kūlana Noisee like me ka mālama ʻana i nā authorized_keys ma SSH. Lawe ʻia ka lawe ʻana i ka ʻikepili ma o ka encapsulation ma nā ʻeke UDP. Kākoʻo ia i ka hoʻololi ʻana i ka helu IP o ka server VPN (roaming) me ka ʻole o ka wehe ʻana i ka pilina a hoʻonohonoho hou i ka mea kūʻai aku.

No ka hoʻopunipuni i ʻ a? stream cipher ChaCha20 a me ka algorithm authentication memo (MAC) ʻO Poly1305, i hoʻolālā ʻia e Daniel Bernstein (Daniel J. Bernstein), Tanya Lange
(Tanja Lange) a me Peter Schwabe. Hoʻonohonoho ʻia ʻo ChaCha20 a me Poly1305 e like me nā analogues wikiwiki a palekana o AES-256-CTR a me HMAC, ka hoʻokō polokalamu e hiki ai ke hoʻokō i kahi manawa hoʻokō paʻa me ka ʻole o ka hoʻohana ʻana i ke kākoʻo ʻenehana kūikawā. No ka hana ʻana i kahi kī huna, hoʻohana ʻia ka elliptic curve Diffie-Hellman protocol i ka hoʻokō Helu Curve25519, ua noi pū ʻia e Daniel Bernstein. ʻO ka algorithm i hoʻohana ʻia no ka hashing BLAKE2s (RFC7693).

ma hoʻāʻo Ua hōʻike ʻo Performance WireGuard i nā manawa 3.9 kiʻekiʻe aʻe a me 3.8 mau manawa kiʻekiʻe o ka pane ʻana i hoʻohālikelike ʻia me OpenVPN (256-bit AES me HMAC-SHA2-256). Hoʻohālikelike ʻia me IPsec (256-bit ChaCha20 + Poly1305 a me AES-256-GCM-128), hōʻike ʻo WireGuard i kahi hoʻomaikaʻi iki o ka hana (13-18%) a me ka latency haʻahaʻa (21-23%). Ua hana ʻia nā hoʻāʻo me ka hoʻohana wikiwiki ʻana i nā algorithm encryption i hoʻomohala ʻia e ka papahana - ʻo ka hoʻololi ʻana i ka Crypto API maʻamau o ka kernel hiki ke alakaʻi i ka hana ʻino.

Ua ʻae ʻia ʻo VPN WireGuard i ka lālā ʻupena a hiki ke hoʻokomo ʻia i loko o ka Linux 5.6 kernel.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka