Дейвид Милър (), отговорен за мрежовата подсистема на ядрото на Linux, включването в клона net-next с реализация на VPN интерфейса от проекта . В началото на следващата година промените, натрупани в клона 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, пачовете от който ще бъдат рецензирани за включване в ядрото и редовно прехвърляни в клонове net/net-next.
- — репозиторий за изпълними в пространството на потребителя утилити и скриптове, като wg и wg-quick. Репозиторият може да се използва за създаване на пакети за дистрибуции.
- — репозиторий с вариант на модула, поставян отделно от ядрото и включващ слой compat.h за осигуряване на съвместимост със стари ядра. Основната разработка ще се води в репозитория wireguard-linux.git, но за момента, ако има необходимост от потребителите, отделният вариант с пачове също ще бъде поддържан в работен вид.
Да напомня, че VPN WireGuard е реализиран на основата на съвременни методи за криптиране, предоставя изключително висока производителност, лесен е за ползване, лишен от усложнения и е показал отлични резултати в редица големи внедрения, обработващи големи обеми трафик. Проектът се развива от 2015 година, премина през одит и използваните методи за криптиране. Поддръжката на WireGuard вече е интегрирана в NetworkManager и systemd, а пачовете за ядрото влизат в базовите дистрибуции , Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, и .
В WireGuard се използва концепция за маршрутизиране по ключове за криптиране, при която всеки мрежов интерфейс е свързан с частен ключ и се прилага за свързването на публични ключове. Обменът на публични ключове за установяване на връзка става по аналогия с SSH. За съгласуване на ключовете и свързването без стартиране на отделен демон в пространството на потребителя се прилага механизмът Noise_IK от , подобен на поддържането на authorized_keys в SSH. Прехвърлянето на данни става чрез инкапсулация в UDP пакети. Поддържа се смяна на IP адреса на VPN сървъра (роуминг) без прекъсване на връзката и автоматична пренастройка на клиента.
За криптиране потоков шифър и алгоритъм за удостоверяване на съобщения (MAC) , разработени от Даниел Бернщайн (), Таня Ланге
(Tanja Lange) и Петер Швабе (Peter Schwabe). ChaCha20 и Poly1305 са позиционирани като по-бързи и безопасни аналози на AES-256-CTR и HMAC, като софтуерната им реализация позволява постигане на фиксирано време за изпълнение без необходимост от специализирана хардуерна поддръжка. За генериране на съвместния секретен ключ се използва протоколът на Дифи-Хелман на елиптични криви в реализация, предложена също от Даниел Бернщайн. За хеширане се използва алгоритъм .
При производителността на 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 на ядрото може да доведе до влошаване на показателите.
Източник: opennet.ru
