VPN WireGuard беше приет в клон net-next и е планиран за включване в ядрото на Linux 5.6

Дейвид Милър (Дейвид С. Милър), отговорен за мрежовата подсистема на ядрото на Linux, приел включи в клона net-next патчове с реализация на 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, а пачовете за ядрото са част от основния състав на дистрибуциите Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph и ALT.

В WireGuard се прилага концепцията за маршрутизиране по ключовете за шифроване, която включва привръзка на всеки мрежови интерфейс с частния ключ и използване за свързване на публичните ключове. Обменът на публични ключове за установяване на свързаност се извършва по аналогия с SSH. За съгласуване на ключовете и свързването без стартиране на отделен демон в потребителското пространство се прилага механизмът Noise_IK от Noise Protocol Framework, подобно на поддържането на authorized_keys в SSH. Предаването на данни се извършва чрез инкапсулация в UDP пакети. Поддържа се смяна на IP адреса на VPN сървъра (роуминг) без прекъсване на връзката и автоматична преустройство на клиента.

За шифроване се използва потоковият шифър ChaCha20 и алгоритъм за автентикация на съобщения (MAC) Poly1305, разработени от Даниел Бернщайн (Daniel J. Bernstein), Таня Ланге
(Tanja Lange) и Питър Швабе (Peter Schwabe). ChaCha20 и Poly1305 се позиционират като по-бързи и безопасни аналози на AES-256-CTR и HMAC, чиято софтуерна реализация позволява постигане на фиксирано време за изпълнение без необходимост от специална хардуерна поддръжка. За генериране на общия таен ключ се използва протоколът на Дифи-Хелман за елиптични криви в реализация Curve25519, също предложена от Даниел Бернщайн. За хеширане се използва алгоритъм BLAKE2s (RFC7693).

При тестиране производителността на WireGuard демонстрира 3.9 пъти по-висока пропускна способност и 3.8 пъти по-висока отзивчивост в сравнение с OpenVPN (256-битов AES с HMAC-SHA2-256). В сравнение с IPsec (256-битов ChaCha20+Poly1305 и AES-256-GCM-128) WireGuard показва малко предимство в производителността (13-18%) и намаляване на закъсненията (21-23%). Тестовете са извършени с бързи реализации на алгоритмите за криптиране, разработени от проекта — преносът към стандартния Crypto API на ядрото може да доведе до влошаване на характеристиките.

VPN WireGuard беше приет в клон net-next и е планиран за включване в ядрото на Linux 5.6

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster