Código abierto · Compatible con WireGuard®
Haz que tu clave VPN sea imposible de copiar.
Latchwire guarda tu clave privada de WireGuard dentro de una YubiKey. La clave se genera en la tarjeta y nunca sale de ella. El protocolo y tu servidor no cambian. Sin tarjeta, no hay túnel.
Versión preliminar: línea de comandos para macOS y Linux
Cómo funciona
Genera la clave en tu YubiKey
Ejecuta keygen con una YubiKey con firmware 5.7 o posterior. La clave se crea en la tarjeta, en una ranura PIV retirada (82–95), y las demás ranuras quedan como están. Una tarjeta con la configuración de fábrica recibe antes un PIN y un PUK nuevos.
Añade la clave pública a tu servidor
Tu servidor ve un peer de WireGuard normal, así que no necesita plugins ni actualizaciones. Latchwire está pensado para servidores estándar como OPNsense, pfSense, Linux y MikroTik. Hasta ahora solo se ha probado de extremo a extremo con un servidor de pruebas en un contenedor Linux.
Introduce tu PIN y conéctate
El PIN va a la tarjeta y no se guarda. Normalmente lo introduces una vez; se vuelve a pedir tras la suspensión o cuando otro programa reinicia la tarjeta. Si retiras la tarjeta, el túnel se cierra. El objetivo son dos segundos; una prueba con una tarjeta simulada tardó alrededor de uno.
WireGuard clásico frente a Latchwire
| Pregunta | WireGuard clásico | Latchwire |
|---|---|---|
| ¿Dónde está la clave privada? | En un archivo de tu ordenador | Dentro de la YubiKey |
| ¿Se puede copiar? | Sí, sin dejar rastro | No. La clave no se puede sacar de la tarjeta |
| ¿Te roban el portátil sin la tarjeta? | Hay que sustituir la clave en cada servidor | Nada en el disco puede completar un handshake |
| ¿Malware en tu ordenador? | Puede robar la clave y usarla más tarde | Puede usar el túnel mientras la tarjeta esté conectada, pero no puede llevarse la clave |
| Copia de seguridad | Una copia del archivo | Una segunda YubiKey, añadida al servidor como segundo peer |
| Lado del servidor | WireGuard estándar | Lo mismo: WireGuard estándar |
| Madurez | Consolidado, con clientes oficiales | Versión preliminar |
Hardware
Hoy solo la primera tarjeta de abajo existe en el código. Las etiquetas indican qué es cada una.
YubiKey 5
v1PIV con X25519, firmware 5.7 o posterior. La clave se genera en la tarjeta y nunca sale de ella. Las pruebas actuales usan tarjetas simuladas; faltan las comprobaciones con tarjetas reales.
Tarjetas OpenPGP
ProntoPrevistas justo después de v1. Sin implementar.
PKCS#11 y HSM
ProntoPrevistos justo después de v1, para dispositivos con X25519. Sin implementar.
TPM, Secure Enclave, FIDO2
Hoja de rutaClase más débil, fuera de v1. La clave estaría cifrada por hardware pero expuesta en memoria durante su uso, así que estos nunca llevarán la afirmación de que la clave no se puede copiar.
Seguridad
La afirmación trata de llevarse la clave, no de usarla. Esto es lo que cubre y lo que no.
Protege contra
- Copiar la clave desde tu disco o tus copias de seguridad: ahí nunca se escribe ninguna clave privada
- Un portátil robado o clonado sin la tarjeta
- Archivos de configuración con una clave privada: Latchwire los rechaza
- Claves que no se generaron en la tarjeta: Latchwire las rechaza
- Tráfico que sale fuera del túnel con el kill switch activado, dentro de los límites del modelo de amenazas
No protege contra
- Malware que se ejecuta con tu usuario mientras la tarjeta está conectada y el PIN introducido: puede usar la tarjeta y el túnel. No hace falta tocarla
- Otros programas que pueden acceder a la tarjeta tras introducir el PIN; en algunos sistemas esto incluye a otros usuarios locales
- Una cuenta root o un kernel comprometidos
- Un portátil robado junto con la tarjeta y el PIN
- La lectura de la memoria del proceso: ahí están las claves de sesión y un secreto en caché, que pueden llegar a la swap. No son la clave privada y no pueden completar un handshake sin la tarjeta
- Tokens falsificados: Latchwire confía en lo que informa la tarjeta y aún no comprueba la atestación
Conviene saber
- El PIN nunca se guarda, pero pasa por la memoria mientras lo escribes.
- Nunca se prueba el PIN predeterminado.
- Una clave precompartida, si la usas, se guarda en el disco y no está protegida por hardware.
- El modelo de amenazas indica el código detrás de cada protección. Si ambos discrepan, el código tiene razón y el documento tiene un error.
Estado del proyecto
Latchwire es software preliminar. Esto es lo que existe hoy y lo que se ha comprobado.
- Probado
Línea de comandos y red en Linux
Probado de extremo a extremo en un contenedor privilegiado, con una clave de software y un servidor de pruebas.
- Sin verificar
Línea de comandos y red en macOS
Implementado. Faltan las comprobaciones manuales.
- Sin verificar
Comportamiento con una YubiKey real
Las pruebas automáticas usan tarjetas simuladas. Faltan las comprobaciones con tarjetas reales.
- No listo
Windows
Sin implementar. La compilación para Windows todavía no funciona.
- No listo
Aplicación de escritorio
En desarrollo. Hoy solo existe la línea de comandos.
- Aún no
Versiones firmadas y paquetes
No hay versiones publicadas. Se compila desde el código fuente.
- Aún no
Revisión de seguridad independiente
No ha habido ninguna revisión independiente.
Instalación
Compila desde el código fuente. Aún no hay paquetes ni binarios firmados, y esta instalación es para pruebas.
Necesitas Go 1.25 o posterior y una YubiKey 5 con firmware 5.7 o posterior. En Linux también necesitas un compilador de C y libpcsclite-dev para compilar, y pcscd en ejecución.
Compilar
git clone https://github.com/Kodviva/latchwire
cd latchwire
go build -o latchwire ./cmd/latchwire
sudo install -o root -m 0755 latchwire /usr/local/bin/latchwire
Inicia el daemon y el agente, cada uno en su terminal
sudo latchwire daemon
latchwire agent
Crea una clave y conéctate
latchwire devices
latchwire keygen --serial <serial> --address <tunnel-ip>
sudo latchwire add office office.conf
latchwire up office
keygen imprime un bloque [Peer] para tu servidor. Tu archivo de túnel es un archivo normal de WireGuard con KeyRef y PublicKey en lugar de PrivateKey.
Hay paquetes previstos para Homebrew, .deb, .rpm y Microsoft Store. Ninguno existe todavía.
Hoja de ruta
NúcleoImplementado
Cliente de línea de comandos para macOS y Linux
Funciones de red completasImplementado
Túnel completo, DNS, kill switch, conexión bajo demanda y usuarios permitidos. Probado en Linux; falta comprobar macOS
Comprobaciones en hardware realPendiente
YubiKeys reales y red en macOS, con la lista pública
WindowsEn curso
Servicio, capa de red y kill switch
Aplicación de escritorio y traduccionesEn curso
Aplicación de escritorio para macOS, Windows y Linux
Versiones firmadasPrevisto
Homebrew, descarga directa, .deb, .rpm, Microsoft Store