WireGuard "vendrá" al kernel de Linux, ¿por qué?

A finales de julio, los desarrolladores del túnel VPN WireGuard propusieron un conjunto de parches que harían que su software de organización del túnel VPN formara parte del núcleo Linux. Sin embargo, la fecha exacta para la implementación de la "idea" aún se desconoce. Debajo del gato, hablaremos sobre esta herramienta con más detalle.


/ foto Tambako El Jaguar CC

Brevemente sobre el proyecto.


WireGuard es el túnel VPN de próxima generación creado por Jason A. Donenfeld, jefe de Edge Security. El proyecto fue desarrollado como una alternativa simplificada y ágil a OpenVPN e IPsec. La primera versión del producto contenía solo 4 mil líneas de código. A modo de comparación, en OpenVPN unas 120 mil líneas, y en IPSec - 420 mil.

Según los desarrolladores, WireGuard es fácil de configurar y la seguridad del protocolo se logra a través de algoritmos criptográficos probados . Al cambiar la red : Wi-Fi, LTE o Ethernet, debe volver a conectarse al servidor VPN cada vez. Los servidores WireGuard no interrumpen la conexión, incluso si el usuario recibió una nueva dirección IP.

A pesar de que WireGuard fue afilado originalmente para el kernel de Linux, los desarrolladores se encargaron de la versión portátil de la herramienta para dispositivos Android. La aplicación aún no está terminada, pero ahora puede probarla en la práctica. Para hacer esto, debes convertirte en uno de los probadores .

En general, WireGuard es bastante popular e incluso ha sido implementado por varios proveedores de VPN, como Mullvad y AzireVPN. La red ha publicado una gran cantidad de guías para configurar esta solución. Por ejemplo, hay guías que crean los usuarios, y hay guías preparadas por los autores del proyecto .

Detalles técnicos


En la documentación oficial (p. 18), se observa que el ancho de banda de WireGuard es cuatro veces mayor que el de OpenVPN: 1011 Mbit / s frente a 258 Mbit / s, respectivamente. WireGuard está por delante de la solución estándar de Linux IPsec: 881 Mbps. Lo supera en términos de facilidad de configuración.

Después de intercambiar las claves (la conexión VPN se inicializa casi como en SSH) y establecer la conexión, WireGuard resuelve de forma independiente todas las demás tareas: no hay necesidad de preocuparse por el enrutamiento, la supervisión del estado, etc. Será necesario realizar esfuerzos de configuración adicionales solo si desea utilizar el cifrado simétrico.


/ foto Anders Hojbjerg CC

Para instalar, necesita una distribución con el kernel de Linux "anterior" 4.1. Se puede encontrar en los repositorios de las principales distribuciones de Linux.

$ sudo add-apt-repository ppa:hda-me/wireguard $ sudo apt update $ sudo apt install wireguard-dkms wireguard-tools 

Según los editores de xakep.ru, el autoensamblaje desde la fuente también es sencillo. Es suficiente elevar la interfaz y generar claves públicas y privadas:

 $ sudo ip link add dev wg0 type wireguard $ wg genkey | tee privatekey | wg pubkey > publickey 

WireGuard no utiliza una interfaz para trabajar con el proveedor criptográfico CryptoAPI . En cambio, se utiliza el cifrado de flujo ChaCha20 , el inserto de imitación criptográfica Poly1305 y sus propias funciones hash criptográficas.

La clave secreta se genera utilizando el protocolo Diffie-Hellman basado en la curva elíptica Curve25519 . Hashing utiliza las funciones hash BLAKE2 y SipHash . Debido al formato de marca de tiempo TAI64N , el protocolo descarta los paquetes con un valor de marca de tiempo más bajo, evitando así ataques DoS y de reproducción .

Al mismo tiempo, WireGuard usa la función ioctl para controlar las E / S (que se usaba para usar Netlink ), lo que hace que el código sea más limpio y simple. Puede verificar esto mirando el código de configuración .

Planes de desarrollador


Hasta ahora, WireGuard es un módulo del núcleo fuera del árbol. Pero el autor del proyecto Jason Donenfeld dice que ha llegado el momento de una implementación completa en el kernel de Linux. Dado que es más simple y más confiable que otras soluciones. Jason es apoyado en este sentido incluso por el propio Linus Torvalds: llamó al código WireGuard "una obra de arte".

Pero nadie está hablando de las fechas exactas para introducir WireGuard en el núcleo. Y es poco probable que esto suceda con el lanzamiento del kernel de Linux de agosto 4.18. Sin embargo, es probable que esto suceda en un futuro muy cercano: en la versión 4.19 o 5.0.

Cuando WireGuard se agrega al kernel, los desarrolladores desean refinar la aplicación para dispositivos Android y comenzar a escribir una aplicación para iOS. Además, se planea completar las implementaciones en Go y Rust y portarlas a macOS, Windows y BSD. También está previsto implementar WireGuard para más "sistemas exóticos": DPDK , FPGA , así como muchas otras cosas interesantes. Todos ellos figuran en la lista de tareas pendientes de los autores del proyecto.



PD: algunos artículos más de nuestro blog corporativo:




La dirección principal de nuestra actividad es la provisión de servicios en la nube:

Infraestructura virtual (IaaS) | Alojamiento PCI DSS | Nube FZ-152 | Alojamiento SAP | Almacenamiento virtual | Cifrado de datos en la nube | Almacenamiento en la nube

Source: https://habr.com/ru/post/es419769/


All Articles