Freighter – Distributed Messaging-Dienst für großen Datenmengen

18. Apr'20

Hinweis: Noch sind nicht alle Informationen bekannt, sobald es Neuigkeiten gibt werde ich den Artikel aktualisieren.

 

 

Die SKALY-Teammitglieder Peter Willemsen und Dennis Schouten, das niederländischen Forschungsinstitut TNO und weitere Beteiligte (werden noch bekannt gegeben) arbeiten am Aufbau einer dezentralen Plattform für Gesundheitsdaten. Die Vision des TNO Forschungsinstituts ist es, eine Open-Source-Plattform bereitzustellen, mit der Daten von und zu verschiedenen Punkten auf einer dezentralen Plattform transportiert werden können. 

Freighter ist Teil des größeren Projekts des Forschungsinstituts und wird als aktiver Partner eine vollständige Plattform für den Austausch und die Verarbeitung medizinischer Daten entwickeln, diese Daten sollen nur mit autorisierter Zustimmung (Patient, Angehöriger) offengelegt werden. Die IOTA Foundation unterstützt das Open-Source Projekt Freighter mit Geldern aus dem Ecosystem Development Fund (EDF), mit dieser bewilligten Unterstützung wurde begonnen Freighter von der SKALY-Plattform zu entkoppeln, um das Projekt völlig neu aufzubauen.

Freighter selbst ist ein auf IOTA basierendes Second-Layer Protokoll, ein verteilter Messaging-Dienst, welcher eine solide Möglichkeit bietet mit großen Datenmengen zu interagieren und diese über sichere Kanäle zu versenden. Riesige, parallele Datenströme, können dabei von mehreren IOTA-Nodes kommen, dies ermöglicht es innerhalb von IOTA, nahezu jede Anwendung auszuführen, die für die Anzeige oder Verarbeitung von "Big Data" geeignet ist. Alles baut auf IOTA auf und außer einem IOTA-Node ist nichts anderes erforderlich.

Auf den ersten Blick drängt sich ein Vergleich zu IOTA Streams auf, dazu schrieb Peter Willemsen auf dem IOTA Discord Server: Die beiden Protokolle sind im Grundsatz unterschiedliche Werkzeuge. IOTA Streams ist wie ein Ferrari, schnell für kleinere Datenmengen, Freighter dagegen ist wie ein LKW, der zwar nicht so schnell ist wie der Ferrari, aber riesige Datenmengen (Nutzlast) über einen langen Zeitraum senden kann. 

Das wirklich neue bei Freighter ist, dass viele verschiedene Nodes die Daten ohne Geschwindigkeitsverlust in einen Kanal senden können, jeder Abonnement dieses Kanals kann die Millionen von Messages (0-Wert Transaktionen, Daten/Informationen) gleichzeitig lesen und herunterladen. Dadurch das mathematisch bekannt ist, wo sich jede Nachricht befindet oder befinden wird, können nicht nur mehrere Messages gleichzeitig herunterladen werden, sondern die Last der Datenmenge kann sogar auf mehrere IOTA-Nodes verteilt werden. Das bedeutet, dass die Download-Geschwindigkeit nur durch die Geschwindigkeit ihrer eigene Internet/ISP-Verbindung begrenzt wird und wie viele Nodes es im Netzwerk gibt. Anders ausgedrückt, Freighter ist wie Bittorent über IOTA Streams. Alle gesendeten Daten über Freighter werden als IOTA-Messages im Tangle gespeichert, für einige Anbieter oder Nutzer rücken daher Permanodes oder selektive Permanodes mehr ins Blickfeld, sowohl für den eigenen Anwendungsfall als Anbieter, aber auch als bezahlte Serviceleistung. Man kann sich jedoch immer noch dafür entscheiden, die Daten zusätzlich extern zu "sichern" und mit einer p2p-Lösung zu verknüpfen, die in der Lage ist, größere Datenmengen zu speichern (z.B. ipfs).


Was bedeutet das für die eHealh Branche? Alle dezentralen Träume der Patienten und Ärzte könnten wahr werden. Ich freue mich auf die weitere Entwicklung des Projekts, zudem sich dieser Anwendungsfall auch auf andere Branchen übertragen lässt. 
 

 

Freighter zeichnet sich durch die folgenden Design-Prinzipien aus:

  • Die Bibliothek sollte in Bezug auf Einfachheit das absolute Minimum darstellen.
  • Transaktionen, die mit Freighter gesendet werden, sollten nicht von anderen IOTA-Messages (0-Wert Transaktionen, Daten/Informationen) und auch nicht von Transaktionen anderer Freighter-Kanäle, unterscheidbar sein.
  • Ein einfaches, aber unglaublich starkes Sicherheitsmodell: Schützen Sie den Sender und die Abonnenten eines Kanals gegen Personen, die keinen Zugang haben, aber nicht unbedingt gegeneinander.
  • Ein Kanalmodell, das schnelle parallele Downloads ermöglicht.
  • Geschützt gegen Denial-of-Service-Angriffe, wodurch sichergestellt wird, dass Daten immer flüssig und ohne Wartezeiten geladen werden.
  • Völlig zustandslos sein. Dies dient dazu, potenzielle Fehler und andere Besonderheiten zu vermeiden, wenn ein Teilnehmer seinen Status nicht auf dem neuesten Stand hält.
  • Kanäle können mit Permanodes gespeichert werden ohne den Inhalt zu kennen.
  • Optimiert für eine web basierte IOTA API

 

 

Um diese Designprinzipien aufrechtzuerhalten, hat Freighter die folgenden Merkmale:

  • Die JS-Bibliothek der Freighter verfügt über keinerlei Verschlüsselung oder andere Merkmale außer dem Senden, Empfangen oder Authentifizieren von Nachrichten. Wenn Sie die Verschlüsselung unabhängig davon verwenden oder Freighter nutzen möchten, um Daten in Echtzeit abzufragen, können Sie unser Erweiterungsmodell verwenden (FreighterCrypto und FreighterPolling sind bereits fertig).
  • Transaktionen, die von der Bibliothek gesendet werden, werden durch XOR'ing der Nachricht maskiert, indem eine zufällige Datenfolge aus dem Kanalschlüssel abgeleitet wird. Da jeder Kanalbesitzer einen anderen Schlüssel hat, führt diese Operation für jeden Kanal zu unterschiedlichen Ergebnissen.
  • Wer einen spezifischen Frachtkanalschlüssel hat, kann statistisch gesehen voraussehen, wo jede Nachricht jemals sein wird, die gilt für immer, sowohl in der Vergangenheit als auch in der Zukunft. Wer den Schlüssel nicht hat, kann dies nicht voraussehen. Abgesehen von der Maskierung, wie sie im obigen Aufzählungspunkt beschrieben ist, fügen wir in jede Nachricht 2 Zufallsbytes an einer zufälligen Position und 2 Prüfsummenbytes an einer zufälligen Position ein, um die besagten Nachrichten zu authentifizieren. Die einzige Möglichkeit, eine authentifizierte Nachricht zu fälschen, besteht darin, dass der Angreifer irgendwie weiß, 1) wo die Prüfsumme sein sollte und 2) was die Prüfsumme ist. Die Prüfsummen werden für jeden Kanal anders berechnet, was bedeutet, dass es unglaublich schwer bis unmöglich wird, eine authentifizierte Nachricht zu fälschen. Wenn eine nicht authentifizierte Nachricht von jemandem in einen Kanal gelegt wird, der den Kanalschlüssel nicht hat, wird sie einfach ignoriert. Im Wesentlichen haben wir das Signaturschema durch eine 2-Byte-Prüfsumme und etwas Spieltheorie ersetzt, so dass es praktisch und perfekt ist, unveränderliche Daten sicher zwischen zwei oder mehr Teilnehmern auszutauschen.
  • Da jeder Besitzer des Kanalschlüssels weiß, wo sich jede Nachricht befindet und wo jede zukünftige Nachricht sein wird, sind riesige, parallele Downloads realistisch (Sie könnten sogar Nachrichten von verschiedenen Knoten gleichzeitig herunterladen).
  • Angreifer können ohne den Kanalschlüssel nicht wissen, wo eine Nachricht sein wird. Die einzige Möglichkeit, einen Freighterkanal zu spammen, besteht darin, zufällige Adressen in den Tangle zu spammen, in der Hoffnung, Sie würden etwas verlangsamen. Selbst wenn Sie das tun, kann Freighter einfach Transaktionen an einer Adresse durchlaufen und den Rest herunterladen, während er auf den Abschluss der anderen wartet.
  • Freighter braucht nur eine Sache, um zu funktionieren, und das ist der Kanalschlüssel. Der Kanalschlüssel bleibt für den gesamten Lebenszyklus des Kanals gleich.

 

 

 

Freighter-Demo: Senden und Empfangen von Nachrichten in Echtzeit: freighter.skaly.io

 

Github: Wenn Sie ein Entwickler sind, mehr über die Technologie hinter Freighter erfahren möchten oder einen Beitrag leisten möchten, können Sie sich das Freighter-Projekt auf unserem GitHub ansehen.

 

Kontakt: Möchten Sie sich engagieren, über die neuesten Entwicklungen auf dem Laufenden bleiben und mit dem Team in Kontakt bleiben? Treten Sie unserem SKALY Open Source Discord Server bei!

 



 

zuletzt bearbeitet 18.04.2020