David Miller (), encargado del subsistema de red del núcleo de Linux, en la rama net-next con la implementación de la interfaz VPN del proyecto . A principios del próximo año, los cambios acumulados en la rama net-next formarán la base para el lanzamiento del núcleo de Linux 5.6.
Los intentos de promover el código de WireGuard al núcleo principal se han realizado durante los últimos años, pero no han tenido éxito debido a la vinculación con implementaciones criptográficas personalizadas que se usaron para mejorar el rendimiento. Al principio, estas funciones fueron para el núcleo como una API de bajo nivel adicional llamada Zinc, que con el tiempo podría reemplazar a la API Crypto estándar.
Después de las negociaciones en la conferencia Kernel Recipes, los creadores de WireGuard en septiembre para trasladar sus parches a la API Crypto existente en el núcleo, a la que los desarrolladores de WireGuard tienen objeciones en términos de rendimiento y seguridad general. Se decidió continuar desarrollando la API Zinc, pero como un proyecto separado.
En noviembre, los desarrolladores del núcleo alcanzaron un compromiso recíproco y acordaron trasladar parte del código de Zinc al núcleo principal. De hecho, algunos componentes de Zinc serán trasladados al núcleo, pero no como una API separada, sino como parte del subsistema de la API Crypto. Por ejemplo, en la API Crypto ya hay implementaciones rápidas de los algoritmos ChaCha20 y Poly1305 preparadas en WireGuard.
Con la próxima inclusión de WireGuard en el núcleo principal, el fundador del proyecto anunció la reestructuración del repositorio. Para simplificar el desarrollo, en lugar del repositorio monolítico 'WireGuard.git', que fue diseñado para existir de forma independiente, habrá tres repositorios separados, más adecuados para organizar el trabajo con el código en el núcleo principal:
- — un árbol completo del núcleo con los cambios del proyecto WireGuard, cuyos parches serán revisados para su inclusión en el núcleo y se trasladarán regularmente a las ramas net/net-next.
- — un repositorio para utilidades y scripts ejecutados en espacio de usuario, como wg y wg-quick. El repositorio se puede usar para crear paquetes para distribuciones.
- — un repositorio con una variante del módulo, entregado separado del núcleo e incluyendo una capa compat.h para garantizar la compatibilidad con núcleos antiguos. El desarrollo principal se llevará a cabo en el repositorio wireguard-linux.git, pero mientras exista la posibilidad y la necesidad de los usuarios, también se mantendrá una variante aislada de parches en funcionamiento.
Recordemos que la VPN WireGuard se basa en métodos de cifrado modernos, ofrece un rendimiento muy alto, es fácil de usar, carece de complicaciones y ha demostrado ser eficaz en una serie de grandes implementaciones que manejan grandes volúmenes de tráfico. El proyecto ha estado en desarrollo desde 2015, ha pasado una auditoría y de los métodos de cifrado aplicados. El soporte para WireGuard ya está integrado en NetworkManager y systemd, y los parches para el núcleo están incluidos en la base de las distribuciones , Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, y .
En WireGuard se aplica el concepto de enrutamiento por claves de cifrado, que implica la vinculación de una clave privada a cada interfaz de red y la aplicación para la unión de claves públicas. El intercambio de claves públicas para establecer una conexión se realiza de manera similar a SSH. Para el acuerdo de claves y la conexión sin iniciar un daemon separado en el espacio de usuario, se utiliza el mecanismo Noise_IK del , similar al mantenimiento de authorized_keys en SSH. La transmisión de datos se realiza a través de la encapsulación en paquetes UDP. Se admite el cambio de la dirección IP del servidor VPN (roaming) sin interrumpir la conexión y con la reconfiguración automática del cliente.
Para el cifrado un cifrador de flujo y un algoritmo de autenticación de mensajes (MAC) , desarrollado por Daniel Bernstein (), Tanja Lange
(Tanja Lange) y Peter Schwabe (Peter Schwabe). ChaCha20 y Poly1305 se presentan como alternativas más rápidas y seguras a AES-256-CTR y HMAC, cuya implementación de software permite lograr un tiempo de ejecución fijo sin la necesidad de soporte hardware especial. Para la generación de una clave secreta compartida se aplica el protocolo de Diffie-Hellman sobre curvas elípticas con la implementación de , también propuesto por Daniel Bernstein. Se utilizan algoritmos para el hashing .
Al el rendimiento de WireGuard mostró una capacidad de procesamiento 3.9 veces mayor y una mejor respuesta 3.8 veces superior en comparación con OpenVPN (AES de 256 bits con HMAC-SHA2-256). En comparación con IPsec (ChaCha20+Poly1305 de 256 bits y AES-256-GCM-128), WireGuard presenta un ligero avance en el rendimiento (13-18%) y una reducción en las latencias (21-23%). Las pruebas se realizaron utilizando implementaciones rápidas de los algoritmos de cifrado desarrollados por el proyecto; la transición al Crypto API estándar del núcleo podría deteriorar las métricas.
Fuente: opennet.ru
