Wormhole: trasferire file in modo sicuro su internet
Attenzione
Questo articolo è stato pubblicato più di un anno fa, potrebbero esserci stati sviluppi.
Ti preghiamo di tenerne conto.
C’è chi usa Dropbox / Mega / Google Drive, chi le classiche e-mail, chi le e-mail criptate, chi SSH / SCP e chi ancora le chiavette USB. Scambiarsi i file oggi richiede una buona dose di fantasia e un vaglio delle alternative più che attento, o corriamo il rischio di cadere in qualche errore.
Prima di tutto occorre valutare la sicurezza del mezzo con cui vogliamo trasmettere le informazioni. Siano esse le fotografie delle vacanze o i file delle preferenze di Firefox chiediamoci se saremmo tranquilli qualora quei dati potessero essere “letti” da qualcun altro.
Valutiamo anche la dimensione dei dati da trasferire. Una mail ha una capacità limitata dettata dal server / gestore del servizio (e occorre controllare che la dimensione sia consentita dal nostro gestore e da quello di destinazione).
Valutiamo la semplicità del sistema, l’intelligibilità dei dati che dovremo inserire nel software. Non tutti sono così bravi a scrivere gli hash velocemente, al primo colpo, senza errori. E per semplicità intendiamo anche l’eventualità che occorra aprire qualche porta su router, firewall, computer ricevente… avere una conoscenza anche solo discreta della rete e del suo funzionamento può non essere definito “semplice”.
Valutiamo la distanza geografica tra il punto di invio e quello di ricezione. Vogliamo tanto bene al nostro vicino di casa, ma non scambieremo i file solo con lui.
Una volta che abbiamo valutato tutti questi aspetti valutiamo l’utilizzo di Wormhole, che questi punti deboli non li ha.
Wormhole è una piccola utility a riga di comando disponibile per Linux (moltissime distribuzioni) e MacOS (niente Windows). Wormhole permette, attraverso una sintassi intelligibile, di inoltrare qualsiasi tipo di file, di qualsiasi dimensione, dal computer di origine a quello di destinazione senza intermediari. Oh, e… ho già detto che è open source?
Il funzionamento di Wormhole sul web è a grandi linee quello di NetCat sulla LAN. Forse ti interesserà un articolo in cui parlavo di NetCat.
Per una applicazione python così leggera, ciò che fa è veramente fuori dal mondo. Come con NetCat ti basterà lanciare il comando relativo sul server, corredato dalla posizione del file da inoltrare, e lanciare il comando di “ricezione” sul client per avviare il download. È più lungo da spiegare che da fare.
Server (il computer in cui risiede il file da inoltrare)
~$ wormhole send README.md
Sending 7924 byte file named 'README.md'
On the other computer, please run: wormhole receive
Wormhole code is: 7-crossover-clockwork
Sending (<-10.0.1.43:58988)..
100%|=========================| 7.92K/7.92K [00:00<00:00, 6.02MB/s]
File sent.. waiting for confirmation
Confirmation received. Transfer complete.
Client (il computer che riceverà il file)
~$ wormhole receive
Enter receive wormhole code: 7-crossover-clockwork
Receiving file (7924 bytes) into: README.md
ok? (y/n): y
Receiving (->tcp:10.0.1.43:58986)..
100%|===========================| 7.92K/7.92K [00:00<00:00, 120KB/s]
Received file written to README.md
La cosa interessante è la chiave generata: in questo caso due termini e un numero. Qualcosa di semplice da scrivere o da dire (nel caso fossimo al telefono). I codici di Wormhole sono usa e getta, quindi quando lo avrai usato (o non lo avrai usato) il codice sarà perso.
Con Wormhole si possono inoltrare file o directory. Le directory vengono compresse prima dell’inoltro.
Sarà sicuro?
Risposta breve: “si”.
Risposta lunga: Wormhole utilizza PAKE (Password Authenticated Key Exchange) per criptare i dati (l’algoritmo SPAKE2).
La libreria del wormhole richiede un “Rendezvous Server”: un semplice relay basato su WebSocket che recapita messaggi da un client all’altro. Ciò consente ai codici di Wormhole di omettere indirizzi IP e numeri di porta. L’URL di un server pubblico viene inserito nella libreria per essere utilizzato come impostazione predefinita e sarà disponibile fino a quando il volume o l’abuso non lo renderanno impossibile da supportare.
I comandi di trasferimento file utilizzano un “Transit Relay”, che è un altro semplice server che unisce due connessioni TCP in entrata e trasferisce i dati l’una sull’altra. La modalità di invio file di Wormhole condivide gli indirizzi IP di ciascun client con l’altro (all’interno del messaggio crittografato) ed entrambi i client tentano prima di connettersi direttamente. Se fallisce, tornano a usare il transit relay.
Se ancora non è chiaro consiglio la visione dell’intervento di Brian Warner al PyCon del 2016 in cui si parla quasi esclusivamente di sicurezza.
Installazione
Con le principali distribuzioni sarà piuttosto semplice cercare il pacchetto “magic-wormhole
” all’interno dei repository. Chi invece non riuscisse a trovarlo nei repository della sua distribuzione può provare con snap
.
~$ sudo snap install wormhole
Per maggiori informazioni il progetto Wormhole è ospitato su GitHub.
0 commenti