BitTorrent Sync: perché sì, perché no

Lo sapevate? Quelli di BitTorrent se ne sono usciti qualche tempo fa con un prodotto rivoluzionario dal nome veramente fantasioso: BitTorrent Sync (fantasia), abbreviato BTSync, per gli amici Sync. Alcuni (io) l’hanno definito il cloud senza il cloud, ma per dirla in parole spicce è il peer to peer della sincronizzazione. BTSync permette di sincronizzare (o fare il backup) di file e cartelle tra più dispositivi attraverso l’interweb (o una rete locale) senza bisogno di un server remoto e senza necessità di creare account o altro. Il top della privacy (forse). BTSync è disponibile per i principali OS desktop (Mac, Linux, Windows) e mobili (iOS, Android, Windows), incluse le varianti per NAS, e la sua installazione e gestione è abbastanza semplice. Se avete sottomano un computer con una distribuzione Debian-based, tipo un Raspberry Pi con Raspbian, il modo più semplice per installarlo e configurarlo è utilizzare questo pacchetto precompilato. La gestione, in questo caso, si fa tramite interfaccia web e il servizio funziona come un “demone” che parte all’avvio e la configurazione iniziale è facilitata da una procedura guidata, mentre per gli altri casi è disponibile anche un’applicazione grafica.

Come si usa

Non entro nei dettagli tecnici, è inutile e peraltro difficile, anche perché il protocollo è proprietario e per nulla documentato. Sta di fatto che funziona più o meno così: avete più dispositivi su cui volete avere una o più cartelle sincronizzate o duplicate. Ad esempio, avete una cartella piena di file della più svariata natura sul vostro Raspberry Pi e volete che l’intera cartella con sottocartelle sia ricopiata pari pari su un iPhone 5s e un Nexus 7 (per dire due a caso). Attraverso l’interfaccia web della sessione BTSync installata sul RaspPi scegliete la cartella da sincronizzare e generate la chiave segreta. Esistono 2 tipi di chiave segreta, quella per accedere alla cartella in sola lettura o quella per avere anche i privilegi di scrittura. La chiave è una stringa di testo da 20-byte, generata casualmente e associata alla cartella e va condivisa con i dispositivi che volete sincronizzare. Su questi, aprite la versione di BTSync installata e aggiungete la chiave, che può arrivare sotto forma di link mandato via mail, copia/incolla della chiave o scansione di un codice QR associato (la cosa più comoda). Fatto ciò, la storia è finita e comincerà il caricamento diretto dei file ai vari dispositivi, senza passare da server di terzi. Una volta completata la prima sincronizzazione ogni dispositivo diventa un nodo in una rete a maglia, pronto a mettere a disposizione pezzettini di file. Il sistema è molto efficacie e, tra le altre cose, riconosce ad esempio se ci sono dueo più dispositivi all’interno della stessa LAN massimizzando la velocità di trasferimento. I dati trasferiti tra i dispositivi sono criptati con una chiave AES a 128 bit, inoltre è disponibile un sistema di autorizzazioni per verificare quale dispositivo vuole accedere ai dati. Se volete una spiegazione semplice ed illustrata, la trovate qui.

Tecnologie come l’UPnP, NAT, fanno ovviamente parte del pacchetto, e nelle versioni mobili è da poco disponibile la funzionalità “backup della fotocamera”, una versione a prova di privacy (forse) dello streaming su iCloud, GDrive o quel che è.

In realtà esistono casi in cui i file, sempre critpati, vengono deviati su un server remoto non vostro: è il caso di peer irraggiungibili perché separati da firewall molto ostici (leggi aziendali), e quindi in caso di peer mancante viene creato un nuovo nodo intermedio. Questa opzione è abilitata di default per ogni condivisione, ma può essere disabilitata e (soprattutto) è raro che venga usata. Se siete maniaci della privacy va disattivato anche il server tracker che, in parole povere, è la lista degli ID dei dispositivi associati agli indirizzi IP. Volendo ci sono allo studio soluzioni opensource alternative per il server tracker.

Perché usarlo

Svariate ragioni. Per esempio è comodo, facile e gratuito per uso personale. Sicuramente rappresenta un passo avanti per quel che riguarda la gestione privata dei propri dati e, allo stesso tempo, la possibilità di sfruttare le connessioni mobili e la sincronizzazione remota. Fantastica la possibilità di mantenere sincronizzate intere cartelle e avere disponibili i file offline su dispositivi mobili. Altre applicazioni “cloud”, come Dropbox o anche ownCloud, danno la possibilità di scaricare sulla memoria e mantenere aggiornati i file dentro le cartelle, ma non un’intera cartella con un numero variabile di file. Non c’è alcun limite alla varietà, quantità e dimensione dei file. Tutto, dalla musica, ai video, foto, modelli CAD, quello che vi pare può essere sincronizzato a e dal vostro iPad, iPhone, Android, NAS quello che vi pare. Molto molto comodo. I trasferimenti sono molto veloci, soprattutto all’interno della LAN, meglio che un trasferimento tra volumi di rete (o almeno, così è nella mia esperienza).

Qualche uso “simpatico”: abilitando il backup della fotocamera su iOS o su Android e inviando questi file su un server domestico su cui sia installato un server DLNA, è possibile poi accedervi direttamente dalla TV (se dotata di clien DLNA) per rivedrle. Io lo utilizzo anche per trasferire i fumetti dal RasPi al Nexus 7, in questo modo riesco anche a fare una gestione remota dei file, cancellando quelli letti la cancellazione viene propagata.

Perché no

Perché è scomodo: se volete condividere le foto della vostra festa di compleanno con un amico/familiare/boh potete farlo a patto che il destinatario installi BTSync, mentre ormai tutti i maggiori servizi di cloud mettono a disposizione link a cui raggiungere il file/cartella anche senza installare il software. Una possibile soluzione è quella di installare ownCloud sul vostro NAS/server domestico/RasPi, collegare le cartelle condivise su BTSync come “archiviazione esterna” su ownCloud e condividere da lì. Semplice e pulito, ma forse viene un po’ meno il concetto di “cloud senza il cloud” 🙂

L’altro grave motivo per cui NON utilizzare BTSync è che il protocollo è completamente proprietario e veramente poco documentato. Cosa significa? Significa che ci potrebbero essere bug utilizzabili per violare il sistema e nessuno ne saprebbe nulla, fino a che il bug non viene utilizzato per scopi malevoli. Significa che fare un “auditing” della sicurezza del protocollo diventa difficile se non impossibile, che è difficile sviluppare applicazioni che utilizzano il servizio (sono disponibili delle API, con documentazione molto carente), che in generale non sappiamo bene come vengano gestiti i pochi (forse) dati raccolti. In particolare, leggendo un paio di discussioni sul forum ufficiale (questa e questa), per ora si sa che BitTorrent ha accesso ai seguenti dati:

  • il “segreto” (non la chiave) condiviso con i peer: informazione che “transita” ma non viene conservata (dicono)
  • volume di dati trasferito, acquisito a scopi statistici (dicono)
  • indirizzo IP pubblico degli utenti (se viene usato il tracker server), come parte della richiesta HTTP (pacifico)

i dati che transitano sui server relay, se e quando lo fanno, non sono accessibili da BitTorrent (dicono) perché criptati. L’obiezione è che quelli di BT ricevono il segreto (o una parte, boh!) e con un molta forza bruta dei malintenzionati che abbiano accesso ai server BT potrebbero riuscire a sbloccare i file. Ok, forse siamo a livelli di paranoia, ma è bene conoscere la situazione nel suo complesso, che secondo lo staff di BTSync è questa:

There are 3 points of contact with BitTorrent infrastructure: tracker, relay, check for update service (listed above HTTP request). If you don’t use any of it – we will not get any information about you.

As for brute force – a lot of things in cryptography is based on a fact that there is no other way to decrypt data besides brute force attack (e.g. you can not recover private key from public). We believe 160 bit random secret is strong enough here.

Alternative?

Detto ciò, esistono alternative opensource a BTSync? Sì. No. Nì. La più in voga ora come ora è Syncthing. Sembra la soluzione giusta ma… non ha un’app per iOS e probabilmente non ce l’avrà mai (per ragioni di linguaggio di sviluppo VS politiche dell’App Store), ergo ha le gambe tagliate già in partenza. Inoltre è ancora ben lungi dall’essere un prodotto pronto per essere utilizzato dall’utente medio o abbastanza affidabile per essere utilizzato da aziende. Peccato, speriamo che in futuro qualcosa cambi. Poi c’è ClearSkyes, ancora in fase molto embrionale, un giorno darà vita ad una libreria completamente scritta in C++ e quindi disponibile per le più svariate piattaforme e a prova di regolamento dell’App Store.

 

’nuff said

  • Pingback: Accesso ai file, multitasking: ecco perché il mio prossimo tablet sarà Android | Jeby's Blog()

  • Pingback: Sync browser multipiattaforma su server privato | Jeby's Blog()

  • Daniele Pinna

    Ciao, ottimo ed esauriente articolo 🙂

    Ho installato btSync come alternativa a QSYNC disponibile sul mio NAS QNAP, perché non esiste un equivalente per Linux.

    Per ora sto facendo solo qualche prova, ma prima di adottarlo in modo definitivo, volevo capire se “sincronizzando” con uno Smartphone Android, viene sincronizzata tutta la cartella oppure vengono scaricati solo i file che dallo Smartphone di volta in volta richiedo.

    • jeby

      Ciao! Se metti la sincronizzazione automatica sincronizza tutti i file e le sottocartelle della cartella che condividi. Probabilmente disattivando la sincronizzazione automatica è anche possibile sincronizzare un file alla volta ma non ci ho mai provato 🙂

      • Daniele Pinna

        OK, farò delle prove… Grazie 🙂

  • Pingback: BT Sync 2.0: la pacchia è finita | Jeby's Blog()

  • Domenico Milanesi

    Salve a tutti, stavo già conducendo prove per mio conto da diverso tempo ed ero alla ricerca per capire meglio un problema che mi assilla con btSync che anche io sto utilizzando in alternativa a QSYNC su un QNAP perchè questo funziona male e quando vuole lui (sto testando la nuova versione uscita proprio ieri) Ecco il problema che ho riscontrato: Una volta condivisa una cartella presente sul NAS se la si vuole rimuovere, non si può far altro che disconnetterla ma la stessa rimane li sempre visibile, se la si rimuve con “Delete” btSync di fatto cancella realmente la cartella e il relativo contenuto. Qualcuno sa come semplicemente disconnetterla e farla sparire completamente da btSync? Impressioni: Da quel che ho visto a parte una volta che si è incantato su di un client e ho dovuto chiudere il demon di btSync e riavviarlo, sembra fare il suo dovere, un vantaggio rispetto a QSYNC se utilizzato con un NAS QNAP che ha nativamente BtSync installabile è il fatto che non occorre trascinare la cartella che si vuole sincronizzare in una apposita cartella di sincronizzazione, ma può benissimo stare li dove la si era messa, QSYNC invece obbiga a fare ciò e tra l’altro in una cartella non visibile in windows della serie non ci si può più nemmeno lavorare sui file che sono nella cartella QSYNC, probabilmente si potrà renderla visibile ma io non sono un grande esperto di Linux. Grazie per una eventuale risposta.
    DoMi

    Aggiornamento: Manco a farlo apposta, giorni che ci sbatto la testa, scrivo qui dentro, ritorno in btSync sul NAS e in un secondo trovo la soluzione.. in pratica una volta disconnessa la cartella, stando con il puntatore del mouse sulla riga della cartella interessata, in fondo a dx compare un “X” che consente di eliminare la cartella senza cancellare la stessa e il relativo contenuto. Grazie comunque, lascio qui tutto oramai già scritto nel caso possa servire ad altri.