magic-wormhole: transferencia segura de archivos con un código de un solo uso

magic-wormhole: transferencia segura de archivos con un código de un solo uso

6 min read
Network

Hola a todos,

hoy quiero mostrarles una pequeña herramienta CLI a la que vuelvo una y otra vez en situaciones de soporte e incidentes: magic-wormhole. Resuelve un problema que aparece en las empresas normales más a menudo que cualquier historia brillante de “enterprise”: necesitas hacer llegar un archivo (o un directorio) a alguien ya, pero el correo es demasiado limitado, un enlace a la nube es políticamente o legalmente delicado, y “abrir un puerto un momento” no es una opción.

Viernes, 16:47. Una empresa con unos 60 empleados tiene un problema urgente: el servidor central de archivos va lento, los usuarios reportan timeouts y el proveedor externo de IT pide un paquete de soporte con logs y una pequeña exportación de configuración. El bundle ronda los 900 MB. El correo lo bloquea, SharePoint está fuera por motivos de compliance, y montar un FTP ad-hoc es una pesadilla que en 2026 ya no te apetece crear.

Para esto está hecho magic-wormhole: intercambias un código de un solo uso, transfieres el archivo cifrado de extremo a extremo y listo.

¿Qué es magic-wormhole?

magic-wormhole es una herramienta ligera para transferencias ad-hoc entre dos equipos. El truco es el wormhole code (por ejemplo 7-coral-lion): ambos lados introducen el mismo código y con eso se inicia una conexión cifrada de extremo a extremo.

Lo importante es lo que magic-wormhole no necesita:

  • sin cuenta
  • sin portal de inicio de sesión
  • sin “subirlo a algún sitio y compartir un enlace”
  • sin reglas de firewall entrantes

Ambos lados solo necesitan wormhole instalado y acceso saliente a Internet. En la práctica: si el tráfico HTTP(S) saliente funciona, magic-wormhole suele funcionar también.

Un caso real en el día a día de una pyme

Volviendo al viernes: el flujo pragmático suele ser así:

  1. Crear un paquete de soporte (logs, export, algunos screenshots).
  2. Opcionalmente calcular un hash para confirmar después que llegó exactamente el mismo paquete.
  3. Enviar el bundle con magic-wormhole.
  4. Compartir el código por un segundo canal (llamada, chat separado, dictarlo).

En el lado del emisor:

tar -czf support-bundle.tgz ./logs ./config-export
sha256sum support-bundle.tgz
wormhole send support-bundle.tgz

magic-wormhole imprime el código. El receptor ejecuta:

wormhole receive

Se introduce el código, la descarga corre y luego se pueden comparar hashes. En la vida real, esta mezcla de “rápido” y “aun así limpio” es extremadamente útil para muchas pymes.

Cómo lo uso en la práctica

Enviar un archivo de A a B

Emisor:

wormhole send /path/to/file.zip

Receptor:

wormhole receive

La descarga se guarda en el directorio actual. Yo suelo crear un directorio rápido para no perder nada entre Descargas y el Escritorio:

mkdir -p ~/wormhole-recv && cd ~/wormhole-recv
wormhole receive

Enviar directorios

Si necesitas enviar una carpeta entera:

wormhole send --dir ./support-bundle/

Qué ocurre entre bastidores (breve y sin marketing)

Por dentro, magic-wormhole hace tres cosas que de otro modo tendrías que construir a mano: encontrar a la otra parte, negociar claves de forma segura y transferir datos de manera fiable, incluso cuando NAT y firewalls se ponen pesados.

PasoQué ocurrePor qué importa
1. CódigoEl emisor genera un código corto de un solo uso.Un secreto compartido para esa transferencia.
2. RendezvousAmbos clientes se conectan a un servidor de rendezvous (por defecto el “mailbox” público).Se encuentran sin abrir puertos entrantes.
3. PAKESe deriva una clave compartida del código vía SPAKE2 (PAKE).Clave E2E sin gestión clásica de llaves.
4. Ruta de datosSe intenta conexión directa; si falla, se usa un relay/transit.Funciona detrás de NAT y en redes corporativas típicas.
5. Transferencia E2ELos datos viajan cifrados y con integridad extremo a extremo.El relay solo ve ciphertext.

La idea clave: rendezvous/relay es infraestructura, pero no es el lugar donde tus datos están en claro.

Seguridad: fortalezas, límites y algunas reglas

Lo que me gusta de magic-wormhole es que el modelo de seguridad es bastante honesto: es E2E, pero la identidad no viene incluida.

Lo que obtienes

  • Cifrado de extremo a extremo: el contenido va protegido entre emisor y receptor, incluso usando relay.
  • Acceso de corta duración: el código está pensado para una transferencia, no como contraseña permanente.
  • Superficie de ataque pequeña: no hay servidor que endurecer, ni gestión de usuarios, ni UI web.

En qué hay que tener cuidado

  • El código es la contraseña. Quien tenga el código es “tu peer”. Si cae en un ticket abierto, es un problema.
  • Sin auditoría por defecto. Para algunas empresas es una ventaja; para otras, un no rotundo. Si necesitas DLP, aprobaciones y trazabilidad, usa un canal oficial.
  • Los endpoints siguen mandando. Si el emisor está comprometido, puede enviar basura. Si el receptor está comprometido, el archivo se compromete tras recibirlo.

Reglas prácticas (que de verdad ayudan)

  1. No compartas el código en el mismo canal que el enlace del ticket o el contexto del archivo. Mejor: llamada o chat privado separado.
  2. Asume que los logs pueden contener tokens, hostnames o datos personales. Envía solo lo necesario.
  3. Para artefactos críticos: comparte el hash por separado y verifica tras la recepción.

Instalación (breve y realista)

En muchos sistemas es un one-liner con el gestor de paquetes:

  • Debian/Ubuntu: sudo apt install magic-wormhole
  • macOS: brew install magic-wormhole

Si los paquetes de la distro están desactualizados, pipx suele ser la opción más limpia:

pipx install magic-wormhole
pipx ensurepath

Y si no quieres Python en absoluto (servidor mínimo, contenedor, entorno de rescate): wormhole-william es un port compatible en Go como binario único.

Automatización y autoalojamiento

Para flujos controlados, magic-wormhole se puede automatizar:

CODE="5-alpaca-orbit"
wormhole send --code "$CODE" /path/to/db.dump

Receptor:

wormhole receive --code "$CODE" --accept-file

Esto es práctico, pero cuando fijas un código estás volviendo a gestión de credenciales. Si lo automatizas, hazlo con buen manejo de secretos y con vidas cortas.

Si quieres control total sobre rendezvous/relay, puedes apuntar el cliente a infraestructura propia, incluyendo:

  • --relay-url para tu propio servidor de rendezvous
  • --transit-helper para tu propio relay de tránsito

Conclusión

magic-wormhole no reemplaza los flujos de transferencia gestionados y con políticas. Pero como herramienta del día a día es excelente: rápida, sin fricción y con un modelo de seguridad claro.

Especialmente en el mundo pyme, donde a menudo no hay tiempo ni ganas de levantar una cascada de aprobaciones para cada caso de soporte, una herramienta “lo bastante segura y usable al instante” suele ser exactamente lo que necesitas.

Fuentes y lecturas recomendadas

Hasta la próxima, Joe

© 2026 trueNetLab