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 CCBrevemente 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 CCPara 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