IPFS ohne Schmerzen (aber das ist nicht sicher).

IPFS ohne Schmerzen (aber das ist nicht sicher).

Obwohl es auf Habr bereits mehr als einen Artikel ĂŒber IPFS gibt.

Ich möchte gleich klarstellen, dass ich kein Experte auf diesem Gebiet bin, aber ich habe mich schon mehrmals fĂŒr diese Technologie interessiert. Meine Versuche, damit zu experimentieren, haben oft einige Schmerzen verursacht. Heute habe ich wieder mit Experimenten begonnen und einige Ergebnisse erzielt, die ich teilen möchte. Kurz gesagt, ich werde den Installationsprozess von IPFS und einige Tricks beschreiben (alles wurde unter Ubuntu durchgefĂŒhrt, auf anderen Plattformen habe ich es nicht ausprobiert).

Wenn Sie verpasst haben, was IPFS ist, ist hier alles recht ausfĂŒhrlich beschrieben: habr.com/ru/post/314768

Installation

FĂŒr die Sauberkeit des Experiments schlage ich vor, es auf einem externen Server zu installieren, da wir einige Stolpersteine bei der Arbeit im lokalen und entfernten Modus betrachten werden. spĂ€ter, wenn gewĂŒnscht, kann man es schnell entfernen, da nicht viel installiert wird.

Go installieren

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

Hinweis: Es ist besser, IPFS unter dem Benutzernamen zu installieren, mit dem vorwiegend gearbeitet werden soll. Der Grund ist, dass wir weiter unten eine Variante mit der Montage ĂŒber FUSE und da gibt es einige 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

Danach muss die Umgebung aktualisiert werden (mehr dazu 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

IPFS installieren

Mir hat der Installationsweg ĂŒber ipfs-update.

am besten gefallen. Wir installieren es mit dem Befehl

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

Nach der Installation können Sie folgende Befehle ausfĂŒhren:

ipfs-update versions — um alle verfĂŒgbaren Versionen zum Herunterladen anzuzeigen.
ipfs-update version — um die aktuell installierte Version zu sehen (da wir IPFS noch nicht installiert haben, wird 'none' angezeigt).
ipfs-update install latest — um die neueste Version von IPFS zu installieren. Statt 'latest' kann man auch jede gewĂŒnschte Version aus der Liste der verfĂŒgbaren angeben.

IPFS installieren

ipfs-update install latest

ÜberprĂŒfen

ipfs --version

Insgesamt zur Installation ist alles gesagt.

IPFS starten

Initialisierung

Zuerst muss die Initialisierung ausgefĂŒhrt werden.

ipfs init

Als Antwort erhalten Sie etwa Folgendes:

 ipfs init
IPFS-Knoten wird bei /home/USERNAME/.ipfs initialisiert
erzeuge 2048-Bit-RSA-SchlĂŒsselpaar...fertig
Peer-IdentitÀt: QmeCWX1DD7HnXXXXXXXXXXXXXXXXXXXXXXXXxxx
Um zu beginnen, geben Sie ein:
	ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme

Sie können den vorgeschlagenen Befehl ausfĂŒhren

ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme

Ergebnis

Hallo und Willkommen bei IPFS!

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

Wenn Sie das hier sehen, haben Sie IPFS erfolgreich installiert
und arbeiten jetzt mit dem ipfs merkledag!

 -------------------------------------------------------
| Warnung:                                              |
|   Dies ist Alpha-Software. Nutzen Sie sie auf eigene Gefahr! |
|   Vieles fehlt oder ist nicht ausgereift. Es gibt Bugs.  |
|   Noch nicht sicher. Lesen Sie die Sicherheitsnotizen fĂŒr mehr.   |
 -------------------------------------------------------

Schauen Sie sich einige der anderen Dateien in diesem Verzeichnis an:

  .\/about
  .\/help
  .\/quick-start     <--- Anwendungsbeispiele
  .\/readme          <--- diese Datei
  .\/security-notes

Hier beginnt meiner Meinung nach das Interessante. Die Jungs beginnen bereits wĂ€hrend der Installation ihre eigenen Technologien zu nutzen. Der vorgeschlagene Hash QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv — ist nicht extra fĂŒr Sie generiert, sondern in das Release eingebettet. Das bedeutet, dass sie vor dem Release den BegrĂŒĂŸungstext vorbereitet, in IPFS geleert und die Adresse in den Installer hinzugefĂŒgt haben. Ich finde das sehr cool. Diese Datei (genauer gesagt, den gesamten Ordner) kann jetzt nicht nur lokal, sondern auch ĂŒber das offizielle Gateway angesehen werden. ipfs.io/ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv. Dabei kann man sich sicher sein, dass der Inhalt des Ordners sich nicht verĂ€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 einem Versionskontrollserver. Wenn Änderungen an den Quelldateien des Ordners vorgenommen werden und der Ordner erneut in IPFS geleert wird, bekommt er eine neue Adresse. Dabei verschwindet der alte Ordner nicht einfach und ist ĂŒber seine frĂŒhere Adresse weiterhin zugĂ€nglich.

Direkt starten

ipfs daemon

Sie sollten eine solche Antwort erhalten:

ipfs daemon
Daemon wird initialisiert...
go-ipfs Version: 0.4.22-
Repo-Version: 7
Systemversion: amd64/linux
Golang-Version: go1.12.7
Swarm lauscht auf /ip4/x.x.x.x/tcp/4001
Swarm lauscht auf /ip4/127.0.0.1/tcp/4001
Swarm lauscht auf /ip6/::1/tcp/4001
Swarm lauscht auf /p2p-circuit
Swarm kĂŒndigt an /ip4/127.0.0.1/tcp/4001
Swarm kĂŒndigt an /ip6/::1/tcp/4001
API-Server lauscht auf /ip4/127.0.0.1/tcp/5001
WebUI: http://127.0.0.1:5001/webui
Gateway (nur Lesen) Server lauscht auf /ip4/127.0.0.1/tcp/8080
Daemon ist bereit

Wir öffnen die TĂŒren zum Internet

Beachten Sie diese beiden Zeilen:

WebUI: http://127.0.0.1:5001/webui
Gateway (nur Lesen) Server lauscht auf /ip4/127.0.0.1/tcp/8080

Wenn Sie IPFS lokal installiert haben, werden Sie ĂŒber lokale Adressen auf die IPFS-Interfaces zugreifen und alles wird fĂŒr Sie verfĂŒgbar sein (zum Beispiel, localhost:5001/webui/). Aber bei der Installation auf einem externen Server sind die Gateways standardmĂ€ĂŸig fĂŒr das Internet geschlossen. Es gibt zwei Gateways:

  1. Admin-Bereich webui (github) auf Port 5001.
  2. Externes API auf Port 8080 (nur lesend).

FĂŒr Experimente können beide Ports (5001 und 8080) geöffnet werden, aber auf dem Produktionsserver sollte Port 5001 natĂŒrlich durch die Firewall geschlossen sein. Es gibt auch Port 4001, der benötigt wird, damit andere Peers Sie finden können. Dieser sollte fĂŒr Anfragen von außen geöffnet bleiben.

Öffnen Sie zur Bearbeitung ~/.ipfs/config und suchen Sie nach diesen 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, danach starten Sie ipfs neu (unterbrochene Befehle mit Ctrl+C stoppen und erneut starten).

Sie sollten Folgendes erhalten

...
WebUI: http:\/\/ip_ihres_servers:5001\/webui
Gateway (nur lesend) Server lauscht auf \/ip4\/ip_ihres_servers\/tcp\/8080

Nun sollten die externen Schnittstellen verfĂŒgbar sein.

ÜberprĂŒfen Sie

http:\/\/domÀne_oder_ip_des_servers:8080\/ipfs\/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv\/readme

Die oben genannte README-Datei sollte sich öffnen.

http:\/\/domÀne_oder_ip_des_servers:5001\/webui\/

Das Web-Interface sollte sich öffnen.

Wenn bei Ihnen webui funktioniert, können die IPFS-Einstellungen direkt dort geĂ€ndert werden, einschließlich der Anzeige von Statistiken. Im Folgenden werde ich jedoch die Konfigurationsoptionen direkt ĂŒber die Konfigurationsdatei betrachten, was im Grunde genommen nicht kritisch ist. Es ist einfach besser, sich zu merken, wo die Konfigurationsdatei liegt und was damit zu tun ist, denn wenn die Web-OberflĂ€che nicht funktioniert, wird es schwieriger.

Wir konfigurieren das Web-Interface fĂŒr die Arbeit mit Ihrem Server

Hier ist der erste Stolperstein, an dem etwa drei Stunden investiert wurden.

Wenn Sie IPFS auf einem externen Server installiert haben, es aber nicht lokal installiert oder gestartet haben, sollten Sie beim Zugriff auf \/webui im Web-Interface eine Verbindungsfehler sehen:

IPFS ohne Schmerzen (aber das ist nicht sicher).

Das Problem ist, dass webui meiner Meinung nach sehr zwiespĂ€ltig funktioniert. Zuerst versucht es, sich mit der API des Servers zu verbinden, auf dem die Schnittstelle geöffnet ist (natĂŒrlich basierend auf der Adresse im Browser). Wenn das nicht funktioniert, versucht es, sich mit dem lokalen Gateway zu verbinden. Und wenn Sie IPFS lokal ausgefĂŒhrt haben, funktioniert webui bei Ihnen einwandfrei, aber Sie arbeiten mit dem lokalen IPFS und nicht mit dem externen, obwohl Sie webui auf einem externen Server geöffnet haben. Dann laden Sie Dateien hoch, aber aus irgendeinem Grund sehen Sie sie einfach nicht auf dem externen Server...

Und wenn es auch lokal nicht gestartet ist, erhalten wir einen Verbindungsfehler. In unserem Fall ist der Fehler höchstwahrscheinlich auf CORS zurĂŒckzufĂŒhren, was auch die WeboberflĂ€che anzeigt und empfiehlt, die Konfiguration hinzuzufĂŒgen.

ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["http://ip_ihrer_server: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 bei mir einfach ein Wildcard eingetragen.

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

Die hinzugefĂŒgten Header finden Sie alle in der gleichen Datei ~/.ipfs/config. In meinem Fall sieht das so aus:

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

Wir starten ipfs neu und sehen, dass die WeboberflĂ€che erfolgreich verbunden wurde (sollte sie zumindest, wenn Sie die Gateways fĂŒr externe Anfragen wie oben beschrieben geöffnet haben).

Jetzt können Sie direkt ĂŒber die WeboberflĂ€che Ordner und Dateien hochladen, sowie Ihre eigenen Ordner erstellen.

Einbinden des FUSE-Dateisystems

Das ist ein ziemlich interessantes Feature.

Dateien (wie auch Ordner) können nicht nur ĂŒber die WeboberflĂ€che, sondern auch direkt im Terminal hinzugefĂŒgt werden, zum Beispiel:

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

Der letzte Hash ist der Hash des Hauptordners.

Mit diesem Hash können wir den Ordner auf jedem ipfs-Knoten öffnen (der unseren Knoten finden und den Inhalt abrufen kann), entweder ĂŒber die WeboberflĂ€che am Port 5001 oder 8080 oder lokal ĂŒber ipfs.

ipfs ls QmbnzgRVAP4fL814h5mQttyqk1aUxxxxxxxxxxxxx
QmfYuz2gegRZNkDUDVLNa5DXzKmKVxxxxxxxxxxxxxx 10 test.txt

Aber man kann ihn auch wie einen normalen Ordner öffnen.

Erstellen wir zwei Ordner im Wurzelverzeichnis und geben wir die Berechtigungen dafĂŒr unserem Benutzer.

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

und starten wir ipfs mit dem Flag —mount neu.

ipfs daemon --mount

Es können auch Ordner an anderen Orten erstellt werden, und der Pfad zu ihnen kann ĂŒber die Parameter ipfs daemon —mount —mount-ipfs /ipfs_path —mount-ipns /ipns_path angegeben werden.

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 Wurzelverzeichnis dieses Ordners. Aber man kann den Inhalt abrufen, wenn man den Hash kennt.

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

Dabei funktioniert sogar die AutovervollstÀndigung innerhalb des Ordners, wenn der Pfad angegeben wird.

Wie ich bereits oben erwĂ€hnt habe, gibt es beim EinhĂ€ngen solcher FUSE-Ordner einige Feinheiten: standardmĂ€ĂŸig sind die gemounteten FUSE-Ordner nur fĂŒr den aktuellen Benutzer verfĂŒgbar (selbst root kann nicht auf einen solchen Ordner zugreifen, ganz zu schweigen von anderen Benutzern im System). Wenn Sie möchten, dass diese Ordner fĂŒr andere Benutzer zugĂ€nglich sind, mĂŒssen Sie in der Konfiguration «FuseAllowOther»: false auf «FuseAllowOther»: true Ă€ndern. Aber das ist noch nicht alles. Wenn Sie IPFS unter dem Namen root ausfĂŒhren, ist alles in Ordnung. Wenn Sie es jedoch unter dem Namen eines normalen Benutzers (selbst mit sudo) ausfĂŒhren, erhalten Sie einen Fehler.

mount helper error: fusermount: Option allow_other nur erlaubt, wenn 'user_allow_other' in /etc/fuse.conf gesetzt ist.

In diesem Fall mĂŒssen Sie /etc/fuse.conf bearbeiten und die Zeile #user_allow_other auskommentieren.

Danach starten wir ipfs neu.

Bekannte Probleme mit FUSE

Es wurde mehrfach beobachtet, dass nach einem Neustart von ipfs mit EinhĂ€ngen (oder möglicherweise auch in anderen FĂ€llen) die EinhĂ€ngepunkte /ipfs und /ipns nicht mehr verfĂŒgbar sind. Es gibt keinen Zugang zu ihnen, und ls -la /ipfs zeigt ???? in der Liste der Berechtigungen an.

Ich habe folgende Lösung gefunden:

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

Danach starten wir ipfs neu.

Dienste hinzufĂŒgen

NatĂŒrlich eignet sich der Start im Terminal nur fĂŒr erste Tests. Im Produktionsmodus sollte der Daemon automatisch beim Systemstart gestartet werden.

Unter sudo erstellen wir die Datei /etc/systemd/system/ipfs.service und schreiben Folgendes 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 sollte natĂŒrlich durch Ihren Benutzer ersetzt werden (und möglicherweise ist der vollstĂ€ndige Pfad zur IPFS-Anwendung bei Ihnen anders (Sie mĂŒssen genau den vollstĂ€ndigen Pfad angeben)).

Aktivieren Sie den Dienst.

sudo systemctl enable ipfs.service

Starten Sie den Dienst.

sudo service ipfs start

ÜberprĂŒfen Sie den Dienststatus.

sudo service ipfs status

Um die Sauberkeit des Experiments zu gewĂ€hrleisten, kann der Server spĂ€ter neu gestartet werden, um zu ĂŒberprĂŒfen, ob IPFS erfolgreich automatisch startet.

FĂŒgen Sie uns bekannte Peers hinzu.

Betrachten wir die Situation, in der wir IPFS-Knoten sowohl auf einem externen Server als auch lokal installiert haben. Auf dem externen Server fĂŒgen wir eine Datei hinzu und versuchen, sie lokal ĂŒber IPFS anhand des CID abzurufen. Was wird passieren? NatĂŒrlich weiß der lokale Server wahrscheinlich nichts ĂŒber unseren externen Server und wird einfach versuchen, die Datei anhand des CID zu finden, indem er alle verfĂŒgbaren IPFS-Peers fragt (mit denen er bereits "bekannt" ist). Diese werden wiederum bei anderen fragen. Und so weiter, bis die Datei gefunden wird. Im Grunde passiert dasselbe, wenn wir versuchen, die Datei ĂŒber das offizielle Gateway abzurufen. ipfs.io. Wenn wir GlĂŒck haben, wird die Datei innerhalb von Sekunden gefunden. Wenn nicht, wird sie auch nach mehreren Minuten nicht gefunden, was den Arbeitskomfort erheblich beeintrĂ€chtigt. Aber wir wissen ja, wo diese Datei zuerst erscheinen wird. Warum sagen wir unserem lokalen Server nicht gleich: "Suche zuerst dort"? Offenbar ist das möglich.

1. Loggen Sie sich auf dem entfernten Server ein und suchen Sie in der Konfiguration ~/.ipfs/config nach

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

2. FĂŒhren Sie sudo service ipfs status aus und suchen Sie nach EintrĂ€gen zu Swarm, zum Beispiel:

Swarm, das /ip4/ip_ihres_servers/tcp/4001 bekannt gibt

3. Stellen Sie von diesem gemeinsamen Adressformat " /ip4/ip_ihres_servers/tcp/4001/ipfs/$PeerID" zusammen.

4. Zur Sicherheit versuchen wir ĂŒber unser lokales Web-UI, diese Adresse zu den Peers hinzuzufĂŒgen.

IPFS ohne Schmerzen (aber das ist nicht sicher).

5. Wenn alles in Ordnung ist, öffnen Sie die lokale Konfiguration ~/.ipfs/config, finden Sie "Bootstrap": [

und fĂŒgen Sie die erhaltene Adresse als ersten Eintrag im Array hinzu.

Starten Sie IPFS neu.

Jetzt fĂŒgen wir die Datei auf dem externen Server hinzu und versuchen, sie lokal abzurufen. Sie sollte schnell abgerufen werden.

Aber diese FunktionalitĂ€t ist derzeit noch instabil. Soweit ich verstehe, verĂ€ndert ipfs selbst beim Angabe der Peer-Adresse im Bootstrap wĂ€hrend des Betriebs die Liste der aktiven Verbindungen zu Peers. Auf jeden Fall wird darĂŒber diskutiert und es gibt WĂŒnsche zur Möglichkeit, permanente Peers anzugeben. hier Und es scheint, dass es vorgesehen ist, Die Liste der aktuellen Peers kann sowohl im Web-UI als auch im Terminal angesehen werden.

ipfs swarm peers

Sowohl dort als auch dort kann man manuell seinen Peer hinzufĂŒgen.

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

Bis diese FunktionalitĂ€t verbessert wird, kann man ein Tool schreiben, das die Verbindung zu dem benötigten Peer ĂŒberprĂŒft, und falls nicht vorhanden, die Verbindung hinzufĂŒgt.

Überlegungen

Überlegungen

Unter denjenigen, die bereits mit IPFS vertraut sind, gibt es sowohl Argumente fĂŒr als auch gegen IPFS. GrundsĂ€tzlich hat das von vorgestern diskutiert mich dazu angeregt, IPFS noch einmal zu durchleuchten. Und bezĂŒglich der erwĂ€hnten Diskussion: Ich kann nicht sagen, dass ich stark gegen eines der vorgebrachten Argumente bin (ich stimme nur dem nicht zu, dass anderthalb Programmierer IPFS nutzen). Insgesamt haben sowohl die BefĂŒrworter als auch die Kritiker recht (insbesondere der Kommentar ĂŒber Belege regt zum Nachdenken an). Aber wenn man die moralische und rechtliche Bewertung beiseitelĂ€sst, welche technische Bewertung wĂŒrde man dieser Technologie geben? Persönlich habe ich so ein inneres GefĂŒhl, dass „es unbedingt notwendig ist, es hat bestimmte Perspektiven“. Aber warum genau, dafĂŒr gibt es keine klare Formulierung. Wenn man sich die bereits vorhandenen zentralisierten Mittel ansieht, dann sind sie in vielerlei Hinsicht weit voraus (StabilitĂ€t, Geschwindigkeit, Steuerbarkeit usw.). Dennoch habe ich einen Gedanken, der irgendwie sinnvoll erscheint und der wahrscheinlich nicht ohne solche dezentralisierten Systeme umgesetzt werden kann. NatĂŒrlich, ich neige dazu, das groß zu formulieren, aber ich wĂŒrde es so ausdrĂŒcken: Das Prinzip der Informationsverbreitung im Internet muss geĂ€ndert werden.

Ich erklĂ€re. Wenn man so darĂŒber nachdenkt, verbreitet sich die Information derzeit nach dem Prinzip „Ich hoffe, dass die Person, an die ich sie ĂŒbergeben habe, sie schĂŒtzen wird und sie nicht verloren geht oder von jemandem erhalten wird, fĂŒr den sie nicht bestimmt war“. Ein gutes Beispiel sind verschiedene E-Mail-Dienste, Cloud-Speicher usw. Und was haben wir am Ende? Auf HabrĂ© steht Informationssicherheit an erster Stelle, und fast jeden Tag erhalten wir Nachrichten ĂŒber die nĂ€chste globale Datenpanne. GrundsĂ€tzlich ist alles Interessante in der <Ironie>wunderbaren<\/Ironie> Artikel aufgefĂŒhrt Der Sommer ist fast vorbei. Fast keine unentdeckten Daten sind mehr ĂŒbrig.. Das heißt, die großen Internetgiganten werden immer grĂ¶ĂŸer, akkumulieren immer mehr Informationen und solche Datenlecks sind eine Art informatischer atomarer Explosionen. So etwas hat es nie gegeben, und jetzt passiert es wieder. Und obwohl viele verstehen, dass es Risiken gibt, werden sie weiterhin ihre Daten Dritten anvertrauen. Erstens gibt es nicht wirklich Alternativen und zweitens versichern sie, dass sie alle Löcher gestopft haben und so etwas nie wieder passieren wird.

Welche Option kommt mir in den Sinn? Meiner Meinung nach sollten die Daten von Anfang an offen verteilt werden. Aber Offenheit bedeutet in diesem Fall nicht, dass alles leicht lesbar sein muss. Ich rede von der Offenheit der Speicherung und Verteilung, aber nicht von einer totalen Offenheit beim Lesen. Ich nehme an, dass die Informationen mit öffentlichen SchlĂŒsseln verbreitet werden sollten. Denn das Prinzip der öffentlichen/privaten SchlĂŒssel ist bereits alt, fast so alt wie das Internet. Wenn die Informationen nicht vertraulich sind und fĂŒr ein breites Publikum gedacht sind, werden sie sofort mit einem öffentlichen SchlĂŒssel veröffentlicht (aber dennoch verschlĂŒsselt, sodass jeder sie mit dem vorhandenen SchlĂŒssel entschlĂŒsseln kann). Andernfalls werden sie ohne öffentlichen SchlĂŒssel veröffentlicht, und der SchlĂŒssel selbst wird an diejenigen weitergegeben, die Zugriff auf diese Informationen haben sollten. Dabei sollte diejenigen, die sie lesen mĂŒssen, nur den SchlĂŒssel haben, und darĂŒber, wo sie die Informationen herbekommen, sollte sich niemand wirklich kĂŒmmern — sie ziehen sie einfach aus dem Netz (das ist das neue Prinzip der Verbreitung basierend auf dem Inhalt, nicht auf der Adresse).

So wird es fĂŒr die Angreifer notwendig sein, eine riesige Anzahl geschlossener SchlĂŒssel fĂŒr einen Massenangriff zu erhalten, und es wird kaum möglich sein, dies an einem Ort zu tun. Diese Aufgabe scheint mir komplexer zu sein, als einen bestimmten Dienst zu hacken.

Und hier schließt sich ein weiteres Problem: die BestĂ€tigung der Urheberschaft. Momentan kann man im Internet viele Zitate finden, die von unseren Bekannten verfasst wurden. Aber wo ist die Garantie, dass genau sie sie geschrieben haben? Wenn jede solche Aufzeichnung von einer digitalen Signatur begleitet wĂŒrde, wĂ€re das viel einfacher. Es spielt keine Rolle, wo diese Informationen gespeichert sind, das Wichtigste ist die Signatur, die von vornherein schwer zu fĂ€lschen ist.

Und das Interessante hier ist: IPFS bringt bereits VerschlĂŒsselungsmechanismen mit sich (da es auf Blockchain-Technologie basiert). Im Konfigurationsfile ist sofort der private SchlĂŒssel angegeben.

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

Ich bin kein Sicherheitsspezialist und kann nicht genau sagen, wie man das richtig nutzt, aber ich glaube, dass diese SchlĂŒssel auf der Ebene des Austauschs zwischen IPFS-Knoten verwendet werden. Außerdem js-ipfs und solche Projekte-Beispiele wie orbit-db, auf der orbit.chatbetrieben wird. Das bedeutet theoretisch, dass jedes GerĂ€t (mobil und nicht nur) leicht mit eigenen VerschlĂŒsselungs- und EntschlĂŒsselungsmaschinen ausgestattet werden kann. In diesem Fall liegt es nur an jedem, sich um die Aufbewahrung seiner privaten SchlĂŒssel zu kĂŒmmern, und jeder ist selbst verantwortlich fĂŒr seine Sicherheit und ist nicht das Opfer eines weiteren menschlichen Faktors bei einem super-populĂ€ren Internet-Riesen.

Nur registrierte Benutzer können an der Umfrage teilnehmen. Bitte einloggen.

Haben Sie schon einmal von IPFS gehört?

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

  • Ich habe nicht gehört und möchte nicht hören.

  • Ich habe gehört, fand es aber nicht interessant.

  • Ich habe gehört, habe es aber nicht verstanden, und jetzt scheint es interessant zu sein.

  • Ich benutze IPFS schon lange aktiv.

69 Nutzer haben abgestimmt. 13 Nutzer haben sich enthalten.

Quelle: habr.com

60GB SSD 8Gb DDR4