
magic-wormhole: trasferimento sicuro di file con un codice monouso
Table of Contents
Ciao a tutti,
oggi voglio parlarvi di un piccolo strumento da riga di comando a cui torno spesso durante attività di supporto e incident response: magic-wormhole. Risolve un problema che nelle aziende “normali” capita molto più spesso di qualsiasi storia patinata da “enterprise”: devi far arrivare un file (o una cartella) a qualcuno subito, ma l’email è troppo limitata, un link cloud è politicamente o legalmente delicato, e “aprire una porta al volo” non è un’opzione.
Venerdì, 16:47. Un’azienda con circa 60 dipendenti ha un problema urgente: il file server centrale è lento, gli utenti segnalano timeout e il fornitore IT esterno chiede un pacchetto di supporto con log e un piccolo export di configurazione. Il bundle è vicino ai 900 MB. L’email lo blocca, SharePoint è vietato per motivi di compliance e mettere in piedi un FTP ad-hoc è un incubo che nel 2026 non vuoi proprio creare.
È esattamente qui che magic-wormhole brilla: scambi un codice monouso, trasferisci il file cifrato end-to-end, fatto.
Che cos’è magic-wormhole?
magic-wormhole è uno strumento leggero per trasferimenti ad-hoc tra due computer. Il trucco è il wormhole code (per esempio 7-coral-lion): entrambe le parti inseriscono lo stesso codice e questo avvia una connessione cifrata end-to-end.
La cosa importante è ciò di cui magic-wormhole non ha bisogno:
- nessun account
- nessun portale di login
- nessun “carica da qualche parte e condividi un link”
- nessuna regola firewall in ingresso
Entrambe le parti devono solo avere wormhole installato e accesso a Internet in uscita. In pratica: se l’HTTP(S) in uscita funziona, magic-wormhole di solito funziona anche.
Un caso reale per una PMI
Torniamo a quel venerdì. Il flusso più pragmatico di solito è questo:
- Creare un bundle di supporto (log, export, qualche screenshot).
- Facoltativo: calcolare un hash per verificare dopo che è arrivato esattamente lo stesso pacchetto.
- Inviare il bundle con magic-wormhole.
- Condividere il codice su un secondo canale (telefonata, chat separata, dettarlo).
Sul lato mittente:
tar -czf support-bundle.tgz ./logs ./config-export
sha256sum support-bundle.tgz
wormhole send support-bundle.tgz
magic-wormhole stampa il codice. Il destinatario esegue:
wormhole receive
Inserisci il codice, il download parte e poi puoi confrontare gli hash. Nel mondo reale, questo mix di “veloce” e “comunque pulito” è estremamente utile per molte PMI.
Come lo uso nella pratica
Inviare un file da A a B
Mittente:
wormhole send /path/to/file.zip
Destinatario:
wormhole receive
Il file viene salvato nella directory corrente. Io spesso creo una cartella al volo per evitare che qualcosa finisca disperso tra Download e Desktop:
mkdir -p ~/wormhole-recv && cd ~/wormhole-recv
wormhole receive
Inviare directory
Se devi inviare un’intera cartella:
wormhole send --dir ./support-bundle/
Cosa succede dietro le quinte (breve e senza marketing)
Sotto il cofano, magic-wormhole fa tre cose che altrimenti dovresti costruire a mano: mettere in contatto i peer, negoziare le chiavi in modo sicuro e trasferire dati in modo affidabile, anche quando NAT e firewall rendono tutto più complicato.
| Passo | Cosa succede | Perché conta |
|---|---|---|
| 1. Codice | Il mittente genera un breve codice monouso. | Segreto condiviso semplice per questo trasferimento. |
| 2. Rendezvous | Entrambi i client si collegano a un server di rendezvous (di default la “mailbox” pubblica). | I peer si trovano senza porte in ingresso. |
| 3. PAKE | Dal codice viene derivata una chiave condivisa via SPAKE2 (PAKE). | Chiave E2E senza gestione classica delle chiavi. |
| 4. Data path | Prima prova una connessione diretta, poi fallback su relay/transit se serve. | Funziona dietro NAT e nelle reti aziendali tipiche. |
| 5. Trasferimento E2E | Dati cifrati e protetti in integrità end-to-end. | Il relay vede solo ciphertext. |
Il punto chiave: rendezvous/relay è infrastruttura, ma non è il posto in cui i tuoi dati esistono in chiaro.
Sicurezza: punti di forza, limiti e qualche regola
Quello che mi piace di magic-wormhole è che il modello di sicurezza è piuttosto onesto: c’è cifratura end-to-end, ma l’identità non è “inclusa” automaticamente.
Cosa ottieni
- Cifratura end-to-end: il contenuto è protetto tra mittente e destinatario, anche usando un relay.
- Accesso di breve durata: il codice serve per un trasferimento, non come password permanente.
- Superficie d’attacco ridotta: niente server da hardenare, niente gestione utenti, niente UI web.
Dove fare attenzione
- Il codice è la password. Chi ha il codice è “il tuo peer”. Se finisce in un ticket pubblico, è un problema.
- Nessun audit di default. Per alcune aziende è un vantaggio, per altre è inaccettabile. Se ti servono DLP, approvazioni e tracciabilità, usa un canale ufficiale.
- Gli endpoint restano la realtà. Se il mittente è compromesso, può inviare qualsiasi cosa. Se il destinatario è compromesso, il file è compromesso dopo la ricezione.
Regole pratiche (che aiutano davvero)
- Non condividere il codice nello stesso canale del link al ticket o del contesto del file. Meglio: telefonata o chat privata separata.
- Considera che i log possono contenere token, hostnames o dati personali. Invia solo ciò che è necessario.
- Per artefatti critici: invia l’hash separatamente e verifica dopo la ricezione.
Installazione (breve e realistica)
Su molti sistemi è un one-liner via package manager:
- Debian/Ubuntu:
sudo apt install magic-wormhole - macOS:
brew install magic-wormhole
Se i pacchetti della distro sono vecchi, pipx è spesso l’opzione più pulita:
pipx install magic-wormhole
pipx ensurepath
E se non vuoi Python per niente (server minimale, container, ambiente di rescue): wormhole-william è un port Go compatibile come binario singolo.
Automazione e self-hosting
Per workflow controllati, magic-wormhole può essere usato in modo scriptabile:
CODE="5-alpaca-orbit"
wormhole send --code "$CODE" /path/to/db.dump
Destinatario:
wormhole receive --code "$CODE" --accept-file
È comodo, ma quando fissi un codice torni alla gestione delle credenziali. Se automatizzi, fallo con una gestione corretta dei segreti e con durate brevi.
Se vuoi pieno controllo su rendezvous/relay, puoi puntare il client alla tua infrastruttura, includendo:
--relay-urlper il tuo server di rendezvous--transit-helperper il tuo relay di transit
Conclusione
magic-wormhole non sostituisce i flussi di trasferimento gestiti e governati. Ma come strumento quotidiano è ottimo: veloce, senza attrito e con un modello di sicurezza chiaro.
Soprattutto nel mondo delle PMI, dove spesso non c’è tempo né voglia di avviare una cascata di approvazioni per ogni richiesta di supporto, uno strumento “abbastanza sicuro e subito utilizzabile” è spesso esattamente ciò che serve.
Fonti e approfondimenti
- Documentazione magic-wormhole (Read the Docs)
- magic-wormhole su GitHub
- wormhole-william (Go, binario singolo)
- magic-wormhole su PyPI
Alla prossima, Joe


