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


18. Apr'20 Meilenstein 1

 

Das Projekt, an dem SKALY beteiligt ist, wurde vom niederländischen Forschungsinstitut TNO und Health Holland (LSH) organisiert. Der niederländische Sektor Life Sciences & Health (LSH) ist einer von neun „Top-Sektoren“ in den Niederlanden. Die Top-Sektoren werden vom niederländischen Ministerium für Wirtschaft und Klimapolitik benannt und nach ihrer Fähigkeit ausgewählt, um einen wesentlichen Beitrag zu den globalen gesellschaftlichen Herausforderungen zu leisten.

Dieses Projekt wurde als Preventive Personal Health Train (PPHT), bezeichnet, an dem mehrere Konsortialpartner wie  verschiedene Unternehmen, Organisationen, Universitäten, Apotheken, Krankenaktenfirmen, Krankenhäuser, Allgemeinmediziner und SKALY (Dennis Schouten und Peter Willemsen) beteiligt sind.





Um die Vision einer Open-Source-Plattform zu verwirklichen, mit welcher Daten von und zu verschiedenen Punkten auf einer dezentralen Plattform transportiert werden können, konzentriert sich PPHT auf die Erforschung und Bewertung, wie in der digitalen Welt ein dezentrales Gateway aufgebaut werden kann, dass die Redundanz verringert, den Zugriff auf Gesundheitsdaten verbessert und dadurch die Entwicklung solider Gesundheits-Apps und -Tools beschleunigt. 

SKALY ist der Innovationspartner in diesem Konsortium und hat es sich zur Aufgabe gemacht mit Hilfe der IOTA Technologie zu demonstrieren das eine dezentrale Infrastruktur für die persönliche Gesundheitsversorgung möglich ist. Mit der angestrebten Lösung wird die Kontrolle der Daten inkl. der Krankheitshistorie immer beim tatsächlichen Eigentümer (Patient / Kunde) liegen, somit wird in einer zunehmend vernetzten Welt die Privatsphäre der Patienten/Kunden geschützt.

Sicherheit und Skalierbarkeit sind in diesem Projekt ein sehr wichtiger Faktor, da sich Skaly darauf vorbereitet, große Datenmengen zu senden, benötigen sie einen neuen Ansatz, um die Nachfrage innerhalb eines dezentralen Netzwerks aufrechtzuerhalten. Dies war die Geburtsstunde von Freighter (dt. Frachter).

Freighter ist Teil des größeren Projekts 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) offen gelegt 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 der 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.

 




16. Jul‘20 Meilenstein 2


Die Standardisierung von Daten 

Heute veröffentlichen wir Meilenstein 2 des PPHT-Projekts zur Schaffung einer dezentralen Gesundheitsdateninfrastruktur. In diesem Meilenstein werden wir uns mit der Standardisierung von Daten befassen, die auf den fünf Säulen aufbauen, die von allen Projektmitgliedern innerhalb des Konsortiums festgelegt wurden.

  • Privatsphäre
  • Transparenz
  • Daten (wieder) verwendbar
  • Offene Standards
  • Vom Einzelnen kontrolliert

 

Dieser Meilenstein konzentriert sich auf diese Säulen innerhalb der Datenstandardisierung. Die Tooling- und Open-Data-Standards werden generisch (FHIR) so entwickelt, dass sie leicht auf andere Gesundheitsbereiche ausgedehnt werden können. Unser erster Proof of Concept (PoC) zielt auf die Erfassung, Standardisierung und Steuerung von Gesundheits- und medizinischen Daten für Personal Health Vaults (Freighter) ab.

Der Schwerpunkt dieses PoC wird auf der Machbarkeit der Erfassung, Standardisierung und Implementierung des Modells sowohl für Verbrauchergesundheitsdaten als auch für medizinische Daten liegen (siehe Abbildung). Die Daten für das Standardset werden in einem von den TNO-Projektpartnern bereitgestellten Personal Health Vault gesammelt, in dem die Daten vom Gesundheitskonsumenten kontrolliert werden. Die gesammelten und kontrollierten Gesundheitsdaten der Verbraucher werden später an Dienste gekoppelt, die persönliche Gesundheitsratschläge geben können. 

 

 


Dieser Meilenstein umfasst die folgenden Aktualisierungen.

Das erste Update wird ein Freighter-Update sein, das zweite Update ist die FHIR-Implementierung für Freighter, um die Standardisierung der Daten abzuschließen. Da wir das offene Projekt von pact.care recherchiert haben, konnten wir die Lösung für das TNO-Projekt nicht verwenden, wie es für Windows geschrieben wurde. Wir mögen die Herangehensweise unserer Community-Mitglieder innerhalb von pact.care sehr, aber Windows war nicht unsere Sache, also haben wir von vorne angefangen.

Wir möchten darauf hinweisen, dass in der obereren Abbildung die SKALY-Anwendung als Datenlieferant fungiert. Nach einigen guten Gesprächen mit Jelle von IF werden wir SELV für dieses Projekt in unseren PoC integrieren.

 

 

Dies ist noch nicht implementiert, wird jedoch separat demonstriert, wenn wir die Integration von Freighter FHIR und FRPC in SELV abgeschlossen haben. Wir arbeiten eng mit der IOTA Foundation zusammen und werden der Gesundheitsbranche zeigen, dass wir (IOTA / SKALY) die dezentrale Lösung sind. Ein besonderer Dank geht an Jelle und Holger für die Öffnung von SELV für uns.

 


Freighter Private Channel (FRPC)

In unserem vorherigen Update haben wir Freighter gezeigt, die schnelle dezentrale Messaging-Plattform auf IOTA, die eine Reihe von kryptografischen Maßnahmen verwendet, um große Datenmengen herunterzuladen und zu abonnieren, ohne dass ein lokaler Status über den Kanal beibehalten werden muss.



Wie bereits im ersten Video über Freighter erwähnt, teilen sich die Kanäle unter den Teilnehmern die gleichen Schlüssel, was bedeutet, dass sie als Anwender und jeder der Eigentümer war nur vor denen geschützt waren, die keinen Zugriff auf den Kanal hatten.

Freighter hat jetzt eine neue Erweiterung namens Freighter Private Channels (FRPC), wo Sie eine "Kanaladresse" (ein öffentlich zugängliches statisches Stück Text, sehr ähnlich einer IOTA-Adresse) erstellen können, in die sich Personen (oder Maschinen) "einwählen" können und einen neuen, privaten Kanal mit dem Besitzer dieser Adresse starten können.

Es ähnelt sehr stark einer "dezentralen E-Mail-Plattform". Bei Skaly haben wir mit der Entwicklung des FRPC begonnen, nachdem der Bedarf an der Nutzung privater Kanäle in unserem eigenen Dashboard gewachsen war. Vor der FRPC nutzten wir die Peer-to-Peer-Schicht des IPFS, um einen Freighter-Channel-Schlüssel zwischen 2 Teilnehmern auszuhandeln und von dort aus zur IOTA zu wechseln. Durch den Wegfall des IPFS konnten wir die Größe unserer Anwendungen von 6 auf 2 MB reduzieren, was die CPU-Auslastung und die Code-Komplexität stark verringert hat.


Beachten Sie, dass mit IPFS alles in Ordnung ist und dass das, was die Jungs dort drüben machen, absolut fantastisch ist. Darüber hinaus gibt es viele Projekte, die IOTA und IPFS gleichzeitig verwenden. Es war nur so, dass wir nur einen sehr winzigen Teil von IPFS verwendet haben, und das gab einen großen Overhead.Wenn Sie mehr technisches Verständnis erhalten möchten, schauen sie gerne in unser Github, das die aktualisierte Readme-Datei mit allen Spezifikationen und der verwendeten Technologie enthält. Um sie sofort in Ihrem Browser zu sehen, gehen Sie zu freighter.skaly.io und klicken Sie auf "private Kanäle".



Freighter-FHIR PoC

Bei der Verwendung von Freighter als Gesundheit(tresor)plattform und im Rahmen des TNO-Projekts haben wir eine weitere Demo erstellt, die es Ihnen ermöglicht, ein Dashboard einzurichten und die Rolle des Leistungserbringers von morgen zu übernehmen! Alle im Zusammenspiel mit FHIR/HL7. Bitte folgen Sie diesem Wikipedia-Artikel für mehr Kontext über FHIR. Diese Demo erlaubt es Ihnen, (fiktive) Patientendaten auszutauschen (und die Zustimmung zurückzuziehen). Das System ist auf FPC aufgebaut und kommt dem nahe, was wir in SKALY in einer Produktionsumgebung verwenden.

Der FHIR-PoC ist im Vergleich zum rohen FRPC einzigartig, weil er den FHIR-Standard (teilweise) implementiert, der die gemeinsame Nutzung und Speicherung von Gesundheitsdaten zwischen verschiedenen Systemen vereinheitlicht und zeigt, wie IOTA Teil der Annahme dieses Standards sein kann, und darüber hinaus führt der PoC eine zusätzliche Schicht (Layer) ein, die es jedem ermöglicht, den Zugriff auf Daten zurückzuziehen. Damit wird nicht nur verhindert, dass Personen auf neue Daten zugreifen, zu denen Sie zuvor Zugang gewährt haben, sondern es wird auch sichergestellt, dass alle früheren Daten, die Sie gesendet haben, aus dem Tangle gelöscht werden! Das klingt unmöglich, nicht wahr?

Es ist tatsächlich machbar, indem man eine spezielle Art von digitalem Handschlag verwendet, bei dem ein kleines Stück Daten, das für das Lesen des gesamten Kanals auf dem Tangle entscheidend ist, aus dem Tangle herausgehalten wird. Der kniffligste Teil war es, dieses Datenstück von einem Ort zum anderen zu bringen, ohne dass dieses Datenstück über das Tangle läuft...

Wenn die Zustimmung zur Freigabe und Anzeige von Daten zurückgezogen wird, löscht die andere Partei diese Daten von ihrem Laufwerk, und wenn man bedenkt, dass die Partei bis zum Zeitpunkt des Widerrufs der Zustimmung vertrauenswürdig ist und dass der Schlüssel auf ihrem Computer die einzige Kopie davon war, dann werden alle Daten effektiv "gelöscht".


Dies an sich zeigt, dass nicht nur die IOTA für die Gesundheit bereit ist, es zeigt auch, dass dieses Projekt GDPR-konform und dennoch vollständig dezentralisiert sein kann.

Sowohl der FHIR PoC als auch der FRPC sind vollständig quantenresistent, diese Software bleibt also auch in 50 Jahren nochsicher.

 

  

Demo: Eine Demo von FHIR-Freighter finden Sie unter fhir_patient.skaly.io für die Patientendemo und unter fhir_dashboard.skaly.io. Beachten Sie, dass Sie beide gleichzeitig benötigen. Öffnen Sie sie daher in einer separaten Registerkarte nebeneinander!

Sowohl der FHIR PoC als auch der FRPC sind vollständig quantenresistent. Diese Software ist auch in 50 Jahren noch stark…

 

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.