Tech●●●●●Difficulty 3 of 5

Comment vérifier un morceau d'un énorme fichier sans télécharger tout le reste ?

Une seule empreinte au sommet d'un arbre peut garantir tous les blocs en dessous, ce qui permet de vérifier une toute petite branche au lieu de toute la forêt.

▶ Lancer l'histoire

Imagine un fichier partagé sur un million d'ordinateurs, découpé en milliers de petits morceaux. Comment vérifier qu'un seul morceau est authentique sans télécharger et hacher tous les autres ? Un arbre de Merkle résout ce problème en hachant les données par couches : chaque feuille porte l'empreinte d'un bloc de données, et chaque nœud au-dessus porte l'empreinte des empreintes de ses enfants, jusqu'à une seule empreinte au sommet, appelée racine, qui représente toute la structure.

Diagramme d'un arbre de hachage binaire montrant les empreintes des feuilles se combinant vers une empreinte racine unique
Chaque paire d'empreintes se combine en une empreinte parente, jusqu'à une seule racine au sommet.Photo: Azaghal · CC0

Cette structure en couches rend la vérification peu coûteuse. Prouver qu'une feuille appartient à l'arbre demande un nombre d'empreintes proportionnel au logarithme du nombre total de feuilles, alors qu'une simple liste d'empreintes en demanderait un nombre proportionnel à toutes les feuilles elles-mêmes. En pratique, cela signifie qu'on peut télécharger une petite branche de l'arbre et vérifier son intégrité immédiatement, sans attendre que tout l'arbre soit disponible.

L'idée n'est pas récente : elle porte le nom de Ralph Merkle, qui l'a brevetée en 1979, bien avant qu'elle ne devienne une infrastructure essentielle. Aujourd'hui, on la retrouve dans les réseaux pair-à-pair de Bitcoin et d'Ethereum, parmi beaucoup d'autres systèmes, généralement construits avec une fonction de hachage cryptographique comme SHA-2 pour hacher chaque couche.

Comme toute astuce ingénieuse, elle a un point faible connu : comme la racine de Merkle à elle seule ne révèle pas la profondeur de l'arbre, un attaquant peut parfois construire un document totalement différent qui produit la même racine, une attaque dite de seconde préimage. C'est pourquoi certaines implémentations ajoutent une protection, comme marquer différemment les empreintes des feuilles et celles des nœuds internes, pour qu'un document falsifié ne puisse pas discrètement se faire passer pour l'original.

Quiz

0/3

  1. 1.Pourquoi vérifier une feuille dans un arbre de Merkle demande-t-il bien moins d'empreintes que dans une simple liste de hachage ?
  2. 2.Que permet de faire l'empreinte racine unique d'un arbre de Merkle ?
  3. 3.Quelle faiblesse exploite l'attaque de seconde préimage sur les arbres de Merkle ?

Récap

Une seule empreinte racine au sommet peut garantir tout un arbre de données en dessous.

Le fait surprenant · Vérifier une feuille parmi un million n'exige qu'environ vingt empreintes grâce à la structure logarithmique de l'arbre.

Sources (1)

Pas de source, pas d'affirmation. Chacun des 12 faits de cette leçon renvoie à au moins une de ces sources.

  1. [1]Merkle tree · Wikipedia
D'autres leçons · 💻 Tech (3) Toutes les leçons « Tech » →

Une lumière de plus sur ta carte.

Reçois une leçon comme celle-ci chaque jour, sur les sujets que tu aimes. Gratuit, en deux ou cinq minutes.

Récupère la carte à partager de cette leçon ↗