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