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.
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.
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.
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)".
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.