El núcleo de Linux 5.6 incluye VPN WireGuard.

Hoy Linus ha transferido la rama net-next con interfaces VPN. WireGuard. Sobre este evento informaron en la lista de correo de WireGuard.

El núcleo de Linux 5.6 incluye VPN WireGuard.

Actualmente se está recopilando código para el nuevo núcleo de Linux 5.6. WireGuard es una VPN de nueva generación, que incorpora criptografía moderna. Fue desarrollado inicialmente como una alternativa más sencilla y amigable a las VPN existentes. Su autor es el especialista canadiense en seguridad informática Jason Donenfeld. En agosto de 2018, WireGuard recibió elogios de Linus Torvalds. Aproximadamente en ese tiempo, comenzó el trabajo para incluir la VPN en el núcleo de Linux. El proceso se extendió un poco.

«Veo que Jason ha hecho un pull request para incluir WireGuard en el núcleo», escribió Linus el 2 de agosto de 2018. «¿Puedo simplemente volver a expresar mi amor por esta VPN y esperar una fusión rápida? Quizás el código no sea perfecto, pero lo revisé y comparado con los horrores de OpenVPN e IPSec, es una verdadera obra de arte».

A pesar del deseo de Linus, la fusión se retrasó un año y medio. El principal problema resultó ser la vinculación a implementaciones criptográficas propietarias, que se aplicaron para mejorar el rendimiento. Después de largas negociaciones, en septiembre de 2019 se llegó a una decisión de compromiso para trasladar los parches a las funciones Crypto API que ya existen en el núcleo, con las cuales los desarrolladores de WireGuard tienen quejas en materia de rendimiento y seguridad general. Pero decidieron destacar las funciones criptográficas nativas de WireGuard en una API baja llamada Zinc y con el tiempo portarlas al núcleo. En noviembre, los desarrolladores del núcleo cumplieron su promesa y acordaron trasladar parte del código desde Zinc al núcleo principal. Por ejemplo, en Crypto API se incluyen se prepararon en WireGuard rápidas implementaciones de los algoritmos ChaCha20 y Poly1305.

Finalmente, el 9 de diciembre de 2019, David Miller, responsable del subsistema de red del núcleo de Linux, ha aceptado en la rama net-next parches con la implementación de la interfaz VPN del proyecto WireGuard.

Y hoy, 29 de enero de 2020, los cambios fueron enviados a Linus para su inclusión en el núcleo.

El núcleo de Linux 5.6 incluye VPN WireGuard.

Las ventajas declaradas de WireGuard sobre otras soluciones VPN son:

Toda la lógica principal de WireGuard ocupa menos de 4000 líneas de código, mientras que OpenVPN e IPSec suman cientos de miles de líneas.

En WireGuard se aplica el concepto de enrutamiento basado en claves de cifrado, que implica la vinculación de una clave privada a cada interfaz de red y el uso de claves públicas para la conexión. El intercambio de claves públicas para establecer una conexión se realiza de manera similar a SSH. Para la negociación de claves y conexión sin iniciar un demonio separado en el espacio del usuario, se utiliza el mecanismo Noise_IK de Marco del Protocolo Noise, 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 romper la conexión con una reconfiguración automática del cliente, — Quartz, Madagascar es el único país en África donde la velocidad de descarga de contenido supera los 10 Mbps. Opennet.

Para el cifrado se utiliza un cifrador de flujo ChaCha20 y un algoritmo de autenticación de mensajes (MAC) Poly1305, desarrollado por Daniel Bernstein (Daniel J. Bernstein), Tanja Lange y Peter Schwabe. ChaCha20 y Poly1305 se posicionan como alternativas más rápidas y seguras que AES-256-CTR y HMAC, cuya implementación de software permite alcanzar un tiempo de ejecución fijo sin requerir soporte de hardware especial. Para generar una clave secreta compartida, se utiliza el protocolo de Diffie-Hellman en curvas elípticas en la implementación de Curve25519, también propuesto por Daniel Bernstein. Para el hashing se utiliza el algoritmo BLAKE2s (RFC7693)».

Resultados pruebas de rendimiento del sitio oficial:

Ancho de banda (megabits/s)
El núcleo de Linux 5.6 incluye VPN WireGuard.

Ping (ms)
El núcleo de Linux 5.6 incluye VPN WireGuard.

Configuración de prueba:

  • Intel Core i7-3820QM e Intel Core i7-5200U
  • Tarjetas Gigabit Intel 82579LM e Intel I218LM
  • Linux 4.6.1
  • Configuración de WireGuard: ChaCha20 de 256 bits con Poly1305 para MAC
  • Primera configuración de IPsec: ChaCha20 de 256 bits con Poly1305 para MAC
  • Segunda configuración de IPsec: AES-256-GCM-128 (con AES-NI)
  • Configuración de OpenVPN: conjunto de cifrado equivalente a AES de 256 bits con HMAC-SHA2-256, modo UDP
  • El rendimiento se midió utilizando iperf3, mostrando el resultado medio durante 30 minutos.

Teóricamente, después de la integración en la pila de red, WireGuard debería funcionar aún más rápido. Pero en la práctica, esto no necesariamente será así debido a la transición a las funciones criptográficas integradas en el núcleo Crypto API. Puede que no todas ellas estén aún optimizadas al nivel de rendimiento nativo de WireGuard.

Desde mi perspectiva, WireGuard es ideal para el usuario. Todas las soluciones de bajo nivel están establecidas en la especificación, por lo que el proceso de preparación de una infraestructura VPN típica lleva solo unos minutos. Es prácticamente imposible cometer errores en la configuración, — hemos escrito en Habr en 2018. — El proceso de instalación está descrito en detalle en el sitio oficial, y quiero destacar especialmente el excelente soporte para OpenWRT. Esta simplicidad de uso y la compacidad de la base de código se lograron al renunciar a la distribución de claves. Aquí no hay un sistema complejo de certificados y todo ese horror corporativo; las claves de cifrado cortas se distribuyen de manera similar a las claves SSH.

El proyecto WireGuard ha estado en desarrollo desde 2015, ha pasado auditoría y verificación formal. El soporte para WireGuard está integrado en NetworkManager y systemd, y los parches para el núcleo forman parte de las distribuciones básicas de Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph y ALT.

Fuente: habr.com

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