Днес Линус премести клона 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
- Гигабитни карти 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
