Blog What We Do Support Community
Developers
Login Sign up

Cloudflare goes InterPlanetary – Einführung des IPFS-Gateways von Cloudflare

by Andy Parker.

Wir freuen uns, heute das IPFS-Gateway von Cloudflare vorstellen zu können, eine einfache Möglichkeit, auf Inhalte aus dem InterPlanetary File System (IPFS) zuzugreifen, und das ohne Installation und Ausführung einer speziellen Software auf Ihrem Computer. Wir hoffen, dass unser Gateway, gehostet unter cloudflare-ipfs.com, als Plattform für viele neue hochzuverlässige und sicherheitsoptimierte Webanwendungen dienen wird. Das IPFS-Gateway ist das erste Produkt, das wir im Rahmen unseres Projekts Distributed Web Gateway veröffentlichen. Dieses Projekt wird alle unsere Bemühungen zur Unterstützung neuer verteilter Webtechnologien bündeln.

Dieser Beitrag gibt eine kurze Einführung in IPFS. Wir haben auch einen begleitenden Blogbeitrag verfasst, in dem beschrieben wird, was wir auf unserem Gateway aufgebaut haben, sowie eine Dokumentation dazu, wie Sie Ihre eigenen Inhalte über unser Gateway mit Ihrem benutzerdefinierten Hostnamen bereitstellen können.

Kurze Einführung in IPFS

Wenn Sie über Ihren Browser auf eine Website zugreifen, spürt Ihr Browser in der Regel den/die Ursprungsserver auf, bei dem/denen es sich um das eigentliche, zentralisierte Repository für die Inhalte der Website handelt. Er sendet dann eine Anfrage von Ihrem Computer an diesen Ursprungsserver, egal wo sich der befindet, und dieser Server sendet die Inhalte an Ihren Computer zurück. Dieses System hat dem Internet jahrzehntelang gute Dienste geleistet, aber es hat einen ziemlich großen Nachteil: Die Zentralisierung macht es unmöglich, Inhalte länger online zu halten als die Ursprungsserver, die sie hosten. Wenn der Ursprungsserver gehackt wird oder einer Naturkatastrophe zu Opfer fällt, sind die Inhalte nicht länger verfügbar. Wenn der Besitzer einer Website beschließt, Inhalte zu löschen, sind sie weg. Kurz gesagt, „Spiegelung“ ist bei den meisten Plattformen kein Konzept erster Güte (Cloudflares Always Online bildet eine bemerkenswerte Ausnahme).

Das InterPlanetary File System will das ändern. IPFS ist ein Peer-to-Peer-Dateisystem, das aus Tausenden von Computern auf der ganzen Welt besteht, von denen jeder Dateien für das Netzwerk speichert. Diese Dateien können alles sein: Katzenbilder, 3-D-Modelle oder sogar ganze Websites. Es wurden bereits über 5.000.000.000 Dateien in IPFS hochgeladen.

IPFS vs. herkömmliches Web

Es gibt zwei wesentliche Unterschiede zwischen IPFS und dem Web, wie wir es heute kennen.

Der erste ist, dass mit IPFS jeder jeden beliebigen Inhalt zwischenspeichern und bereitstellen kann – kostenlos. Jetzt, mit dem herkömmlichen Web, verlassen wir uns in der Regel auf große Hosting-Provider an entfernten Standorten, um Inhalte zu speichern und sie für den Rest des Webs bereitzustellen. Wenn Sie eine Website einrichten möchten, müssen Sie einen dieser großen Dienste bezahlen, um dies für Sie zu tun. Mit IPFS kann jeder seinen Computer als Knoten im System anmelden und mit der Bereitstellung von Daten beginnen. Es spielt keine Rolle, ob Sie an einem Raspberry Pi arbeiten oder den größten Server der Welt betreiben. Sie können auf jeden Fall ein produktiver Knotenpunkt im System sein.

Der zweite wesentliche Unterschied besteht darin, dass Daten inhaltsadressiert und nicht standortadressiert sind. Das ist ein kleiner Unterschied, aber die Auswirkungen sind beträchtlich, also lohnt es sich, sich das ausführlicher anzusehen.

Wenn Sie heute Ihren Browser öffnen und zu example.com navigieren, teilen Sie dem Browser mit: „Hol mir die Daten, die unter der IP-Adresse von example.com gespeichert sind" (die zufällig 93.184.216.34 lautet). Diese IP-Adresse markiert, wo die gewünschten Inhalte im Netzwerk gespeichert sind. Sie senden dann eine Anfrage für die Inhalte von „example.com“ an den Server unter dieser IP-Adresse und der Server sendet die entsprechenden Informationen zurück. Ganz einfach ausgedrückt: Sie sagen dem Netzwerk, wo es suchen soll, und das Netzwerk sendet das, was es findet, zu Ihnen zurück.

IPFS stellt das auf den Kopf.

Mit IPFS wird jeder einzelne im System gespeicherte Datenblock durch einen kryptographischen Hash seines Inhalts adressiert, d. h. eine lange Zeichenkette von Buchstaben und Zahlen, die für diesen Block eindeutig ist. Wenn Sie Daten aus IPFS wünschen, fordern Sie sie über ihren Hash an. Anstatt also das Netzwerk zu beauftragen „Hol mir die Inhalte, die unter 93.184.216.34 gespeichert sind“, bitten Sie: „Hol mir die Inhalte, die einen Hashwert von QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy haben“ (QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy ist der Hash der Beispieldatei example.txt, die die Zeichenkette „I'm trying out IPFS“ enthält).

Inwiefern ist das so anders?

Denken Sie daran, dass Sie bei IPFS dem Netzwerk sagen, wonach es suchen soll, und das Netzwerk herausfindet, wo es suchen soll.

Warum ist das von Bedeutung?

Erstens macht es das Netzwerk widerstandsfähiger. Die Inhalte mit dem Hash QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy können auf Dutzenden von Knoten gespeichert werden. Wenn ein Knoten, der diese Inhalte zwischenspeichert, ausfällt, sucht das Netzwerk einfach auf einem anderen Knoten nach den Inhalten.

Zweitens wird ein automatisches Maß an Sicherheit eingeführt. Angenommen, Sie kennen den Hashwert einer Datei, die Sie haben wollen. Also bitten Sie das Netzwerk: „Hol mir die Datei mit dem Hash QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy“ (die Datei example.txt von oben). Das Netzwerk antwortet und sendet die Daten. Wenn Sie alle Daten erhalten haben, können Sie sie erneut hashen. Wenn die Daten während der Übertragung geändert wurden, ist der Hashwert, den Sie erhalten, anders als der Hash, um den Sie gebeten haben. Sie können sich den Hash als einen eindeutigen Fingerabdruck für die Datei vorstellen. Wenn Sie eine andere Datei zurückgesendet bekommen, als Sie erwartet haben, wird sie einen anderen Fingerabdruck haben. Das bedeutet, dass das System über eine eingebaute Möglichkeit verfügt, um zu wissen, ob Inhalte manipuliert wurden oder nicht.

Eine Anmerkung zu IPFS-Adressen und kryptographischen Hashes

Da wir einige Zeit damit zugebracht haben zu erläutern, warum dieses inhaltsadressierte System so besonders ist, lohnt es sich auch, ein wenig darüber zu sprechen, wie die IPFS-Adressen aufgebaut sind. Jede Adresse in IPFS ist ein Multihash, was bedeutet, dass die Adresse Informationen über den verwendeten Hash-Algorithmus und das Hash-Ergebnis in einer Zeichenkette kombiniert. IPFS-Multihashes bestehen aus drei verschiedenen Teilen: Das erste Byte des Mulithash gibt an, welcher Hash-Algorithmus zur Erzeugung des Hash verwendet wurde; das zweite Byte zeigt die Länge des Hash an; und die restlichen Bytes sind der von der Hashfunktion ausgegebene Wert. Standardmäßig verwendet IPFS den SHA-256-Algorithmus, der einen 32-Byte-Hash erzeugt. Dies wird durch die Zeichenkette „Qm“ in Base58 (die Standardkodierung für IPFS-Adressen) dargestellt, weshalb alle IPFS-Adressbeispiele in diesem Beitrag die Form „Qm ...“ haben.

SHA-256 ist zwar der heute verwendete Standardalgorithmus, aber mit diesem Multihash-Format kann das IPFS-Protokoll Adressen unterstützen, die von anderen Hashing-Algorithmen erzeugt werden. Dadurch kann das IPFS-Netzwerk zu einem anderen Algorithmus übergehen, falls man irgendwann in der Zukunft Fehler bei SHA-256 entdecken sollte. Wenn jemand einen Hash für eine Datei mit einem anderen Algorithmus erzeugt, beginnt die Adresse dieser Datei nicht mit „Qm“.

Zum Glück soll SHA-256, zumindest für den Moment, eine Reihe von Eigenschaften haben, die es zu einem starken kryptographischen Hashing-Algorithmus machen. Der wichtigste davon ist, dass SHA-256 kollisionsresistent ist. Eine Kollision tritt auf, wenn zwei verschiedene Dateien beim Ausführen des SHA-256-Algorithmus denselben Hash erzeugen. Um zu verstehen, warum es wichtig ist, Kollisionen zu vermeiden, lassen Sie uns kurz folgendes Szenario betrachten. Stellen Sie sich vor, eine IPFS-Nutzerin namens Alice lädt eine Datei mit einem Hash hoch und ein anderer Nutzer, Bob, lädt eine andere Datei hoch, die genau denselben Hash erzeugt. In diesem Fall gäbe es im Netzwerk zwei verschiedene Dateien mit genau derselben Adresse. Wenn also eine dritte Person, Carol, eine IPFS-Anfrage für die Inhalte an diese Adresse schickt, würde sie nicht wirklich wissen, ob sie Bobs Datei oder Alices Datei erhalten würde.

SHA-256 macht Kollisionen extrem unwahrscheinlich. Da SHA-256 einen 256-Bit-Hash berechnet, gibt es 2^256 mögliche IPFS-Adressen, die der Algorithmus erzeugen kann. Daher ist die Wahrscheinlichkeit, dass es zwei Dateien in IPFS gibt, die eine Kollision verursachen, gering. Sehr gering. Wenn Sie an weiteren Details interessiert sind, finden Sie auf der Wikipedia-Seite zum Geburtstagsangriff eine coole Tabelle, die genau zeigt, wie unwahrscheinlich Kollisionen sind, wenn Sie einen ausreichend starken Hashing-Algorithmus verwenden.

Wie genau greift man auf Inhalte in IPFS zu?

Nun, nachdem wir im Detail erörtert haben, was IPFS ist, fragen Sie sich wahrscheinlich, wie man es verwendet. Es gibt eine Reihe von Möglichkeiten, auf Inhalte zuzugreifen, die im IPFS-Netzwerk gespeichert sind, aber wir werden nur hier zwei beliebte ansprechen. Der erste Möglichkeit ist, IPFS auf Ihren Computer herunterzuladen. Dadurch wird Ihre Maschine zu einem Knotenpunkt des IPFS-Netzwerks. Das ist der beste Weg, mit dem Netzwerk zu interagieren, wenn Sie sich eingehend damit beschäftigen wollen. Wenn Sie daran interessiert sind, mit IPFS herumzuexperimentieren, können Sie die Go-Implementierung hier herunterladen.

Aber was ist, wenn Sie Zugriff auf Inhalte wünschen, die in IPFS gespeichert sind, ohne sich die Mühe machen zu müssen, einen Knoten lokal auf Ihrem Computer zu betreiben? Hier kommen IPFS-Gateways ins Spiel. IPFS-Gateways sind Knoten von Drittanbietern, die Inhalte aus dem IPFS-Netzwerk holen und über HTTPS für Sie bereitstellen. Um ein Gateway zu nutzen, müssen Sie keine Software herunterladen oder Code eingeben. Sie öffnen einfach einen Browser und geben den Namen des Gateways und den Hash des gesuchten Inhalts ein, und das Gateway stellt die Inhalte in Ihrem Browser zur Verfügung.

Angenommen, Sie wissen, dass Sie auf die Datei example.txt von vorhin, die den Hash QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy hat, zugreifen möchten und es gibt ein öffentliches Gateway, das unter https://example-gateway.com zugänglich ist.

Um auf diese Inhalte zuzugreifen, müssen Sie lediglich einen Browser öffnen und Folgendes eingeben:

https://example-gateway.com/ipfs/QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy

Dann erhalten Sie die Daten, die bei diesem Hash gespeichert sind. Die Kombination aus dem Präfix /ipfs/ und dem Hash wird als der Dateipfad bezeichnet. Sie müssen immer einen vollständigen Dateipfad angeben, um auf Inhalte zugreifen zu können, die in IPFS gespeichert sind.

Was können Sie mit Cloudflares Gateway tun?

Zunächst einmal können Sie über Ihren Browser auf jede der Milliarden von Dateien zugreifen, die in IPFS gespeichert sind. Aber das ist nicht das Einzige, was Sie tun können. Mit dem Gateway von Cloudflare können Sie auch eine Website erstellen, die vollständig in IPFS gehostet wird, aber dennoch für Ihre Nutzer unter einem benutzerdefinierten Domainnamen verfügbar ist. Außerdem stellen wir jeder Website, die mit unserem Gateway verbunden ist, ein kostenloses SSL-Zertifikat aus und sorgen so dafür, dass jede Website, die mit dem Gateway von Cloudflare verbunden ist, vor Schnüffelei und Manipulationen geschützt ist. Weitere Informationen dazu finden Sie in der Dokumentation für Entwickler unter Distributed Web Gateway.

Wir haben unter der ausschließlichen Verwendung von IPFS aus dem Kiwix-Archiv der verschiedenen StackExchange-Websites ein amüsantes Beispiel zusammengestellt und darauf eine verteilte Suchmaschine aufgebaut. Sie können es sich hier ansehen.

Umgang mit Missbrauch

IPFS ist ein Peer-to-Peer-Netzwerk, weshalb die Möglichkeit besteht, dass Nutzer missbräuchliche Inhalte teilen. Das ist etwas, das wir in keiner Weise unterstützen oder dulden. Aber genau wie bei dem Angebot von Cloudflare für traditionellere Kunden ist das IPFS-Gateway von Cloudflare einfach nur ein Cache vor dem IPFS. Cloudflare hat nicht die Möglichkeit, Inhalte im IPFS-Netzwerk zu ändern oder sie daraus zu entfernen. Wenn Sie missbräuchliche Inhalte entdecken, die von Cloudflares IPFS-Gateway bereitgestellt werden, können Sie den hier beschriebenen Standardmechanismus zur Meldung von Missbrauch verwenden.

Auf dem Weg in eine verteilte Zukunft

IPFS ist nur eine einer Familie von Technologien, die eine neue, dezentrale Vision des Webs verfolgen. Cloudflare ist begeistert von den Möglichkeiten, die diese neuen Technologien bieten, und wir sehen unser Gateway als ein Werkzeug, um die Lücke zwischen dem herkömmlichen Web und der neuen Generation von verteilten Web-Technologien zu schließen, die unter der Überschrift IPFS versammelt sind. Indem wir es normalen Nutzern ermöglichen, IPFS-Inhalte in ihren Browsern zu entdecken, stärken wir das Ökosystem und unterstützen sein Wachstum. Wir sind überzeugt, dass das IPFS-Gateway den Inhalten im verteilten Web den gleichen Schub verleihen wird – genau wie im Jahr 2010, als Cloudflare startete und durch ein Angebot an Sicherheit, Performance und Verfügbarkeit, wie sie zuvor nur den Internet-Giganten zur Verfügung gestanden hatten, die Rahmenbedingungen für Webinhalte veränderte.

Dieter Shirley, CTO von Dapper Labs und Mitbegründer von CryptoKitties, schrieb Folgendes:

Seit unserem Start wollten wir CryptoKitty-Illustrationen in IPFS speichern, aber die Technologie dafür existierte noch nicht. Die Ankündigung von Cloudflare macht IPFS von einem vielversprechenden Experiment zu einem robusten Werkzeug für den kommerziellen Einsatz. Tolle Sache!

Das IPFS-Gateway ist spannend, aber es ist nicht das Ende des Weges. Es gibt weitere, ebenso interessante Distributed-Web-Technologien, die von Cloudflares massivem globalen Netzwerk profitieren könnten, und wir erforschen derzeit diese Möglichkeiten. Wenn Sie daran interessiert sind, gemeinsam mit Cloudflare ein besseres Internet aufzubauen: Wir stellen ein!

Abonnieren Sie den Blog, um täglich über unsere Ankündigungen informiert zu werden.

comments powered by Disqus