IPFS ohne Schmerzen (aber das ist nicht korrekt)

IPFS ohne Schmerzen (aber das ist nicht korrekt)

Trotz der Tatsache, dass Habré es bereits war mehr als ein Artikel über IPFS.

Ich möchte gleich klarstellen, dass ich kein Experte auf diesem Gebiet bin, aber ich habe mehr als einmal Interesse an dieser Technologie gezeigt, aber der Versuch, damit herumzuspielen, verursachte oft einige Schmerzen. Heute habe ich wieder angefangen zu experimentieren und einige Ergebnisse erzielt, die ich gerne teilen möchte. Kurz gesagt, der IPFS-Installationsprozess und einige Funktionen werden beschrieben (alles wurde auf Ubuntu gemacht, ich habe es nicht auf anderen Plattformen ausprobiert).

Wenn Sie nicht verstanden haben, was IPFS ist, wird es hier ausführlicher beschrieben: habr.com/en/post/314768

Einstellung

Aus Gründen der Reinheit des Experiments schlage ich vor, es sofort auf einem externen Server zu installieren, da wir einige Fallstricke beim Arbeiten im lokalen Modus und aus der Ferne berücksichtigen werden. Dann wird es, wenn gewünscht, noch lange nicht abgerissen, da ist nicht viel.

Installieren Sie los

Offizielle Dokumentation
Die aktuelle Version finden Sie unter golang.org/dl

Hinweis: Es ist besser, IPFS im Namen des Benutzers zu installieren, der es am häufigsten verwenden soll. Tatsache ist, dass wir im Folgenden die Möglichkeit der Montage durch betrachten FUSE und es gibt Feinheiten.

cd ~
curl -O https://dl.google.com/go/go1.12.9.linux-amd64.tar.gz
tar xvf go1.12.9.linux-amd64.tar.gz
sudo chown -R root:root ./go
sudo mv go /usr/local
rm go1.12.9.linux-amd64.tar.gz

Dann müssen Sie die Umgebung aktualisieren (weitere Details hier: golang.org/doc/code.html#GOPATH).

echo 'export GOPATH=$HOME/work' >> ~/.bashrc
echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.bashrc
source ~/.bashrc

Überprüfen Sie, ob Go installiert ist

go version

Installieren Sie IPFS

Am besten hat mir die Installationsmethode gefallen ipfs-Update.

Installieren Sie es mit dem Befehl

go get -v -u github.com/ipfs/ipfs-update

Danach können Sie die folgenden Befehle ausführen:

ipfs-Update-Versionen - um alle verfügbaren Versionen zum Download anzuzeigen.
ipfs-Update-Version - um die aktuell installierte Version anzuzeigen (bis wir IPFS installiert haben, wird es keine geben).
ipfs-update neueste installieren - Installieren Sie die neueste Version von IPFS. Anstelle von „latest“ können Sie jeweils eine beliebige Version aus der Liste der verfügbaren Versionen angeben.

ipfs installieren

ipfs-update install latest

Überprüfung

ipfs --version

Direkt mit der Installation im Allgemeinen alles.

Starten Sie IPFS

Initialisierung

Zuerst müssen Sie eine Initialisierung durchführen.

ipfs init

Als Antwort erhalten Sie etwa Folgendes:

 ipfs init
initializing IPFS node at /home/USERNAME/.ipfs
generating 2048-bit RSA keypair...done
peer identity: QmeCWX1DD7HnXXXXXXXXXXXXXXXXXXXXXXXXxxx
to get started, enter:
	ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme

Sie können den vorgeschlagenen Befehl ausführen

ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme

Erlebe die Kraft effektiver Ergebnisse

Hello and Welcome to IPFS!

██╗██████╗ ███████╗███████╗
██║██╔══██╗██╔════╝██╔════╝
██║██████╔╝█████╗  ███████╗
██║██╔═══╝ ██╔══╝  ╚════██║
██║██║     ██║     ███████║
╚═╝╚═╝     ╚═╝     ╚══════╝

If you're seeing this, you have successfully installed
IPFS and are now interfacing with the ipfs merkledag!

 -------------------------------------------------------
| Warning:                                              |
|   This is alpha software. Use at your own discretion! |
|   Much is missing or lacking polish. There are bugs.  |
|   Not yet secure. Read the security notes for more.   |
 -------------------------------------------------------

Check out some of the other files in this directory:

  ./about
  ./help
  ./quick-start     <-- usage examples
  ./readme          <-- this file
  ./security-notes

Hier beginnt meiner Meinung nach das Interessante. Die Leute in der Installationsphase beginnen bereits, ihre eigenen Technologien einzusetzen. Der vorgeschlagene Hash QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv wird nicht speziell für Sie generiert, sondern in die Veröffentlichung eingearbeitet. Das heißt, vor der Veröffentlichung haben sie einen Begrüßungstext vorbereitet, ihn in IPFS gegossen und die Adresse zum Installationsprogramm hinzugefügt. Ich finde es sehr cool. Und diese Datei (genauer gesagt der gesamte Ordner) kann nun nicht nur lokal, sondern auch auf dem offiziellen Gateway eingesehen werden ipfs.io/ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv. Gleichzeitig können Sie sicher sein, dass sich der Inhalt des Ordners in keiner Weise geändert hat, denn wenn er sich geändert hätte, hätte sich auch der Hash geändert.

Übrigens weist IPFS in diesem Fall einige Ähnlichkeiten mit dem Versionskontrollserver auf. Wenn Sie Änderungen an den Quelldateien des Ordners vornehmen und den Ordner erneut in IPFS laden, erhält er eine neue Adresse. Gleichzeitig geht der alte Ordner nicht einfach irgendwohin und ist an seiner vorherigen Adresse verfügbar.

Direkter Start

ipfs daemon

Sie sollten eine Antwort wie diese erhalten:

ipfs daemon
Initializing daemon...
go-ipfs version: 0.4.22-
Repo version: 7
System version: amd64/linux
Golang version: go1.12.7
Swarm listening on /ip4/x.x.x.x/tcp/4001
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip6/::1/tcp/4001
Swarm listening on /p2p-circuit
Swarm announcing /ip4/127.0.0.1/tcp/4001
Swarm announcing /ip6/::1/tcp/4001
API server listening on /ip4/127.0.0.1/tcp/5001
WebUI: http://127.0.0.1:5001/webui
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready

Die Türen zum Internet öffnen

Achten Sie auf diese beiden Zeilen:

WebUI: http://127.0.0.1:5001/webui
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080

Wenn Sie IPFS nun lokal installiert haben, greifen Sie über lokale Adressen auf IPFS-Schnittstellen zu und alles steht Ihnen zur Verfügung (z. B. localhost:5001/webui/). Bei der Installation auf einem externen Server sind die Gateways jedoch standardmäßig für das Internet geschlossen. Gateways zwei:

  1. Webui-Administrator (github) auf Port 5001.
  2. Externe API auf Port 8080 (schreibgeschützt).

Bisher können beide Ports (5001 und 8080) für Experimente geöffnet werden, auf einem Kampfserver sollte jedoch Port 5001 natürlich mit einer Firewall geschlossen werden. Außerdem gibt es den Port 4001, der benötigt wird, damit andere Peers Sie finden können. Es sollte für externe Anfragen offen bleiben.

Öffnen Sie ~/.ipfs/config zum Bearbeiten und finden Sie darin die folgenden Zeilen:

"Addresses": {
  "Swarm": [
    "/ip4/0.0.0.0/tcp/4001",
    "/ip6/::/tcp/4001"
  ],
  "Announce": [],
  "NoAnnounce": [],
  "API": "/ip4/127.0.0.1/tcp/5001",
  "Gateway": "/ip4/127.0.0.1/tcp/8080"
}

Ändern Sie 127.0.0.1 in die IP Ihres Servers und speichern Sie die Datei. Starten Sie dann ipfs neu (stoppen Sie den laufenden Befehl mit Strg+C und starten Sie ihn erneut).

Sollte bekommen

...
WebUI: http://ip_вашего_сервера:5001/webui
Gateway (readonly) server listening on /ip4/ip_вашего_сервера/tcp/8080

Jetzt sollten die externen Schnittstellen verfügbar sein.

Überprüfen

http://домен_или_ip_сервера:8080/ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme

Die obige Readme-Datei sollte geöffnet werden.

http://домен_или_ip_сервера:5001/webui/

Die Weboberfläche sollte sich öffnen.

Wenn WebUI für Sie funktioniert, können Sie die IPFS-Einstellungen direkt darin ändern, einschließlich der Anzeige von Statistiken. Im Folgenden werde ich jedoch Konfigurationsoptionen direkt über die Konfigurationsdatei betrachten, was im Allgemeinen nicht kritisch ist. Es ist nur besser, sich genau zu merken, wo sich die Konfiguration befindet und was man damit machen soll, sonst wird es schwieriger, wenn das Webface nicht funktioniert.

Einrichten einer Weboberfläche für die Arbeit mit Ihrem Server

Hier ist die erste Falle, die etwa drei Stunden dauerte.

Wenn Sie IPFS auf einem externen Server installiert, IPFS jedoch nicht lokal installiert oder ausgeführt haben, sollte beim Aufrufen von /webui in der Weboberfläche ein Verbindungsfehler angezeigt werden:

IPFS ohne Schmerzen (aber das ist nicht korrekt)

Tatsache ist, dass Webui meiner Meinung nach sehr zweideutig funktioniert. Zunächst wird versucht, eine Verbindung zur API des Servers herzustellen, auf dem die Schnittstelle geöffnet ist (natürlich basierend auf der Adresse im Browser). und wenn es dort nicht funktioniert, versucht es, eine Verbindung zum lokalen Gateway herzustellen. Und wenn IPFS lokal ausgeführt wird, funktioniert WebUI gut für Sie. Nur Sie arbeiten mit lokalem IPFS und nicht mit externem, obwohl Sie WebUI auf einem externen Server geöffnet haben. Dann laden Sie die Dateien hoch, aber aus irgendeinem Grund werden sie auf einem externen Server nicht einfach so angezeigt ...

Und wenn es nicht lokal läuft, erhalten wir einen Verbindungsfehler. In unserem Fall liegt der Fehler höchstwahrscheinlich an CORS, was auch von webui angezeigt wird und das Hinzufügen einer Konfiguration nahelegt.

ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["http://ip_вашего сервера:5001", "http://127.0.0.1:5001", "https://webui.ipfs.io"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST"]'

Ich habe gerade eine Wildcard registriert

ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'

Die hinzugefügten Header finden Sie in derselben ~/.ipfs/config. In meinem Fall ist es so

  "API": {
    "HTTPHeaders": {
      "Access-Control-Allow-Origin": [
        "*"
      ]
    }
  },

Wir starten ipfs neu und sehen, dass webui erfolgreich eine Verbindung hergestellt hat (dies sollte auf jeden Fall der Fall sein, wenn Sie die Gateways für Anfragen von außen geöffnet haben, wie oben beschrieben).

Jetzt können Sie Ordner und Dateien direkt über die Weboberfläche hochladen sowie eigene Ordner erstellen.

Mounten des FUSE-Dateisystems

Hier ist eine ziemlich interessante Funktion.

Dateien (sowie Ordner) können wir nicht nur über die Weboberfläche, sondern beispielsweise auch direkt im Terminal hinzufügen

ipfs add test -r
added QmfYuz2gegRZNkDUDVLNa5DXzKmxxxxxxxxxx test/test.txt
added QmbnzgRVAP4fL814h5mQttyqk1aURxxxxxxxxxxxx test

Der letzte Hash ist der Hash des Stammordners.

Mit diesem Hash können wir einen Ordner auf jedem ipfs-Knoten öffnen (der unseren Knoten finden und den Inhalt abrufen kann), wir können in der Webschnittstelle auf Port 5001 oder 8080 oder wir können lokal über ipfs.

ipfs ls QmbnzgRVAP4fL814h5mQttyqk1aUxxxxxxxxxxxxx
QmfYuz2gegRZNkDUDVLNa5DXzKmKVxxxxxxxxxxxxxx 10 test.txt

Sie können es aber trotzdem wie einen normalen Ordner öffnen.

Lassen Sie uns zwei Ordner im Stammverzeichnis erstellen und unserem Benutzer Rechte dafür gewähren.

sudo mkdir /ipfs /ipns
sudo chown USERNAME /ipfs /ipns

und starten Sie ipfs mit dem Flag --mount neu

ipfs daemon --mount

Sie können Ordner an anderen Orten erstellen und den Pfad zu ihnen über die ipfs-Daemon-Parameter -mount -mount-ipfs /ipfs_path -mount-ipns /ipns_path angeben

Nun ist das Lesen aus diesem Ordner etwas ungewöhnlich.

ls -la /ipfs
ls: reading directory '/ipfs': Operation not permitted
total 0

Das heißt, es gibt keinen direkten Zugriff auf das Stammverzeichnis dieses Ordners. Aber Sie können den Inhalt erhalten, indem Sie den Hash kennen.

ls -la /ipfs/QmbnzgRVAP4fL814h5mQttyqxxxxxxxxxxxxxxxxx
total 0
-r--r--r-- 1 root root 10 Aug 31 07:03 test.txt

cat /ipfs/QmbnzgRVAP4fL814h5mQttyqxxxxxxxxxxxxxxxxx/test.txt 
test
test

Gleichzeitig funktioniert bei Angabe des Pfades sogar die Autovervollständigung innerhalb des Ordners.

Wie ich oben sagte, gibt es bei einem solchen Mounten Feinheiten: Standardmäßig sind gemountete FUSE-Ordner nur für den aktuellen Benutzer verfügbar (selbst Root kann nicht aus einem solchen Ordner lesen, ganz zu schweigen von anderen Benutzern im System). Wenn Sie diese Ordner anderen Benutzern zur Verfügung stellen möchten, müssen Sie in der Konfiguration „FuseAllowOther“: false in „FuseAllowOther“: true ändern. Aber das ist nicht alles. Wenn Sie IPFS als Root ausführen, ist alles in Ordnung. Und wenn Sie im Namen eines normalen Benutzers (sogar sudo) sind, erhalten Sie eine Fehlermeldung

mount helper error: fusermount: option allow_other only allowed if 'user_allow_other' is set in /etc/fuse.conf

In diesem Fall müssen Sie /etc/fuse.conf bearbeiten, indem Sie die Zeile #user_allow_other auskommentieren.

Starten Sie danach ipfs neu.

Bekannte Probleme mit FUSE

Das Problem wurde mehr als einmal festgestellt, dass nach dem Neustart von ipfs mit Mount (und vielleicht auch in anderen Fällen) die Mount-Punkte /ipfs und /ipns nicht mehr verfügbar sind. Es gibt keinen Zugriff darauf und ls -la /ipfs zeigt ???? in der Liste der Rechte.

Habe diese Lösung gefunden:

fusermount -z -u /ipfs
fusermount -z -u /ipns

Starten Sie dann ipfs neu.

Einen Dienst hinzufügen

Der Betrieb im Terminal eignet sich natürlich nur für erste Tests. Im Kampfmodus sollte der Daemon automatisch beim Systemstart starten.

Erstellen Sie im Namen von sudo die Datei /etc/systemd/system/ipfs.service und schreiben Sie hinein:

[Unit]
Description=IPFS Daemon
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
ExecStart=/home/USERNAME/work/bin/ipfs daemon --mount
User=USERNAME
Restart=always

[Install]
WantedBy=multi-user.target

USERNAME muss natürlich durch Ihren Benutzer ersetzt werden (und möglicherweise ist der vollständige Pfad zum ipfs-Programm für Sie anders (Sie müssen den vollständigen Pfad angeben)).

Wir aktivieren den Dienst.

sudo systemctl enable ipfs.service

Wir starten den Gottesdienst.

sudo service ipfs start

Überprüfen des Status des Dienstes.

sudo service ipfs status

Um die Reinheit des Experiments zu gewährleisten, wird es in Zukunft möglich sein, den Server neu zu starten, um zu überprüfen, ob ipfs automatisch erfolgreich gestartet wird.

Wir fügen uns bekannte Feste hinzu

Stellen Sie sich eine Situation vor, in der wir IPFS-Knoten sowohl auf einem externen Server als auch lokal installiert haben. Auf einem externen Server fügen wir eine Datei hinzu und versuchen, sie über IPFS lokal per CID abzurufen. Was wird passieren? Natürlich weiß der lokale Server höchstwahrscheinlich nichts über unseren externen Server und wird einfach versuchen, die Datei anhand der CID zu finden, indem er alle ihm zur Verfügung stehenden IPFS-Peers „fragt“ (mit denen er sich bereits „bekannt gemacht“ hat). Diese wiederum werden andere fragen. Und so weiter, bis die Datei gefunden wird. Tatsächlich passiert das Gleiche, wenn wir versuchen, die Datei über das offizielle Gateway abzurufen ipfs.io. Wenn Sie Glück haben, wird die Datei in wenigen Sekunden gefunden. Und wenn nicht, wird es nicht einmal in wenigen Minuten gefunden, was den Arbeitskomfort erheblich beeinträchtigt. Aber wir wissen, wo diese Datei zuerst erscheinen wird. Warum sagen wir also nicht sofort unserem lokalen Server: „Suchen Sie zuerst dort“? Anscheinend ist dies machbar.

1. Wir gehen zum Remote-Server und schauen uns die Konfiguration ~/.ipfs/config an

"Identity": {
    "PeerID": "QmeCWX1DD7HnPSuMHZSh6tFuxxxxxxxxxxxxxxxx",

2. Führen Sie sudo service ipfs status aus und suchen Sie darin nach Swarm-Einträgen, zum Beispiel:

Swarm announcing /ip4/ip_вашего_сервера/tcp/4001

3. Daraus fügen wir die allgemeine Adresse der Form „/ip4/ip_your_server/tcp/4001/ipfs/$PeerID“ hinzu.

4. Aus Gründen der Zuverlässigkeit werden wir versuchen, diese Adresse über unser lokales Webui zu Peers hinzuzufügen.

IPFS ohne Schmerzen (aber das ist nicht korrekt)

5. Wenn alles in Ordnung ist, öffnen Sie die lokale Konfiguration ~ / .ipfs / config und suchen Sie darin nach „Bootstrap“: [...
und fügen Sie die empfangene Adresse zuerst dem Array hinzu.

Starten Sie IPFS neu.

Fügen wir nun die Datei zum externen Server hinzu und versuchen, sie auf dem lokalen Server anzufordern. Sollte schnell fliegen.

Diese Funktionalität ist jedoch noch nicht stabil. Soweit ich weiß, ändert ipfs während des Betriebs die Liste der aktiven Verbindungen mit Peers, selbst wenn wir die Adresse eines Peers in Bootstrap angeben. Die Diskussion hierzu und Wünsche hinsichtlich der Möglichkeit der Festlegung dauerhafter Feste ist jedenfalls im Gange hier und es scheint so wird erwartet Fügen Sie einige Funktionen hinzu [E-Mail geschützt] +

Die Liste der aktuellen Peers kann sowohl im Webui als auch im Terminal eingesehen werden.

ipfs swarm peers

Und hier und da können Sie Ihr Fest manuell hinzufügen.

ipfs swarm connect "/ip4/ip_вашего_сервера/tcp/4001/ipfs/$PeerID"

Bis diese Funktionalität verbessert wurde, können Sie ein Tool schreiben, um zu prüfen, ob eine Verbindung zum gewünschten Peer besteht, und, falls nicht, eine Verbindung hinzuzufügen.

Argumentation

Unter denjenigen, die bereits mit IPFS vertraut sind, gibt es sowohl Argumente für als auch gegen IPFS. Eigentlich gestern Diskussion und veranlasste mich, mich erneut mit IPFS zu befassen. Und in Bezug auf die oben erwähnte Diskussion: Ich kann nicht sagen, dass ich einem Argument der Redner entschieden widerspreche (ich bin nur mit der Tatsache nicht einverstanden, dass eineinhalb Programmierer IPFS verwenden). Im Allgemeinen haben beide auf ihre Art Recht (insbesondere Kommentar zu Schecks Bringt dich zum Nachdenken). Aber wenn wir die moralische und rechtliche Bewertung außer Acht lassen, wer wird dann eine technische Bewertung dieser Technologie abgeben? Ich persönlich habe so eine Art inneres Gefühl: „Das muss eindeutig gemacht werden, das hat gewisse Perspektiven.“ Aber warum genau, dafür gibt es keine klare Formulierung. Wenn man sich beispielsweise die vorhandenen zentralisierten Tools ansieht, dann sind sie in vielerlei Hinsicht weit vorne (Stabilität, Geschwindigkeit, Verwaltbarkeit usw.). Dennoch habe ich einen Gedanken, der sinnvoll erscheint und ohne solche dezentralen Systeme kaum umsetzbar ist. Natürlich schwinge ich zu stark, aber ich würde es so formulieren: Das Prinzip der Informationsverbreitung im Internet muss geändert werden.

Lassen Sie mich erklären. Wenn Sie darüber nachdenken, haben wir jetzt Informationen, die nach dem Prinzip verteilt werden: „Ich hoffe, dass derjenige, dem ich sie gegeben habe, sie beschützt und sie nicht verloren gehen oder von denen empfangen werden, für die sie nicht bestimmt waren.“ Als Beispiel lassen sich leicht verschiedene Mail-Dienste, Cloud-Speicher usw. betrachten. Und was haben wir am Ende? Am Habré-Hub Informationssicherheit steht in der ersten Zeile und fast täglich erhalten wir Nachrichten über ein weiteres globales Leck. Im Prinzip sind alle interessantesten Dinge in <irony> wunderbar aufgeführt Artikel Der Sommer ist fast vorbei. Es sind fast keine unveröffentlichten Daten mehr vorhanden. Das heißt, die wichtigsten Internetgiganten werden immer größer, sie sammeln immer mehr Informationen und solche Lecks sind eine Art atomare Informationsexplosionen. Das hat es noch nie gegeben, und hier ist es wieder. Obwohl sich viele darüber im Klaren sind, dass Risiken bestehen, werden sie ihre Daten weiterhin Drittunternehmen anvertrauen. Erstens gibt es keine große Alternative, und zweitens versprechen sie, dass sie alle Löcher geflickt haben und so etwas nie wieder passieren wird.

Welche Option sehe ich? Meiner Meinung nach sollten Daten zunächst offen verbreitet werden. Doch Offenheit bedeutet in diesem Fall nicht, dass alles gut lesbar sein soll. Ich spreche von der Offenheit der Speicherung und Verteilung, aber nicht von völliger Offenheit beim Lesen. Ich gehe davon aus, dass Informationen mit öffentlichen Schlüsseln verteilt werden sollten. Schließlich ist das Prinzip öffentlicher/privater Schlüssel schon alt, fast wie das Internet. Wenn die Informationen nicht vertraulich sind und für einen breiten Kreis bestimmt sind, werden sie sofort mit einem öffentlichen Schlüssel ausgegeben (aber immer noch in verschlüsselter Form, jeder kann sie mit dem verfügbaren Schlüssel entschlüsseln). Und wenn nicht, wird es ohne öffentlichen Schlüssel angelegt und der Schlüssel selbst wird an denjenigen übertragen, der Zugriff auf diese Informationen haben soll. Gleichzeitig sollte derjenige, der es lesen soll, nur einen Schlüssel haben, und wo er diese Informationen herbekommt, sollte er nicht wirklich aufsteigen – er zieht sie einfach aus dem Netzwerk (das ist das neue Prinzip der Verteilung nach Inhalt, nicht nach Adresse).

Daher müssen Angreifer für einen Massenangriff eine große Anzahl privater Schlüssel beschaffen, und dies wird wahrscheinlich nicht an einem Ort geschehen. Diese Aufgabe ist meiner Meinung nach schwieriger als das Hacken eines bestimmten Dienstes.

Und hier ist ein weiteres Problem gelöst: die Bestätigung der Urheberschaft. Jetzt können Sie im Internet viele Zitate unserer Freunde finden. Aber wo ist die Garantie, dass sie es waren, die sie geschrieben haben? Wenn nun jeder dieser Datensätze mit einer digitalen Signatur versehen wäre, wäre es viel einfacher. Dabei spielt es keine Rolle, wo diese Informationen liegen, Hauptsache ist die Unterschrift, die natürlich schwer zu fälschen ist.

Und hier ist das Interessante: IPFS verfügt bereits über Verschlüsselungstools (schließlich basiert es auf der Blockchain-Technologie). Der private Schlüssel wird sofort in der Konfiguration angegeben.

  "Identity": {
    "PeerID": "QmeCWX1DD7HnPSuMHZSh6tFuMxxxxxxxxxxxxxx",
    "PrivKey": "CAASqAkwggSkAgEAAoIBAQClZedVmj8JkPvT92sGrNIQmofVF3ne8xSWZIGqkm+t9IHNN+/NDI51jA0MRzpBviM3o/c/Nuz30wo95vWToNyWzJlyAISXnUHxnVhvpeJAbaeggQRcFxO9ujO9DH61aqgN1m+JoEplHjtc4KS5
pUEDqamve+xAJO8BWt/LgeRKA70JN4hlsRSghRqNFFwjeuBkT1kB6tZsG3YmvAXJ0o2uye+y+7LMS7jKpwJNJBiFAa/Kuyu3W6PrdOe7SqrXfjOLHQ0uX1oYfcqFIKQsBNj/Fb+GJMiciJUZaAjgHoaZrrf2b/Eii3z0i+QIVG7OypXT3Z9JUS60
KKLfjtJ0nVLjAgMBAAECggEAZqSR5sbdffNSxN2TtsXDa3hq+WwjPp/908M10QQleH/3mcKv98FmGz65zjfZyHjV5C7GPp24e6elgHr3RhGbM55vT5dQscJu7SGng0of2bnzQCEw8nGD18dZWmYJsE4rUsMT3wXxhUU4s8/Zijgq27oLyxKNr9T7
2gxqPCI06VTfMiCL1wBBUP1wHdFmD/YLJwOjV/sVzbsl9HxqzgzlDtfMn/bJodcURFI1sf1e6WO+MyTc3.................

Ich bin kein Sicherheitsspezialist und weiß nicht genau, wie man es richtig verwendet, aber es scheint mir, dass diese Schlüssel auf der Ebene des Austauschs zwischen IPFS-Knoten verwendet werden. Und auch js-ipfs und Beispielprojekte wie Orbit-dbauf dem es funktioniert orbit.chat. Das heißt, theoretisch kann jedes Gerät (mobil und nicht nur) problemlos mit eigenen Verschlüsselungs- und Entschlüsselungsmaschinen ausgestattet werden. In diesem Fall muss sich nur noch jeder um die Speicherung seiner privaten Schlüssel kümmern, und jeder ist für seine eigene Sicherheit verantwortlich und wird nicht zur Geisel eines anderen menschlichen Faktors bei einem überaus beliebten Internetgiganten.

An der Umfrage können nur registrierte Benutzer teilnehmen. Einloggenbitte.

Haben Sie schon einmal von IPFS gehört?

  • Ich habe noch nie von IPFS gehört, aber es scheint interessant zu sein

  • Nichts gehört und will es auch nicht hören

  • Gehört, aber nicht interessiert

  • Gehört, aber nicht verstanden, aber jetzt scheint es interessant zu sein

  • Ich nutze IPFS schon seit langem aktiv.

69 Benutzer haben abgestimmt. 13 Benutzer enthielten sich der Stimme.

Source: habr.com

Kommentar hinzufügen