¿Qué es WireGuard y cómo funciona?
WireGuard es un protocolo VPN de capa IP diseñado para crear túneles protegidos entre dispositivos mediante criptografía moderna. Utiliza UDP para transportar los paquetes y un sistema de cryptokey routing que relaciona las claves públicas de los peers con las direcciones IP permitidas.
¿Qué es WireGuard?
WireGuard es un protocolo VPN que crea túneles protegidos entre dispositivos llamados peers. Está diseñado para funcionar en la capa IP y utiliza UDP como transporte.
Su arquitectura utiliza claves públicas, claves efímeras, criptografía moderna y un mecanismo denominado cryptokey routing para asociar identidades criptográficas con direcciones IP permitidas.
¿Cómo funciona WireGuard?
WireGuard establece un canal seguro entre peers mediante un intercambio de claves y posteriormente utiliza claves simétricas de sesión para proteger el tráfico transportado por el túnel.
Peers
Los dispositivos participantes se denominan peers. Cada peer tiene una identidad basada en una clave pública y una clave privada.
Handshake
Los peers ejecutan un intercambio de claves para establecer las claves de sesión utilizadas posteriormente para transportar datos.
Túnel
Una vez establecida la sesión, los paquetes IP se encapsulan y transmiten mediante el canal protegido de WireGuard.
WireGuard utiliza claves para identificar a los peers
La identidad de cada peer se basa en criptografía de clave pública. Las direcciones IP permitidas se asocian a las claves públicas dentro del sistema de cryptokey routing.
Clave privada
Permanece en el dispositivo y participa en las operaciones criptográficas necesarias para establecer la identidad del peer.
Clave pública
Identifica al peer frente a los otros participantes de la configuración WireGuard.
Direcciones permitidas
Las direcciones IP permitidas participan en el sistema de cryptokey routing para asociar tráfico y claves.
Principales componentes de WireGuard
| Componente | Función | Ejemplo | Característica |
|---|---|---|---|
| Peer | Participa en la conexión VPN. | Servidor o computador. | Posee una identidad criptográfica. |
| Private Key | Identifica y autentica criptográficamente al peer. | Clave privada de 256 bits. | Debe permanecer secreta. |
| Public Key | Representa la identidad pública del peer. | Clave pública Curve25519. | Se comparte con los peers autorizados. |
| AllowedIPs | Define direcciones relacionadas con el peer. | 10.0.0.2/32. | Forma parte del cryptokey routing. |
| UDP | Transporta los paquetes WireGuard. | Puerto UDP. | WireGuard utiliza UDP como transporte. |
¿Qué es un peer en WireGuard?
Un peer es un participante de una red WireGuard. Puede ser un computador, servidor, teléfono, router u otro dispositivo capaz de ejecutar el protocolo.
Identidad
Cada peer posee una clave privada y una clave pública que forman parte de su identidad criptográfica.
Configuración
La configuración de cada peer puede incluir la clave pública del otro participante, las direcciones IP permitidas y el endpoint utilizado para establecer la comunicación.
Comunicación
Los peers pueden intercambiar tráfico mediante el túnel una vez que se han establecido las claves de sesión necesarias.
¿Qué claves utiliza WireGuard?
WireGuard utiliza claves de larga duración y claves efímeras durante su proceso criptográfico. Las claves públicas permiten identificar a los peers y las claves efímeras participan en el establecimiento de las claves de sesión.
Clave privada
Es un secreto local utilizado por el peer. No debe compartirse con otros participantes.
Clave pública
Se deriva de la clave privada y se utiliza como identidad pública del peer dentro de la configuración.
Claves efímeras
Durante el handshake se utilizan claves efímeras que participan en el intercambio necesario para derivar las claves simétricas de la sesión.
¿Cómo funciona el handshake de WireGuard?
Antes de transportar tráfico protegido, los peers realizan un handshake que permite establecer nuevas claves de sesión.
Initiation
El iniciador envía un mensaje de handshake que contiene la información necesaria para comenzar el intercambio criptográfico.
Response
El peer receptor responde con la información correspondiente para completar el intercambio y derivar las claves de sesión.
Session keys
Después del handshake se utilizan claves simétricas separadas para enviar y recibir tráfico protegido.
¿Qué es Noise_IK en WireGuard?
WireGuard utiliza el patrón Noise_IK del framework Noise como base para su protocolo de intercambio de claves.
Noise Protocol Framework
Noise es un framework para diseñar protocolos de intercambio de claves entre dos participantes utilizando diferentes combinaciones de claves y operaciones criptográficas.
Identidad estática
El patrón utilizado por WireGuard combina claves estáticas con claves efímeras durante el handshake.
Pre-shared key
WireGuard permite añadir opcionalmente una clave simétrica precompartida para aportar una capa criptográfica adicional.
¿WireGuard utiliza UDP?
Sí. WireGuard utiliza UDP como protocolo de transporte para enviar sus paquetes entre los peers.
Capa IP
WireGuard funciona en la capa IP y encapsula los datagramas IP que deben atravesar el túnel.
UDP
El protocolo de transporte utilizado permite que WireGuard funcione sobre redes IP utilizando un puerto UDP configurado para el servicio.
Sin TCP propio
WireGuard no implementa un protocolo de transporte fiable equivalente a TCP. La recuperación de pérdidas pertenece a los protocolos que funcionan sobre el túnel cuando corresponde.
¿Qué es cryptokey routing en WireGuard?
Cryptokey routing es uno de los conceptos centrales de WireGuard. Combina la configuración de claves públicas con rangos de direcciones IP permitidas para determinar cómo se asocia el tráfico con cada peer.
Clave pública
Cada peer se identifica mediante una clave pública conocida por los participantes autorizados.
AllowedIPs
Los rangos configurados en AllowedIPs indican las direcciones asociadas con ese peer y participan en el encaminamiento del tráfico.
Dos funciones
En WireGuard, AllowedIPs participa tanto en la selección del peer para tráfico saliente como en la validación del origen del tráfico recibido.
¿Qué criptografía utiliza WireGuard?
WireGuard utiliza un conjunto de algoritmos criptográficos modernos y predefinidos en lugar de ofrecer una gran cantidad de opciones negociables.
Curve25519
Curve25519 se utiliza para operaciones de intercambio de claves basadas en Diffie-Hellman.
ChaCha20-Poly1305
WireGuard utiliza ChaCha20-Poly1305 para proporcionar cifrado autenticado de los datos transportados.
BLAKE2s
BLAKE2s forma parte de las funciones criptográficas utilizadas en el protocolo para derivación y hashing.
HKDF
HKDF participa en la derivación de material criptográfico necesario para obtener las claves utilizadas durante las sesiones.
¿Qué es la clave precompartida de WireGuard?
WireGuard permite utilizar opcionalmente una clave simétrica precompartida entre dos peers. Esta clave agrega una capa adicional de material secreto al proceso criptográfico.
Clave adicional
La pre-shared key no sustituye a las claves públicas de los peers. Se utiliza como componente adicional del proceso criptográfico.
Configuración
La misma clave precompartida debe configurarse en ambos extremos correspondientes para que pueda utilizarse correctamente.
Seguridad adicional
El diseño de WireGuard contempla esta opción como una capa criptográfica adicional, incluida para reforzar determinadas propiedades de seguridad frente a escenarios futuros.
¿WireGuard es seguro?
WireGuard fue diseñado alrededor de un conjunto reducido de primitivas criptográficas y de un protocolo de handshake compacto. Sus propiedades de seguridad han sido estudiadas formalmente en trabajos académicos y en documentación técnica del proyecto.
Claves públicas
La autenticación de los peers se basa en claves públicas conocidas previamente y asociadas a la configuración de cada participante.
Perfect Forward Secrecy
El protocolo utiliza claves efímeras durante el intercambio, contribuyendo a las propiedades de secreto hacia adelante de las sesiones.
Configuración
La seguridad de una implementación también depende de cómo se protejan las claves privadas, qué peers estén autorizados y cómo se definan las rutas y políticas de acceso.
Endpoint
Las claves criptográficas protegen el canal, pero no solucionan por sí mismas vulnerabilidades existentes en los dispositivos, aplicaciones o redes situadas detrás del túnel.
¿Cuál es la diferencia entre WireGuard y OpenVPN?
WireGuard y OpenVPN son tecnologías utilizadas para crear conexiones VPN protegidas, pero tienen arquitecturas diferentes. WireGuard funciona a nivel IP y utiliza UDP, mientras OpenVPN puede encapsular tráfico IP o Ethernet y puede utilizar UDP o TCP.
WireGuard
Utiliza un diseño criptográfico compacto, claves públicas para identificar peers y UDP como transporte.
OpenVPN
Utiliza una arquitectura basada en software que puede transportar paquetes IP o tramas Ethernet y emplear TLS para el establecimiento de claves.
Arquitectura
Las diferencias no se limitan a la velocidad o al consumo de recursos. También incluyen configuración, modelo de identidad, transporte, extensibilidad y forma de establecer los túneles.
| Característica | WireGuard | OpenVPN |
|---|---|---|
| Capa principal | Capa IP. | Puede transportar IP o Ethernet. |
| Transporte | UDP. | UDP o TCP. |
| Identidad | Claves públicas de peers. | Puede utilizar certificados, claves y otros mecanismos según configuración. |
| Handshake | Basado en Noise_IK. | Basado en TLS. |
¿Cuál es la diferencia entre WireGuard e IPsec?
WireGuard e IPsec pueden utilizarse para crear túneles VPN, pero representan arquitecturas diferentes. IPsec es una arquitectura de seguridad para IP que utiliza protocolos como IKEv2 y ESP, mientras WireGuard implementa su propio protocolo de túnel y handshake.
IPsec
La arquitectura IPsec puede utilizar IKE para negociar asociaciones de seguridad y ESP para proteger los paquetes IP.
WireGuard
WireGuard utiliza claves públicas de peers, el patrón Noise_IK y UDP para transportar los paquetes.
Configuración
Ambas tecnologías pueden emplearse en infraestructuras VPN, pero sus modelos de configuración y negociación son diferentes.
| Característica | WireGuard | IPsec |
|---|---|---|
| Arquitectura | Protocolo VPN de capa IP. | Arquitectura de seguridad IP. |
| Claves | Claves públicas y efímeras. | Asociaciones de seguridad negociadas. |
| Transporte | UDP. | Depende de la arquitectura y encapsulación utilizada. |
| Componentes | Handshake WireGuard. | IKEv2 y ESP en configuraciones modernas. |
¿Qué se necesita para implementar WireGuard?
Para implementar WireGuard deben configurarse los peers, sus claves y las direcciones que cada participante puede utilizar dentro del túnel.
Clave privada
Cada dispositivo necesita una clave privada que debe almacenarse de forma segura.
Clave pública
La clave pública de cada peer debe conocerse en los extremos autorizados para establecer la relación criptográfica.
AllowedIPs
Deben definirse las direcciones o redes que estarán asociadas a cada peer y que participarán en el cryptokey routing.
Endpoint
Cuando el peer remoto requiere una ubicación conocida, puede configurarse un endpoint formado por una dirección o nombre de host y un puerto UDP.
¿Qué problemas pueden ocurrir con WireGuard?
Los problemas de una conexión WireGuard suelen estar relacionados con claves, endpoints, rutas, AllowedIPs, puertos UDP o reglas de firewall.
Claves
Una clave pública incorrecta o una clave privada asociada con una configuración diferente puede impedir la autenticación esperada.
Endpoint
Un endpoint incorrecto o inaccesible puede impedir que el peer envíe correctamente los mensajes de handshake.
AllowedIPs
Una configuración incorrecta de AllowedIPs puede provocar que el tráfico se dirija al peer equivocado o que ciertas redes no sean accesibles.
Firewall
Las reglas de firewall o NAT pueden bloquear el puerto UDP utilizado por WireGuard o impedir el retorno del tráfico.
WireGuard: conceptos principales
| Concepto | Significado | Ejemplo | Función |
|---|---|---|---|
| WireGuard | Protocolo VPN. | Túnel entre peers. | Proteger y transportar tráfico IP. |
| Peer | Participante del túnel. | Servidor. | Intercambiar tráfico protegido. |
| Public Key | Identidad pública del peer. | Clave Curve25519. | Identificar al participante. |
| AllowedIPs | Direcciones asociadas con peers. | 10.0.0.2/32. | Participar en cryptokey routing. |
| Handshake | Intercambio criptográfico. | Noise_IK. | Establecer claves de sesión. |
| UDP | Transporte. | Puerto UDP. | Transportar los paquetes WireGuard. |
Referencias técnicas de WireGuard
WireGuard dispone de documentación técnica sobre su protocolo, criptografía y funcionamiento interno.
WireGuard: Protocol & Cryptography
WireGuard: Next Generation Kernel Network Tunnel
RFC 8922: Survey of Interaction between Security Protocols and Transport Services
Guías relacionadas sobre VPN
Continúa con otras tecnologías y conceptos relacionados con las redes privadas virtuales:
Preguntas frecuentes sobre WireGuard
WireGuard es un protocolo VPN de capa IP diseñado para crear túneles protegidos entre dispositivos llamados peers.
WireGuard utiliza un handshake criptográfico para establecer claves de sesión entre peers y posteriormente transporta tráfico IP protegido mediante el túnel.
Sí. WireGuard utiliza UDP como protocolo de transporte para sus paquetes.
Un peer es un dispositivo que participa en una red WireGuard y posee una identidad criptográfica basada en una clave privada y una clave pública.
Cryptokey routing es el sistema de WireGuard que combina claves públicas y direcciones IP permitidas para determinar la asociación del tráfico con cada peer.
WireGuard utiliza componentes criptográficos como Curve25519, ChaCha20-Poly1305, BLAKE2s y HKDF dentro de su protocolo.
Sí. Cada peer utiliza una clave privada y una clave pública para formar su identidad criptográfica dentro de la configuración.
Noise_IK es el patrón del framework Noise utilizado como base para el handshake de WireGuard.
Sí. WireGuard permite utilizar opcionalmente una clave simétrica precompartida como capa criptográfica adicional.
WireGuard funciona a nivel IP y utiliza UDP con un protocolo criptográfico basado en Noise_IK, mientras OpenVPN puede transportar IP o Ethernet y puede funcionar sobre UDP o TCP.
¿Qué es OpenVPN?
Continúa aprendiendo sobre tecnologías VPN y descubre cómo funciona OpenVPN, su arquitectura, TLS, transporte y diferencias con WireGuard.
Ver guía →