We’re available from 9 am to 6 pm on weekdays. Contact Us.
Web décentralisé & sécurité

Par Renaud Lifchitz.Pourquoi le web classique est-il obsolète ?Le web a initialement été conçu pour être décentralisé, mais malheureusement aujourd’hui, il se centralise de plus en plus vite, car la plupart d’entre nous dépendent d’une poignée de services fournis par les géants de l’Internet (pour ne pas les citer : Google, Apple, Amazon, et Microsoft, notamment). Cette centralisation rend de plus en plus faciles l’espionnage (comme l’ont montré les récentes affaires impliquant la NSA) et les attaques par dénis de service distribués (DDoS) réussies, par exemple celle du botnet Mirai qui a largement perturbé Twitter.

À l’heure actuelle, les demandes en bande passante, notamment pour le streaming de vidéos, sont considérables, et un seul serveur n’est pas à même de fournir ne serait-ce qu’une seule vidéo parmi celle les plus regardées sur Youtube. Le problème est adressé pour le moment avec des CDN («?Content Delivery Network?»), des réseaux coopératifs complexes de diffusion de contenu, constitués pour certains de dizaines de milliers de serveurs. Les serveurs périphériques de ces CDN sont déployés sur de larges zones géographiques pour être au plus proche des utilisateurs et leur fournir la meilleure qualité de service possible.

Un autre symptôme de ces limites du web actuel est l’utilisation d’URL pour accéder aux contenus. Quand les contenus changent de serveur ou d’hébergeur, il faut penser à mettre à jour ces URL, ou tout du moins les enregistrements DNS des noms d’hôtes utilisés, sinon les contenus ne sont plus accessibles, bien qu’ils soient toujours hébergés. Qui n’est jamais tombé sur une page d’erreur HTTP 404 «?Not found?»??

Le modèle classique du web centralisé est donc déjà largement obsolète et il se pose désormais la question de son remplaçant.

00_0.jpg

Un modèle de web décentralisé : IPFS

Dans la plupart des modèles de web décentralisé proposés, les contenus ne sont plus adressés par une URL indépendante du contenu, mais au contraire intimement liés à ce contenu. Il s’agit en réalité d’un hash du contenu et de ses métadonnées (type de contenu, taille…). Cela présente un avantage considérable : quand le contenu change de serveur ou d’hébergeur, cet adressage par hash reste identique, et le «?lien?» pour accéder au contenu n’est jamais cassé tant que le contenu reste hébergé quelque part.

Parmi ces modèles, focalisons-nous sur IPFS, «?InterPlanetary File System?» (cf. https://ipfs.io), qui malgré son nom à la consonance futuriste, est un des plus matures. IPFS est un protocole et logiciel libre qui fonctionne sans serveur central, et donc sans point unique de défaillance, en mode pair-à- pair (P2P), pour distribuer tout type de contenu. Il est inspiré et repose en partie sur les technologies BitTorrent et Git, et fournit un modèle de stockage par blocs, qui permet de stocker un fichier tout comme une arborescence de fichiers, tout en les désignant par un hash unique totalement indépendant de la localisation géographique du contenu. IPFS dédoublonne automatiquement les fichiers et ne stocke ainsi nativement aucun contenu en double. IPFS garde aussi par défaut toutes les révisions des fichiers et permet ainsi facilement leur restauration.

À titre illustratif, le logo du fameux site Wikipédia a pour hash IPFS QmRW3V9znzFW9M5FYbitSEvd5dQrPWGvPvgQD6LM22Tv8D, et est soit accessible par un client IPFS installé en local sur un poste client avec ce hash, soit à l’aide d’une passerelle IPFS-HTTP publique comme https://ipfs.infura.io/ipfs/QmRW3V9znzFW9M5FYbitSEvd5dQrPWGvPvgQD6LM22Tv8D ou https://ipfs.io/ipfs/QmRW3V9znzFW9M5FYbitSEvd5dQrPWGvPvgQD6LM22Tv8D.

Avec IPFS, les fichiers sont découpés en blocs, téléchargeables indépendamment les uns des autres et en parallèle (cf. figure 2), ce qui répartit la charge et l’utilisation de la bande passante automatiquement. Il est même possible de mettre à disposition du contenu MPEG (MP3 ou MP4), qui sera lu en streaming par IPFS dans n’importe quel navigateur récent, sans la moindre installation de logiciel ou de plugin?! Autres avantages, il n’est pas nécessaire de disposer d’une adresse IP publique pour utiliser IPFS et mettre à disposition des fichiers, ni de mettre en place de translation d’adresse (NAT), ni d’être administrateur de son poste pour installer et utiliser IPFS, ce qui en fait un mode de partage de fichiers plutôt souple.

01_1.jpg

 

La désignation des contenus par des hashs n’étant pas forcément très pratique pour les utilisateurs, IPFS propose son propre système de nommage, IPNS («?InterPlanetary Naming System?») qui peut facilement se combiner avec le système DNS classique ou encore avec les TLD .onion et .bit pour lier du contenu à un nom humainement explicite.

Pour le moment, cependant, par défaut, la réplication du contenu n’est pas automatique, seuls les nœuds volontaires dupliquent réellement le contenu, mais IPFS demeure très pratique pour héberger de façon multiple le même contenu, en répliquant un hash unique correspondant à une arborescence complète de fichiers. Dans un futur proche, il est envisagé d’inciter économiquement les nœuds à dupliquer le contenu très demandé en les rémunérant à l’espace alloué à l’aide d’une cryptomonnaie.

Les implémentations d’IPFS sont encore changeantes, et il faudra sans doute auditer ses futures versions pour voir si IPFS tient aussi ses promesses côté sécurité, notamment quelle garantie il peut apporter sur la confidentialité du contenu stocké et transporté. Mais il propose dès à présent une solution d’avenir pour le stockage décentralisé de contenus.

Un autre système d’hébergement décentralisé de contenu prometteur est Swarm (cf. http://swarmgateways.net/bzz:/theswarm.eth/), qui est une couche de service de la blockchain Ethereum (à ne pas confondre avec Docker Swarm), qui elle aussi propose une incitation économique au stockage, pour favoriser le stockage décentralisé. Les sites web d’IPFS et de Swarm sont d’ailleurs eux-mêmes stockés de manière complètement décentralisée?! D’autres technologies concurrentes sont Sia (https://sia.tech/) et StorJ (https://storj.io/). Dans quelques années, à l’usage, nous verrons quels systèmes de stockage s’imposeront.

 

La blockchain : un hébergement décentralisé d’applications ?

Contrairement aux systèmes de stockage décentralisé, la blockchain n’est pas du tout adaptée au stockage de données pour de multiples raisons : taille maximale des transactions, taille maximale des blocs, nombre de transactions maximales par bloc, coût de la transaction, et donc fatalement un coût de stockage prohibitif avec des performances médiocres. Par contre, elle a en contrepartie d’autres avantages bien singuliers. Certaines blockchains peuvent en effet héberger des smart contracts, que l’on peut assimiler à des petits programmes s’exécutant de manière autonome et décentralisée. Parmi elles, citons notablement Ethereum qui est certainement la blockchain la plus mature d’entre elles. En plus d’être décentralisée, la blockchain est même totalement distribuée (cf. figure 1)

Le réel avantage des blockchains, en plus d’être le support de transactions sécurisées, est donc leur possibilité d’héberger et d’exécuter de petits programmes autonomes sans point unique de défaillance. Ces programmes sont en effet exécutés sur tous les nœuds clients de la blockchain et un consensus des résultats est réalisé pour savoir quelle est la bonne exécution au cas où certains nœuds sont compromis. Tant que 50 % des nœuds à minima sont sains, les smart contracts sont totalement impiratables, incensurables et immunisés contre les dénis de service?! Cela représente un formidable levier d’opportunités pour le développement de systèmes informatiques sûrs et tout le temps disponibles.

 

Perspectives et risques

Le web décentralisé offre donc bien des opportunités, celui d’un web possiblement sans déploiement complexe, sans censure, sans déni de service et sans temps d’arrêt, aussi bien pour les applications que pour le stockage de contenu. Malheureusement, ces atouts pourraient très vite être détournés pour être utilisés à mauvais escient. En plus de l’hébergement de contenu illégal, il est fort probable que nous voyions arriver dans les mois ou années à venir des attaques informatiques reposant sur ces principes, par exemple des ransomwares où le centre de contrôle, de génération de clés ou de traitement des rançons sont totalement décentralisés, tant par leur espace de nom, leur hébergement de contenu que par leur logique applicative. Comment parvenir à stopper ce genre d’attaques?? Ces problèmes seront-ils acceptés, bloqués techniquement ou traités par une gouvernance mise en place pour l’occasion?? L’avenir nous le dira certainement...