WireGuard - WireGuard

WireGuard
Logotipo de WireGuard.svg
Autor (es) original (es) Jason A. Donenfeld
Desarrollador (es) Jason A. Donenfeld
Lanzamiento estable
1.0.20210219 / 19 de febrero de 2021 ; hace 7 meses ( 19 de febrero de 2021 )
Repositorio
Escrito en C ( Linux , módulos del kernel FreeBSD , NetBSD , controladores del kernel OpenBSD ), Go (implementación del espacio de usuario)
Sistema operativo
Escribe Red privada virtual
Licencia varios gratuitos y de código abierto
Sitio web www .wireguard .com

WireGuard es un protocolo de comunicación y un software gratuito y de código abierto que implementa redes privadas virtuales (VPN) cifradas , y fue diseñado con los objetivos de facilidad de uso, rendimiento de alta velocidad y baja superficie de ataque . Su objetivo es un mejor rendimiento y más potencia que IPsec y OpenVPN , dos protocolos de tunelización comunes . El protocolo WireGuard pasa el tráfico a través de UDP .

En marzo de 2020, la versión de Linux del software alcanzó una versión de producción estable y se incorporó al kernel de Linux 5.6 y se trasladó a kernels de Linux anteriores en algunas distribuciones de Linux . Los componentes del kernel de Linux tienen la licencia GNU General Public License (GPL) versión 2; otras implementaciones están bajo GPLv2 u otras licencias gratuitas / de código abierto.

Protocolo

WireGuard utiliza lo siguiente:

En mayo de 2019, investigadores de INRIA publicaron una prueba de WireGuard verificada por máquina, producida con el asistente de pruebas CryptoVerif .

Modo de clave simétrica previamente compartida opcional

WireGuard admite el modo de clave simétrica previamente compartida , que proporciona una capa adicional de cifrado simétrico para mitigar cualquier avance futuro en la computación cuántica. El riesgo es que el tráfico se almacene hasta que las computadoras cuánticas sean capaces de romper Curve25519 ; momento en el que se podría descifrar el tráfico. Las claves previamente compartidas son "generalmente problemáticas desde una perspectiva de administración de claves y es más probable que sean robadas", pero a corto plazo, si la clave simétrica se ve comprometida, las claves Curve25519 aún brindan una protección más que suficiente.

Redes

WireGuard solo usa UDP y, por lo tanto, no funciona en redes que bloquean el tráfico UDP. Esto es diferente a alternativas como OpenVPN debido a las muchas desventajas del enrutamiento TCP sobre TCP.

WireGuard es totalmente compatible con IPv6, tanto dentro como fuera del túnel. Solo admite la capa 3 para IPv4 e IPv6 y puede encapsular v4-in-v6 y viceversa.

WireGuard admite múltiples topologías :

  • Punto a punto
  • Estrella (servidor / cliente)
    • No es necesario definir un punto final de cliente antes de que el cliente comience a enviar datos.
    • Los puntos finales del cliente se pueden predefinir estáticamente.
  • Malla

Dado que se admite el punto a punto , se pueden realizar otras topologías, pero no en el mismo túnel.

Extensibilidad

WireGuard está diseñado para ser extendido por programas y scripts de terceros. Esto se ha utilizado para aumentar WireGuard con varias características que incluyen interfaces de administración más fáciles de usar (incluida la configuración más fácil de claves), registro, actualizaciones dinámicas de firewall e integración LDAP .

La exclusión de características tan complejas del código base mínimo mejora su estabilidad y seguridad. Para garantizar la seguridad, WireGuard restringe las opciones para implementar controles criptográficos, limita las opciones para los procesos de intercambio de claves y asigna algoritmos a un pequeño subconjunto de primitivas criptográficas modernas . Si se encuentra una falla en cualquiera de las primitivas, se puede lanzar una nueva versión que resuelva el problema. Además, los ajustes de configuración que afectan la seguridad de la aplicación en general no pueden ser modificados por usuarios sin privilegios.

Recepción

WireGuard tiene como objetivo proporcionar una implementación de red privada virtual simple y efectiva. Una revisión de 2018 de Ars Technica observó que las tecnologías VPN populares, como OpenVPN e IPsec , a menudo son complejas de configurar, se desconectan fácilmente (en ausencia de una configuración adicional), toman un tiempo considerable para negociar las reconexiones, pueden usar cifrados obsoletos y tienen cifras relativamente masivas. bases de código de más de 400.000 y 600.000 líneas de código, respectivamente, lo que dificulta la depuración.

El diseño de WireGuard busca reducir estos problemas, con el objetivo de hacer que el túnel sea más seguro y más fácil de administrar de forma predeterminada. Al utilizar el control de versiones de los paquetes de criptografía, se centra en cifrados que se cree que se encuentran entre los métodos de cifrado actuales más seguros, y en el momento de la revisión de Ars Technica tenía una base de código de alrededor de 4000 líneas de código del kernel, aproximadamente el 1% de OpenVPN o IPsec. , facilitando las auditorías de seguridad . WireGuard fue elogiado por el creador del kernel de Linux , Linus Torvalds, quien lo llamó una "obra de arte" en contraste con OpenVPN e IPsec. Ars Technica informó que en las pruebas, los túneles estables se crearon fácilmente con WireGuard, en comparación con las alternativas, y comentó que sería "difícil volver" a retrasos de reconexión prolongados, en comparación con las reconexiones instantáneas "sensatas" de WireGuard.

El senador de Oregon Ron Wyden recomendó al Instituto Nacional de Estándares y Tecnología (NIST) que evalúen WireGuard como un reemplazo para tecnologías existentes como IPsec y OpenVPN .

Disponibilidad

Implementaciones

Las implementaciones del protocolo WireGuard incluyen:

  • Implementación inicial de Donenfeld, escrita en C y Go.
  • BoringTun de Cloudflare, una implementación de espacio de usuario escrita en Rust .
  • La implementación de Matt Dunwoodie para OpenBSD, escrita en C.
  • La implementación de Ryota Ozaki wg (4), para NetBSD, está escrita en C.
  • La implementación de FreeBSD está escrita en C y comparte la mayor parte de la ruta de datos con la implementación de OpenBSD.
  • Proyecto OpenWrt : WireGuard
  • Implementación nativa del kernel de Windows denominada "wireguard-nt", desde agosto de 2021
  • OPNsense a través del paquete estándar os-WireGuard
  • pfSense a través del paquete estándar (pfSense-pkg-WireGuard) (un paquete comunitario respaldado por Netgate)

Soporte Linux

Los programas de espacio de usuario que admiten WireGuard incluyen:

Historia

Las primeras instantáneas del código base existen desde el 30 de junio de 2016. Cuatro de los primeros en adoptar WireGuard fueron los proveedores de servicios VPN Mullvad , AzireVPN, IVPN y cryptostorm . WireGuard ha recibido donaciones de Mullvad, Private Internet Access , IVPN , la Fundación NLnet y ahora también de OVPN.

A partir de junio de 2018, los desarrolladores de WireGuard aconsejaron tratar el código y el protocolo como experimentales, y advierten que aún no han logrado una versión estable compatible con el seguimiento CVE de las vulnerabilidades de seguridad que puedan descubrirse.

El 9 de diciembre de 2019, David Miller, principal responsable de la pila de redes de Linux, aceptó los parches de WireGuard en el árbol de mantenedores "net-next", para su inclusión en un próximo kernel.

El 28 de enero de 2020, Linus Torvalds fusionó el árbol net-next de David Miller y WireGuard ingresó al árbol del kernel de Linux de la línea principal.

El 20 de marzo de 2020, los desarrolladores de Debian habilitaron las opciones de compilación del módulo para WireGuard en la configuración de su kernel para la versión Debian 11 (prueba).

El 29 de marzo de 2020, WireGuard se incorporó al árbol de versiones de Linux 5.6. La versión de Windows del software permanece en beta.

El 30 de marzo de 2020, los desarrolladores de Android agregaron soporte nativo de kernel para WireGuard en su imagen de kernel genérica.

El 22 de abril de 2020, el desarrollador de NetworkManager Beniamino Galvani fusionó el soporte de GUI para WireGuard.

El 12 de mayo de 2020, Matt Dunwoodie propuso parches para el soporte nativo del kernel de WireGuard en OpenBSD .

El 22 de junio de 2020, después del trabajo de Matt Dunwoodie y Jason A. Donenfeld, se importó el soporte de WireGuard a OpenBSD.

El 23 de noviembre de 2020, Jason A. Donenfeld lanzó una actualización del paquete de Windows que mejora la instalación, la estabilidad, el soporte ARM y las características empresariales .

El 29 de noviembre de 2020, se importó el soporte de WireGuard al kernel de FreeBSD 13.

El 19 de enero de 2021, se agregó la compatibilidad con WireGuard para obtener una vista previa en las instantáneas de desarrollo de pfSense Community Edition (CE) 2.5.0.

En marzo de 2021, el soporte WireGuard en modo kernel se eliminó de FreeBSD 13.0, aún en prueba, después de que una limpieza urgente del código en FreeBSD WireGuard no se pudiera completar rápidamente. PfSense Community Edition (CE) 2.5.0 y pfSense Plus 21.02 basados ​​en FreeBSD también eliminaron WireGuard basado en kernel.

En mayo de 2021, se reintrodujo el soporte de WireGuard en las instantáneas de desarrollo de pfSense CE y pfSense Plus como un paquete experimental escrito por un miembro de la comunidad pfSense, Christian McDonald. El paquete WireGuard para pfSense incorpora el trabajo de desarrollo de WireGuard en modo kernel en curso de Jason A. Donenfeld que originalmente fue patrocinado por Netgate

En junio de 2021, los repositorios de paquetes oficiales para pfSense CE 2.5.2 y pfSense Plus 21.05 incluían el paquete WireGuard

Ver también

Notas

Referencias

enlaces externos