Agbakwunyela mmejuputa VPN ọhụrụ, WireGuard na koodu FreeBSD.

В дерево исходных текстов 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.

Ka anyị na-echetara gị na VPN WireGuard na-emejuputa atumatu na ndabere nke ọgbara ọhụrụ ụzọ ezoro ezo ụzọ, na-enye nnọọ elu arụmọrụ, dị mfe iji, free nke nsogbu na-egosikwa onwe ya na a ọnụ ọgụgụ nke nnukwu deployments na-ahazi nnukwu mpịakọta nke okporo ụzọ. Ihe oru ngo a na-etolite kemgbe 2015, ma mee nyocha na nkwenye nke usoro nzuzo eji eme ihe. WireGuard na-eji echiche nke ntụgharị igodo nzuzo, nke gụnyere itinye igodo nzuzo na interface netwọk ọ bụla yana iji ya kechie igodo ọha.

A na-agbanwe igodo ọha iji guzobe njikọ n'otu aka ahụ na SSH. Iji kparịta igodo na jikọọ na-enweghị iji daemon dị iche na oghere onye ọrụ, a na-eji usoro Noise Protocol Framework's Noise_IK, dị ka idowe igodo ikike na SSH. A na-eme nnyefe data site na mkpuchi na ngwugwu UDP. Ọ na-akwado ịgbanwe adreesị IP nke ihe nkesa VPN (na-agagharị) na-ewepụghị njikọ ahụ na nhazigharị ndị ahịa akpaka.

Izo ya ezo na-eji ChaCha20 iyi cipher na Poly1305 ozi nkwenye algọridim (MAC), nke Daniel J. Bernstein mepụtara, Tanja Lange na Peter Schwabe. A na-edobe ChaCha20 na Poly1305 dị ka ngwa ngwa na nchekwa dị mma nke AES-256-CTR na HMAC, mmemme ngwanrọ nke na-enye ohere ịnweta oge igbu oge na-enweghị iji nkwado ngwaike pụrụ iche. Iji wepụta igodo nzuzo nkekọrịta, a na-eji usoro elliptical curve Diffie-Hellman na mmejuputa Curve25519, nke Daniel Bernstein tụkwara ya. A na-eji BLAKE2s algọridim (RFC7693) maka hashing.

isi: opennet.ru

Tinye a comment