Wireguard FPGA
(github.com/chili-chips-ba)- Este proyecto de código abierto implementa Wireguard VPN en hardware usando un FPGA Artix7 de bajo costo y una cadena de herramientas de código abierto
- Se caracteriza por ofrecer velocidad cercana a wire-speed y bajo costo frente al enfoque tradicional por software
- Todos los archivos de diseño están completamente abiertos, lo que permite revisar a fondo posibles puertas traseras o fallas de seguridad
- Los algoritmos criptográficos modernos de Wireguard, como ChaCha20-Poly1305, Curve25519 y BLAKE2, están implementados mediante una combinación de hardware y software
- Este proyecto aún está en una etapa inicial de "Proof of Concept", y se prevé ampliar funciones y optimizarlo en el futuro
Introducción e importancia
Este proyecto abierto de Wireguard FPGA implementa Wireguard VPN en hardware sobre un FPGA Artix7 económico, permitiendo que cualquiera use un VPN —un componente clave de la infraestructura de seguridad de red— a máxima velocidad y con bajo costo. Mientras que las soluciones de hardware existentes requerían FPGA comerciales costosos y cadenas de herramientas cerradas, este proyecto se diferencia por su diseño basado en código abierto, el uso de herramientas abiertas y la publicación completa del código fuente, con ventajas claras en transparencia y accesibilidad.
Contexto y objetivos del proyecto
- Soluciones existentes como OpenVPN e IPSec tienen limitaciones en rendimiento y administración, por lo que Wireguard está emergiendo como una alternativa moderna y segura
- Las implementaciones actuales de Wireguard en hardware dependen de equipos costosos y de IP cerrada, y el rendimiento de las implementaciones por software no alcanza la velocidad de línea de la red
- Este proyecto desarrolla Wireguard en SystemVerilog para que cualquiera pueda usarlo en entornos FPGA abiertos y de bajo costo ❨incluidos fines de verificación y educación❩
Comparación con proyectos relacionados
- El proyecto Blackwire (hardware Wireguard de clase 100Gbps) usa un Alveo U50 costoso y la cadena cerrada Vivado, lo que reduce su accesibilidad
- El equipo de ese proyecto desarrolló antes módulos clave como el algoritmo Balanced Binary Tree Search, pero se confirmaron limitaciones como el fracaso de su comercialización y problemas de propiedad
- Wireguard FPGA enfatiza el uso de HDL estándar de la industria (SystemVerilog), soporte para herramientas de código abierto, hardware económico de amplia disponibilidad y una política transparente de código abierto
Arquitectura de hardware y software
Hardware (HW)
- Plano de control: una CPU soft conectada a un boot ROM y a un controlador DDR3 SDRAM se encarga de la gestión del protocolo Wireguard, el enrutamiento y la administración de sesiones y claves
- Plano de datos: implementado en RTL, procesa a wire-speed el cifrado/descifrado de paquetes, el enrutamiento y la transferencia efectiva de datos del protocolo Wireguard
- Componentes principales
- PHY Controller, 1G MAC, Rx/Tx FIFO, Header Parser, Packet {Dis/As}sembler, módulos de cifrado/autenticación ChaCha20-Poly1305, motor de búsqueda IP, etc.
- Todos los módulos de cifrado y autenticación están implementados con base en el estándar RFC7539
Software (SW)
- Wireguard Agent: se encarga del handshake del protocolo, el mantenimiento de sesiones y la gestión de tablas de claves y enrutamiento
- Módulos relacionados con criptografía
- Curve25519: intercambio de claves ECDH
- ChaCha20-Poly1305, XChaCha20-Poly1305: cifrado/autenticación simétrica de tipo AEAD y protección de nonce
- BLAKE2s: autenticación MAC y hash
- Además incluye HKDF, Timer, SipHash, CLI, drivers HAL/CSR, etc.
Plan de desarrollo y ejecución
Etapas del proyecto
- Etapa 1: puesta en marcha de la placa y establecimiento del plano de diseño, familiarización con la plataforma HW/SW, análisis de implementaciones existentes, partición del diseño y documentación
- Etapa 2: implementación e integración básica de la ruta de datos en hardware para un canal Wireguard estático, y aceleración en HW de algoritmos criptográficos (en especial ChaCha20-Poly1305)
- Etapa 3: desarrollo del software de gestión en un procesador soft RISC-V e integración HW/SW, dejando en software tareas de baja sobrecarga como la gestión de sesiones y claves
- Etapa 4: implementación del flujo completo del túnel VPN, desde la inicialización hasta el mantenimiento y el cierre seguro
- Etapa 5: pruebas de rendimiento, optimización, ampliación del soporte para otras cadenas de herramientas abiertas (OpenXC7) y mantenimiento continuo de documentación/CI para la comunidad
- Etapa 6 (opcional): desarrollo del software de control del flujo de datos del túnel VPN para lograr transmisión y gestión estables de datos
Arquitectura conjunta HW/SW (colaboración)
- Como el nodo WireGuard cumple un rol similar al de un router IP, se divide de forma eficiente en una estructura de dos capas (plano de control/plano de datos)
- Se separa el tráfico de control (mensajes de protocolo) del tráfico de datos (paquetes cifrados o de usuario), diseñando para cada uno rutas y estructuras de procesamiento adecuadas
Sistema de simulación y verificación
- Puede elegirse una CPU basada en virtualización (VProc) o en softcore RTL (como RISC-V), con análisis escalonado de paquetes basado en escenarios reales de tráfico Wireguard
- Co-simulation HAL: con peakrdl se generan automáticamente los registros de control/estado entre HW y SW y se provee una API, permitiendo pruebas rápidas de integración SW/HW en funcionamiento real
Código abierto y transparencia
- Circuitería (gateware), software embebido, build, bitstream y todo el resto de la implementación se publican completamente bajo licencia BSD-3-Clause
- Se enfatiza una estructura abierta para que la comunidad pueda revisar directamente problemas como puertas traseras, vulnerabilidades o propiedad legal
Información adicional
- El flujo de desarrollo, la explicación detallada por partes, las principales fuentes de referencia y los módulos externalizados pueden consultarse en el archivo README y en subdirectorios (1.hw, 2.sw, 3.build, etc.)
- Cuenta con el patrocinio de la NLnet Foundation
Conclusión
- Este proyecto apunta a convertirse en un estándar abierto para implementaciones de hardware de Wireguard VPN de alto rendimiento, diferenciándose por su bajo costo, transparencia y rapidez de adopción
- Aunque está en una etapa temprana de desarrollo, se espera que juegue un papel importante en la futura infraestructura de red abierta tanto por seguridad como por accesibilidad
Aún no hay comentarios.