Outils du site

Outils pour utilisateurs


p2p:ipfs (lu 2935 fois)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
p2p:ipfs [le 09/01/2019 à 16h58]
111110101011 [Présentation]
p2p:ipfs [le 10/12/2020 à 01h23] (Version actuelle)
111110101011 [Authentification]
Ligne 3: Ligne 3:
 ===== Présentation ===== ===== Présentation =====
  
-IPFS (Inter Planetary File System) réutilise les technos à succès et les combine: [[wpfr>Git]], [[p2p>BitTorrent]][[p2p>kademlia_reseau|Kademlia]][[p2p>Bitcoin]], [[wp>Smart_File_System|SFS]]((Smart File System est un système de fichiers journalisé initialement implémenté sur Amiga qui gère les écritures de méta-données de façon transactionnelle, ce qui permet de revenir à des états préalables sains en cas d'erreur d'écriture.)). Il s'agit d'un logiciel libre, l'implémentation de référence est écrite en Go et est disponible pour la plupart des systèmes d'exploitation (Linux, Mac OS X, Windows).+IPFS (InterPlanetary File System) est un P2P sous licence libre qui vise à proposer un web décentraliséà l'instar de [[p2p>ZeroNet]]. Contrairement à [[p2p>I2P]] ou [[p2p>Freenet]], IPFS n'est pas anonymisant, mais des solutions pourraient être apportées, notamment par un couplage avec [[wpfr>Tor_(réseau)|Tor]]. Cette ambition orientée «web» n'interdit pas de s'en servir pour faire du partage de fichiers potentiellement volumineux.
  
-Le but est de concevoir un stockage distribuédonc imaginez un disque dur géantdont vous pouvez consulter les données depuis votre terminal unix ou depuis votre navigateur web, et vous avez une idée de ce qu'est IPFS.+Pour arriver à ses fins, IPFS réutilise des technologies à succès et s'en inspire ou les combine : [[wpfr>Git]], [[p2p>BitTorrent]], [[p2p>kademlia_reseau|Kademlia]], [[p2p>Bitcoin]], [[wp>Self-certifying_File_System|SFS]]((Self-Certified File System : un système de fichiers réseau similaire à NFS, mais dont les chemins d'accès aux fichiers contiennent la clé publique de la machine, permettant de s'assurer de leur authenticité)). 
 + 
 +IPFS est développé par [[https://protocol.ai|Protocol Labs]], une start-up de San Francisco pour qui les protocoles qui ont permis de batir le réseau internet doivent être libres et ouverts. Il s'agit naturellement d'un logiciel libre, l'implémentation de référence est écrite en langage Go et est disponible pour la plupart des systèmes d'exploitation (Linux, Mac OS X, Windows). La boite développe aussi FileCoin, une solution de stockage avec rémunérationainsi que libp2p, qui est la couche réseau utilisée par IPFS, IPLD, qui décrit le modèle de données pour un web décentraliséet Multiformats. 
 + 
 +IPFS cherche vraiment à remplacer (ou au moins trouver un modèle alternatif) au web centralisé essentiellement basé sur HTTP(S). Les adresses utilisées dans ce web décentralisé pointent non pas vers un emplacement (comme l'adresse IP d'un hôte) mais vers un contenu, identifié par un hash appellé **cid** (comme Content Identifier). Ce contenu peut être hébergé de façon décentralisée, comme avec BitTorrent, ce qui permet à l'auteur de ce contenu de ne pas avoir à l'héberger lui-même. La réplication des données confère au réseau une résilience et un rôle de protection contre la censure. 
 + 
 +On peut naviguer sur IPFS avec un navigateur web ordinaire. Celui-ci se branche sur le [[def>daemon|démon]] IPFS en tâche de fond. 
 + 
 +Fin 2018, le projet [[https://github.com/ipfs/go-ipfs/commits/master|poursuit son développement]] de façon soutenue.  
 + 
 +===== Fonctionnement ===== 
 + 
 +==== Authentification ==== 
 + 
 +Si IPFS souhaite remplacer le web, il doit aussi remplacer HTTPS. Ca tombe bien, le protocole https est embourbé dans un vieux problème qui est celui des certificats et que IPFS pourrait évacuer. La confiance que l'on peut avoir dans une connexion sécurisée par https dépend d'un certificat, qui lui-même dépend des Autorités de Certifications (CA) embarquées dans votre système d'exploitation et dans votre navigateur. Ce système est réputé imparfait pour son approche top-down : le privilège d'être une autorité de certification n'est accordé qu'à certaines entreprises ou organismes, qui ont le pouvoir de certifier que les clés utilisées durant le chiffrement appartiennent bien au site consulté. Ce service de certificats a longtemps été monnayé, et cause de désagréments pour les personnes hébergeant des sites préférant s'en dispenser. L'arrivée des certificats //Let's encrypt// a permis de rendre plus accessible ce système, mais le modèle reste imparfait car les certificats restent manipulables par les nombreuses autorités dont il est illusoire de penser qu'elles sont toutes dignes de confiance. Ces autorités de certification ont donc un rôle ambigü, qui peuvent en faire par exemple des alliés privilégiés de la surveillance d'État rendue publique par Edward Snowden. 
 + 
 +Dans les initiatives de web décentraliséd'autres modèles cryptographiques sont envisagés. 
 +==== Adressage et intégrité des ressources ==== 
 + 
 +D'abord, les ressources que vous consultez sont identifiées, on l'a dit, par des cid, qui permettent de vérifier que le résultat qui vous est servi est bien celui correspondant au hash (principe de l'intégrité). Le contenu ne sera donc pas modifié malintentionellement durant son voyage dans le réseau. 
 + 
 +IPFS utilise la DHT (merkle tree). 
 + 
 +L'utilisation de cid a plusieurs inconvénients. 
 + 
 +D'abord, les adresses (URIs) utilisées sur ces réseaux sont alambiquées et très difficiles à retenir, puisqu'il s'agit de [[def>checksum|hashs]]. 
 + 
 +Un exemple : /ipfs/QmZpc3HvfjEXvLWGQPWbHk3AjD5j8NEN4gmFN8Jmrd5g83/cs/ada.png ... 
 + 
 +... auquel vous pouvez accéder : 
 + 
 +  * [[http://localhost:8080/ipfs/QmZpc3HvfjEXvLWGQPWbHk3AjD5j8NEN4gmFN8Jmrd5g83/cs/ada.png|depuis votre propre instance IPFS]] (si vous l'avez démarré avec ''ipfs daemon''
 +  * ou bien [[https://ipfs.io/ipfs/QmZpc3HvfjEXvLWGQPWbHk3AjD5j8NEN4gmFN8Jmrd5g83/cs/ada.png|via une passerelle IPFS]], la plus utilisée étant ipfs.io mise en place par Cloudflare 
 + 
 +D'autre part, la ressource sur laquelle pointe cette adresse ne peut pas être modifiée ni mise à jour. Si j'ai envie de rajouter une moustache à Ada, je devrai vous communiquer un nouveau lien. Ce n'est pas très pratique si mes envies de dessiner sont fréquentes. Cet inconvénient a deux solutions proposées : DNSLink, et IPNS (voir plus bas). 
 + 
 +==== Stockage des ressources ==== 
 + 
 +IPFS utilise une blockchain pour stoquer les liens IPFS. Les données en elles-mêmes ne sont donc pas stockées dans la blockchain.
  
 Comme dans un essaim BitTorrent, les données sont échangées entre les pairs, donc si vous partagez quelque chose, et que d'autres personnes le récupèrent, elles deviendront seeders à leur tour, ce qui permet aux ressources de rester accessibles même après que vous vous soyiez déconnecté du réseau. Plus exactement, cela maximise les chances qu'elle soit en ligne. Comme dans un essaim BitTorrent, les données sont échangées entre les pairs, donc si vous partagez quelque chose, et que d'autres personnes le récupèrent, elles deviendront seeders à leur tour, ce qui permet aux ressources de rester accessibles même après que vous vous soyiez déconnecté du réseau. Plus exactement, cela maximise les chances qu'elle soit en ligne.
Ligne 13: Ligne 51:
 D'abord, il est possible d'organiser plusieurs noeuds ipfs en cluster. Une instance maître (par exemple, votre ordinateur portable) dispose des fichiers et effectue une mise en partage initiale. Les données seront alors répliquées selon vos souhaits parmi les autres serveurs de votre cluster (comme par exemple un ou plusieurs serveurs distants accessibles 24h/24). D'abord, il est possible d'organiser plusieurs noeuds ipfs en cluster. Une instance maître (par exemple, votre ordinateur portable) dispose des fichiers et effectue une mise en partage initiale. Les données seront alors répliquées selon vos souhaits parmi les autres serveurs de votre cluster (comme par exemple un ou plusieurs serveurs distants accessibles 24h/24).
  
-Une autre façon d'influer sur la permenance d'une donnée est d'utiliser le «pinning» sur une donnée qui se situe dans votre cache de données. Votre noeud dispose en effet d'un stockage limité pour stocker les données que vous sollicitez. Si ce cache est rempli, il supprimera les données anciennes. Le pin sert donc à indiquer qu'une ressource ne doit pas être supprimée du cache. Le pinning peut être sollicité auprès de noeuds autres que les votres, mais il faut pour cela passer par un mécanisme extérieur à IPFS, ce type de service est toutefois [[https://docs.ipfs.io/guides/concepts/pinning/#pinning-services|envisagé]] dans la doc, et des personnes mettent en place leurs propres contrats, comme [[https://twitter.com/ipfspin/status/1053376847596187648|cette personne]] sur twitter. +Une autre façon d'influer sur la permenance d'une donnée est d'utiliser le «pinning» sur une donnée qui se situe dans votre cache de données. Votre noeud dispose en effet d'un stockage limité pour stocker les données que vous sollicitez. Si ce cache est rempli, il supprimera les données anciennes. Le pin sert donc à indiquer qu'une ressource ne doit pas être supprimée du cache. Le pinning peut être sollicité auprès de noeuds autres que les votres, mais il faut pour cela passer par un mécanisme extérieur à IPFS, ce type de service est toutefois [[https://docs.ipfs.io/guides/concepts/pinning/#pinning-services|envisagé]] dans la doc, et des personnes se mettent en place avec leurs propres conditions, souvent en lien avec un système de monétarisation, comme [[https://www.eternum.io/|ce site]] ou bien [[https://twitter.com/ipfspin/status/1053376847596187648|cette personne]] sur twitter. L'hébergement redevient un service payant, bien que pas nécessairement : libre à la communauté de choisir ce qu'elle héberge, et de favoriser tel ou tel contenu.
- +
-Fin 2018, le projet [[https://github.com/ipfs/go-ipfs/commits/master|poursuit son développement]] de façon soutenue+
  
 ===== Comparaison avec le web : IPFS, DNSLink et IPNS  ===== ===== Comparaison avec le web : IPFS, DNSLink et IPNS  =====
Ligne 43: Ligne 79:
 ==== IPNS ==== ==== IPNS ====
  
-[[https://docs.ipfs.io/guides/concepts/ipns/|IPNS]] (Inter Planetary Naming System) sert à fournir un niveau d'indirection en jouant un rôle similaire à DNS pour les sites web. Il s'agit simplement d'un nouveau hash (une clé publique) qui cette fois-ci se réfère à la dernière version d'une ressource, qui peut ainsi évoluer. La personne disposant de la clé privée correspondant à la clé IPNS pourra mettre à jour le registre IPNS en signant les données.+[[https://docs.ipfs.io/guides/concepts/ipns/|IPNS]] (Inter Planetary Naming System) est un système de signature par chiffrement asymétrique permettant d'établir qu'une ressource ne peut être mise à jour que par l'entité qui possède la clé privée. 
 + 
 +Un lien IPNS se présente comme un nouveau hash (une clé publique) qui cette fois-ci se réfère à la dernière version d'une ressource, qui peut ainsi évoluer.  
 + 
 +La personne disposant de la clé privée correspondant à la clé IPNS pourra mettre à jour le registre IPNS en signant les données.
  
 ==== Conclusion ==== ==== Conclusion ====
Ligne 58: Ligne 98:
 Il vous suffit d'indiquer le hash de la ressource à laquelle vous désirez accéder pour qu'elle vous soit servie par HTTP, directement dans votre navigateur. Il vous suffit d'indiquer le hash de la ressource à laquelle vous désirez accéder pour qu'elle vous soit servie par HTTP, directement dans votre navigateur.
  
-Cloudflare propose une telle passerelle, mais d'autres existent.+Cloudflare propose une telle passerelle (et on ne vous en recommande pas l'usage car cet acteur s'accapare un lourd pouvoir d'observation du traffic internet), mais d'autres existent.
  
 Ce type de passerelle est une commodité, et a l'avantage de rendre disponible une ressource pour des personnes non familières à IPFS, qui n'ont pas besoin d'installer ou de comprendre le logiciel. Ce type de passerelle est une commodité, et a l'avantage de rendre disponible une ressource pour des personnes non familières à IPFS, qui n'ont pas besoin d'installer ou de comprendre le logiciel.
- 
 ===== Usages ===== ===== Usages =====
  
Ligne 103: Ligne 142:
  
 Une liste de ces projets est illustrée dans la section «[[https://awesome.ipfs.io/|Awesome]]» du site d'IPFS. Une liste de ces projets est illustrée dans la section «[[https://awesome.ipfs.io/|Awesome]]» du site d'IPFS.
 +
 +On y trouve des choses comme :
 +  * [[https://brig.readthedocs.io/en/latest/|brig]], un outil proposant des fonctions similaires à Git sur IPFS
 +  * un plugin pour beets, logiciel de gestion avancée de collection musicale
 +  * DTube, site de partage de videos similaire à Youtube mis en place par Steemit. Le STEEM est une cryptomonnaie proposant une rétribution selon les votes positifs obtenus lors de la publication d'un contenu (voir leur [[https://steemit.com/faq.html#What_is_Steemit_com|FAQ]]).
 +  * OpenBazaar, plateforme d'achats fonctionnant avec des cryptomonnaies.
 +  * Et d'autres trucs, comme des applications utilisant [[p2p>bitcoin|Ethereum]].
 +
 +Autre initiative, [[https://textile.io/|Textile]] est une collection d'outils permettant l'usage d'IPFS dans votre application (si j'ai bien compris).
  
 ===== Liens ===== ===== Liens =====
Ligne 110: Ligne 158:
   * Journal DLFP qui en parle : http://linuxfr.org/news/ipfs-un-protocole-revolutionnaire-pour-un-hebergement-p2p-resilient-a-la-censure   * Journal DLFP qui en parle : http://linuxfr.org/news/ipfs-un-protocole-revolutionnaire-pour-un-hebergement-p2p-resilient-a-la-censure
   * Un autre article de vulgarisation sur IPFS : https://lucas.bourneuf.net/blog/ipfs.html (si vous connaissez déjà p2pfr et êtes familiers avec les notions de notre [[:glossaire]], il est probable qu'une bonne partie des explications de l'article soit superflue)   * Un autre article de vulgarisation sur IPFS : https://lucas.bourneuf.net/blog/ipfs.html (si vous connaissez déjà p2pfr et êtes familiers avec les notions de notre [[:glossaire]], il est probable qu'une bonne partie des explications de l'article soit superflue)
 +  * Un récapitulatif technique d'IPFS (en anglais) : https://medium.com/@seraya/ipfsf-abd5fccf528
 +  * Rien à voir, les cours de Michel Foucault restaurés, hébergés sur IPFS : https://freefoucault.eth.link/ - utilise une passerelle web qui re-centralise, Michel tu vaux mieux !
  
   * P2P similaires : [[p2p>Dat]]   * P2P similaires : [[p2p>Dat]]
p2p/ipfs.1547049495.txt.gz · Dernière modification: le 09/01/2019 à 16h58 de 111110101011