Datenaustausch mit dat

In diesem Artikel stelle ich eine weitere Peer-to-Peer Alternative zu zentralen Dateiablagen wie Dropbox oder WeTransfer vor.

Mohnblume

28.6.2019

Jan Ulrich Hasecke

Zusammenfassung
  • dat ist ein Tool bzw. ein Protokoll für das Teilen von Daten über eine p2p-Verbindung.
  • Es ähnelt in der Handhabung dem Versionierungssystem git.
  • Es ist schnell, sicher, versioniert und arbeitet dezentral.
  • Dat ist eine Einbahnstraße. Nur derjenige, der ein Archiv erstellt hat, kann Daten hinzufügen, verändern oder löschen.

Meine Kunden schicken mir gerne größere Daten via WeTransfer. Kürzlich merkten sie dann, dass WeTransfer nicht in den Wolken existiert, sondern einfach nur aus Servern anderer Leute besteht, die auch schon mal Fehler machen.

Ich habe hier bereits mehrmals über Alternativen zu zentralen Diensten wie Dropbox, Google und WeTransfer berichtet, die meines Erachtens sicherer und nach einer gewissen Umgewöhnung absolut alltagstauglich sind: zum Beispiel Syncthing oder Onionshare. Die Alltagstauglichkeit von Syncthing konnte ich in den letzten Monaten in der Praxis verifizieren. In einer spontan gebildeten Arbeitsgruppe, die keine gemeinsame Infrastruktur besaß und lediglich über E-Mail kommunzierte, schlug ich vor, eine gemeinsame Dateiablage mit Hilfe von Syncthing zu bilden. Die Arbeitsgruppe bestand aus insgesamt vier Personen. Beteiligt waren die Betriebssysteme Linux, Mac OS X und Windows. Außer mir hatte niemand Erfahrung mit Syncthing. Es lief alles problemlos.

Beim Arbeiten mit Syncthing besteht die einzige Hürde in der Einrichtung. Ich musste den anderen bei der Installation und der Eingabe der notwendigen Verbindungsschlüssel per Telefon helfen. Als die Synchronisierung aber einmal eingerichtet war, lief alles wie am Schnürchen.

Mit Onionshare konnte ich leider noch keine Erfahrungen in freier Wildbahn sammeln, weil kaum jemand den Tor-Browser installiert hat. Die Hetze in den Medien gegen das böse Darknet scheint die Verbreitung von Tor extrem zu behindern. Das ist sehr schade, denn anonymes Surfen ist nicht kriminell, sondern schützt die Privatsphäre des Nutzers.

Wie ich in meinem Artikel über Onionshare gezeigt habe, ist der Datentransfer mit Onionshare eine sehr bequeme Sache. Der Sender wird sogar darüber informiert, wenn der Empfänger den Download abgeschlossen hat. Unsere Qualitätsjournalisten sollten deshalb endlich damit aufhören, Tor zu dämonisieren. Wenn mehr Privatpersonen und Unternehmen den Torbrowser standardmäßig installieren würden, wäre der vertrauliche Transfer großer Datenmengen kein Thema mehr.

dat ist ein wenig wie git

In diesem Artikel soll es um den Datenaustausch mit dat gehen. Das Dat-Protokoll ist ein p2p-Protokoll, das einen versionierten, dezentralen Datenaustausch unter einer einheitlichen öffentlichen Adresse ermöglicht. Dat ähnelt in der Bedienung dem beliebten Versionierungssystem Git. Momentan setzt die Benutzung von Dat die Vertrautheit mit der Kommandozeile voraus.

Es gibt zwar eine GUI-Version mit dem Namen Dat Desktop für Mac OS X und Linux. Die Entwicklung der Anwendung scheint aber ins Stocken geraten zu sein. Dat Desktop ist eine Electron-JS-Anwendung mit reduziertem Funktionsumfang.

Dat ist also leider noch nicht so praxistauglich wie Syncthing oder Onionshare, bei denen alle Funktionen über Webinterface und GUIs bedient werden können.

dat in der Praxis

Ich überspringe die Installation von dat und möchte nur einen typischen Anwendungsfall beschreiben. Die Schritte zur Installation können hier nachgelesen werden.

Dat-Archiv erzeugen

Nehmen wir an, Alice möchte ihre Urlaubsfotos mit Bob teilen.

Dazu muss sie im entsprechenden Ordner mit dem Befehl dat init ein Dat-Archiv erzeugen.

alice@computer-1:~/Bilder/Urlaub-2019$ dat init

Das Programm zeigt nach der Eingabe einige Meldungen an und fragt Alice, wie Titel und Beschreibung des Dat-Archivs lauten sollen. Das Programm wartet an diesen Stellen auf eine Eingabe.

Welcome to dat program!
You can turn any folder on your computer into a Dat.
A Dat is a folder with some magic.

Your dat is ready!
We will walk you through creating a 'dat.json' file.
(You can skip dat.json and get started now.)

Learn more about dat.json: https://github.com/~/dat.json

Ctrl+C to exit at any time
Title:  Urlaubsbilder
Description:  Fotos vom letzten Urlaub
Created empty Dat in /home/alice/Bilder/Urlaub-2019/.dat

Now you can add files and share:
* Run dat share to create metadata and sync.
* * Copy the unique dat link and securely share it.
dat://42fa60b220dde511c8a8c0faacfcf1f0eb95968fa04818de5fa41eac0e575b26

In der letzten Zeile wird die URL für das Dat-Archiv ausgegeben. Es ist ein langer Hash-Wert. Diese URL schickt Alice später an Bob.

Wenden wir uns aber kurz der Datei dat.json zu, die Dat für Alice erzeugt hat. Das ist eine einfache Textdatei im JSON-Format in dem Bilderordner, den Alice teilen will.

{
  "title": "Urlaubsbilder",
  "description": "Fotos vom letzten Urlaub",
  "url": "dat://42fa60b220dde511c8a8c0faacfcf1f0eb95968fa04818de5fa41eac0e575b26"
}

In der Datei befinden sich die Angaben von Alice zum Titel und zur Beschreibung sowie die URL des Dat-Archivs.

Dat-Archiv teilen

Nachdem Alice die URL des Archivs an Bob per E-Mail gesendet hat, muss sie das Archiv aktiv teilen, damit Bob es empfangen kann. Sie geht also auf der Kommandozeile wieder in den Ordner und gibt den Befehl dat share ein:

alice@computer-1:~/Bilder/Urlaub-2019$ dat share
dat v13.13.1
dat://42fa60b220dde511c8a8c0faacfcf1f0eb95968fa04818de5fa41eac0e575b26
Sharing dat: 30 files (385 MB)

0 connections | Download 0 B/s Upload 0 B/s

Watching for file updates


Ctrl+C to Exit

Solange Alice die Kommandozeile offen lässt und nicht Ctrl+C drückt, wird das Dat-Archiv geteilt.

Dat-Archiv klonen

Nachdem Bob die URL erhalten hat, öffnet er ein Kommandozeilenprogramm und wechselt in einen Ordner, in dem er das Archiv von Alice klonen möchte. In unserem Fall ist dies der Ordner Bilder in seinem Heimverzeichnis. Dann gibt er den Befehl dat clone gefolgt von der URL ein.

bob@computer-2:~/Bilder$ dat clone dat://42fa60b220dde511c8a8c0faacfcf1f0eb95968fa04818de5fa41eac0e575b26
Dat could not find any connections for that link.
There may not be any sources online.

Run 'dat doctor' if you keep having trouble.

Bob war zu schnell. Alice hat offensichtlich noch nicht durch Eingabe von dat share mit dem Teilen begonnen.

Einige Sekunden später hat Bob jedoch Erfolg.

bob@computer-2:~/Bilder$ dat clone dat://42fa60b220dde511c8a8c0faacfcf1f0eb95968fa04818de5fa41eac0e575b26
dat v13.13.1
Cloning: 30 files (385 MB)

1 connection | Download 1.8 MB/s Upload 0 B/s

dat synced, exiting in true seconds.
[=========---------------------------------] 22.61%

Ganz unten bewegt sich der ASCII-Ladebalken langsam auf die 100% zu. Anschließend findet Bob im Ordner Bilder einen neuen Ordner vor, dessen Name 42fa60b220dde511c8a8c0faacfcf1f0eb95968fa04818de5fa41eac0e575b26 lautet. Wenn Bob den Ordner unter einem anderen Namen speichern wollte, müsste er nach der URL den gewünschten Namen für den lokalen Ordner angeben, also zum Beispiel:

bob@computer-2:~/Bilder$ dat clone dat://42fa60b220dde511c8a8c0faacfcf1f0eb95968fa04818de5fa41eac0e575b26 fotos-von-alice

Wenn Alice weitere Fotos mit Bob teilen möchte, kann sie diese in den Ordner kopieren und dann den Befehl dat sync aufrufen. Der Befehl fügt die neuen Bilder dem Archiv hinzu und beginnt mit dem Teilen. Bob kann die neuen Bilder durch den Befehl dat pull nachladen.

Dat hat eine Reihe von weiteren Funktionen, die ich hier aber nicht beschreiben möchte.

Dat ist eine Einbahnstraße

Dat hat, wenn man so will, auch Nachteile. So kann nur derjenige, der das Dat-Archiv erstellt hat, Daten im Archiv verändern oder löschen. Wenn Bob seinerseits Bilder an Alice senden möchte, kann er sie nicht einfach in den Ordner kopieren, den Alice mit ihm geteilt hat, und mit dat sync zurück synchronisieren. Der Grund dafür ist einfach. Alle geteilten Daten werden signiert. Wer ein Dat-Archiv klont und aktualisiert, kann sicher sein, dass die Daten von der Person stammt, die das Archiv erstellt hat. (Wir blenden die Möglichkeit, dass sich jemand Zugriff auf den Rechner von Alice verschafft hat, einmal aus.)

Allerdings kann jeder, der das Archiv geklont hat, dieses weiterteilen, indem er in dem Ordner den Befehl dat sync eingibt. Je mehr Rechner ein Archiv teilen, umso schneller erfolgt, vereinfacht ausgedrückt, der Download. Wenn kein Rechner teilt, kann man das Archiv auch nicht klonen oder aktualisieren.

Das Protokoll eignet sich also gut für Daten, deren Herkunft nachvollziehbar sein soll. An diesem Zug von Dat erkennt man, dass es im wissenschaftlichen Umfeld entstanden ist. Die Entwickler hatten folgendes Szenario im Hinterkopf. In einem Forschungszentrum fallen bei Experimenten große Datenmengen an, die von ganz vielen Wissenschaftler ausgewertet werden sollen. Jeder einzelne Wissenschaftler klont und teilt das Archiv, sodass eine Art Cluster entsteht. Der Traffic, der sonst ausschließlich im Forschungszentrum anfallen würde, kann so auf viele Wissenschaftler und ihre Institute verteilt werden. Gleichzeitig ist immer gewährleistet, dass die Daten immer von dem Forschungszentrum kommen.

Wenn also Bob Fotos mit Alice teilen möchte, muss er dafür ein zweites Dat-Archiv anlegen und dessen URL an Alice senden.