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 . [4] Tiene como objetivo un mejor rendimiento y más ahorro de energía que los protocolos de tunelización IPsec y OpenVPN . [5] El protocolo WireGuard pasa el tráfico por UDP . [6]
![]() | |
Autor (es) original (es) | Jason A. Donenfeld |
---|---|
Desarrollador (es) | Jason A. Donenfeld |
Lanzamiento estable | 1.0.20210219 [1] / 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 | [2] [3] [a] |
Tipo | Red privada virtual |
Licencia | varios gratuitos y de código abierto |
Sitio web | www |
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 . [3] Los componentes del kernel de Linux están sujetos a la licencia pública general GNU (GPL) versión 2; otras implementaciones están bajo GPLv2 u otras licencias gratuitas / de código abierto. [4]
Protocolo
WireGuard utiliza lo siguiente: [4]
- Curve25519 para intercambio de claves
- ChaCha20 para cifrado simétrico
- Poly1305 para códigos de autenticación de mensajes
- SipHash para claves de tabla hash
- BLAKE2s para función hash criptográfica
- Solo basado en UDP [6]
En mayo de 2019, investigadores de INRIA publicaron una prueba de WireGuard verificada por máquina, producida con el asistente de pruebas CryptoVerif . [7]
Cifrado
WireGuard usa ChaCha20 . [4]
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 almacena 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. [8]
Redes
WireGuard solo [9] usa UDP . [4] Esto es diferente a alternativas como OpenVPN debido a las muchas desventajas del enrutamiento TCP sobre TCP. [9] [10] UDP como único transporte es inadecuado para hoteles, centros de conferencias u otras redes públicas que restringen la comunicación a los protocolos HTTP y HTTPS comunes.
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. [11]
WireGuard admite múltiples topologías : [ cita requerida ]
- 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. [ cita requerida ]
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 . [ cita requerida ]
La exclusión de características tan complejas del código base mínimo mejora su estabilidad y seguridad. Para garantizar la seguridad, WireGurard restringe las opciones para implementar controles criptográficos, limita las opciones para los procesos de intercambio de claves y aplica algoritmos hash a un pequeño subconjunto de primitivas criptográficas modernas . Si se encuentra alguna falla en una de las primitivas, se puede lanzar una nueva versión que resuelva el problema. Además, los usuarios no pueden modificar la configuración que afecta a la seguridad de la aplicación en general. [12]
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. [13]
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 comparó con OpenVPN e IPsec como una "obra de arte". [14] 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 los retrasos de reconexión largos, en comparación con las reconexiones instantáneas "sensatas" de WireGuard. [13]
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 . [15]
Disponibilidad
Implementaciones
Las implementaciones del protocolo WireGuard incluyen:
- Implementación inicial de Donenfeld, escrita en C y Go. [dieciséis]
- BoringTun de Cloudflare, una implementación de espacio de usuario escrita en Rust . [17] [18]
- La implementación de Matt Dunwoodie para OpenBSD, escrita en C. [19]
- La implementación de Ryota Ozaki wg (4), para NetBSD, está escrita en C. [20]
- 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. [21]
- Proyecto OpenWrt : WireGuard
- Oracle Linux con " Unbreakable Enterprise Kernel " Release 6 Update 1, desde noviembre de 2020 [22]
Programas de espacio de usuario compatibles con WireGuard
Los programas de espacio de usuario que admiten WireGuard incluyen:
- NetworkManager desde la versión 1.16 [23]
- systemd desde la versión 237 [24]
- ConnMan de Intel desde la versión 1.38 [25]
- VPN de Mozilla [26]
- Red NOIA [27]
- NordVPN a través de Nordlynx [28]
- OPNsense a través del paquete estándar os-WireGuard [29]
- pfSense a través del paquete estándar (pfSense-pkg-WireGuard) [30] (Un paquete comunitario respaldado por Netgate)
- PiVPN desde el 17 de octubre de 2019 [31]
- VPN de acceso privado a Internet desde el 10 de abril de 2020 [32]
- Surfshark desde octubre de 2020 [33]
- Mistborn (software) VPN desde marzo de 2020 [34]
- oVPN desde febrero de 2020, [35] lanzamiento en 2021 [36]
- Torguard desde 2020 [37]
- Trust.zone VPN desde febrero de 2021
- Veeam Powered Network v2, desde mayo de 2019 [38]
- VPN ilimitado desde noviembre de 2019 [39]
- Vypr VPN desde mayo de 2020 [40]
- Windscribe en 2020 [41]
Historia
Las primeras instantáneas del código base existen desde el 30 de junio de 2016. [42] Cuatro de los primeros en adoptar WireGuard fueron los proveedores de servicios VPN Mullvad , [43] AzireVPN, [44] IVPN [45] y cryptostorm. [46] WireGuard ha recibido donaciones de Mullvad, Private Internet Access , IVPN , la Fundación NLnet [47] y ahora también de OVPN. [48]
A junio de 2018[actualizar]los desarrolladores de WireGuard recomiendan 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. [49] [50] [ necesita actualización ]
El 9 de diciembre de 2019, David Miller, responsable principal de mantenimiento de la pila de redes de Linux, aceptó los parches WireGuard en el árbol de mantenimiento "net-next", para su inclusión en un próximo kernel. [51] [52] [53]
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. [54]
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). [55]
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. [3]
El 30 de marzo de 2020, los desarrolladores de Android agregaron soporte nativo de kernel para WireGuard en su imagen de kernel genérica. [56]
El 22 de abril de 2020, el desarrollador de NetworkManager Beniamino Galvani fusionó el soporte de GUI para WireGuard. [57]
El 12 de mayo de 2020, Matt Dunwoodie propuso parches para el soporte nativo del kernel de WireGuard en OpenBSD . [58]
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. [59]
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 . [60]
El 29 de noviembre de 2020, se importó el soporte de WireGuard al kernel de FreeBSD 13. [21]
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. [61]
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. [62] pfSense Community Edition (CE) 2.5.0 basado en FreeBSD y pfSense Plus 21.02 también eliminaron WireGuard basado en kernel. [63]
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 WireGuard en modo kernel en curso de Jason A. Donenfeld que fue patrocinado originalmente por Netgate [64] [65] [66]
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 [67]
Ver también
- Comparación de servicios de red privada virtual
- Secure Shell (SSH), un protocolo de red criptográfico que se utiliza para proteger los servicios en una red no segura.
Notas
- ^ No todas las plataformas pueden tener una versión lanzada actualmente y algunas pueden estar en beta. [ necesita actualización? ]
Referencias
- ^ https://git.zx2c4.com/wireguard-linux-compat/tag/?h=v1.0.20210219 ; Consultado: 18 de marzo de 2021.
- ^ "Instalación" . WireGuard . Consultado el 23 de abril de 2020 .
- ^ a b c Salter, Jim (30 de marzo de 2020). "WireGuard VPN llega a 1.0.0 y al próximo kernel de Linux" . Archivado desde el original el 31 de marzo de 2020 . Consultado el 23 de abril de 2020 .
- ^ a b c d e "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 la red . Saltador. ISBN 978-3-319-93387-0. Archivado desde el original el 18 de febrero de 2019 . Consultado el 25 de junio de 2018 .
- ^ a b Donenfeld, Jason A. "Limitaciones conocidas - WireGuard" . www.wireguard.com . Consultado el 1 de junio de 2020 .
- ^ Lipp, Benjamin; Blanchet, Bruno; Bhargavan, Karthikeyan (2019), A Mechanized Cryptographic Proof of the WireGuard Virtual Private Network Protocol , Informe de investigación RR-9269, París: Inria, p. 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 .
- ^ a b Donenfeld, Jason A. "Limitaciones conocidas - WireGuard" . www.wireguard.com . Consultado el 2 de mayo de 2021 .
- ^ "Por qué TCP sobre TCP es una mala idea" . sites.inka.de . Consultado el 2 de mayo de 2021 .
- ^ 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) desde el original el 4 de marzo de 2018.
- ^ "Protocolo VPN Wireguard - Privacy HQ" . privacyhq.com . Consultado el 6 de mayo de 2021 .
- ^ a b Salter, Jim (26 de agosto de 2018). "Revisión de WireGuard VPN: un nuevo tipo de VPN ofrece serias ventajas" . Ars Technica . Archivado desde el original el 20 de septiembre de 2018.
- ^ "Archivo del kernel de Linux: Re: Redes [GIT]" .
- ^ "El senador de Estados Unidos recomienda WireGuard de código abierto a 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 WireGuard escrito por 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.
- ^ a b "Importar soporte de Kernel WireGuard" .
- ^ "Anuncio de la actualización 1 de la versión 6 del kernel empresarial irrompible para Oracle Linux" . Blog de Oracle Linux . 12 de noviembre de 2020 . Consultado el 12 de noviembre de 2020 .
- ^ Haller, Thomas (15 de marzo de 2019). "WireGuard en NetworkManager" . Blogs de GNOME .
- ^ Poettering, Lennart (28 de enero de 2018). "[ANUNCIO] systemd v237" . systemd-devel (lista de correo).
- ^ Larabel, Michael (18 de febrero de 2020). "Intel ConnMan 1.38 lanzado con soporte WireGuard" . Phoronix .
- ^ "Mozilla VPN: proteja todo su dispositivo" .
- ^ Radziukas, Augustas (16 de julio de 2020). "Actualización de desarrollo 07.02–07.16" . Medio . Consultado el 25 de julio de 2020 .
- ^ "¿Qué es NordLynx? | Atención al cliente de NordVPN" . support.nordvpn.com . Consultado el 1 de septiembre de 2020 .
- ^ "Resultados de búsqueda de OPNsense para wireguard | documentación de OPNsense" . OPNsense . Consultado el 28 de abril de 2021 .
- ^ McDonald, Christian (9 de junio de 2021). "theonemcdonald / pfSense-pkg-WireGuard" . github . Consultado el 1 de junio de 2020 .
- ^ "pivpn / pivpn" . GitHub . Consultado el 30 de mayo de 2020 .
- ^ "WireGuard® en PIA está fuera de versión beta y está disponible para usar en Windows, Mac, Linux, Android e iOS" . Consultado el 26 de agosto de 2020 .
- ^ "El protocolo WireGuard rápido y ordenado ahora está disponible en Surfshark" . Surfshark . 19 de octubre de 2020 . Consultado el 8 de noviembre de 2020 .
- ^ "Mistborn agrupa importantes servicios de Internet en su red doméstica y los asegura con un túnel VPN WireGuard, Pi-hole, reglas de iptables y contenedores separados" . Consultado el 16 de octubre de 2020 .
- ^ "¿Qué es WireGuard?" . OVPN.com . Consultado el 7 de noviembre de 2020 .
- ^ "Nuevas actualizaciones de oVPN - WireGuard + OpenVPN 2.5 próximamente! - YouTube" . www.youtube.com . Consultado el 7 de noviembre de 2020 .
- ^ "Wireguard VPN | TorGuard" . torguard.net . Consultado el 7 de noviembre de 2020 .
- ^ "Por qué elegimos WireGuard para Veeam PN v2" . Blog oficial de Veeam Software . 15 de mayo de 2019 . Consultado el 2 de diciembre de 2020 .
- ^ "¿Qué es el protocolo VPN WireGuard y cómo usarlo con VPN Unlimited?" . Blog de VPN Unlimited . 15 de noviembre de 2019 . Consultado el 7 de noviembre de 2020 .
- ^ "¡El Protocolo VPN VyprVPN WireGuard está aquí para protegerlo!" . AndroidPIMP . 14 de mayo de 2020 . Consultado el 8 de noviembre de 2020 .
- ^ S, Yegor (21 de julio de 2020). "Presentación de WireGuard" . Medio . Consultado el 8 de noviembre de 2020 .
- ^ "Índice de / Monolítico-histórico /" .
- ^ Mason, John (13 de febrero de 2019). "Revisión de Mullvad" . thebestwpn . 2. Protocolos de tunelización sólidos: 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. Impresionantes protocolos y cifrado. Archivado desde el original el 8 de mayo de 2019 . Consultado el 8 de abril de 2019 .
- ^ Pestell, Nick (11 de diciembre de 2018). "Presentación de Wireguard" . Consultado el 22 de septiembre de 2019 .
- ^ "¡Se agregó soporte WireGuard!" . 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 .
- ^ "Donaciones" . WireGuard. Archivado desde el original el 28 de abril de 2018 . Consultado el 28 de abril de 2018 .
- ^ "OVPN dona para apoyar a WireGuard" . OVPN . 23 de marzo de 2020.
- ^ "Sobre el proyecto" . WireGuard. Trabajo en progreso. Archivado desde el original el 25 de junio de 2018 . Consultado el 25 de junio de 2018 .
- ^ "Instalación" . WireGuard. Archivado desde el original el 26 de junio de 2018 . Consultado el 26 de junio de 2018 .
- ^ "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 segura WireGuard" . lkml.org .
- ^ "[ANUNCIO] WireGuard se fusionó con net-next, en su camino hacia 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 fuentes del kernel de Linux . Kernel.org . Consultado el 2 de febrero de 2020 .
- ^ "drivers / net: Habilite WIREGUARD como módulo" .
- ^ "ANDROID: GKI: habilitar CONFIG_WIREGUARD" .
- ^ "fusionar rama 'bg / wireguard' (d321d0df) · Confirma · GNOME / network-manager-applet" . gitlab.gnome.org . Consultado el 30 de mayo de 2020 .
- ^ "WireGuard para parches de kernel de OpenBSD publicados" .
- ^ "agregue wg (4), un controlador del kernel para la comunicación WireGuard vpn" .
- ^ "[ANUNCIO] WireGuard para Windows 0.3: compatibilidad con ARM, funciones empresariales y más" .
- ^ "WireGuard para el software pfSense" .
- ^ Anderson, Tim (23 de marzo de 2021). "FreeBSD 13.0 se distribuirá sin el soporte de WireGuard cuando el desarrollador interviene para solucionar 'problemas graves' con la implementación inicial" . El registro . Publicación de situaciones . 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 . Comunicaciones Rubicon . Consultado el 20 de marzo de 2021 .
- ^ Long, Scott (5 de mayo de 2021). "pfSense: WireGuard regresa como un paquete experimental" . Netgate: las redes seguras comienzan aquí . Consultado el 9 de junio de 2021 .
- ^ Paxson, Audian (19 de enero de 2021). "WireGuard para el software pfSense" . Netgate: las redes seguras comienzan aquí . Consultado el 9 de junio de 2021 .
- ^ "wireguard-freebsd - Implementación de WireGuard para el kernel 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 .
enlaces externos
- Página web oficial