В ядрото на операционната система 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).
Източник: opennet.ru
