VPN WireGuard ໄດ້ຖືກຍອມຮັບເຂົ້າໄປໃນສາຂາຕໍ່ໄປແລະຖືກກໍານົດສໍາລັບການລວມຢູ່ໃນ Linux 5.6 kernel

Дэвид Миллер (David S. Miller), отвечающий за сетевую подсистему ядра Linux, ຍອມຮັບ ໄປຫາສາຂາຕໍ່ໄປ ເພີ້ມ с реализацией VPN-интерфейса от проекта WireGuard. В начале следующего года изменения, накапливаемые в ветке net-next, лягут в основу выпуска ядра Linux 5.6.

Попытки продвижения кода WireGuard в основной состав ядра предпринимались последние несколько лет, но оставались без результата из-за привязки к собственным реализациям криптографических функций, которые применялись для повышения производительности. Вначале данные функции были ສະເໜີ для ядра в качестве дополнительного низкоуровневого API Zinc, который со временем смог бы заменить штатный Crypto API.

После переговоров на конференции Kernel Recipes, создатели WireGuard в сентябре приняли компромиссное решение перевести свои патчи на использование имеющегося в ядре Crypto API, к которому у разработчиков WireGuard имеются претензии в области производительности и общей безопасности. API Zinc было решено продолжать развивать, но как отдельный проект.

В ноября разработчики ядра ໄປ на ответный компромисс и согласились перенести в основное ядро часть кода из Zinc. По сути некоторые компоненты Zinc будут перенесены в ядро, но не как отдельный API, а как часть подсистемы Crypto API. Например, в Crypto API уже ລວມ подготовленные в WireGuard быстрые реализации алгоритмов ChaCha20 и Poly1305.

В связи с предстоящей поставкой WireGuard в основном составе ядра, основатель проекта ປະ​ກາດ о реструктуризации репозитория. Для упрощения разработки на смену монолитному репозиторию «WireGuard.git», который был рассчитан на обособленное существование, придут три отдельных репозитория, лучше подходящие для организации работы с кодом в основном ядре:

  • wireguard-linux.git — полное дерево ядра с изменениями от проекта Wireguard, патчи из которого будут рецензироваться для включения в ядро и регулярно переноситься в ветки net/net-next.
  • wireguard-tools.git — репозиторий для запускаемых в пространстве пользователя утилит и скриптов, таких как wg и wg-quick. Репозиторий можно использовать для создания пакетов для дистрибутивами.
  • wireguard-linux-compat.git — репозиторий с вариантом модуля, поставляемым отдельной от ядра и включающим слой compat.h для обеспечения совместимости со старыми ядрами. Основная разработка будет вестись в репозитории wireguard-linux.git, но пока есть возможность и потребность у пользователей обособленный вариант патчей также будет поддерживаться в рабочем виде.

ໃຫ້ພວກເຮົາເຕືອນທ່ານວ່າ VPN WireGuard ໄດ້ຖືກປະຕິບັດບົນພື້ນຖານຂອງວິທີການເຂົ້າລະຫັດທີ່ທັນສະໄຫມ, ສະຫນອງປະສິດທິພາບສູງຫຼາຍ, ການນໍາໃຊ້ງ່າຍ, ບໍ່ມີຄວາມສັບສົນແລະໄດ້ພິສູດຕົວຂອງມັນເອງໃນຈໍານວນການນໍາໃຊ້ຂະຫນາດໃຫຍ່ທີ່ຂະບວນການຂະຫນາດໃຫຍ່ຂອງການຈະລາຈອນ. ໂຄງ​ການ​ດັ່ງ​ກ່າວ​ໄດ້​ຮັບ​ການ​ພັດ​ທະ​ນາ​ນັບ​ຕັ້ງ​ແຕ່​ປີ 2015​, ໄດ້​ຮັບ​ການ​ກວດ​ສອບ​ແລະ​ ການຢັ້ງຢືນຢ່າງເປັນທາງການ ວິທີການເຂົ້າລະຫັດທີ່ໃຊ້. ການສະຫນັບສະຫນູນ WireGuard ຖືກລວມເຂົ້າກັບ NetworkManager ແລະ systemd, ແລະ kernel patches ແມ່ນລວມຢູ່ໃນການແຈກຢາຍພື້ນຖານ. Debian ບໍ່ສະຖຽນລະພາບ, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, ຫົວຂໍ້ຍ່ອຍ и ALT.

WireGuard ໃຊ້ແນວຄວາມຄິດຂອງເສັ້ນທາງລະຫັດການເຂົ້າລະຫັດ, ເຊິ່ງກ່ຽວຂ້ອງກັບການຕິດກະແຈສ່ວນຕົວໃສ່ແຕ່ລະສ່ວນຕິດຕໍ່ເຄືອຂ່າຍ ແລະໃຊ້ມັນເພື່ອຜູກມັດກະແຈສາທາລະນະ. ລະຫັດສາທາລະນະຖືກແລກປ່ຽນເພື່ອສ້າງການເຊື່ອມຕໍ່ໃນລັກສະນະທີ່ຄ້າຍຄືກັນກັບ SSH. ເພື່ອເຈລະຈາຄີແລະເຊື່ອມຕໍ່ໂດຍບໍ່ມີການແລ່ນ daemon ແຍກຕ່າງຫາກໃນພື້ນທີ່ຜູ້ໃຊ້, ກົນໄກ Noise_IK ຈາກ Noise Protocol Framework, похожий на поддержание authorized_keys в SSH. Передача данных осуществляется через инкапсуляцию в пакеты UDP. Поддерживается смена IP-адреса VPN-сервера (роуминг) без разрыва соединения и автоматической перенастройкой клиента.

ສໍາລັບການເຂົ້າລະຫັດ ຖືກນໍາໃຊ້ stream cipher ChaCha20 ແລະລະບົບການກວດສອບຂໍ້ຄວາມ (MAC) Poly1305ອອກແບບໂດຍ Daniel Bernstein (Daniel J. Bernstein), Tanya Lange
(Tanja Lange) ແລະ Peter Schwabe. ChaCha20 ແລະ Poly1305 ຖືກຈັດເປັນ analogues ທີ່ໄວກວ່າແລະປອດໄພກວ່າຂອງ AES-256-CTR ແລະ HMAC, ການປະຕິບັດຊອບແວທີ່ອະນຸຍາດໃຫ້ບັນລຸເວລາການປະຕິບັດທີ່ກໍານົດໂດຍບໍ່ມີການນໍາໃຊ້ການສະຫນັບສະຫນູນຮາດແວພິເສດ. ເພື່ອສ້າງລະຫັດລັບທີ່ໃຊ້ຮ່ວມກັນ, ເສັ້ນໂຄ້ງຮູບສ້ວຍ Diffie-Hellman protocol ຖືກໃຊ້ໃນການຈັດຕັ້ງປະຕິບັດ. Curve25519, также предложенной Дэниелом Бернштейном. Для хэширования используются алгоритм BLAKE2s (RFC7693).

ທີ່ ການທົດສອບ производительности WireGuard продемонстрировал в 3.9 раза более высокую пропускную способность и в 3.8 раз более высокую отзывчивость, по сравнению с OpenVPN (256-bit AES c HMAC-SHA2-256). По сравнению с IPsec (256-bit ChaCha20+Poly1305 и AES-256-GCM-128) в WireGuard наблюдается небольшое опережение по производительности (13-18%) и снижение задержек (21-23%). Тесты выполнены при использовании развиваемых проектом быстрых реализаций алгоритмов шифрования — перевод на штатный Crypto API ядра возможно приведёт к ухудшению показателей.

VPN WireGuard ໄດ້ຖືກຍອມຮັບເຂົ້າໄປໃນສາຂາຕໍ່ໄປແລະຖືກກໍານົດສໍາລັບການລວມຢູ່ໃນ Linux 5.6 kernel

ແຫຼ່ງຂໍ້ມູນ: opennet.ru

ເພີ່ມຄວາມຄິດເຫັນ