Днес Линус премести клона net-next с VPN интерфейси . За това събитие в пощенския списък на WireGuard.

В момента продължава събирането на кода за новото ядро на Linux 5.6. WireGuard е бърз VPN от ново поколение, който използва съвременна криптография. Той е разработван първоначално като по-проста и удобна алтернатива на съществуващите VPN. Авторът е канадския специалист по информационна сигурност Джейсън Доненфилд (Jason A. Donenfeld). През август 2018 година WireGuard от Линус Торвалдс. По това време започна работата по включването на VPN в ядрото на Linux. Процесът се забави малко.
«Виждам, че Джейсън е направил пул-заявка за включване на WireGuard в ядрото, — написа Линус на 2 август 2018 година. — Мога ли просто отново да изразя любовта си към този VPN и да се надявам на бързо сливане? Може би кодът не е идеален, но прегледах го и в сравнение с ужасите на OpenVPN и IPSec, това е истинско произведение на изкуството».
Въпреки желанието на Линус, сливането се забави с година и половина. Основната причина се оказа свързването с конфиденциални реализации на криптографски функции, които се използваха за повишаване на производителността. След дълги преговори през септември 2019 година беше да се пренесат пачовете на наличните в ядрото функции Crypto API, към които разработчиците на WireGuard имат забележки в областта на производителността и общата сигурност. Но беше решено, че родните криптофункции на WireGuard ще бъдат отделени в нискоуровневия Zinc API и с времето ще бъдат портнати в ядрото. През ноември разработчиците на ядрото сдържаха обещанието и да пренесат в основното ядро част от кода от Zinc. Например в Crypto API подготвените в WireGuard бързи реализации на алгоритмите ChaCha20 и Poly1305.
В крайна сметка на 9 декември 2019 година Дейвид Милър (David S. Miller), отговорен за мрежовата подсистема на ядрото на Linux, включи в клона net-next реализацията на VPN интерфейса от проекта WireGuard.
А днес, 29 януари 2020 година, промените бяха изпратени на Линус за включване в ядрото.

Обявените предимства на WireGuard пред други VPN решения:
- Лесен за използване.
- Използва съвременна криптография: Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF и т.н.
- Компактен разбираем код, по-лесно за проучване за уязвимости.
- Висока производителност.
- Ясна и добре обмислена .
Цялата основна логика на WireGuard заема по-малко от 4000 реда код, докато OpenVPN и IPSec имат стотици хиляди реда.
В WireGuard се прилага концепцията за маршрутизация чрез ключове за шифриране, която включва привързване на всеки мрежови интерфейс към затворен ключ и използване за свързване на отворени ключове. Обменът на отворени ключове за установяване на връзка се извършва по аналогия с SSH. За съгласуване на ключовете и свързването, без да се стартира отделен демон в пространството на потребителя, се прилага механизмът Noise_IK от , подобен на поддържането на authorized_keys в SSH. Предаването на данни се извършва чрез инкапсулация в UDP пакети. Поддържа се смяна на IP адреса на VPN сървъра (роуминг) без прекъсване на връзката с автоматична пренастройка на клиента, — Opennet.
За шифроване потоковият шифър и алгоритъм за автентикация на съобщения (MAC) , разработени от Даниел Бернщайн (), Таня Ланге (Tanja Lange) и Питър Швабе (Peter Schwabe). ChaCha20 и Poly1305 се считат за по-бързи и сигурни аналози на AES-256-CTR и HMAC, чиято софтуерна реализация позволява достигане на фиксирано време за изпълнение без използване на специална хардуерна поддръжка. За генериране на споделения таен ключ се прилага протоколът на Дифие-Хелман върху елиптични криви в реализацията на , също предложен от Даниел Бернщайн. За хеширане се използва алгоритъмът ».
Резултати от официалния сайт:
Пропускателна способност (мегабит/с)

Забавяне (мс)

Тестова конфигурация:
- Intel Core i7-3820QM и Intel Core i7-5200U
- Gigabit карти Intel 82579LM и Intel I218LM
- Linux 4.6.1
- Конфигурация на WireGuard: 256-битен ChaCha20 с Poly1305 за MAC
- Първа конфигурация на IPsec: 256-битен ChaCha20 с Poly1305 за MAC
- Втора конфигурация на IPsec: AES-256-GCM-128 (с AES-NI)
- Конфигурация на OpenVPN: еквивалентен шифриран набор 256-битен AES с HMAC-SHA2-256, режим UDP
- Производителността беше измерена с помощта на
iperf3, показва среден резултат за 30 минути.
Теоретично, след интеграцията в мрежовия стек, WireGuard трябва да работи дори по-бързо. Но на практика не е задължително да бъде така, поради преминаването към вградените в ядрото криптографски функции Crypto API. Възможно е не всички от тях да са оптимизирани до нивото на производителността на нативния WireGuard.
"От моята гледна точка, WireGuard е изключително подходящ за потребителя. Всички нискоуровневи решения са взети в спецификацията, така че процесът на подготовка на типичната VPN инфраструктура отнема само няколко минути. Налагането на грешни конфигурации е практически невъзможно," казва Хабре през 2018 година. — Процесът на инсталиране на официалния сайт, отделно искам да подчертая отличната . Тази леснота на използване и компактност на кодовата база беше постигната чрез отказ от разпространение на ключове. Тук няма сложна система за сертификати и всичките тези корпоративни ужаси, кратките шифрователни ключове се разпространяват приблизително като SSH-ключове.
Проектът WireGuard се развива от 2015 година, той премина одит и . Поддръжката на WireGuard е интегрирана в NetworkManager и systemd, а патчовете за ядрото влизат в основния състав на дистрибуциите Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph и ALT.
Източник: habr.com
