Descargar
Técnico··11 min de lectura

WireGuard vs OpenVPN: protocolos comparados

Idioma: EnglishالعربيةDeutschفارسیFrançaisहिन्दीBahasa IndonesiaItaliano日本語한국어PolskiPortuguêsРусскийไทยTürkçeУкраїнськаTiếng Việt简体中文繁體中文

WireGuard y OpenVPN son los dos protocolos que con más frecuencia ofrecen los servicios VPN de consumo. Este artículo los compara según su diseño criptográfico, su rendimiento, el tamaño del código, la compatibilidad de plataformas y sus características operativas: las dimensiones que afectan cómo se comporta realmente un servicio en producción.

Contexto de ambos protocolos

OpenVPN se lanzó en 2001 y se ha convertido en un estándar de facto en los despliegues VPN comerciales. Es un proyecto de código abierto escrito en C, se ejecuta en espacio de usuario y usa las bibliotecas OpenSSL o mbedTLS para las operaciones de cifrado. Su longevidad y su flexibilidad han producido un conjunto de funciones muy amplio y una gran variedad de configuraciones compatibles.

WireGuard es bastante más reciente. El protocolo se publicó por primera vez en 2016 y se integró en el kernel de Linux en 2020. Se diseñó explícitamente para ser más simple que sus predecesores, con una huella de código más pequeña, un conjunto acotado de primitivas criptográficas modernas y una implementación residente en el kernel en las plataformas que lo permiten. El autor del protocolo, Jason A. Donenfeld, planteó los objetivos de diseño en torno a la verificabilidad y el rendimiento, más que a la configurabilidad.

Diseño criptográfico

Los dos protocolos difieren bastante en cómo abordan el cifrado. WireGuard viene con un conjunto fijo de algoritmos; OpenVPN permite que el operador elija entre muchos.

El conjunto fijo de WireGuard

WireGuard usa una única suite de cifrado basada en primitivas modernas. Sus componentes son ChaCha20 para el cifrado, Poly1305 para la autenticación, Curve25519 para el intercambio de claves, BLAKE2s para el hashing y SipHash24 para el balanceo de carga. El framework Noise Protocol proporciona el handshake.

Fijar la suite tiene dos consecuencias. Primero, elimina la negociación del protocolo, que históricamente ha sido una fuente de ataques de downgrade en los protocolos basados en TLS. Segundo, significa que actualizar la criptografía requiere subir la versión del protocolo en lugar de cambiar la configuración.

La configurabilidad de OpenVPN

OpenVPN admite muchas opciones de cifrado a través de su biblioteca TLS subyacente. Las configuraciones habituales incluyen AES-256-GCM para el cifrado, SHA256 para la autenticación y ECDH para el intercambio de claves. Los despliegues más antiguos de OpenVPN pueden usar BF-CBC o AES-CBC con HMAC, que son bastante más débiles según los estándares modernos.

La flexibilidad permite que OpenVPN sea compatible con clientes heredados, pero también implica que se necesita una auditoría de configuración para confirmar que un despliegue concreto usa ajustes sólidos.

Características de rendimiento

WireGuard suele superar a OpenVPN sobre el mismo hardware. Dos factores explican la mayor parte de la diferencia.

Primero, WireGuard se ejecuta en el kernel en Linux, macOS y Windows, lo que evita la sobrecarga de mover cada paquete entre el kernel y el espacio de usuario. La implementación en espacio de usuario de OpenVPN es portable, pero implica un costo de cambio de contexto por cada paquete.

Segundo, ChaCha20-Poly1305 es muy adecuado para procesadores que carecen de instrucciones AES dedicadas, algo común en los dispositivos móviles basados en ARM. OpenVPN suele usar AES, que es más rápido en hardware con AES-NI pero más lento en otros casos.

En términos prácticos, WireGuard a menudo logra mayor rendimiento, menor latencia y un uso de CPU reducido en comparación con OpenVPN en dispositivos de consumo. El impacto en la batería de los dispositivos móviles también suele ser menor.

Tamaño de código y superficie de auditoría

El tamaño de una base de código se correlaciona, de forma aproximada, con el esfuerzo necesario para auditarla en busca de vulnerabilidades. La implementación de referencia de WireGuard consta de unas cuatro mil líneas de código. La implementación en el kernel de Linux es comparable.

OpenVPN, en cambio, comprende unas setenta mil líneas y depende de una biblioteca TLS —OpenSSL o mbedTLS— que añade varios cientos de miles de líneas de código adicionales al límite de confianza. La diferencia de tamaño no indica por sí sola que WireGuard sea más seguro, pero sí afecta lo a fondo que se puede revisar la implementación.

Compatibilidad de plataformas

Ambos protocolos tienen amplia compatibilidad. WireGuard cuenta con implementaciones oficiales para Linux (kernel y espacio de usuario), Windows, macOS, iOS, Android, FreeBSD y OpenBSD. La compatibilidad con iOS, en particular, está bien integrada a través del framework Network Extension de iOS.

OpenVPN está disponible en prácticamente todas las plataformas, incluidos sistemas más antiguos a los que WireGuard no se ha portado. Muchas redes corporativas usan OpenVPN por compatibilidad con infraestructura heredada.

Para despliegues nuevos en sistemas operativos modernos, WireGuard es la opción más directa. Para entornos que requieren amplia compatibilidad —incluidos sistemas heredados, dispositivos integrados o ciertos productos empresariales— OpenVPN sigue siendo relevante.

Modelo de configuración

El modelo de configuración de WireGuard es intencionadamente mínimo. Cada peer tiene una identidad de clave pública y una lista de IP permitidas. No hay autenticación a nivel de usuario, ni estado de sesión en el servidor, ni negociación de keepalive. El protocolo se apoya en la identidad criptográfica en lugar de en nombres de usuario y contraseñas.

OpenVPN admite un modelo de autenticación más flexible. Hay disponibles autenticación basada en certificados, autenticación con nombre de usuario y contraseña, y autenticación de dos factores. Esta flexibilidad es útil en entornos empresariales donde la autenticación está integrada con servicios de directorio.

Para los servicios VPN de consumo, donde los usuarios no necesitan identificarse entre sí, el modelo más simple de WireGuard suele ser suficiente.

Cuándo usar cada uno

La elección entre protocolos depende de las restricciones del despliegue.

  • WireGuard es preferible cuando el rendimiento, la simplicidad del código y la criptografía moderna son prioridades; cuando las plataformas objetivo tienen soporte nativo; y cuando el despliegue puede aceptar una suite de cifrado fija.
  • OpenVPN es preferible cuando se requiere compatibilidad con sistemas heredados; cuando se necesita integración con la autenticación empresarial; o cuando el despliegue debe atravesar redes que restringen el tráfico UDP (OpenVPN admite recurrir a TCP; WireGuard no).

Muchos servicios VPN de consumo modernos ofrecen ambos protocolos y dejan que el usuario elija. Snap VPN, en cambio, usa WireGuard de forma exclusiva, integrado a través del framework Network Extension de iOS. Esa decisión refleja el principio de diseño de reducir la superficie de implementación a lo necesario para la plataforma objetivo.

Para una visión general de cómo funcionan las VPN en general, consulta nuestra introducción a las VPN. Para la configuración práctica en el iPhone, consulta la guía de configuración de iOS.