Se ha añadido una nueva implementación de VPN WireGuard a la base de código de FreeBSD.

Se han realizado cambios en el árbol fuente de FreeBSD con una nueva implementación de VPN WireGuard, basada en el código del módulo del kernel, desarrollado conjuntamente por los principales equipos de desarrolladores de FreeBSD y WireGuard, con la participación de Jason Donenfeld, el autor de VPN WireGuard, y John Baldwin, conocido desarrollador de GDB y FreeBSD, quien implementó el soporte SMP y NUMA en el kernel de FreeBSD a inicios de los años 2000. Tras la aceptación del controlador en FreeBSD (sys/dev/wg), su desarrollo y mantenimiento se realizará en el repositorio de FreeBSD.

Antes de la aceptación del código, se llevó a cabo una revisión completa de los cambios con el apoyo de la FreeBSD Foundation, durante la cual se analizó la interacción del controlador con los demás subsistemas del kernel y se evaluó la posibilidad de utilizar los primitivos criptográficos proporcionados por el kernel.

Para utilizar los algoritmos criptográficos necesarios para el controlador, se amplió la API de la subsistema criptográfico del kernel de FreeBSD, que añadió un envoltorio que permite usar, a través de la API criptográfica estándar, algoritmos no soportados en FreeBSD, utilizando la implementación necesaria de la biblioteca libsodium. De los algoritmos integrados en el controlador, se ha dejado solo el código para calcular hash Blake2, ya que la implementación de este algoritmo en FreeBSD está atada a un tamaño fijo de hash.

Además, durante el proceso de revisión se llevó a cabo una optimización del código que aumentó la eficiencia de distribución de carga en CPU multinúcleo (asegurando un balance uniforme en la asignación de tareas de cifrado y descifrado de paquetes a los núcleos de CPU). Como resultado, los costos administrativos en el procesamiento de paquetes se acercaron a la implementación del controlador para Linux. El código también proporciona la posibilidad de usar el controlador ossl para acelerar las operaciones de cifrado.

A diferencia de los intentos anteriores de integrar WireGuard en FreeBSD, en esta nueva implementación se utiliza la herramienta estándar wg, en lugar de una versión modificada de ifconfig, lo que permitió unificar la configuración en Linux y FreeBSD. La herramienta wg, al igual que el controlador, está incluida en los códigos fuente de FreeBSD, lo que fue posible gracias a la modificación de la licencia del código wg (el código ahora está disponible bajo las licencias MIT y GPL). El intento anterior de incluir WireGuard en FreeBSD se realizó en 2020, pero terminó en un escándalo, resultando en la eliminación del código ya añadido debido a su baja calidad, manejo descuidado de los búferes, uso de parches en lugar de comprobaciones, implementación incompleta del protocolo y violación de la licencia GPL.

Recordemos que VPN WireGuard se basa en métodos de cifrado modernos, ofrece un rendimiento muy alto, es fácil de usar, libre de complicaciones y ha demostrado ser eficaz en varias implementaciones importantes que manejan grandes volúmenes de tráfico. El proyecto ha estado en desarrollo desde 2015, ha pasado una auditoría y una verificación formal de los métodos de cifrado utilizados. WireGuard aplica el concepto de enrutamiento basado en claves de cifrado, lo que implica vincular una clave privada a cada interfaz de red y utilizarla para relacionar las claves públicas.

El intercambio de claves públicas para establecer conexiones se realiza de manera similar a SSH. Para la negociación de claves y la conexión sin iniciar un demonio separado en el espacio de usuario, se utiliza el mecanismo Noise_IK del Noise Protocol Framework, similar al mantenimiento de authorized_keys en SSH. La transmisión de datos se lleva a cabo mediante encapsulación en paquetes UDP. Se admite el cambio IP del servidor VPN (roaming) sin interrumpir la conexión con la reconfiguración automática del cliente.

Para el cifrado se utiliza el cifrado de flujo ChaCha20 y el algoritmo de autenticación de mensajes (MAC) Poly1305, desarrollados por Daniel Bernstein, Tanja Lange y Peter Schwabe. ChaCha20 y Poly1305 se posicionan como alternativas más rápidas y seguras al AES-256-CTR y HMAC, cuya implementación de software permite lograr un tiempo de ejecución fijo sin requerir soporte hardware especializado. Para la generación de la clave secreta compartida se aplica el protocolo Diffie-Hellman en curvas elípticas en la implementación Curve25519, también propuesta por Daniel Bernstein. Se utiliza el algoritmo de hash BLAKE2s (RFC7693).

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster