Latchwire
Español

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

  1. 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.

  2. 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.

  3. 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

PreguntaWireGuard clásicoLatchwire
¿Dónde está la clave privada?En un archivo de tu ordenadorDentro de la YubiKey
¿Se puede copiar?Sí, sin dejar rastroNo. La clave no se puede sacar de la tarjeta
¿Te roban el portátil sin la tarjeta?Hay que sustituir la clave en cada servidorNada en el disco puede completar un handshake
¿Malware en tu ordenador?Puede robar la clave y usarla más tardePuede usar el túnel mientras la tarjeta esté conectada, pero no puede llevarse la clave
Copia de seguridadUna copia del archivoUna segunda YubiKey, añadida al servidor como segundo peer
Lado del servidorWireGuard estándarLo mismo: WireGuard estándar
MadurezConsolidado, con clientes oficialesVersión preliminar

Hardware

Hoy solo la primera tarjeta de abajo existe en el código. Las etiquetas indican qué es cada una.

YubiKey 5

v1

PIV 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

Pronto

Previstas justo después de v1. Sin implementar.

PKCS#11 y HSM

Pronto

Previstos justo después de v1, para dispositivos con X25519. Sin implementar.

TPM, Secure Enclave, FIDO2

Hoja de ruta

Clase 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.

  • 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.

    Probado
  • 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.

    Sin verificar
  • 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.

    No listo
  • 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.

    Aún no

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

  1. NúcleoImplementado

    Cliente de línea de comandos para macOS y Linux

  2. Funciones de red completasImplementado

    Túnel completo, DNS, kill switch, conexión bajo demanda y usuarios permitidos. Probado en Linux; falta comprobar macOS

  3. Comprobaciones en hardware realPendiente

    YubiKeys reales y red en macOS, con la lista pública

  4. WindowsEn curso

    Servicio, capa de red y kill switch

  5. Aplicación de escritorio y traduccionesEn curso

    Aplicación de escritorio para macOS, Windows y Linux

  6. Versiones firmadasPrevisto

    Homebrew, descarga directa, .deb, .rpm, Microsoft Store