Sicurezza, Privacy e Anonimato sul Web

Syncthing SyncthingPDF

Syncthing è un Software Libero pubblicato su syncthing.net sotto licenza Mozilla Public License Versione 2.0. Sono disponibili distribuzioni per Windows, OSX, GNU/Linux, BSD, Solaris e Android.

Screenshot

  • Immagine: GUI di Syncthing in funzione su Ubuntu Linux

L'intero ecosistema di Syncthing è libero, aperto e Open Source: il software nasce come applicativo a riga di comando con un'aggiunta interfaccia Web, accessibile tramite un Web Browser. Ogni dispositivo è identificato tramite coppia di chiavi crittografiche (usando TLS) e l'indirizzo IP degli altri dispositivi viene comunicato tramite un Tracker anch'esso Open Source. E' possibile utilizzare il Tracker gestito dagli sviluppatori del software, usarne uno gestito personalmente o connettersi direttamente a indirizzi conosciuti senza usare un tracker.

Il software è implementato usando il linguaggio di programmazione Go (anche detto Golang).

Come si usa

Passi da seguire su ogni dispositivo (almeno due dispositivi sono necessari):

  1. ottenere il software navigando sul sito syncthing.net e scaricando la versione per il proprio sistema operativo
  2. dopo aver avviato il software seguendo le istruzioni offerte dal sito web, aggiungere alla lista dei dispositivi un'altro dispositivo con cui sincronizzare i propri dati.
  3. aggiungere una o più cartelle alla lista dei percorsi da sincronizzare e scegliere con quali dispositivi condividerle

Quando almeno due dispositivi sono accesi contemporaneamente e sono in grado di comunicare via rete locale o Internet, cominceranno a sincronizzare il contenuto delle cartelle.

  • il comportamento del software in caso di conflitto dei file è configurabile;
  • il software supporta più sistemi di Version Control per i dati delle cartelle;
  • è possibile scegliere un dispositivo Master per ogni cartella:
    • solo il Master sarà in grado di modificare il contenuto;
    • gli altri nodi accetteranno modifiche solo dal Master.
  • alternativamente, un nodo può essere configurato in sola lettura per una o più cartelle.

Block Exchange Protocol

Syncthing è un'implementazione del Block Exchange Protocol (BEP), che offre una soluzione al problema della sincronizzazione decentralizzata di una o più cartelle di file tra due o più dispositivi. Questo protocollo è nato e cresciuto insieme a Syncthing.

Le specifiche del protocollo sono incluse insieme alla documentazione di Syncthing.

BEP utilizza TCP per comunicare e TLS per crittografia e autenticazione.

Problemi di connessione

Spesso i dispositivi possono trovarsi dietro NAT e/o Firewall.

Syncthing include delle tecniche basilari di NAT Traversal, ma per comunicare stabilmente uno dei due interlocutori deve poter ricevere connessioni in ingresso.

Dunque, per avere la totale certezza che due dispositivi comunichino, è necessario posizionarli temporaneamente nella stessa rete locale, oppure utilizzare un terzo dispositivo in grado di ricevere connessioni in ingresso che può fungere da tramite e soprattutto permette la sincronizzazione anche se i due dispositivi da sincronizzare non sono mai accesi contemporaneamente o mai connessi direttamente tra loro.