Un esempio classico di quello che viene chiamato "Desruptive Innovation" , di cui ho parlato in passato, e' un software per la sincronizzazione remota di file e cartelle, che produce un effetto simile a Dropbox (cioe' avete una copia dei file su ogni macchina ove installate il client) ma non usa alcun server centrale. Ne ho parlato poco (sebbene io lo usi) per una ragione: ha un serio problema di sicurezza sul "layer 8", cioe' riguardante comportamento dell'utente.
Di per se' btsync funziona cosi': lo installate (scaricate il file e lo mettete li') da questo sito http://www.bittorrent.com/intl/it/sync e si configura praticamente da solo. Esistono anche le versioni per Linux e FreeBSD, che anziche' fornire un'interfaccia si piazzano in ascolto sulla porta 8888 e offrono un'interfaccia web amministrativa. ( http://127.0.0.1/8888 ) insomma.
Una volta condivisa una cartella , vi fornisce una ID, sotto forma di un hash piuttosto lungo, che potrete copiaincollare e salvare. Se installate su una macchina diversa lo stesso software, create una cartella condivisa e inserite lo stesso ID (anziche' farlo generare al momento), i due software si allineeranno e le due cartelle diventeranno identiche.
Il programma offre anche un ID in "sola lettura", il che significa che chi sincronizza la sua cartella non potra' fare modifiche ai file: se lo fara', la versione originale prendera' il posto dei file modificati.
Di per se', quindi, btsync e' una killer app per servizi come Dropbox e Mega, per diverse ragioni:
- Consente una condivisione illimitata di file. Se avete 4TB di roba a casa la condividete e siete a posto. Non pagate di piu'.
- Producono una copia replicata dei dati su ogni dispositivo. Significa che se volete mettere al sicuro una copia dei vostri file, lo piazzate su un server da qualche parte e la copia si ricostruira'.
- NON HA un servizio centrale di archiviazione: funziona su P2P e SENZA un'azienda che si mette di mezzo. E qui siamo al punto, O QUASI.
dico "o quasi" perche' btsync usa la tecnologia di bit torrent. Quando aggiungete o modificate un file in una cartella, il servizio non fa altro che creare un torrent per quel file, e ne annuncia l' hash al tracker o al DHT. Dopodiche' condivide il file, criptandolo con AES-128 , usando una chiave che e' ricavabile dall'hash segreto che avete impostato sui due client.
E qui siamo al punto: occorre capire quale sia il ruolo del tracker ed il ruolo dell'host reflector. Se lasciamo che btsync usi un tracker, quello che fara' sara' di chiedere a qualche tracker dove si trovi il suo peer. Nel fare questo, e nell'ottenere risposta, il tracker riceve l'indirizzo IP, la porta, l'hash e i metadati del file.
Se sniffate un pochino il traffico dopo averlo installato, trovate che c'e' una macchina, un tracker, che si connette sulla porta 3000 (che va lasciata aperta sul firewall se volete che funzioni cosi' com'e' il servizio).
Nel mio caso si trattava di 67.215.229.106, che come potete verificare e' una macchina dell'azienda che produce bittorrent. Si tratta del loro tracker.
Quindi, se volete usarlo per scopi aziendali, potete usare alcune features, piu' interessanti.
come potete vedere, ho disabilitato il tracker completamente (e l'ho bloccato dal firewall , ma ho lasciato "Cerca Rete LAN" e "Cerca rete DHT". Poi spiego la storia degli host predefiniti.
Il discorso "cerca rete LAN" significa che btsync puo' lavorare anche senza mai connettersi ad Internet. Se non gli aprite le porte che gli servono (3838, 3000 e una che potete anche configurare o lasciar estrarre a casaccio) , btsync lavora in LAN lanciando dei broadcast sino a trovare gli altri server. Da quel momento, le cartelle sincronizzano dentro la vostra rete locale anche SENZA un tracker, ed anche senza bisogno di internet.
Questa e' sicuramente una buona notizia, ma magari voi volete portare a casa il portatile e sincronizzarlo da li' col computer che avete al lavoro. Allora, entra in gioco DHT: Distributerd HAsh Table e' un metodo che consiste di "distribuire" i tracker usando gli stessi client come "tracker", anche se ovviamente qualcuno dovra' dir loro di contattare quel client li' per comunicare le "coordinate" del vostro btsync personale.
Ed e' qui il bello: non avete bisogno di mettere su un tracker in azienda, perche' usando DHT qualsiasi client btsync mettera' un cache le macchine e gli share che conosce.
Allora, se volete usare btsync su internet, vi serve:
- Una istanza virtuale (un FreeBSD con 256 MB di ram basta) su cui girera' un btsync SENZA FILE.
- Un firewall/router capace di reindirizzare le porte necessarie sulla macchina "bridge".
- Un servizio di DNS dinamico (dyndns, no-ip, o altri).
la cosa che realizzerete e' piu' o meno cosi':
come vedete, abbiamo creato un server (sync.ddns.com , per esempio) in ascolto sulla porta 10000 , e il firewall gli porta all'indietro il traffico.
Sulle macchine ove tenete i file configurerete l'indirizzo su rete interna della macchina (che nell'esempio che mo messo sopra e' 192.168.172.66:20000, (indirizzo che uso tanto per mettere in chiaro che e' una rete locale). Su questo indirizzo/porta il nostro firewall NAT indirizza la porta 10000 esposta ad internet.
A quel punto, sul nostro client esterno, diciamo il PC di casa (o il client sul cellulare) configuriamo l'equivalente di questo:
succedera' allora che la rete DHT iniziera' a distribuire gli hash verso il vostro server (vuoto), che pero' conosce sia i vostri hash che quelli delle altre macchine della rete interna. Non appena il server "vuoto" sara' a conoscenza degli hash, iniziera' ad informare le macchine interne (che contengono i dati) dell'esistenza di una macchina la' fuori, cui inviarli. Da cui, i server contatteranno poi il vostro pc o il vostro portatile e si scambieranno i file. E questo SENZA coinvolgere un tracker vero e proprio.
Qual'e' allora il "problema di sicurezza" di cui parlo? Esattamente quello che ho descritto sopra: occorre sapere che cosa sia DHT, che ruolo abbiano i tracker nella rete bittorrent che cosa siano i forward server, e cosi' via. Si tratta di un problema sul "layer 8" perche' gli utenti non si chiederanno che cosa significhino quei configuration items: noteranno che efettivamente usando il tracker e magari il forward server tutto funzioni meglio , e quindi informeranno bittorrent INC di tutto cio' che si scambiano.
Attenzione, non sto dicendo che bittorrent INC possa leggere i vostri files: con l'implementazione di AES-128 che viene implementata, non sarebbe possibile nemmeno se il traffico passasse tutto per il tracker, cosa che non e'. Tuttavia, in questo modo per il tracker passano un bel pochino di metadati.
E voi sapete che NSA e' GHIOTTA di metadati.
Quindi si, btsync e' una killerapp tremenda per il mondo del cloud, come Dropbox ed altri, e per come funziona (problemi=0 almeno nella versione attuale usando FreeBSD e Linux) probabilmente ha le capacita' di ucciderli entrambi. E' vero che non offre un "backup sul cloud", ma e' anche vero che una volta che avete una copia degli stessi file su piu' dispositivi o piu' dischi, avete tutti i backup che volete.
Tuttavia richiede all'utente di conoscere il ruolo del tracker e il funzionamento della rete DHT, cosa che non e' estendibile su grande scala e ad ogni utente, e quando un utente NON SA cosa stia facendo di preciso, nasce il famoso "problema di sicurezza sul layer 8", ovvero il problema di sicurezza che deriva da una condotta scellerata degli utenti stessi.
Btsync e' potenzialmente la killerapp di Dropbox , questo lo vedremo in futuro, ma di certo richiede un livello di conoscenza del protocollo di bittorrent che non e' comune.
E non e' comune nemmeno presso i professionisti: siccome bittorrent e' considerato un software borderline, usato per download illegale (anche se non e' vero, ne esistono diverse applicazioni commerciali) moltissimi professionisti non se lo studiano, dal momento che non e' una conoscenza di tipo "enterprise", o non viene vista come "billable".
Di conseguenza, una sua diffusione nel mondo home e soho e' di per se' un potenziale problema di sicurezza , o meglio di privacy, problema che nasce sul layer 8.
Ovvero sul lato umano.