VPN WireGuard incluido en el kernel de Linux 5.6

Hoy Linus se mudó a sí mismo la rama net-next con interfaces VPN WireGuard. Acerca de este evento сообщили en la lista de correo de WireGuard.

VPN WireGuard incluido en el kernel de Linux 5.6

La recopilación de códigos para el nuevo kernel Linux 5.6 está actualmente en curso. WireGuard es una VPN rápida de próxima generación que implementa criptografía moderna. Originalmente se desarrolló como una alternativa más simple y conveniente a las VPN existentes. El autor es el especialista canadiense en seguridad de la información Jason A. Donenfeld. En agosto de 2018, WireGuard fue elogiado Por Linus Torvalds. Por esa época, se empezó a trabajar para incluir VPN en el kernel de Linux. El proceso tomó un poco más de tiempo.

"Veo que Jason realizó una solicitud de extracción para incluir WireGuard en el kernel", escribió Linus el 2 de agosto de 2018. — ¿Puedo declarar una vez más mi amor por esta VPN y esperar una fusión pronto? Puede que el código no sea perfecto, pero lo miré y, comparado con los horrores de OpenVPN e IPSec, es una verdadera obra de arte”.

A pesar de los deseos de Linus, la fusión se prolongó durante un año y medio. El principal problema resultó estar relacionado con las implementaciones propietarias de funciones criptográficas, que se utilizaban para mejorar el rendimiento. Después de largas negociaciones en septiembre de 2019, se logró se tomó una decisión de compromiso traducir parches a las funciones Crypto API disponibles en el kernel, sobre las cuales los desarrolladores de WireGuard tienen quejas en el campo del rendimiento y la seguridad general. Pero decidieron separar las funciones criptográficas nativas de WireGuard en una API Zinc de bajo nivel separada y, finalmente, trasladarlas al kernel. En noviembre, los desarrolladores del kernel cumplieron su promesa y acordado transfiera parte del código de Zinc al núcleo principal. Por ejemplo, en la API Crypto incluido Implementaciones rápidas de los algoritmos ChaCha20 y Poly1305 preparados en WireGuard.

Finalmente, el 9 de diciembre de 2019, David S. Miller, responsable del subsistema de red del kernel de Linux, donado a la siguiente rama neta parches con la implementación de una interfaz VPN del proyecto WireGuard.

Y hoy, 29 de enero de 2020, los cambios llegaron a Linus para su inclusión en el kernel.

VPN WireGuard incluido en el kernel de Linux 5.6

Ventajas supuestas de WireGuard sobre otras soluciones VPN:

  • Fácil de usar.
  • Utiliza criptografía moderna: marco de protocolo de ruido, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, etc.
  • Código compacto y legible, más fácil de investigar en busca de vulnerabilidades.
  • Alto rendimiento
  • Claro y elaborado especificación.

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

“WireGuard utiliza el concepto de enrutamiento de claves de cifrado, que implica adjuntar una clave privada a cada interfaz de red y utilizar claves públicas para vincularla. 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, el mecanismo Noise_IK de Marco del protocolo de ruidosimilar 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 reconfiguración automática del cliente, - пишет Opennet.

Para cifrado utilizado cifrado de flujo ChaCha20 y algoritmo de autenticación de mensajes (MAC) Poly1305, diseñado por Daniel Bernstein (Daniel 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, en la implementación se utiliza el protocolo de curva elíptica Diffie-Hellman. Curve25519, también propuesto por Daniel Bernstein. El algoritmo utilizado para el hash es BLAKE2 (RFC7693)".

resultados pruebas de rendimiento del sitio web oficial:

Ancho de banda (megabits/s)
VPN WireGuard incluido en el kernel de Linux 5.6

Ping (ms)
VPN WireGuard incluido en el kernel de Linux 5.6

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: ChaCha256 de 20 bits con Poly1305 para MAC
  • Primera configuración IPsec: ChaCha256 de 20 bits con Poly1305 para MAC
  • Segunda configuración de IPsec: AES-256-GCM-128 (con AES-NI)
  • Configuración OpenVPN: conjunto de cifrado equivalente a AES de 256 bits con HMAC-SHA2-256, modo UDP
  • El rendimiento se midió utilizando iperf3, muestra el resultado medio durante 30 minutos.

En teoría, una vez integrado en la pila de red, WireGuard debería funcionar aún más rápido. Pero en realidad este no será necesariamente el caso debido a la transición a las funciones criptográficas Crypto API integradas en el kernel. Quizás no todos estén todavía optimizados al nivel de rendimiento del WireGuard nativo.

“Desde mi punto de vista, WireGuard es generalmente ideal para el usuario. Todas las decisiones de bajo nivel se toman en la especificación, por lo que el proceso de preparación de una infraestructura VPN típica toma sólo unos minutos. Es casi imposible estropear la configuración. escribió sobre Habré en 2018. - Proceso de instalación descrito en detalle en el sitio web oficial, me gustaría destacar por separado el excelente Soporte abiertoWRT. Esta facilidad de uso y compacidad de la base del código se logró eliminando la distribución de claves. No existe un sistema de certificados complejo ni todo este horror corporativo; las claves de cifrado cortas se distribuyen de forma muy parecida a las claves SSH".

El proyecto WireGuard se viene desarrollando desde 2015, ha sido auditado y verificación formal. La compatibilidad con WireGuard está integrada en NetworkManager y systemd, y los parches del kernel se incluyen en las distribuciones básicas de Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph y ALT.

Fuente: habr.com

Añadir un comentario