
magic-wormhole: transferencia segura de archivos con un código de un solo uso
Table of Contents
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í:
- Crear un paquete de soporte (logs, export, algunos screenshots).
- Opcionalmente calcular un hash para confirmar después que llegó exactamente el mismo paquete.
- Enviar el bundle con magic-wormhole.
- 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.
| Paso | Qué ocurre | Por qué importa |
|---|---|---|
| 1. Código | El emisor genera un código corto de un solo uso. | Un secreto compartido para esa transferencia. |
| 2. Rendezvous | Ambos clientes se conectan a un servidor de rendezvous (por defecto el “mailbox” público). | Se encuentran sin abrir puertos entrantes. |
| 3. PAKE | Se deriva una clave compartida del código vía SPAKE2 (PAKE). | Clave E2E sin gestión clásica de llaves. |
| 4. Ruta de datos | Se intenta conexión directa; si falla, se usa un relay/transit. | Funciona detrás de NAT y en redes corporativas típicas. |
| 5. Transferencia E2E | Los 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)
- 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.
- Asume que los logs pueden contener tokens, hostnames o datos personales. Envía solo lo necesario.
- 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-urlpara tu propio servidor de rendezvous--transit-helperpara 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
- Documentación de magic-wormhole (Read the Docs)
- magic-wormhole en GitHub
- wormhole-william (Go, binario único)
- magic-wormhole en PyPI
Hasta la próxima, Joe

