IPFS sans douleur (mais ce n'est pas précis)



Malgré le fait que sur Habré il n'y avait déjà pas un seul article sur IPFS .

Je prĂ©ciserai tout de suite que je ne suis pas un expert dans ce domaine, mais j'ai montrĂ© plus d'une fois de l'intĂ©rĂȘt pour cette technologie, mais essayer de jouer avec elle a souvent causĂ© quelques douleurs. Aujourd'hui, j'ai repris les expĂ©riences et obtenu des rĂ©sultats que j'aimerais partager. En bref, le processus d'installation d'IPFS et de quelques puces sera dĂ©crit (tout a Ă©tĂ© fait sur Ubuntu, sur d'autres plateformes que je n'ai pas essayĂ©es).

Si vous avez manqué ce qu'est IPFS, il est écrit en détail ici: habr.com/en/post/314768

L'installation


Pour la pureté de l'expérience, je propose de l'installer immédiatement sur un serveur externe, car nous considérerons quelques piÚges avec le travail en mode local et distant. Ensuite, si vous le souhaitez, il ne sera pas démoli longtemps, il n'y en a pas beaucoup.

Partez


Documentation officielle
Voir la version actuelle sur golang.org/dl

Remarque: il est préférable d'installer IPFS au nom de l'utilisateur, qui est censé utiliser les plus fréquents. Le fait est que ci-dessous, nous considérerons l'option de montage via FUSE et il y a des subtilités là-bas.

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 

Ensuite, vous devez mettre à jour l'environnement (plus de détails ici: 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 

Vérifiez que go est installé

 go version 

Installer IPFS


J'ai aimé la façon d'installer via ipfs-update le plus .

Installez-le avec la commande

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

AprÚs cela, vous pouvez exécuter les commandes suivantes:

ipfs-update versions - pour voir toutes les versions disponibles à télécharger.
ipfs-update version - pour voir la version installée actuelle (jusqu'à ce que IPFS soit installé, il n'en sera pas).
ipfs-update install latest - installe la derniÚre version d'IPFS. Au lieu de la derniÚre, respectivement, vous pouvez spécifier n'importe quelle version souhaitée dans la liste des disponibles.

Installer ipfs

 ipfs-update install latest 

Vérifier

 ipfs --version 

Directement avec l'installation en termes généraux, tout.

Lancement IPFS


Initialisation


Vous devez d'abord effectuer l'initialisation.

 ipfs init 

En réponse, vous obtiendrez quelque chose comme ceci:

  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 

Vous pouvez exécuter la commande proposée

 ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme 

Résultat
 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 


Ici, Ă  mon avis, l'intĂ©ressant commence dĂ©jĂ . Au stade de l'installation, les gars commencent dĂ©jĂ  Ă  utiliser leurs propres technologies. Le hachage proposĂ© QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv - non gĂ©nĂ©rĂ© spĂ©cifiquement pour vous, mais cousu dans la version. Autrement dit, avant la publication, ils ont prĂ©parĂ© un texte de bienvenue, l'ont versĂ© dans IPFS et ont ajoutĂ© l'adresse au programme d'installation. À mon avis, c'est trĂšs cool. Et ce fichier (plus prĂ©cisĂ©ment, l'ensemble du dossier) peut dĂ©sormais ĂȘtre consultĂ© non seulement localement, mais Ă©galement sur la passerelle officielle ipfs.io/ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv . Dans le mĂȘme temps, vous pouvez ĂȘtre sĂ»r que le contenu du dossier n'a pas changĂ©, car s'il avait changĂ©, le hachage aurait Ă©galement changĂ©.

Soit dit en passant, dans ce cas, IPFS prĂ©sente certaines similitudes avec le serveur de contrĂŽle de version. Si vous apportez des modifications aux fichiers source du dossier et versez Ă  nouveau le dossier dans IPFS, il recevra une nouvelle adresse. Dans le mĂȘme temps, l'ancien dossier n'ira nulle part comme ça et sera disponible Ă  son ancienne adresse.

Lancement direct


 ipfs daemon 

Ils devraient obtenir une réponse comme celle-ci:

 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 

Nous ouvrons la porte Ă  Internet


Faites attention Ă  ces deux lignes:

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

Maintenant, si vous avez installé IPFS localement, vous accéderez aux interfaces IPFS aux adresses locales et tout sera à votre disposition (par exemple, localhost : 5001 / webui /). Mais lorsqu'elles sont installées sur un serveur externe, par défaut, les passerelles sont fermées à Internet. Il existe deux passerelles:

  1. Admin webui ( github ) sur le port 5001.
  2. API externe sur le port 8080 (en lecture seule).

Jusqu'Ă  prĂ©sent, vous pouvez ouvrir les deux ports pour des expĂ©riences (5001 et 8080), mais bien sĂ»r, sur le serveur de combat, le port 5001 doit ĂȘtre fermĂ© avec un pare-feu. Il y a 4001 ports, il est nĂ©cessaire pour que d'autres pairs puissent vous trouver. Il doit ĂȘtre laissĂ© ouvert aux demandes extĂ©rieures.

Ouvrez ~ / .ipfs / config pour l'édition et trouvez ces lignes dedans:

 "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" } 

Remplacez 127.0.0.1 par l'ip de votre serveur et enregistrez le fichier, puis redĂ©marrez ipfs (arrĂȘtez la commande Ctrl + C en cours d'exĂ©cution et rĂ©exĂ©cutez).

Doit obtenir

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

Des interfaces externes devraient maintenant ĂȘtre disponibles.

Découvrez

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

Le fichier Lisezmoi ci-dessus devrait s'ouvrir.

 http://__ip_:5001/webui/ 

L'interface Web devrait s'ouvrir.

Si webui fonctionne pour vous, les paramĂštres IPFS peuvent ĂȘtre modifiĂ©s directement, y compris la visualisation des statistiques, mais ci-dessous, je considĂ©rerai les options de configuration directement via le fichier de configuration, ce qui n'est gĂ©nĂ©ralement pas critique. Il est juste prĂ©fĂ©rable de se rappeler exactement oĂč se trouve la configuration et quoi en faire, et si le museau Web ne fonctionne pas, ce sera plus difficile.

Configurer une interface Web pour travailler avec votre serveur


Voici le premier écueil, qui a été passé environ trois heures.

Si vous avez installé IPFS sur un serveur externe, mais que vous n'avez pas installé ou démarré IPFS localement, lorsque vous accédez à / webui dans l'interface Web, vous devriez voir une erreur de connexion:



Le fait est que webui, Ă  mon avis, fonctionne de maniĂšre trĂšs ambiguĂ«. Tout d'abord, il essaie de se connecter Ă  l'API du serveur oĂč l'interface est ouverte (bien sĂ»r, en fonction de l'adresse dans le navigateur). et si cela ne fonctionne pas, il essaie de se connecter Ă  la passerelle locale. Et si vous avez IPFS exĂ©cutĂ© localement, alors votre webui fonctionnera bien, seulement vous travaillerez avec IPFS local, pas externe, bien que vous ayez ouvert webui sur un serveur externe. Ensuite, tĂ©lĂ©chargez des fichiers, mais pour une raison quelconque, vous ne les voyez pas comme ça sur un serveur externe ...

Et s'il ne s'exécute pas localement, nous obtenons une erreur de connexion. Dans notre cas, l'erreur est probablement due à CORS, qui est également indiqué par webui, proposant d'ajouter une config.

 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"]' 

Je viens d'enregistrer un caractÚre générique

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

Les en-tĂȘtes ajoutĂ©s se trouvent tous dans le mĂȘme ~ / .ipfs / config. Dans mon cas, c'est

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

Nous redémarrons ipfs et voyons que webui s'est correctement connecté (du moins si vous avez ouvert les passerelles pour les demandes de l'extérieur, comme décrit ci-dessus).

Vous pouvez maintenant télécharger directement des dossiers et des fichiers via l'interface Web, ainsi que créer vos propres dossiers.

Montez le systĂšme de fichiers FUSE


C'est une astuce assez intéressante.

Nous pouvons ajouter des fichiers (ainsi que des dossiers) non seulement via l'interface web, mais aussi directement dans le terminal, par exemple

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

Le dernier hachage est le hachage du dossier racine.

En utilisant ce hachage, nous pouvons ouvrir le dossier sur n'importe quel nƓud ipfs (qui peut trouver notre nƓud et obtenir le contenu), nous pouvons le faire dans l'interface Web sur le port 5001 ou 8080, ou nous pouvons localement via ipfs.

 ipfs ls QmbnzgRVAP4fL814h5mQttyqk1aUxxxxxxxxxxxxx QmfYuz2gegRZNkDUDVLNa5DXzKmKVxxxxxxxxxxxxxx 10 test.txt 

Mais vous pouvez toujours l'ouvrir comme un dossier normal.

Créons deux dossiers à la racine et donnons-leur des droits à notre utilisateur.

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

et redémarrez ipfs avec l'indicateur --mount

 ipfs daemon --mount 

Vous pouvez créer des dossiers à d'autres endroits et spécifier le chemin d'accÚs à ceux-ci via le démon ipfs --mount --mount-ipfs / ipfs_path --mount-ipns / ipns_path

Maintenant, la lecture de ce dossier est quelque peu inhabituelle.

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

Autrement dit, il n'y a pas d'accĂšs direct Ă  la racine de ce dossier. Mais alors vous pouvez obtenir le contenu en connaissant le hachage.

 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 

De plus, mĂȘme la saisie semi-automatique Ă  l'intĂ©rieur du dossier fonctionne lors de la spĂ©cification d'un chemin.

Comme je l'ai dit ci-dessus, il existe des subtilitĂ©s avec un tel montage: par dĂ©faut, les dossiers FUSE montĂ©s ne sont accessibles qu'Ă  l'utilisateur actuel (mĂȘme root ne peut pas lire Ă  partir d'un tel dossier, sans parler des autres utilisateurs du systĂšme). Si vous souhaitez rendre ces dossiers accessibles aux autres utilisateurs, dans la configuration, vous devez remplacer «FuseAllowOther»: false par «FuseAllowOther»: true. Mais ce n'est pas tout. Si vous exĂ©cutez IPFS en tant que root, tout est OK. Et si au nom d'un utilisateur rĂ©gulier (quoique sudo), vous obtenez une erreur

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

Dans ce cas, vous devez corriger /etc/fuse.conf en décommentant la ligne #user_allow_other.

AprÚs cela, nous redémarrons ipfs.

ProblĂšmes connus avec FUSE


Plus d'une fois, le problĂšme a Ă©tĂ© remarquĂ© qu'aprĂšs le redĂ©marrage d'ipfs avec le montage (ou peut-ĂȘtre dans d'autres cas), les points de montage / ipfs et / ipns deviennent indisponibles. Il n'y a pas d'accĂšs, mais ls -la / ipfs montre ???? dans la liste des droits.

Trouvé une telle solution:

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

Redémarrez ensuite ipfs.

Ajouter un service


Bien sûr, le lancement dans le terminal ne convient qu'aux tests primaires. En mode combat, le démon devrait démarrer automatiquement au démarrage du systÚme.

Au nom de sudo, créez le fichier /etc/systemd/system/ipfs.service et écrivez-y:

 [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, bien sĂ»r, doit ĂȘtre remplacĂ© par votre utilisateur (et peut-ĂȘtre que le chemin complet vers le programme ipfs sera diffĂ©rent pour vous (vous devez spĂ©cifier le chemin complet)).

Nous activons le service.

 sudo systemctl enable ipfs.service 

Nous commençons le service.

 sudo service ipfs start 

Vérifiez l'état du service.

 sudo service ipfs status 

Pour la pureté de l'expérience, il sera possible de redémarrer le serveur à l'avenir pour vérifier que ipfs démarre correctement.

Ajoutez les fĂȘtes que nous connaissons


ConsidĂ©rez la situation lorsque nous avons des nƓuds IPFS installĂ©s Ă  la fois sur un serveur externe et localement. Sur un serveur externe, nous ajoutons une sorte de fichier et essayons de l'obtenir localement via IPFS par CID. Que va-t-il se passer? Bien sĂ»r, le serveur local ne sait probablement rien de notre serveur externe et essaiera simplement de trouver le fichier par CID en «demandant» Ă  tous les homologues IPFS disponibles (avec lesquels il a dĂ©jĂ  rĂ©ussi Ă  «se familiariser»). Ceux-ci, Ă  leur tour, demanderont aux autres. Et ainsi, jusqu'Ă  ce que le fichier soit trouvĂ©. En fait, la mĂȘme chose se produit lorsque nous essayons d'obtenir le fichier via la passerelle ipfs.io officielle. Si vous ĂȘtes chanceux, le fichier sera trouvĂ© dans quelques secondes. Et sinon, il ne sera pas retrouvĂ© en quelques minutes, ce qui affecte grandement le confort de travail. Mais nous savons oĂč ce fichier apparaĂźtra pour la premiĂšre fois. Alors pourquoi ne disons-nous pas immĂ©diatement Ă  notre serveur local "Regardez d'abord"? Apparemment, cela peut ĂȘtre fait.

1. Allez sur le serveur distant et recherchez ~ / .ipfs / config dans la config

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

2. Nous exécutons le statut ipfs du service sudo et y recherchons des entrées Swarm, par exemple:

 Swarm announcing /ip4/ip__/tcp/4001 

3. De là, nous ajoutons l'adresse générale du formulaire "/ ip4 / ip_your_server / tcp / 4001 / ipfs / $ PeerID".

4. Pour plus de fiabilité, via notre site Web local, nous essaierons d'ajouter cette adresse aux pairs.



5. Si tout va bien, ouvrez la configuration locale ~ / .ipfs / config, trouvez "Bootstrap" dedans: [...
et ajoutez d'abord l'adresse reçue au tableau.

Redémarrez IPFS.

Ajoutez maintenant le fichier au serveur externe et essayez de le demander sur le serveur local. Doit voler vite.

Mais cette fonctionnalitĂ© est toujours instable. D'aprĂšs ce que je comprends, mĂȘme si nous spĂ©cifions l'adresse d'homologue dans Bootstrap, au cours du travail, ipfs modifie la liste des connexions actives avec les homologues. Dans tous les cas, une discussion Ă  ce sujet et souhaite la possibilitĂ© d'indiquer des pairs constants a lieu ici et il semble qu'il soit censĂ© ajouter des fonctionnalitĂ©s Ă  ipfs@5.0+

Une liste des pairs actuels peut ĂȘtre consultĂ©e Ă  la fois dans webui et dans le terminal.

 ipfs swarm peers 

LĂ  et lĂ , vous pouvez ajouter votre fĂȘte manuellement.

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

Jusqu'à ce que vous ayez amélioré cette fonctionnalité, vous pouvez écrire un outil pour vérifier une connexion avec l'homologue souhaité, et sinon, pour ajouter une connexion.

Raisonnement


Parmi ceux qui connaissent dĂ©jĂ  IPFS, il y a des arguments pour et contre IPFS. En principe, la discussion d' avant-hier m'a incitĂ© Ă  creuser Ă  nouveau IPFS. Et en ce qui concerne la discussion mentionnĂ©e ci-dessus: je ne peux pas dire que je suis fermement contre certains des arguments ci-dessus exprimĂ©s (je suis en dĂ©saccord uniquement avec le fait qu'un programmeur et demi utilise IPFS). En gĂ©nĂ©ral, les deux ont raison Ă  leur maniĂšre (surtout les commentaires sur les chĂšques vous font penser). Mais si vous mettez de cĂŽtĂ© l'Ă©valuation morale et juridique, qui donnera une Ă©valuation technique de cette technologie? Personnellement, j'ai une sorte de sentiment intĂ©rieur que "c'est nĂ©cessaire Ă  coup sĂ»r, cela a certaines perspectives". Mais pourquoi exactement, il n'y a pas de formulation claire. Comme si vous regardez les outils centralisĂ©s existants, Ă  bien des Ă©gards, ils sont trĂšs en avance (stabilitĂ©, vitesse, gĂ©rabilitĂ©, etc.). NĂ©anmoins, j'ai une pensĂ©e qui semble logique et qui ne peut guĂšre ĂȘtre mise en Ɠuvre sans de tels systĂšmes dĂ©centralisĂ©s. Bien sĂ»r, j'agite vraiment mon esprit, mais je le formulerais ainsi: le principe de diffusion de l'information sur Internet doit ĂȘtre changĂ©.

Je vais vous expliquer. Si vous le pensez, nos informations sont dĂ©sormais diffusĂ©es selon le principe "J'espĂšre que la personne Ă  qui je les ai transfĂ©rĂ©es les protĂ©gera et ne sera pas perdue ou reçue par ceux Ă  qui elles n'Ă©taient pas destinĂ©es". Par exemple, il est facile de considĂ©rer divers services de messagerie, stockage cloud, etc. Et qu'avons-nous finalement? Sur HabrĂ© Hub, la sĂ©curitĂ© de l'information est en premiĂšre ligne et nous recevons presque chaque jour des informations sur une autre fuite mondiale. En principe, tout ce qui est le plus intĂ©ressant est rĂ©pertoriĂ© dans l'article <irony> merveilleux </ ironie> L' Ă©tĂ© est presque terminĂ©. Presque aucune donnĂ©e n'a Ă©tĂ© divulguĂ©e . Autrement dit, les principaux gĂ©ants de l'Internet deviennent plus grands, ils accumulent de plus en plus d'informations, et de telles fuites sont une sorte d'explosions atomiques informationnelles. Cela ne s'est jamais produit, et lĂ  encore. Dans le mĂȘme temps, bien que beaucoup comprennent qu'il existe des risques, ils continueront de faire confiance Ă  leurs donnĂ©es avec des sociĂ©tĂ©s tierces. PremiĂšrement, il n'y a pas beaucoup d'alternative, et deuxiĂšmement, ils promettent qu'ils ont corrigĂ© tous les trous et cela ne se reproduira plus.

Quelle option est-ce que je vois? Il me semble que les donnĂ©es devraient initialement ĂȘtre diffusĂ©es ouvertement. Mais l'ouverture dans ce cas ne signifie pas que tout doit ĂȘtre facile Ă  lire. Je parle de l'ouverture du stockage et de la distribution, mais pas de l'ouverture totale en lecture. Je suppose que les informations doivent ĂȘtre distribuĂ©es avec des clĂ©s publiques. AprĂšs tout, le principe des clĂ©s publiques / privĂ©es est dĂ©jĂ  ancien, presque comme Internet. Si les informations ne sont pas confidentielles et sont conçues pour un large Ă©ventail, elles sont immĂ©diatement mises en page avec la clĂ© publique (mais toujours sous forme cryptĂ©e, n'importe qui peut les dĂ©crypter avec la clĂ© existante). Sinon, il est disposĂ© sans clĂ© publique, et la clĂ© elle-mĂȘme est transmise Ă  celui qui doit avoir accĂšs Ă  ces informations. Dans le mĂȘme temps, celui qui a besoin de le lire ne devrait avoir qu'une clĂ©, et oĂč obtenir ces informations, il ne devrait pas monter en flĂšche - il les extrait simplement du rĂ©seau (c'est le nouveau principe de distribution au contenu, et non Ă  l'adresse).

Ainsi, pour une attaque de masse, les attaquants devront obtenir un grand nombre de clĂ©s privĂ©es, et il est peu probable qu'ils puissent le faire au mĂȘme endroit. Cette tĂąche, Ă  mon avis, est plus difficile que de pirater un service particulier.

Et ici, un autre problĂšme se termine: la confirmation de la paternitĂ©. Maintenant, sur Internet, vous pouvez trouver de nombreuses citations Ă©crites par nos amis. Mais oĂč est la garantie qu'ils les ont Ă©crits? Maintenant, si chacun de ces enregistrements Ă©tait accompagnĂ© d'une signature numĂ©rique, ce serait beaucoup plus simple. Et peu importe oĂč se trouvent ces informations, l'essentiel est la signature, qui est Ă©videmment difficile Ă  truquer.

Et voici ce qui est intéressant ici: IPFS contient déjà des outils de chiffrement (aprÚs tout, il est construit sur la technologie blockchain). La clé privée est immédiatement spécifiée dans la configuration.

  "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................. 

Je ne suis pas un spĂ©cialiste de la sĂ©curitĂ© et je ne sais pas exactement comment l'utiliser correctement, mais il me semble que ces clĂ©s sont utilisĂ©es au niveau de l'Ă©change entre les nƓuds IPFS. Et aussi js-ipfs et des exemples de projets comme orbit-db , sur lesquels orbit.chat fonctionne. Autrement dit, chaque appareil (mobile et pas seulement) peut ĂȘtre facilement Ă©quipĂ© de ses propres machines de chiffrement-dĂ©chiffrement. Dans ce cas, il ne reste plus qu'Ă  chacun de prendre soin de maintenir ses clĂ©s privĂ©es et chacun sera responsable de sa propre sĂ©curitĂ©, et ne sera pas l'otage d'un autre facteur humain dans un gĂ©ant Internet super populaire.

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


All Articles