The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Cloudflare опубликовал реализацию VPN WireGuard на языке Rust"
Отправлено opennews, 28-Мрт-19 20:52 
Компания Cloudflare представила (https://blog.cloudflare.com/boringtun-userspace-wireguard-rust/) BoringTun, новую реализацию VPN WireGuard (https://www.wireguard.com/), написанную на языке Rust и работающую целиком в пространстве пользователя. Код проекта распространяется (https://github.com/cloudflare/boringtun) под лицензией BSD.

Проект включает в себя исполняемый файл boringtun с обособленной реализацией WireGuard для Linux и macOS, и библиотеку, которая может использоваться для интеграции функциональности клиента WireGuard в произвольные приложения для любых платформ, включая  iOS и Android. Библиотека включает в себя только элементы протокола  WireGuard без сопутствующих сетевого стека и механизмов туннелирования. Протокол WireGuard спроектирован с оглядкой на простоту и уход от усложнений, что положительно сказывается на надёжности и позволяет достаточно быстро создавать с нуля альтернативные реализации.

Перед созданием нового проекта компанией Cloudflare были проанализированы существующие реализации WireGuard:


-  Эталонный  WireGuard на языке Си (GPLv2), поставляемый в форме модуля для ядра Linux. Обладает самой высокой производительностью, но завязан на ядре Linux и не может применяться обособленно;
-  wireguard-go (https://git.zx2c4.com/wireguard-go/about/) - реализация в пространстве пользователя, написанная на языке Go и поставляемая под лицензией MIT. Проект может применяться в различных ОС, но пока находится на стадии разработки (официального релиза ещё не было, только промежуточные тестовые выпуски);
-  TunSafe (https://tunsafe.com/) - написан на  C++ и поставляется под лицензией AGPL. Включает только VPN-клиент  и использует собственную несовместимую редакцию протокола  WireGuard. Доступен для Windows, Linux, FreeBSD, Android и iOS, но рассчитан на подключение к централизованному провайдеру VPN (https://tunsafe.com/vpn).
-  wireguard-rs (https://github.com/WireGuard/wireguard-rs) - реализация на Rust, находящаяся на начальном этапе разработки, ограниченная пока поддержкой  macOS, не полностью поддерживающая протокол и поставляемая под лицензией GPLv2.


Среди предъявляемых Cloudflare требований к VPN были работа в пространстве пользователя, многоплатформенность и высокая производительность. Наиболее близко к указанным требованиям подходил wireguard-go, но тесты производительности показали, что скорость его работы очень сильно отстаёт от базовой реализации, работающей на уровне ядра. Узким местом оказался язык Go, который прекрасно подходит для создания серверных приложений, но не оптимален для обработки больших потоков raw-пакетов.

Уже имея опыт создания (https://www.opennet.ru/opennews/art.shtml?num=50061) высокопроизводительной реализации протокола QUIC на языке Rust, компания Cloudflare приняла решение создать собственную реализацию BoringTun на языке Rust. Wireguard-rs не был использован из-за очень сырого кода и  лицензии (GPLv2). В текущем BoringTun уже вполне пригоден для экспериментов (час назад выпущен (https://github.com/cloudflare/boringtun/releases) первый релиз), но пока не рекомендован для повсеместного применения так как ещё не завершён внутренний аудит безопасности кода.

Напомним, что в WireGuard применяется концепция маршрутизации по ключам шифрования, которая подразумевает привязку к каждому сетевому интерфейсу закрытого ключа и применение для связывания открытых ключей. Обмен открытыми ключами для установки соединения производится по аналогии с SSH. Для согласования ключей и соединения применяется механизм Noise_IK из Noise Protocol Framework (http://noiseprotocol.org/), похожий на поддержание authorized_keys в SSH и не требующий запуска отдельного демона в пространстве пользователя. Передача данных осуществляется через инкапсуляцию в пакеты UDP. Поддерживается смена IP-адреса VPN-сервера (руминг) без разрыва соединения и автоматической перенастройкой клиента.

Для защиты канала связи в  WireGuard используется (https://www.wireguard.io/protocol/)  потоковый шифр ChaCha20 (http://cr.yp.to/chacha.html) и алгоритм аутентификации сообщений (MAC) Poly1305 (http://cr.yp.to/mac.html), разработанные Дэниелом Бернштейном (Daniel J. Bernstein (http://cr.yp.to/djb.html)), Таней Ланге
(Tanja Lange) и Питером Швабе (Peter Schwabe). ChaCha20 и Poly1305 позиционируются как более быстрые и безопасные аналоги AES-256-CTR и HMAC,  программная реализация которых позволяет добиться фиксированного времени выполнения без задействования специальной аппаратной поддержки. Для генерации совместного секретного ключа применяется протокол Диффи-Хеллмана на эллиптических кривых в реализации Curve25519 (http://cr.yp.to/ecdh.html), также предложенной Дэниелом Бернштейном. Для хэширования используются алгоритм BLAKE2s (RFC7693) (https://www.opennet.ru/opennews/art.shtml?num=35676).

URL: https://blog.cloudflare.com/boringtun-userspace-wireguard-rust/
Новость: https://www.opennet.ru/opennews/art.shtml?num=50411

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру