Se ha agregado una nueva implementación de VPN, WireGuard, al código base de FreeBSD.

El árbol de fuentes de FreeBSD se ha actualizado con una nueva implementación de VPN WireGuard, basada en el código del módulo del kernel producido conjuntamente por los equipos principales de desarrollo de FreeBSD y WireGuard con contribuciones de Jason A. Donenfeld, autor de VPN WireGuard, y John H. Baldwin. un conocido desarrollador de GDB y FreeBSD, que implementó soporte para SMP y NUMA en el kernel de FreeBSD a principios de la década de 2000. Una vez que el controlador sea aceptado en FreeBSD (sys/dev/wg), su desarrollo y mantenimiento se llevarán a cabo en adelante en el repositorio de FreeBSD.

Antes de aceptar el código, se realizó una revisión completa de los cambios con el apoyo de la Fundación FreeBSD, durante la cual también se analizó la interacción del controlador con el resto de subsistemas del kernel y la posibilidad de utilizar primitivas criptográficas proporcionadas por el kernel. se evaluó.

Para utilizar los algoritmos criptográficos requeridos por el driver, se amplió la API del subsistema criptográfico del kernel de FreeBSD, a lo que se le agregó un arnés que permite el uso de algoritmos no soportados en FreeBSD a través de la API criptográfica estándar, utilizando la implementación del algoritmos necesarios de la biblioteca libsodium. De los algoritmos integrados en el controlador, solo queda el código para calcular hashes Blake2, ya que la implementación de este algoritmo proporcionada en FreeBSD está ligada a un tamaño de hash fijo.

Además, durante el proceso de revisión, se llevó a cabo la optimización del código, lo que permitió aumentar la eficiencia de la distribución de carga en las CPU de múltiples núcleos (se aseguró un equilibrio uniforme en la asignación de tareas de cifrado y descifrado de paquetes a los núcleos de la CPU). Como resultado, la sobrecarga al procesar paquetes fue cercana a la de la implementación del controlador de Linux. El código también ofrece la posibilidad de utilizar el controlador ossl para acelerar las operaciones de cifrado.

A diferencia del intento anterior de integrar WireGuard en FreeBSD, la nueva implementación utiliza la utilidad wg estándar, en lugar de una versión modificada de ifconfig, lo que permite unificar la configuración en Linux y FreeBSD. La utilidad wg, así como el controlador, están incluidos en el código fuente de FreeBSD, lo que fue posible cambiando la licencia del código wg (el código ahora está disponible bajo las licencias MIT y GPL). El último intento de incluir WireGuard en FreeBSD se realizó en 2020, pero terminó en un escándalo, como resultado del cual se eliminó el código ya agregado debido a la baja calidad, el trabajo descuidado con los buffers, el uso de stubs en lugar de cheques, implementación incompleta del protocolo y violación de la licencia GPL.

Le recordamos que VPN WireGuard se implementa sobre la base de métodos de cifrado modernos, proporciona un rendimiento muy alto, es fácil de usar, no presenta complicaciones y ha demostrado su eficacia en una serie de grandes implementaciones que procesan grandes volúmenes de tráfico. El proyecto se viene desarrollando desde 2015 y ha sido sometido a una auditoría y verificación formal de los métodos de cifrado utilizados. WireGuard utiliza el concepto de enrutamiento de claves de cifrado, que implica adjuntar una clave privada a cada interfaz de red y utilizarla para vincular las claves públicas.

Las claves públicas se intercambian para establecer una conexión de forma similar a SSH. Para negociar claves y conectarse sin ejecutar un demonio separado en el espacio del usuario, se utiliza el mecanismo Noise_IK de Noise Protocol Framework, similar a mantener claves_autorizadas en SSH. La transmisión de datos se realiza mediante encapsulación en paquetes UDP. Admite cambiar la dirección IP del servidor VPN (roaming) sin desconectar la conexión con la reconfiguración automática del cliente.

El cifrado utiliza el cifrado de flujo ChaCha20 y el algoritmo de autenticación de mensajes (MAC) Poly1305, desarrollado por Daniel J. Bernstein, Tanja Lange y Peter Schwabe. ChaCha20 y Poly1305 se posicionan como análogos más rápidos y seguros de AES-256-CTR y HMAC, cuya implementación de software permite lograr un tiempo de ejecución fijo sin el uso de soporte de hardware especial. Para generar una clave secreta compartida, se utiliza el protocolo de curva elíptica Diffie-Hellman en la implementación Curve25519, también propuesta por Daniel Bernstein. El algoritmo BLAKE2s (RFC7693) se utiliza para el hash.

Fuente: opennet.ru

Añadir un comentario