В ядро Linux 5.6 включиха VPN WireGuard

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

В ядро Linux 5.6 включиха 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 г., промените бяха изпратени на Линус за включване в ядрото.

В ядро Linux 5.6 включиха VPN WireGuard

Заявените предимства на WireGuard спрямо другите VPN решения:

  • Лесен за използване.
  • Използва съвременна криптография: Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF и т.н.
  • Компактен четим код, по-лесен за проучване на уязвимости.
  • Висока производителност.
  • Ясна и добре обмислена спецификация.

Цялата логика на WireGuard заема по-малко от 4000 реда код, докато OpenVPN и IPSec имат стотици хиляди реда.

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

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

Резултати за тестове на производителността от официалния сайт:

Пропускателна способност (мегабит/с)
В ядро Linux 5.6 включиха VPN WireGuard

Пинг (мс)
В ядро Linux 5.6 включиха VPN WireGuard

Тестова конфигурация:

  • Intel Core i7-3820QM и Intel Core i7-5200U
  • Гигабитни карти 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 година. — Процесът на инсталация е подробно описан на официалния сайт, и особено искам да подчертая отличната подкрепа за OpenWRT. Тази простота на използване и компактност на кода беше постигната чрез отказ от разпространение на ключове. Няма сложна система с сертификати и всякакви корпоративни ужасяващи неща, късите ключове за шифроване се разпространяват по подобие на SSH-ключовете.

Проектът WireGuard се развива от 2015 година, той премина одит и формална верификация. Подкрепата за WireGuard е интегрирана в NetworkManager и systemd, а пачовете за ядрото са част от основния състав на дистрибуциите Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph и ALT.

Източник: habr.com

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