WireGuard: VPN con ChaCha20 y Curve25519
Explore el diseño criptográfico minimalista de WireGuard, basado en ChaCha20-Poly1305, Curve25519 y BLAKE2.
WireGuard: VPN con ChaCha20 y Curve25519 es una lección gratuita de Cryptology Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cryptology Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cryptology Academy incluye 4 lecciones en total.
Filosofía de diseño de WireGuard
WireGuard se diseñó con la simplicidad radical como objetivo principal. Su base de código tiene aproximadamente 4.000 líneas, frente a las 70.000 de OpenVPN y las más de 400.000 de strongSwan IPsec. Menos líneas implican menos vulnerabilidades potenciales y una superficie de auditoría lo bastante pequeña como para que un solo ingeniero pueda revisarla exhaustivamente. Esta simplicidad es una decisión de seguridad deliberada, no una limitación funcional.
Primitivas criptográficas fijas
A diferencia de OpenVPN e IPsec, WireGuard no negocia algoritmos criptográficos. Todas las conexiones de WireGuard utilizan el mismo conjunto fijo de primitivas: Curve25519 para ECDH, ChaCha20-Poly1305 para el cifrado autenticado, BLAKE2s para las funciones hash y SipHash-2-4 para la seguridad de las tablas hash. Esto elimina la negociación de cifrados y, con ella, toda una clase de ataques de degradación.
Handshake del marco de protocolo Noise
WireGuard implementa el patrón de handshake Noise_IKpsk2 del marco de protocolo Noise. Este marco proporciona una forma fundamentada de crear protocolos de intercambio de claves con propiedades de seguridad demostrables. El patrón IKpsk2 utiliza pares de claves estáticas y efímeras, junto con una clave precompartida opcional para ofrecer resistencia cuántica adicional, y completa el handshake en un único viaje de ida y vuelta.
Curve25519 para el intercambio de claves
Curve25519 es una curva elíptica diseñada por Daniel Bernstein para ofrecer un alto rendimiento y seguridad. WireGuard la utiliza para el acuerdo de claves mediante Elliptic Curve Diffie-Hellman (ECDH). Cada peer tiene un par de claves Curve25519 estáticas que sirve como identidad a largo plazo, y el handshake también utiliza pares de claves efímeras para proporcionar secreto hacia adelante. Las operaciones de Curve25519 se ejecutan en tiempo constante, lo que ofrece resistencia frente a ataques de temporización.
Cifrado de datos con ChaCha20-Poly1305
WireGuard cifra todos los paquetes de datos con ChaCha20-Poly1305, un algoritmo de cifrado autenticado. ChaCha20 es un cifrado de flujo extremadamente rápido en dispositivos sin aceleración de hardware para AES, como smartphones y dispositivos integrados. Poly1305 proporciona la etiqueta de autenticación. La construcción AEAD combinada garantiza que cualquier manipulación del texto cifrado se detecte antes del descifrado.
BLAKE2s para funciones hash
BLAKE2s es una función hash criptográfica optimizada para plataformas de 32 bits y mensajes cortos. WireGuard la utiliza en los pasos de derivación de claves del handshake y para calcular los identificadores de sesión. BLAKE2s es más rápida que SHA-256 en la mayoría de las plataformas y ofrece un nivel de seguridad equivalente. Se diseñó como sucesora de BLAKE, finalista de SHA-3.
Pares de claves estáticas y efímeras
Los peers de WireGuard tienen un par de claves estáticas que sirve como identidad a largo plazo. Las claves públicas se intercambian fuera de banda durante la configuración y sirven para identificar a los peers. Durante cada handshake, ambos peers también generan pares de claves efímeras. El ECDH entre las claves estáticas y efímeras, combinado con el ECDH de los pares de claves efímeras, proporciona autenticación y secreto hacia adelante.
Enrutamiento mediante claves criptográficas
WireGuard implementa el enrutamiento mediante claves criptográficas: en la configuración, cada peer especifica las direcciones IP (allowed IPs) a las que se puede llegar a través de él. Cuando un paquete saliente coincide con las allowed IPs de un peer, se cifra para ese peer. Los paquetes entrantes se descifran y su IP de origen debe coincidir con las allowed IPs de la clave utilizada; de lo contrario, se descartan. Las claves definen la tabla de enrutamiento.
Gestión de conexiones basada en temporizadores
WireGuard no tiene el concepto de una conexión persistente. Si no circula tráfico, no se envían paquetes y la VPN desaparece efectivamente de la red. Los handshakes se activan bajo demanda cuando hay tráfico que enviar. La opción configurable PersistentKeepalive envía periódicamente paquetes vacíos para mantener las asignaciones NAT de los dispositivos situados detrás de routers NAT.
WireGuard en el kernel de Linux
WireGuard se incorporó al kernel principal de Linux en la versión 5.6, publicada en marzo de 2020. Al ejecutarse en el espacio del kernel, WireGuard obtiene acceso directo a la pila de red del kernel y al hardware criptográfico, lo que proporciona un rendimiento superior al de las implementaciones de VPN en el espacio de usuario. En otras plataformas, como Windows, macOS, iOS y Android, WireGuard se ejecuta en el espacio de usuario mediante una implementación multiplataforma.
Comparación del rendimiento de WireGuard
Los benchmarks muestran de forma constante que WireGuard supera a OpenVPN entre 3 y 4 veces en rendimiento de transferencia. IPsec con aceleración de hardware AES-NI ofrece un rendimiento comparable al de WireGuard en sistemas con hardware AES. En dispositivos ARM sin AES-NI, ChaCha20 de WireGuard supera ampliamente a las alternativas basadas en AES. Un menor uso de la CPU también se traduce en una mayor duración de la batería en dispositivos móviles.
Primitivas criptográficas de WireGuard
¿Qué algoritmo utiliza WireGuard para cifrar los paquetes de datos?
Resumen de WireGuard
Resumen de WireGuard: aproximadamente 4.000 líneas de código para minimizar la superficie de ataque, primitivas fijas (sin negociación), handshake Noise IKpsk2 con Curve25519, ChaCha20-Poly1305 para los datos, BLAKE2s para las funciones hash, el enrutamiento mediante claves criptográficas vincula rangos de IP con claves públicas, las claves efímeras proporcionan secreto hacia adelante, la integración con el kernel maximiza el rendimiento y el modelo de conexión sin estado utiliza handshakes bajo demanda.
Preguntas frecuentes
¿La lección «WireGuard: VPN con ChaCha20 y Curve25519» es gratis?
Sí — el texto completo de «WireGuard: VPN con ChaCha20 y Curve25519» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cryptology Academy, actualiza a CoddyKit PRO. El curso de Cryptology Academy incluye 4 lecciones en total.
¿Qué aprenderé en «WireGuard: VPN con ChaCha20 y Curve25519»?
Explore el diseño criptográfico minimalista de WireGuard, basado en ChaCha20-Poly1305, Curve25519 y BLAKE2. Practicas Cryptology Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Cryptology Academy?
No se requiere experiencia previa. Cryptology Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «WireGuard: VPN con ChaCha20 y Curve25519»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Cryptology Academy?
Sí. Cada lección de Cryptology Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- IPsec: protocolos IKEv2, ESP y AH
- WireGuard: VPN con ChaCha20 y Curve25519
- OpenVPN: arquitectura de VPN basada en TLS
- Comparación de protocolos VPN: seguridad y rendimiento