Aujourd'hui, nous avons le plaisir de vous présenter la passerelle IPFS de Cloudflare, un moyen facile d'accéder au contenu du système de fichiers interplanétaire (IPFS) sans avoir à installer et exécuter de logiciel particulier sur votre ordinateur. Nous espérons que notre passerelle, hébergée sur cloudflare-ipfs.com, servira de plate-forme pour de nombreuses nouvelles applications Web hautement fiables et sécurisées. Notre passerelle IPFS est le premier produit lancé dans le cadre de notre projet de passerelle Web distribuée, qui englobera à terme tous nos projets destinés à soutenir de nouvelles technologies Web distribuées.
Cet article vous présentera brièvement IPFS. Nous avons également rédigé un article de blog pour expliquer ce que nous avons bâti à partir de notre passerelle, ainsi que des documents expliquant comment faire pour diffuser votre propre contenu via notre passerelle avec votre propre nom d’hôte personnalisé.
Petite piqûre de rappel concernant IPFS
Habituellement, lorsque vous accédez à un site Web à partir de votre navigateur, votre navigateur recherche le(s) serveur(s) d'origine qui sont le référentiel le plus complet et centralisé pour le contenu du site. Il envoie ensuite une requête de votre ordinateur au serveur d'origine, où qu'il soit dans le monde, et ce serveur renvoie le contenu à votre ordinateur. Ce système a bien fonctionné sur Internet pendant plusieurs décennies, mais il comporte un inconvénient de taille : la centralisation rend impossible la conservation du contenu en ligne plus longtemps que sur les serveurs dont il provient. Si ce serveur d'origine est piraté ou détruit par une catastrophe naturelle, le contenu n'est plus disponible. Si le propriétaire du site décide de le retirer, le contenu disparaît. Bref, le mirroring n'est pas une solution plébiscitée par la plupart des plates-formes (Always Online de Cloudflare est une exception notable).
Le système de fichiers interplanétaire (IPFS) entend changer cela. IPFS est un système de fichiers peer-to-peer composé de milliers d'ordinateurs à travers le monde, chacun d'eux stockant des fichiers pour le réseau. Il peut s'agir de tous types de fichiers : des photos de chats, des modèles 3D ou même des sites Web entiers. Plus de 5 000 000 000 de fichiers avaient déjà été transférés sur IPFS.
Comparaison entre IPFS et le Web traditionnel
Il existe deux grandes différences entre IPFS et le Web tel que nous le concevons aujourd'hui.
La première tient au fait qu'avec IPFS, tout le monde peut mettre en cache et diffuser n'importe quel contenu, et ce gratuitement. À l'heure actuelle, avec le Web traditionnel, la plupart des gens comptent sur les grands fournisseurs d'hébergement qui se trouvent loin de chez eux pour stocker du contenu et le diffuser sur le reste du Web. Si vous voulez créer un site Web, vous devez payer l'un de ces grands fournisseurs afin que celui-ci s'en charge pour vous. Avec IPFS, n'importe qui peut faire de son ordinateur un nœud dans le système et commencer à transmettre des données. Peu importe que vous travailliez sur un Raspberry Pi ou que vous utilisiez le plus gros serveur du monde. Vous pouvez toujours être un nœud productif du système.
La deuxième différence essentielle est que les données portent sur le contenu plutôt que sur l'emplacement. C'est une différence subtile, mais les ramifications sont importantes, qui valent donc la peine d'être analysées.
Actuellement, lorsque vous ouvrez votre navigateur et allez sur example.com, vous dites au navigateur « Va me chercher les données stockées sur l'adresse IP d'example.com » (93.184.216.34, en l’occurrence). Cette adresse IP identifie le lieu où le contenu auquel vous souhaitez accéder est stocké sur le réseau. Vous envoyez ensuite une requête au serveur à cette adresse IP pour obtenir le contenu d'« example.com » et le serveur renvoie les informations souhaitées. Ainsi, au niveau le plus élémentaire, vous dites au réseau où il doit chercher et le réseau renvoie ce qu'il a trouvé.
IPFS renverse toute cette logique.
Avec IPFS, chaque bloc de données stocké dans le système subit un hachage cryptographique de son contenu, c'est-à-dire une longue suite de lettres et de chiffres qui lui est propre. Lorsque vous souhaitez obtenir un élément de données dans IPFS, vous demandez le fichier par son hachage. Ainsi, au lieu de dire au réseau « Récupère le contenu stocké sur 93.184.216.34 », vous lui dites « Récupère le contenu qui a une valeur de hachage de QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy
» (QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy
se trouve être le hachage d'un fichier.txt contenant la chaîne « J'essaie IPFS »).
En quoi est-ce si différent ?
N'oubliez pas qu'avec IPFS, vous dites au réseau ce qu'il doit rechercher, et le réseau détermine où il doit chercher.
Pourquoi cette différence est-elle significative ?
Tout d'abord, cela rend le réseau plus stable. Le contenu dont la valeur de hachage est QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy
peut être enregistré sur des dizaines de nœuds, donc si un nœud qui mettait ce contenu en cache disparaît, le réseau va le rechercher simplement sur un autre nœud.
Deuxièmement, cela instaure automatiquement un certain degré de sécurité. Supposons que vous connaissez la valeur de hachage d'un fichier que vous souhaitez obtenir. Vous dites donc au réseau : « Va me chercher le fichier dont la valeur de hachage est QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy
» (le fichier example.txt ci-dessus). Le réseau réagit en envoyant les données. Lorsque vous recevez toutes les données, vous pouvez les hacher à nouveau. Si les données ont été modifiées pendant le transit, la valeur de hachage que vous obtiendrez sera différente de celle que vous avez demandée. On peut considérer le hachage comme l'empreinte digitale unique du fichier. Si on vous renvoie un fichier différent de celui que vous pensiez recevoir, son empreinte digitale sera différente. Cela signifie que le système a un dispositif intégré permettant de savoir si le contenu a été altéré ou non.
Précisions concernant les adresses IPFS et le hachage cryptographique
Étant donné que nous avons consacré un certain temps à expliquer les spécificités de ce système de gestion de contenu, il convient de nous intéresser un peu à la structure des adresses IPFS. Chaque adresse dans IPFS est un multi-hachage, ce qui signifie que l'adresse contient à la fois des informations sur l'algorithme de hachage utilisé et sur le hachage produit en une seule séquence. Les multi-hachages IPFS se divisent en trois parties distinctes : le premier octet du multi-hachage indique l’algorithme de hachage utilisé pour produire le hachage ; le second octet indique la longueur du hachage et les autres octets sont la valeur sortie par la fonction de hachage. Par défaut, IPFS utilise l'algorithme SHA-256 qui produit un hachage de 32 octets. Cela correspond à la séquence « Qm » en Base58 (l'encodage par défaut des adresses IPFS), c'est pourquoi toutes les adresses IPFS en exemple dans cet article sont de type « Qm... ».
Bien que SHA-256 soit l'algorithme de référence aujourd'hui, ce format de multi-hachage permet au protocole IPFS de prendre en charge les adresses produites par d'autres algorithmes de hachage. Ainis, le réseau IPFS peut passer à un algorithme différent si un jour on découvre des défauts au SHA-256. Si quelqu'un hache un fichier avec un autre algorithme, l'adresse de celui-ci commence avec des caractères autres que « Qm ».
La bonne nouvelle est que, pour le moment, on estime que SHA-256 présente un certain nombre de qualités qui en font un puissant algorithme de hachage cryptographique. La plus importante de ces qualités est sa résistance aux collisions. On parle de collision lorsque deux fichiers différents produisent le même hachage quand ils sont soumis à l'algorithme SHA-256. Pour comprendre pourquoi il est important d'éviter les collisions, prenons un cas concret. Supposons qu'Alice, utilisatrice d'IPFS, transfère un fichier haché, et que Bruno, un autre utilisateur, transfère un fichier différent dont le hachage est identique. Si cela se produit, alors il existe deux fichiers différents sur le réseau ayant exactement la même adresse. Ainsi, si une troisième personne, Carole, envoie une requête IPFS concernant le contenu à cette adresse, elle ne sait pas nécessairement si elle va recevoir le dossier de Bruno ou d'Alice.
L'algorithme SHA-256 réduit considérablement les risques de collision. Étant donné que SHA-256 calcule un hachage à 256 bits, celui-ci peut produire 2^256 adresses IPFS différentes. Par conséquent, la probabilité qu'il existe deux fichiers dans IPFS provoquant une collision est faible. Très faible. Si vous souhaitez en savoir plus, la page Wikipedia Attaque des anniversaires comporte un excellent tableau montrant avec précision à quel point les collisions sont peu probables avec un algorithme de hachage suffisamment puissant.
Comment accéder aux contenus sur IPFS ?
Maintenant que nous avons expliqué en détail ce qu'est IPFS, vous vous demandez probablement comment l'utiliser. Il existe plusieurs façons d'accéder au contenu qui a été stocké dans le réseau IPFS, mais nous allons aborder ici deux méthodes parmi les plus répandues. La première consiste à télécharger IPFS sur votre ordinateur. Cela fait de votre machine un nœud du réseau IPFS, et c'est le meilleur moyen d'interagir avec le réseau si vous voulez vous lancer dans le bain. Si vous avez envie de jouer avec IPFS, vous pouvez télécharger l'implémentation Go ici.
Mais comment faire si vous voulez accéder au contenu stocké sur IPFS sans avoir à exécuter un nœud en local sur votre machine ? C'est là que les passerelles IPFS entrent en jeu. Les passerelles IPFS sont des nœuds tiers qui récupèrent le contenu du réseau IPFS et vous le transmettent via HTTPS. Pour utiliser une passerelle, vous n'avez pas besoin de télécharger un logiciel ou de taper un code. Il vous suffit d'ouvrir un navigateur et de saisir le nom de la passerelle et le hachage du contenu que vous recherchez, et la passerelle transmettra le contenu à votre navigateur.
Imaginons que vous vouliez accéder au fichier example.txt précédent, dont la valeur de hachage est QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy
, et qu'il existe une passerelle publique accessible à l'adresse suivante : https://example-gateway.com
.
Pour accéder à ce contenu, il vous suffit d'ouvrir un navigateur et de taper
https://example-gateway.com/ipfs/QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy
https://example-gateway.com/ipfs/QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy
et vous récupérerez les données stockées dans ce hachage. La combinaison du préfixe /ipfs/ et du hachage est appelée chemin d’accès au fichier. Vous devez toujours fournir un chemin d'accès complet pour accéder au contenu stocké dans IPFS.
Que peut-on faire avec la passerelle de Cloudflare ?
Pour commencer, vous pouvez accéder à chacun des milliards de fichiers stockés sur IPFS depuis votre navigateur. Mais vous pouvez faire bien plus. Avec la passerelle de Cloudflare, vous pouvez également créer un site Web entièrement hébergé sur IPFS, mais toujours accessible à vos utilisateurs avec un nom de domaine personnalisé. De plus, nous délivrerons à tout site Web connecté à notre passerelle un certificat SSL gratuit, garantissant qu'il est protégé contre l'espionnage et la manipulation. Pour en savoir plus à ce sujet, consultez les documents de développement de la passerelle Web distribuée.
Nous avons imaginé un exemple amusant en utilisant les archives Kiwix de tous les différents sites StackExchange et construit un moteur de recherche distribué en recourant uniquement à IPFS. Vous trouverez plus d'informations ici.
Gestion des abus
IPFS étant un réseau peer-to-peer, des utilisateurs peuvent être amenés à partager des contenus malveillants. Nous ne cautionnons ni ne tolérons ces pratiques. Cependant, tout comme Cloudflare avec ses clients plus traditionnels, la passerelle IPFS de Cloudflare est simplement un cache devant IPFS. Cloudflare est incapable de modifier ou de supprimer du contenu sur le réseau IPFS. Si vous découvrez un contenu inapproprié diffusé par la passerelle IPFS de Cloudflare, vous pouvez recourir au mécanisme de signalement des abus standard décrit ici.
Pour un avenir sous le signe du partage
IPFS n'est pas la seule technologie ouvrant la voie vers une nouvelle conception décentralisée du Web. Cloudflare se réjouit des possibilités offertes par ces nouvelles technologies, et nous considérons notre passerelle comme un outil permettant de combler le fossé entre le Web traditionnel et la nouvelle génération de technologies Web distribuées dont IPFS est le fer de lance. En permettant à tout un chacun d'explorer le contenu IPFS dans son navigateur, nous fortifions l'écosystème et contribuons à sa croissance. Tout comme en 2010, lorsque Cloudflare a été lancé et a redéfini la notion de site Web en apportant une sécurité, des performances et une disponibilité que seuls les géants du Web étaient en mesure d'offrir auparavant, nous pensons que la passerelle IPFS va dynamiser les contenus distribués sur le Web.
Dieter Shirley, directeur technique de Dapper Labs et co-fondateur de CryptoKitties a déclaré :
Nous voulions héberger des images de CryptoKitties sur IPFS depuis notre lancement, mais la technologie n'était tout simplement pas encore prête. L'annonce de Cloudflare fait passer IPFS d'une expérience prometteuse à un puissant outil de déploiement commercial. Fantastique !
La passerelle IPFS est une solution séduisante, mais elle ne représente qu'une partie du chemin à parcourir. Il existe d'autres technologies Web distribuées tout aussi intéressantes qui pourraient bénéficier de l'énorme réseau mondial de Cloudflare, et nous étudions actuellement ces possibilités. Si la création d'un meilleur Internet avec Cloudflare vous intéresse, nous embauchons !
Abonnez-vous au blog pour recevoir chaque jour des bulletins d'information.