В ядро DragonFly BSD добавлена поддержка VPN WireGuard

В состав ядра операционной системы DragonFly BSD принято около 100 изменений, связанных с реализацией поддержки VPN WireGuard. Драйвер «wg» с поддержкой протокола WireGuard перенесён из FreeBSD, а код криптографических функций, сетевого интерфейса и ioctl API (для управления из пространства пользователя) заимствован из OpenBSD. Изменения в утилиту ifconfig, необходимые для настройки VPN, перенесены из OpenBSD. Реализация совместима со всеми официальными клиентами WireGuard для Linux, Windows, macOS, *BSD, iOS и Android. DragonFly BSD стала пятой открытой ОС после Linux, OpenBSD, NetBSD и FreeBSD с интегрированной поддержкой WireGuard.

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

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

Источник: http://www.opennet.ru/opennews/art.shtml?num=60585