VPN WireGuard е включен в ядрото на Linux 5.6

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

VPN WireGuard е включен в ядрото на Linux 5.6

Събирането на код за новото ядро ​​на Linux 5.6 в момента продължава. WireGuard е бърз VPN от следващо поколение, който прилага модерна криптография. Първоначално е разработен като по-проста и по-удобна алтернатива на съществуващите VPN мрежи. Авторът е канадският специалист по информационна сигурност Джейсън А. Доненфелд. През август 2018 г. WireGuard получи похвала от Линус Торвалдс. По това време започна работа по включването на VPN в ядрото на Linux. Процесът отне малко повече време.

„Виждам, че Джейсън е направил заявка за изтегляне, за да включи WireGuard в ядрото“, написа Линус на 2 август 2018 г. — Мога ли още веднъж да заявя любовта си към този VPN и да се надявам на скорошно сливане? Кодът може да не е перфектен, но аз го погледнах и в сравнение с ужасите на OpenVPN и IPSec, той е истинско произведение на изкуството."

Въпреки желанието на Линус, сливането се проточи година и половина. Основният проблем се оказа свързан със собствени реализации на криптографски функции, които се използват за подобряване на производителността. След продължителни преговори през септември 2019 г. беше така беше взето компромисно решение превеждат пачове към функциите на Crypto API, налични в ядрото, към които разработчиците на WireGuard имат оплаквания в областта на производителността и общата сигурност. Но те решиха да отделят собствените крипто функции на WireGuard в отделен Zinc API на ниско ниво и в крайна сметка да ги пренесат към ядрото. През ноември разработчиците на ядрото спазиха обещанието си и съгласен прехвърлете част от кода от Zinc към основното ядро. Например в Crypto API включени бързи имплементации на алгоритмите ChaCha20 и Poly1305, подготвени в WireGuard.

И накрая, на 9 декември 2019 г. Дейвид С. Милър, отговорен за мрежовата подсистема на ядрото на Linux, приел към нетния-следващ клон лепенки с внедряването на VPN интерфейс от проекта WireGuard.

И днес, 29 януари 2020 г., промените отидоха в Linus за включване в ядрото.

VPN WireGuard е включен в ядрото на Linux 5.6

Твърдени предимства на 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, проектирана от Даниел Бърнстейн (Даниел Дж. Бърнщайн), Таня Ланге и Петер Швабе. ChaCha20 и Poly1305 се позиционират като по-бързи и по-безопасни аналози на AES-256-CTR и HMAC, чиято софтуерна реализация позволява постигане на фиксирано време за изпълнение без използването на специална хардуерна поддръжка. За генериране на споделен таен ключ при изпълнението се използва протоколът Diffie-Hellman с елиптична крива Curve25519, също предложен от Даниел Бърнстейн. Алгоритъм, използван за хеширане BLAKE2s (RFC7693)".

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

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

Пинг (ms)
VPN WireGuard е включен в ядрото на Linux 5.6

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

  • Intel Core i7-3820QM и Intel Core i7-5200U
  • Гигабитови карти Intel 82579LM и Intel I218LM
  • Linux 4.6.1
  • Конфигурация на WireGuard: 256-битов ChaCha20 с Poly1305 за MAC
  • Първа IPsec конфигурация: 256-bit ChaCha20 с Poly1305 за MAC
  • Втора IPsec конфигурация: AES-256-GCM-128 (с AES-NI)
  • Конфигурация на OpenVPN: AES 256-битов еквивалентен набор от шифри с 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.

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

Добавяне на нов коментар