Protocolo VPN gratuito y de código abierto
WireGuard es un protocolo de comunicación y software libre y de código abierto que implementa redes privadas virtuales (VPN) cifradas. [5] Su objetivo es ser más ligero y tener mejor rendimiento que IPsec y OpenVPN , dos protocolos de tunelización comunes . [6] El protocolo WireGuard pasa el tráfico a través de UDP . [7]
En marzo de 2020, la versión Linux del software alcanzó una versión de producción estable y se incorporó al kernel Linux 5.6 y se adaptó a kernels Linux anteriores en algunas distribuciones de Linux . [4] Los componentes del kernel Linux están licenciados bajo la Licencia Pública General GNU (GPL) versión 2; otras implementaciones están bajo GPLv2 u otras licencias libres/de código abierto. [5]
El nombre WireGuard es una marca registrada de Jason A. Donenfeld. [5]
Protocolo
WireGuard utiliza lo siguiente: [8]
En mayo de 2019, investigadores del INRIA publicaron una prueba verificada por máquina del protocolo WireGuard, producida utilizando el asistente de prueba CryptoVerif . [9]
Modo de clave simétrica precompartida opcional
WireGuard admite el modo de clave simétrica precompartida , que proporciona una capa adicional de cifrado simétrico para mitigar los avances futuros en la computación cuántica. Esto aborda el riesgo de que el tráfico pueda almacenarse hasta que las computadoras cuánticas sean capaces de descifrar Curve25519 , momento en el que el tráfico podría descifrarse. Las claves precompartidas son "normalmente problemáticas desde una perspectiva de gestió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 siguen proporcionando una protección más que suficiente. [10]
Redes
WireGuard utiliza solo [7] UDP , [5] debido a las posibles desventajas de TCP sobre TCP. [7] [11] [12] La tunelización de TCP sobre una conexión basada en TCP se conoce como "TCP sobre TCP", y hacerlo puede inducir una pérdida drástica en el rendimiento de la transmisión debido al problema de fusión de TCP .
Su puerto de servidor predeterminado es UDP 51820.
WireGuard es totalmente compatible con IPv6, tanto dentro como fuera del túnel. Admite solo la capa 3 tanto para IPv4 como para IPv6 y puede encapsular v4 en v6 y viceversa. [13]
MTU por encima de la cabeza
Los costos generales de WireGuard se desglosan de la siguiente manera: [14]
- Encabezado IPv4 de 20 bytes o encabezado IPv6 de 40 bytes
- Encabezado UDP de 8 bytes
- Tipo de 4 bytes
- Índice de clave de 4 bytes
- Nonce de 8 bytes
- Datos cifrados de N bytes
- Etiqueta de autenticación de 16 bytes
Consideraciones operativas de la MTU
Suponiendo que la red subyacente que transporta los paquetes WireGuard mantiene una MTU de 1500 bytes, la configuración de la interfaz WireGuard con una MTU de 1420 bytes para todos los pares involucrados es ideal para transportar tráfico IPv6 + IPv4. Sin embargo, cuando se transporta exclusivamente tráfico IPv4 heredado, una MTU más alta de 1440 bytes para la interfaz WireGuard es suficiente. [14]
Desde una perspectiva operativa y para la uniformidad de la configuración de la red, sería ventajoso optar por configurar una MTU de 1420 en toda la red para las interfaces WireGuard. Este enfoque garantiza la coherencia y facilita una transición más fluida para habilitar IPv6 para los pares e interfaces WireGuard en el futuro.
Advertencia
Puede haber situaciones en las que, por ejemplo, un par esté detrás de una red con 1500 bytes de MTU, y un segundo par esté detrás de una red inalámbrica como una red LTE , donde a menudo, el operador optó por usar una MTU que es mucho menor que 1420 bytes. En tales casos, la pila de red IP subyacente del host fragmentará el paquete encapsulado UDP y enviará los paquetes a través del túnel, sin embargo, los paquetes dentro del túnel permanecerán consistentes y no será necesario fragmentarlos ya que PMTUD detectará la MTU entre los pares (en este ejemplo, sería 1420 bytes) y enviará un tamaño de paquete fijo entre los pares.
Extensibilidad
WireGuard está diseñado para ser ampliado por programas y scripts de terceros. Esto se ha utilizado para ampliar WireGuard con varias funciones, incluidas interfaces de administración más fáciles de usar (incluida una configuración más sencilla de claves), registro, actualizaciones dinámicas del firewall, asignación dinámica de IP [15] e integración con LDAP . [ cita requerida ]
Excluir estas características 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 procesos de intercambio de claves y asigna algoritmos [8] a un pequeño subconjunto de primitivas criptográficas modernas . Si se encuentra una falla en alguna de las primitivas, se puede lanzar una nueva versión que resuelva el problema.
Recepción
Una revisión realizada por Ars Technica descubrió que WireGuard era fácil de configurar y usar, utilizaba cifrados sólidos y tenía una base de código mínima que proporcionaba una pequeña superficie de ataque. [16]
WireGuard ha recibido financiación del Open Technology Fund [17] y donaciones de Mullvad , Private Internet Access , IVPN , la Fundación NLnet [18] y OVPN. [19]
El senador de Oregon Ron Wyden ha recomendado al Instituto Nacional de Estándares y Tecnología (NIST) que evalúe WireGuard como reemplazo de las tecnologías existentes. [20]
Disponibilidad
Implementaciones
Las implementaciones del protocolo WireGuard incluyen:
- Implementación inicial de Donenfeld, escrita en C y Go. [21]
- BoringTun de Cloudflare , una implementación de espacio de usuario escrita en Rust . [22] [23]
- Implementación de Matt Dunwoodie para OpenBSD, escrita en C. [24]
- Implementación de wg(4) de Ryota Ozaki para NetBSD, escrita en C. [25]
- 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. [26]
- Implementación nativa del kernel de Windows denominada "wireguard-nt", desde agosto de 2021. [27]
- Módems-enrutadores AVM Fritz!Box compatibles con la versión 7.39 y posteriores de Fritz!OS. Permite conexiones WireGuard de sitio a sitio a partir de la versión 7.50. [28]
- Implementación del espacio de usuario de procesamiento de paquetes vectoriales escrita en C.
Historia
Existen instantáneas tempranas del código base desde el 30 de junio de 2016. [29] Cuatro de los primeros en adoptar WireGuard fueron los proveedores de servicios VPN Mullvad , [30] AzireVPN, [31] IVPN [32] y cryptostorm. [33]
El 9 de diciembre de 2019, David Miller, principal responsable del conjunto de redes de Linux, aceptó los parches WireGuard en el árbol de mantenimiento "net-next", para su inclusión en un próximo kernel. [34] [35] [36]
El 28 de enero de 2020, Linus Torvalds fusionó el árbol net-next de David Miller y WireGuard ingresó al árbol principal del kernel de Linux. [37]
El 20 de marzo de 2020, los desarrolladores de Debian habilitaron las opciones de compilación del módulo WireGuard en su configuración del kernel para la versión Debian 11 (prueba). [38]
El 29 de marzo de 2020, WireGuard se incorporó al árbol de versiones de Linux 5.6. La versión del software para Windows sigue en fase beta. [4]
El 30 de marzo de 2020, los desarrolladores de Android agregaron soporte de kernel nativo para WireGuard en su imagen de kernel genérica. [39]
El 22 de abril de 2020, el desarrollador de NetworkManager, Beniamino Galvani, fusionó el soporte de GUI para WireGuard en GNOME . [40]
El 12 de mayo de 2020, Matt Dunwoodie propuso parches para el soporte nativo del kernel de WireGuard en OpenBSD . [41]
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. [42]
El 23 de noviembre de 2020, Jason A. Donenfeld lanzó una actualización del paquete de Windows que mejora la instalación, la estabilidad, la compatibilidad con ARM y las funciones empresariales . [43]
El 29 de noviembre de 2020, se importó la compatibilidad con WireGuard al kernel de FreeBSD 13. [26]
El 19 de enero de 2021, se agregó compatibilidad con WireGuard para la vista previa en las instantáneas de desarrollo de pfSense Community Edition (CE) 2.5.0. [44]
En marzo de 2021, se eliminó la compatibilidad con WireGuard en modo kernel de FreeBSD 13.0, todavía en pruebas, después de que una limpieza de código urgente en FreeBSD WireGuard no se pudiera completar rápidamente. [45] pfSense Community Edition (CE) 2.5.0 y pfSense Plus 21.02 basados en FreeBSD también eliminaron WireGuard basado en kernel. [46]
En mayo de 2021, se volvió a incorporar la compatibilidad con WireGuard en las instantáneas de desarrollo de pfSense CE y pfSense Plus como un paquete experimental escrito por un miembro de la comunidad de 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. [47] [44] [48]
En junio de 2021, los repositorios de paquetes oficiales de pfSense CE 2.5.2 y pfSense Plus 21.05 incluyeron el paquete WireGuard. [49]
En 2023, WireGuard recibió más de 200.000 euros de apoyo del Fondo Tecnológico Soberano de Alemania . [50]
Véase también
Notas
- ^ Es posible que no todas las plataformas tengan una versión lanzada actualmente y algunas pueden estar en fase beta. [ ¿Necesita actualización? ]
Referencias
- ^ Grauer, Yael (16 de enero de 2021). «Cómo el esfuerzo de un hacker por proteger Internet se convirtió en una parte crucial de los sistemas operativos Mac, Linux y Windows». Business Insider . Consultado el 25 de noviembre de 2022 .
- ^ "wireguard-linux-compat" . Consultado el 4 de noviembre de 2022 .
- ^ "Instalación". WireGuard . Consultado el 23 de abril de 2020 .
- ^ abc Salter, Jim (30 de marzo de 2020). «WireGuard VPN llega a la versión 1.0.0 y al próximo núcleo de Linux». Archivado desde el original el 31 de marzo de 2020. Consultado el 23 de abril de 2020 .
- ^ abcd «WireGuard: túnel VPN rápido, moderno y seguro». WireGuard. Archivado desde el original el 28 de abril de 2018. Consultado el 31 de marzo de 2021 .
- ^ Preneel, Bart; Vercauteren, Frederik, eds. (11 de junio de 2018). Criptografía Aplicada y Seguridad de Redes. Saltador. ISBN 978-3-319-93387-0Archivado desde el original el 18 de febrero de 2019 . Consultado el 25 de junio de 2018 .
- ^ abcd Donenfeld, Jason A. "Limitaciones conocidas - WireGuard". www.wireguard.com . Consultado el 1 de junio de 2020 .
- ^ de Donenfeld, Jason A. "Protocolo y criptografía: WireGuard". www.wireguard.com . Consultado el 14 de mayo de 2023 .
- ^ Lipp, Benjamin; Blanchet, Bruno; Bhargavan, Karthikeyan (2019), Una prueba criptográfica mecanizada del protocolo de red privada virtual WireGuard (informe), Informe de investigación RR-9269, París: Inria, pág. 49, hal-02100345
- ^ Donenfeld, Jason (2 de mayo de 2021). "WireGuard: túnel de red de núcleo de próxima generación" (PDF) . Wireguard.com .
- ^ Titz, Olaf (23 de abril de 2001). "Why TCP Over TCP Is A Bad Idea" (Por qué TCP sobre TCP es una mala idea) . Consultado el 17 de octubre de 2015 .
- ^ Honda, Osamu; Ohsaki, Hiroyuki; Imase, Makoto; Ishizuka, Mika; Murayama, Junichi (octubre de 2005). "Comprensión de TCP sobre TCP: efectos de la tunelización TCP en el rendimiento y la latencia de extremo a extremo". En Atiquzzaman, Mohammed; Balandin, Sergey I (eds.). Rendimiento, calidad de servicio y control de las redes de sensores y comunicaciones de próxima generación III . Vol. 6011. Bibcode :2005SPIE.6011..138H. CiteSeerX 10.1.1.78.5815 . doi :10.1117/12.630496. S2CID 8945952.
- ^ Donenfeld, Jason A. "Introducción y motivación" (PDF) . WireGuard: túnel de red de núcleo de próxima generación (PDF) . Archivado (PDF) del original el 4 de marzo de 2018.
- ^ ab Donenfeld, Jason A. (11 de diciembre de 2017). «[WireGuard] Tamaños de encabezado/MTU para Wireguard» . Consultado el 13 de enero de 2024 .
- ^ Herramienta de configuración de IP dinámica de Wireguard, WireGuard, 14 de mayo de 2023 , consultado el 14 de mayo de 2023
- ^ Salter, Jim (26 de agosto de 2018). «Revisión de WireGuard VPN: un nuevo tipo de VPN ofrece importantes ventajas». Ars Technica . Archivado desde el original el 20 de septiembre de 2018.
- ^ "Construcción de un protocolo VPN WireGuard más seguro, accesible y resistente". www.opentech.fund . Consultado el 20 de junio de 2022 .
- ^ "Donaciones". WireGuard. Archivado desde el original el 28 de abril de 2018. Consultado el 28 de abril de 2018 .
- ^ "OVPN realiza una donación para apoyar a WireGuard". OVPN . 23 de marzo de 2020.
- ^ "Senador estadounidense recomienda WireGuard de código abierto al NIST para VPN del gobierno". Phoronix . 30 de junio de 2018. Archivado desde el original el 5 de agosto de 2018 . Consultado el 5 de agosto de 2018 .
- ^ Donenfeld, Jason (7 de junio de 2019). «WireGuard: túnel VPN rápido, moderno y seguro» . Consultado el 16 de junio de 2019 .
- ^ Krasnov, Vlad (18 de diciembre de 2018). «BoringTun, una implementación de WireGuard en el espacio de usuario en Rust». Blog de Cloudflare . Archivado desde el original el 4 de abril de 2019. Consultado el 29 de marzo de 2019 .
- ^ "CloudFlare lanza "BoringTun" como implementación de espacio de usuario de WireGuard escrita en Rust". phoronix.com . Consultado el 29 de marzo de 2019 .
- ^ Johansson, Janne (21 de junio de 2020). "WireGuard importado a OpenBSD".
- ^ "wg(4) - Páginas del manual de NetBSD". 20 de agosto de 2020.
- ^ ab "Importar soporte del kernel WireGuard".
- ^ "WireGuardNT, una implementación de WireGuard de alto rendimiento para el kernel de Windows". 2 de agosto de 2021.
- ^ "WireGuard: VPN nunca ha sido tan fácil".
- ^ "Índice de /Monolítico-histórico/".
- ^ Mason, John (13 de febrero de 2019). "Revisión de Mullvad". thebestwpn . 2. Protocolos de tunelización potentes: OpenVPN y WireGuard. Archivado desde el original el 24 de junio de 2019 . Consultado el 8 de abril de 2019 .
- ^ Mason, John (19 de febrero de 2019). "Revisión de AzireVPN". thebestvpn . 2. Protocolos y cifrado impresionantes. Archivado desde el original el 8 de mayo de 2019 . Consultado el 8 de abril de 2019 .
- ^ Pestell, Nick (11 de diciembre de 2018). «Introducing Wireguard» (Presentación de Wireguard) . Consultado el 22 de septiembre de 2019 .
- ^ "¡Compatibilidad con WireGuard añadida!". Blog de Cryptostorm . 5 de abril de 2019. Archivado desde el original el 9 de diciembre de 2019. Consultado el 9 de diciembre de 2019 .
- ^ "e7096c131e5161fa3b8e52a650d7719d2857adfd - pub/scm/linux/kernel/git/davem/net-next - Git en Google". kernel.googlesource.com .
- ^ "LKML: David Miller: Re: [PATCH net-next v2] net: Túnel de red seguro WireGuard". lkml.org .
- ^ "[ANUNCIO] WireGuard se fusiona con net-next, en camino a Linux 5.6". 9 de enero de 2020. Archivado desde el original el 9 de enero de 2020.
- ^ Torvalds, Linus. «índice: kernel/git/torvalds/linux.git». Árbol de código fuente del kernel de Linux . Kernel.org . Consultado el 2 de febrero de 2020 .
- ^ "drivers/net: Habilitar WIREGUARD como módulo". 21 de marzo de 2020.
- ^ "ANDROID: GKI: habilitar CONFIG_WIREGUARD".
- ^ "merge branch 'bg/wireguard' (d321d0df) · Commits · GNOME / network-manager-applet". gitlab.gnome.org . 22 de abril de 2020 . Consultado el 30 de mayo de 2020 .
- ^ "Se publicaron los parches del kernel de WireGuard para OpenBSD". 12 de mayo de 2020.
- ^ "agregar wg(4), un controlador en el kernel para la comunicación VPN WireGuard".
- ^ "[ANUNCIO] WireGuard para Windows 0.3: compatibilidad con ARM, funciones empresariales y más". 23 de noviembre de 2020.
- ^ ab Paxson, Audian (19 de enero de 2021). "WireGuard para software pfSense". Netgate . Consultado el 9 de junio de 2021 .
- ^ Anderson, Tim (23 de marzo de 2021). "FreeBSD 13.0 se distribuirá sin soporte para WireGuard mientras los desarrolladores intervienen para solucionar 'graves problemas' con la implementación inicial". The Register . Situation Publishing . Consultado el 31 de marzo de 2021 .
- ^ Thompson, Jim (18 de marzo de 2021). "WireGuard eliminado del software pfSense® CE y pfSense® Plus". Blog de Netgate . Rubicon Communications . Consultado el 20 de marzo de 2021 .
- ^ Long, Scott (5 de mayo de 2021). «pfSense: WireGuard regresa como paquete experimental». Netgate: las redes seguras comienzan aquí . Consultado el 9 de junio de 2021 .
- ^ "wireguard-freebsd - Implementación de WireGuard para el núcleo de FreeBSD". git.zx2c4.com . Consultado el 9 de junio de 2021 .
- ^ Pingle, Jim (2 de junio de 2021). "pfSense Plus 21.05-RELEASE ya está disponible". Netgate: las redes seguras comienzan aquí . Consultado el 9 de junio de 2021 .
- ^ "WireGuard". Fondo Tecnológico Soberano . Consultado el 26 de mayo de 2024 .