FreeBSD код базасына жаңа VPN енгізуі, WireGuard қосылды.

В дерево исходных текстов FreeBSD приняты изменения с новой реализацией VPN WireGuard, основанной на коде модуля ядра, совместно подготовленного основными командами разработчиков FreeBSD и WireGuard при участии Джейсона Доненфилда (Jason A. Donenfeld), автора VPN WireGuard, и Джона Болдуина (John H. Baldwin), известного разработчика GDB и FreeBSD, в начале 2000-х годов реализовавшего поддержку SMP и NUMA в ядре FreeBSD. После принятия драйвера в состав FreeBSD (sys/dev/wg), его разработка и сопровождение отныне будет вестись в репозитории FreeBSD.

Перед принятием кода при поддержке организации FreeBSD Foundation было проведено полное рецензирование изменений, в ходе которого также было проанализировано взаимодействие драйвера с остальными подсистемами ядра и оценена возможность задействования предоставляемых ядром криптографических примитивов.

Для использования необходимых драйверу криптографических алгоритмов было произведено расширение API криптоподсистемы ядра FreeBSD, в который была добавлена обвязка, позволяющая использовать через стандартный крипто-API не поддерживаемые во FreeBSD алгоритмы, используя реализацию необходимых алгоритмов из библиотеки libsodium. Из алгоритмов, встроенных в драйвер оставлен лишь код для вычисления хэшей Blake2, так как предоставляемая во FreeBSD реализация данного алгоритма завязана на фиксированный размер хэша.

Кроме того, в процессе рецензирования была проведена оптимизация кода, позволившая поднять эффективность распределения нагрузки на многоядерных CPU (обеспечена равномерная балансировка привязки задач шифрования и расшифровки пакета к ядрам CPU). В итоге накладные расходы при обработке пакетов были приближены к реализации драйвера для Linux. В коде также обеспечена возможность использования драйвера ossl для ускорения операций шифрования.

В отличие от прошлой попытки интеграции WireGuard во FreeBSD в новой реализации задействована штатная утилита wg, а не модифицированная версия ifconfig, что позволило унифицировать настройку в Linux и FreeBSD. Утилита wg как и драйвер включена в состав исходных текстов FreeBSD, что стало возможным благодаря изменению лицензии на код wg (код теперь доступен под лицензиями MIT и GPL). Прошлая попытка включения WireGuard в состав FreeBSD была предпринята в 2020 году, но завершилась скандалом, в результате которого уже добавленный код был удалён из-за низкого качества, безалаберной работы с буферами, использования заглушек вместо проверок, неполной реализации протокола и нарушения лицензии GPL.

Естеріңізге сала кетейік, VPN WireGuard заманауи шифрлау әдістері негізінде жүзеге асырылады, өте жоғары өнімділікті қамтамасыз етеді, пайдалану оңай, асқынулары жоқ және трафиктің үлкен көлемін өңдейтін бірқатар ірі іске асыруларда өзін дәлелдеді. Жоба 2015 жылдан бері дамып келеді, қолданылатын шифрлау әдістерін тексеруден және ресми тексеруден өтті. WireGuard әрбір желі интерфейсіне жеке кілтті байланыстыруды және байланыстыру үшін ашық кілттерді пайдалануды қамтитын шифрлау кілтін бағыттау тұжырымдамасын пайдаланады.

Байланыс орнату үшін ашық кілттерді алмасу SSH-ге ұқсас. Кілттерді келіссөздер жүргізу және бөлек пайдаланушы кеңістігі демонын іске қоспай қосылу үшін SSH жүйесінде авторизацияланған_кілттерді сақтауға ұқсас Шу протоколының негізінің Noise_IK механизмі пайдаланылады. Деректерді беру UDP пакеттерінде инкапсуляция арқылы жүзеге асырылады. Ол VPN серверінің (роуминг) IP мекенжайын клиентті автоматты түрде қайта конфигурациялау арқылы байланысты үзбей өзгертуді қолдайды.

Шифрлау ChaCha20 ағынының шифрін және Даниэль Дж. Бернштейн, Танья Ланге және Питер Швабе әзірлеген Poly1305 хабарламаның түпнұсқалығын растау (MAC) алгоритмін пайдаланады. ChaCha20 және Poly1305 AES-256-CTR және HMAC жылдам және қауіпсіз аналогтары ретінде орналастырылған, бағдарламалық қамтамасыз етуді іске асыру арнайы аппараттық қолдауды қажет етпей-ақ бекітілген орындау уақытына қол жеткізуге мүмкіндік береді. Ортақ құпия кілтті генерациялау үшін Curve25519 іске асырудағы Диффи-Хеллман эллиптикалық қисық хаттамасы, сонымен қатар Даниэль Бернштейн ұсынған. Хэширлеу үшін BLAKE2s алгоритмі (RFC7693) пайдаланылады.

Ақпарат көзі: opennet.ru

пікір қалдыру