WireGuard "прийде" в ядро ​​Linux - чому?

Наприкінці липня розробники VPN-тунелю WireGuard запропонували набір патчів, які зроблять їх програмне забезпечення для організації VPN-тунелів частиною ядра Linux. Проте точна дата реалізації «задумки» поки що залишається невідомою. Під катом поговоримо про цей інструмент докладніше.

WireGuard "прийде" в ядро ​​Linux - чому?
/ фото Tambako The Jaguar CC

Коротко про проект

WireGuard - VPN-тунель нового покоління, створений Джейсоном Доненфельдом (Jason A. Donenfeld), головою компанії Edge Security. Проект розроблявся як спрощена та спритна альтернатива OpenVPN та IPsec. Перша версія продукту містила лише 4 тис. рядків коду. Для порівняння, в OpenVPN близько 120 тис. рядків, а в IPSec - 420 тис.

За словами розробників, WireGuard нескладно налаштувати, а безпека протоколу досягається за рахунок перевірених криптографічних алгоритмів. При зміні мережі: Wi-Fi, LTE або Ethernet потрібно щоразу перепідключатися до VPN-сервера. Сервери WireGuard не розривають з'єднання, навіть якщо користувач отримав нову IP-адресу.

Незважаючи на те, що WireGuard спочатку заточений під Linux-ядро, розробники подбали та про портативну версію інструменту для Android-пристроїв. Додаток поки що недоопрацьований, проте спробувати його у справі можна вже зараз. Для цього потрібно стати одним із тестерів.

В цілому WireGuard користується досить великою популярністю і навіть був реалізований кількома VPN-провайдерами, наприклад Mullvad та AzireVPNВ. У мережі опубліковано велика кількість посібників з налаштування цього рішення. Наприклад, є гайди, які створюють користувачі, а є гайди, підготовлені авторами проекту.

Технічні подробиці

В офіційної документації (Стор.18) зазначено, що пропускна спроможність у WireGuard вчетверо вище, ніж у OpenVPN: 1011 Мбіт/с проти 258 Мбіт/с відповідно. WireGuard випереджає і стандартне рішення для Linux IPsec у того 881 Мбіт/с. Перевершує він його і за простотою налаштування.

Після обміну ключами (VPN-підключення ініціалізується майже як у SSH) і встановлення з'єднання WireGuard самостійно вирішує всі інші завдання: немає необхідності турбуватися маршрутизації, контролю стану та ін.

WireGuard "прийде" в ядро ​​Linux - чому?
/ фото Anders Hojbjerg CC

Для встановлення знадобиться дистрибутив із ядром Linux «старше» 4.1. Його можна знайти у репозиторіях основних дистрибутивів Linux.

$ sudo add-apt-repository ppa:hda-me/wireguard
$ sudo apt update
$ sudo apt install wireguard-dkms wireguard-tools

Як відзначають редактори xakep.ru, самостійне складання з вихідних текстів також нескладне. Достатньо підняти інтерфейс і згенерувати відкритий та закритий ключі:

$ sudo ip link add dev wg0 type wireguard
$ wg genkey | tee privatekey | wg pubkey > publickey

WireGuard не використовує інтерфейс для роботи з криптопровайдером CryptoAPI. Замість нього використовується потоковий шифр. ChaCha20, криптографічна імітівставка Poly1305 та власні криптографічні хеш-функції.

Секретний ключ генерується із застосуванням протоколу Діффі - Хеллмана на базі еліптичної кривої Curve25519. При хешуванні застосовуються хеш-функції ПЛІНКА2 и SipHash. За рахунок формату міток часу TAI64N протокол відкидає пакети з меншим значенням timestamp, тим самим запобігаючи DoS- и replay-атаки.

При цьому WireGuard задіює функцію ioctl для контролю введення/виводу (раніше використовувався netlink), що робить код чистіше та простіше. Переконатися в цьому можна, зазирнувши у код конфігурації.

Плани розробників

Поки що WireGuard – це out-of-tree модуль ядра. Але автор проекту Джейсон Доненфельд каже, що настав час для повноцінної реалізації в ядрі Linux. Так як він простіше і надійніше за інші рішення. Джейсона у цьому плані підтримує навіть сам Лінус Торвальдс — він назвав код WireGuard «твором мистецтва».

Але про точні дати впровадження WireGuard в ядро ​​поки що ніхто не говорить. І ледве це станеться з виходом серпневого Linux kernel 4.18. Однак є ймовірність, що це станеться у найближчому майбутньому: у версії 4.19 чи 5.0.

Коли WireGuard буде додано до ядра, розробники хочуть допрацювати програму для Android-пристроїв і почати писати програму під iOS. Крім того, планується завершити реалізації на Go та Rust та портувати їх на macOS, Windows та BSD. Також планується реалізація WireGuard для більш «екзотичних систем»: ДПДК, FPGA, а також безліч інших цікавих речей. Всі вони перераховані в to-do-списку авторів проекту.

PS Ще кілька статей з нашого корпоративного блогу:

Основний напрямок нашої діяльності – надання хмарних сервісів:

Віртуальна інфраструктура (IaaS) | PCI DSS хостинг | Хмара ФЗ-152 | SAP-хостинг | Віртуальна СГД | Шифрування даних у хмарі | хмарне сховище

Джерело: habr.com

Додати коментар або відгук