Hoy, Linus se ha mudado a sí mismo como una sucursal de la red con interfaces
WireGuard VPN. Este evento se
informó en la lista de correo WireGuard.

Actualmente, la recopilación de código continúa para el nuevo kernel de Linux 5.6. WireGuard es una VPN rápida de nueva generación que incorpora 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. Alrededor del tiempo, se comenzó a trabajar para incorporar una VPN en el kernel de Linux. El proceso se retrasó un poco.
"Veo que Jason hizo una solicitud de grupo para incluir WireGuard en el núcleo", escribió Linus el 2 de agosto de 2018. - ¿Puedo declarar una vez más mi amor por esta VPN y esperar una fusión rápida? Puede que el código no sea perfecto, pero lo miré y, comparado con los horrores de OpenVPN e IPSec, esta 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 sus propias implementaciones de funciones criptográficas, que se utilizaron para aumentar la productividad. Después de largas negociaciones en septiembre de 2019, se
hizo un compromiso para transferir los parches a las características principales de Crypto API, ante lo cual los desarrolladores de WireGuard tienen quejas sobre el rendimiento y la seguridad general. Pero decidieron conectar las funciones criptográficas nativas de WireGuard a una API de zinc de bajo nivel separada y eventualmente transferirlas al kernel. En noviembre, los desarrolladores principales cumplieron su promesa y
acordaron transferir parte del código de Zinc al núcleo principal. Por ejemplo, Crypto API
incluye implementaciones rápidas preparadas por WireGuard de los algoritmos ChaCha20 y Poly1305.
Al final, el 9 de diciembre de 2019, David S. Miller, responsable del subsistema de red del kernel de Linux,
aceptó parches con la implementación de la interfaz VPN del proyecto WireGuard en la rama net-next.
Y hoy, 29 de enero de 2020, los cambios fueron para Linus para su inclusión en el kernel.

Las ventajas declaradas 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 legible compacto, más fácil de investigar en busca de vulnerabilidades.
- Alto rendimiento
- Especificación clara y detallada.
Toda la lógica central de WireGuard ocupa menos de 4000 líneas de código, mientras que OpenVPN e IPSec son cientos de miles de líneas.
“WireGuard utiliza el concepto de enrutamiento de clave de cifrado, que implica vincular una clave privada a cada interfaz de red y usarla para vincular claves públicas. El intercambio de claves públicas para establecer una conexión se realiza por analogía con SSH. Para negociar claves y conectarse sin iniciar un demonio separado en el espacio del usuario, se utiliza el mecanismo Noise_IK del Marco de protocolo de ruido , similar al mantenimiento de claves autorizadas en SSH. Los datos se transmiten a través de la encapsulación en paquetes UDP. Admite cambiar la dirección IP del servidor VPN (roaming) sin romper la conexión con la reconfiguración automática del cliente, escribe Opennet.
Para el cifrado , se utilizan el cifrado de flujo ChaCha20 y el algoritmo de autenticación de mensajes Poly1305 (MAC) 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 involucrar soporte especial de hardware. Para generar una clave secreta compartida, el protocolo Diffie-Hellman en curvas elípticas se utiliza en la implementación de Curve25519 , también propuesta por Daniel Bernstein. Para el hash, se utiliza el algoritmo BLAKE2s (RFC7693) ".
Resultados de la
prueba de rendimiento del sitio web oficial:
Ancho de banda (megabits / s)
Ping (ms)
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 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 AES de 256 bits equivalente con HMAC-SHA2-256, modo UDP
- El rendimiento se midió usando
iperf3
, mostrando un resultado promedio en 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 realidad, este no será necesariamente el caso debido a la transición a las funciones criptográficas integradas en el núcleo de la API Crypto. Quizás no todos estén optimizados para el nivel de rendimiento del WireGuard nativo.
“En mi opinión, 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 solo unos minutos. Es casi imposible confundir la configuración, escribieron sobre Habré en 2018. - El proceso de instalación se describe en detalle en el sitio web oficial, me gustaría mencionar un excelente soporte para OpenWRT . Tal facilidad de uso y compacidad de la base del código se logró debido al rechazo de la distribución de claves. No hay un sistema de certificados complicado y todo este horror corporativo; las claves de cifrado cortas se distribuyen aproximadamente como claves SSH ".
El proyecto WireGuard se ha desarrollado desde 2015, ha pasado una auditoría y
verificación formal . El soporte de WireGuard está integrado en NetworkManager y systemd, y los parches de kernel son parte de las distribuciones básicas de Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph y ALT.