IPFS ohne Schmerzen (aber das ist nicht genau)



Trotz der Tatsache, dass es auf HabrĂ© bereits keinen Artikel ĂŒber IPFS gab .

Ich werde sofort klarstellen, dass ich kein Experte auf diesem Gebiet bin, aber ich habe mehr als einmal Interesse an dieser Technologie gezeigt, aber der Versuch, damit zu spielen, verursachte oft Schmerzen. Heute habe ich die Experimente wieder aufgenommen und einige Ergebnisse erhalten, die ich gerne teilen möchte. Kurz gesagt, der Prozess der Installation von IPFS und einigen Chips wird beschrieben (alles wurde auf Ubuntu gemacht, auf anderen Plattformen, die ich nicht ausprobiert habe).

Wenn Sie verpasst haben, was IPFS ist, wird es hier ausfĂŒhrlich beschrieben: habr.com/en/post/314768

Installation


Aus GrĂŒnden der Reinheit des Experiments schlage ich vor, es sofort auf einem externen Server zu installieren, da wir einige Fallstricke bei der Arbeit im lokalen Modus und auf Remote-Basis berĂŒcksichtigen werden. Dann, wenn gewĂŒnscht, wird es nicht lange abgerissen, es gibt nicht viele.

Los geht's


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

Hinweis: Es ist besser, IPFS im Namen des Benutzers zu installieren, der die hĂ€ufigsten verwenden soll. Tatsache ist, dass wir im Folgenden die Option der Montage ĂŒber FUSE in Betracht ziehen und es dort Feinheiten gibt.

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


Die Installation ĂŒber ipfs-update hat mir am besten gefallen.

Installieren Sie es mit dem Befehl

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

Danach können Sie folgende 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 sein).
ipfs-update Neueste installieren - Installieren Sie die neueste Version von IPFS. Anstelle der neuesten können Sie eine beliebige gewĂŒnschte Version aus der Liste der verfĂŒgbaren Versionen angeben.

Installieren Sie ipfs

 ipfs-update install latest 

ÜberprĂŒfen Sie

 ipfs --version 

Direkt mit der Installation im Allgemeinen alles.

IPFS-Start


Initialisierung


Zuerst mĂŒssen Sie die Initialisierung durchfĂŒhren.

 ipfs init 

Als Antwort erhalten Sie ungefÀhr 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 

Ergebnis
 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 fĂ€ngt meiner Meinung nach das Interessante schon an. In der Installationsphase beginnen die Jungs bereits, ihre eigenen Technologien einzusetzen. Der vorgeschlagene Hash QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv - nicht speziell fĂŒr Sie generiert, sondern in die Version eingenĂ€ht. Das heißt, vor der Veröffentlichung haben sie einen BegrĂŒĂŸungstext vorbereitet, ihn in IPFS eingefĂŒgt und die Adresse dem Installationsprogramm hinzugefĂŒgt. Meiner Meinung nach ist das sehr cool. Und diese Datei (genauer gesagt der gesamte Ordner) kann jetzt nicht nur lokal, sondern auch auf dem offiziellen Gateway ipfs.io/ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv angezeigt werden . 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 hat IPFS in diesem Fall einige Ähnlichkeiten mit dem Versionskontrollserver. Wenn Sie Änderungen an den Quelldateien des Ordners vornehmen und den Ordner erneut in IPFS einfĂŒgen, erhĂ€lt er eine neue Adresse. Gleichzeitig wird der alte Ordner nicht einfach so irgendwohin gehen und unter seiner frĂŒheren Adresse verfĂŒgbar sein.

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/xxxx/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 

Wir öffnen die TĂŒr zum Internet


Beachten Sie 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 lokal installiert haben, greifen Sie auf IPFS-Schnittstellen unter lokalen Adressen 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. Es gibt zwei Gateways:

  1. Admin Webui ( Github ) auf Port 5001.
  2. Externe API an Port 8080 (schreibgeschĂŒtzt).

Bisher können Sie beide Ports fĂŒr Experimente öffnen (5001 und 8080), aber auf dem Battle Server sollte Port 5001 natĂŒrlich mit einer Firewall geschlossen werden. Es gibt 4001 Ports, die benötigt werden, damit andere Peers Sie finden können. Es sollte fĂŒr externe Anfragen offen bleiben.

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

 "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 Strg + C und fĂŒhren Sie ihn erneut aus).

Muss bekommen

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

Jetzt sollten externe Schnittstellen verfĂŒgbar sein.

Auschecken

 http://__ip_:8080/ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme 

Die obige Readme-Datei sollte geöffnet werden.

 http://__ip_:5001/webui/ 

Das Webinterface sollte sich öffnen.

Wenn webui fĂŒr Sie funktioniert, können die IPFS-Einstellungen direkt darin geĂ€ndert werden, einschließlich der Anzeige von Statistiken. Im Folgenden werden jedoch Konfigurationsoptionen direkt ĂŒber die Konfigurationsdatei betrachtet, was im Allgemeinen nicht kritisch ist. Es ist nur besser, sich genau zu merken, wo die Konfiguration liegt und was damit zu tun ist. Wenn die Web-Schnauze nicht funktioniert, wird es schwieriger.

Richten Sie eine WeboberflĂ€che fĂŒr die Arbeit mit Ihrem Server ein


Hier ist die erste Falle, die etwa drei Stunden verbracht wurde.

Wenn Sie IPFS auf einem externen Server installiert haben, IPFS jedoch nicht lokal installiert oder gestartet haben, sollte beim Zugriff auf / webui in der WeboberflÀche ein Verbindungsfehler angezeigt werden:



Tatsache ist, dass Webui meiner Meinung nach sehr vieldeutig funktioniert. ZunĂ€chst versucht er, 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 Ihr Webui einwandfrei. Nur Sie arbeiten mit lokalem IPFS, nicht mit externem, obwohl Sie Webui auf einem externen Server geöffnet haben. Laden Sie dann Dateien hoch, aber aus irgendeinem Grund werden sie auf einem externen Server nicht einfach so angezeigt ...

Und wenn es nicht lokal ausgefĂŒhrt wird, wird ein Verbindungsfehler angezeigt. In unserem Fall ist der Fehler höchstwahrscheinlich auf CORS zurĂŒckzufĂŒhren, das auch von webui angezeigt wird und vorschlĂ€gt, eine Konfiguration hinzuzufĂŒgen.

 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 einen Platzhalter registriert

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

HinzugefĂŒgte Header befinden sich alle in derselben ~ / .ipfs / config. In meinem Fall ist es

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

Wir starten ipfs neu und stellen fest, dass webui erfolgreich eine Verbindung hergestellt hat (zumindest sollte dies 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 und eigene Ordner erstellen.

HĂ€ngen Sie das FUSE-Dateisystem ein


Das ist ein ziemlich interessanter Trick.

Wir können Dateien (sowie Ordner) nicht nur ĂŒber die WeboberflĂ€che, sondern auch direkt im Terminal hinzufĂŒgen

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

Der letzte Hash ist der Root-Ordner-Hash.

Mit diesem Hash können wir den Ordner auf jedem ipfs-Knoten öffnen (der unseren Knoten finden und den Inhalt abrufen kann), in der WeboberflĂ€che auf Port 5001 oder 8080 oder 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 sie unserem Benutzer zuweisen.

 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 Stellen erstellen und den Pfad zu ihnen ĂŒber den ipfs-Daemon --mount --mount-ipfs / ipfs_path --mount-ipns / ipns_path angeben

Jetzt 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 dann können Sie 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 

DarĂŒber hinaus funktioniert bei der Angabe eines Pfads auch die automatische VervollstĂ€ndigung innerhalb des Ordners.

Wie oben erwĂ€hnt, gibt es bei einem solchen Mount Feinheiten: StandardmĂ€ĂŸig sind gemountete FUSE-Ordner nur fĂŒr den aktuellen Benutzer zugĂ€nglich (selbst root kann nicht aus einem solchen Ordner lesen, ganz zu schweigen von anderen Benutzern im System). Wenn Sie diese Ordner anderen Benutzern zugĂ€nglich machen möchten, mĂŒssen Sie in der Konfiguration "FuseAllowOther": false in "FuseAllowOther": true Ă€ndern. Das ist aber noch nicht alles. Wenn Sie IPFS als root ausfĂŒhren, ist alles in Ordnung. Und wenn Sie im Auftrag eines regulĂ€ren Benutzers (wenn auch sudo) eine Fehlermeldung erhalten

 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 reparieren, indem Sie die Zeile #user_allow_other auskommentieren.

Danach starten wir ipfs neu.

Bekannte Probleme mit FUSE


Mehr als einmal wurde das Problem festgestellt, dass nach dem Neustart von ipfs mit dem Mounten (oder in anderen FĂ€llen) die Mountpunkte / ipfs und / ipns nicht mehr verfĂŒgbar sind. Es gibt keinen Zugriff auf sie, aber ls -la / ipfs zeigt ???? in der Liste der Rechte.

Eine solche Lösung gefunden:

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

Starten Sie dann ipfs neu.

Service hinzufĂŒgen


Der Start im Terminal ist natĂŒrlich nur fĂŒr PrimĂ€rtests geeignet. Im Kampfmodus sollte der DĂ€mon beim Systemstart automatisch gestartet werden.

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

 [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 unterscheidet sich der vollstĂ€ndige Pfad zum ipfs-Programm fĂŒr Sie (Sie mĂŒssen den vollstĂ€ndigen Pfad angeben)).

Wir aktivieren den Service.

 sudo systemctl enable ipfs.service 

Wir starten den Service.

 sudo service ipfs start 

ÜberprĂŒfen Sie den Status des Dienstes.

 sudo service ipfs status 

Aus GrĂŒnden der Reinheit des Experiments kann der Server in Zukunft neu gestartet werden, um zu ĂŒberprĂŒfen, ob ipfs automatisch erfolgreich gestartet wird.

FĂŒgen Sie die Feste hinzu, die wir kennen


Betrachten Sie die Situation, in der IPFS-Knoten sowohl auf einem externen Server als auch lokal installiert sind. Auf einem externen Server fĂŒgen wir eine Art Datei hinzu und versuchen, diese lokal per CID ĂŒber IPFS abzurufen. Was wird passieren? NatĂŒrlich weiß der lokale Server höchstwahrscheinlich nichts ĂŒber unseren externen Server und versucht einfach, die Datei anhand der CID zu finden, indem er alle ihm zur VerfĂŒgung stehenden IPFS-Peers "fragt" (mit denen er es bereits geschafft hat, sich "kennenzulernen"). Diese wiederum werden andere fragen. Und so weiter, bis die Datei gefunden ist. Das gleiche passiert, wenn wir versuchen, die Datei ĂŒber das offizielle ipfs.io- Gateway abzurufen . Wenn Sie GlĂŒck haben, wird die Datei in wenigen Sekunden gefunden. Wenn nicht, wird es in wenigen Minuten nicht gefunden, was den Arbeitskomfort stark beeintrĂ€chtigt. Wir wissen jedoch, wo diese Datei zuerst angezeigt wird. Warum sagen wir unserem lokalen Server nicht sofort "Schau zuerst dort"? Anscheinend kann dies getan werden.

1. Gehen Sie zum Remote-Server und suchen Sie in der Konfiguration nach ~ / .ipfs / config

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

2. Wir fĂŒhren den ipfs-Status des sudo-Dienstes aus und suchen darin nach Swarm-EintrĂ€gen, zum Beispiel:

 Swarm announcing /ip4/ip__/tcp/4001 

3. Daraus fĂŒgen wir die allgemeine Adresse des Formulars "/ ip4 / ip_your_server / tcp / 4001 / ipfs / $ PeerID" hinzu.

4. Aus GrĂŒnden der ZuverlĂ€ssigkeit werden wir ĂŒber unser lokales Webui versuchen, diese Adresse Peers hinzuzufĂŒgen.



5. Wenn alles in Ordnung ist, öffnen Sie die lokale Konfiguration ~ / .ipfs / config und suchen Sie darin "Bootstrap": [...
und fĂŒgen Sie zuerst die empfangene Adresse zum Array hinzu.

Starten Sie IPFS neu.

FĂŒgen Sie nun die Datei zum externen Server hinzu und versuchen Sie, sie auf dem lokalen Server anzufordern. Muss schnell fliegen.

Diese FunktionalitĂ€t ist jedoch immer noch instabil. Soweit ich weiß, Ă€ndert ipfs im Laufe der Arbeit die Liste der aktiven Verbindungen mit Peers, auch wenn wir die Peer-Adresse in Bootstrap angeben. In jedem Fall wird hier eine Diskussion darĂŒber und ĂŒber die Möglichkeit der Anzeige konstanter Peers gefĂŒhrt , und es scheint, dass ipfs@5.0+ einige Funktionen hinzufĂŒgen soll

Eine Liste der aktuellen Peers kann sowohl im Webui als auch im Terminal angezeigt werden.

 ipfs swarm peers 

Sowohl dort als auch dort können Sie Ihr Fest manuell hinzufĂŒgen.

 ipfs swarm connect "/ip4/ip__/tcp/4001/ipfs/$PeerID" 

Bis Sie diese FunktionalitĂ€t verbessert haben, können Sie ein Tool schreiben, um nach einer Verbindung mit dem gewĂŒnschten Peer zu suchen 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. Im Prinzip hat mich der Tag vor der gestrigen Diskussion dazu veranlasst, IPFS erneut zu graben. Und in Bezug auf die oben erwĂ€hnte Diskussion: Ich kann nicht sagen, dass ich stark gegen einige der oben genannten Argumente bin (ich bin nur nicht einverstanden mit der Tatsache, dass eineinhalb Programmierer IPFS verwenden). Im Allgemeinen haben beide auf ihre Weise Recht (insbesondere der Kommentar zu Schecks lĂ€sst Sie nachdenken). Aber wenn Sie die moralische und rechtliche Bewertung beiseite lassen, wer wird dann eine technische Bewertung dieser Technologie abgeben? Persönlich habe ich eine Art inneres GefĂŒhl, dass "dies sicher notwendig ist, es hat bestimmte Perspektiven." Aber warum genau, es gibt keinen klaren Wortlaut. Wenn Sie sich beispielsweise die vorhandenen zentralisierten Tools ansehen, sind sie in vielerlei Hinsicht weit voraus (StabilitĂ€t, Geschwindigkeit, Verwaltbarkeit usw.). Trotzdem habe ich einen Gedanken, der sinnvoll erscheint und der ohne solche dezentralen Systeme kaum umgesetzt werden kann. NatĂŒrlich winke ich wirklich, aber ich wĂŒrde es so formulieren: Das Prinzip der Verbreitung von Informationen im Internet muss geĂ€ndert werden.

Ich werde es erklĂ€ren. Wenn Sie so denken, werden unsere Informationen jetzt nach dem Prinzip verbreitet: "Ich hoffe, dass die Person, an die ich sie ĂŒbertragen habe, sie schĂŒtzt und sie nicht verloren geht oder an diejenigen geht, fĂŒr die sie nicht bestimmt waren." Zum Beispiel ist es einfach, verschiedene Mail-Dienste, Cloud-Speicher usw. in Betracht zu ziehen. Und was haben wir am Ende? Auf dem HabrĂ© Hub steht Informationssicherheit an erster Stelle und fast jeden Tag erhalten wir Nachrichten ĂŒber ein weiteres globales Leck. Im Prinzip ist das Interessanteste in dem wunderbaren Artikel <irony> </ ironony> aufgefĂŒhrt. Der Sommer ist fast vorbei. Es sind fast keine Daten durchgesickert . Das heißt, die wichtigsten Internetgiganten werden immer grĂ¶ĂŸer, sie sammeln immer mehr Informationen und solche Lecks sind eine Art informative atomare Explosionen. Das ist noch nie passiert und hier wieder. Obwohl viele verstehen, dass Risiken bestehen, werden sie ihre Daten weiterhin Drittunternehmen anvertrauen. Erstens gibt es nicht viel Alternative, und zweitens versprechen sie, dass sie alle Löcher geflickt haben und dies nie wieder passieren wird.

Welche Option sehe ich? Es scheint mir, dass Daten zunĂ€chst offen verteilt werden sollten. Offenheit bedeutet in diesem Fall jedoch nicht, dass alles leicht zu lesen sein sollte. Ich spreche von der Offenheit der Speicherung und Verteilung, aber nicht von der völligen Offenheit beim Lesen. Ich gehe davon aus, dass Informationen mit öffentlichen SchlĂŒsseln verteilt werden sollten. Immerhin ist das Prinzip der öffentlichen / privaten SchlĂŒssel schon alt, fast wie im Internet. Wenn die Informationen nicht vertraulich sind und fĂŒr einen weiten Bereich ausgelegt sind, werden sie sofort mit dem öffentlichen SchlĂŒssel angelegt (aber immer noch in verschlĂŒsselter Form, nur jeder kann sie mit dem vorhandenen SchlĂŒssel entschlĂŒsseln). Wenn nicht, wird es ohne öffentlichen SchlĂŒssel angelegt, und der SchlĂŒssel selbst wird an denjenigen ĂŒbertragen, der Zugriff auf diese Informationen haben muss. Gleichzeitig sollte derjenige, der es lesen muss, nur einen SchlĂŒssel haben, und wo diese Informationen zu erhalten sind, sollte es nicht in die Höhe schnellen - er zieht sie einfach aus dem Netzwerk (dies ist das neue Prinzip der Verteilung auf den Inhalt und nicht auf die Adresse).

FĂŒr einen Massenangriff mĂŒssen Angreifer daher eine große Anzahl privater SchlĂŒssel erhalten, und es ist unwahrscheinlich, dass sie dies an einem Ort tun können. Diese Aufgabe ist meines Erachtens schwieriger als das Hacken eines bestimmten Dienstes.

Und hier schließt sich ein weiteres Problem: die BestĂ€tigung der Urheberschaft. Jetzt finden Sie im Internet viele Zitate unserer Freunde. Aber wo ist die Garantie, dass sie sie geschrieben haben? Wenn nun jede solche Aufnahme von einer digitalen Signatur begleitet wĂŒrde, wĂ€re dies viel einfacher. Und egal wo diese Informationen liegen, die Hauptsache ist die Unterschrift, die offensichtlich schwer zu fĂ€lschen ist.

Und hier ist das Interessante: IPFS enthĂ€lt bereits VerschlĂŒsselungstools (schließlich basiert es auf 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................. + / NDI51jA0MRzpBviM3o / c / Nuz30wo95vWToNyWzJlyAISXnUHxnVhvpeJAbaeggQRcFxO9ujO9DH61aqgN1m + JoEplHjtc4KS5  "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................. 7LMS7jKpwJNJBiFAa / Kuyu3W6PrdOe7SqrXfjOLHQ0uX1oYfcqFIKQsBNj / Fb + GJMiciJUZaAjgHoaZrrf2b / Eii3z0i + QIVG7OypXT3Z9JUS60  "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................. Zijgq27oLyxKNr9T7  "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 kann nicht genau wissen, wie ich es richtig verwenden soll, aber es scheint mir, dass diese SchlĂŒssel auf der Ebene des Austauschs zwischen IPFS-Knoten verwendet werden. Und auch js-ipfs und solche Beispielprojekte wie orbit-db , auf denen orbit.chat funktioniert. Das heißt, theoretisch kann jedes GerĂ€t (mobil und nicht nur) einfach mit seinen eigenen VerschlĂŒsselungs- / EntschlĂŒsselungsmaschinen ausgestattet werden. In diesem Fall muss sich nur jeder um die Pflege seiner privaten SchlĂŒssel kĂŒmmern, und jeder ist fĂŒr seine eigene Sicherheit verantwortlich und nicht als Geisel eines anderen menschlichen Faktors in einem sehr beliebten Internetgiganten.

Source: https://habr.com/ru/post/de465599/


All Articles