Tous les articles

8 min de lecture

Prouver un seul fichier d'un lot Merkle : le certificat d'inclusion

Une fois de nombreuses empreintes de fichiers publiées sous une seule racine de Merkle sur Cardano, un certificat d'inclusion est un petit fichier téléchargeable qui prouve qu'un fichier précis faisait partie de ce lot — vérifiable dans votre propre navigateur, sans aucune confiance envers CardanoWall, pour toujours.

Lorsque vous publiez un lot de fichiers sur Cardano, une seule petite empreinte se retrouve sur la chaîne : une unique racine de Merkle qui tient lieu de l'ensemble de la liste. La publication reste ainsi peu coûteuse. Mais cela soulève une question évidente — si seule la racine est sur la chaîne, comment prouver par la suite qu'un fichier bien précis faisait réellement partie du lot ?

La réponse, c'est un certificat d'inclusion : un petit fichier que vous pouvez télécharger et qui prouve que l'empreinte d'un fichier précis faisait partie de ce lot publié. N'importe qui peut le vérifier dans son propre navigateur, face à n'importe quel explorateur Cardano public, sans aucune confiance envers CardanoWall. Et comme la preuve est intégrée au fichier, elle continue de fonctionner pour toujours.

C'est le compagnon de tous les jours du regroupement Merkle. Le regroupement vous permet de vous engager sur des milliers de fichiers d'un coup ; un certificat d'inclusion vous permet d'en ressortir un seul et de le prouver plus tard.

Quel problème un certificat d'inclusion résout-il ?

Imaginez que vous ayez publié un millier de fichiers en un seul lot l'an dernier — un dossier de contrats, un ensemble d'artefacts de version, une journée de journaux d'audit. Tous ont été repliés dans une seule racine de Merkle, et cette racine a été horodatée sur Cardano. Peu coûteux, compact, terminé.

Voilà qu'on conteste un seul de ces fichiers. Une contrepartie demande peut-être : « Pouvez-vous montrer que ce contrat précis existait avant l'échéance ? » La blockchain ne détient que la racine, ni le fichier ni la liste. Pointer la transaction prouve que un lot d'une taille connue a existé — mais pas que ce document-là s'y trouvait.

Un certificat d'inclusion comble exactement ce manque. C'est un petit fichier autonome qui dit, en substance : « l'empreinte de ce fichier était l'élément numéro 42 du lot situé derrière cette transaction Cardano, et voici le calcul exact que n'importe qui peut exécuter pour le confirmer. » Vous remettez le certificat, et l'autre partie le vérifie sans avoir besoin que vous, votre compte, ou même notre site web existent encore.

Que contient réellement un certificat ?

Voyez-le comme un dossier de preuves scellé en trois parties.

  • L'empreinte de votre fichier. Pas le fichier lui-même — seulement son empreinte. Le certificat ne transporte jamais le contenu de votre document : vous pouvez donc le partager sans risque, même lorsque le fichier est privé.
  • Le chemin de preuve. Une courte liste d'empreintes « voisines » qui permet à quiconque de replier l'empreinte de votre fichier en remontant l'arbre de Merkle pour arriver exactement à la racine publiée. C'est cette partie qui rend le certificat autonome : le calcul est intégré, de sorte que personne n'a jamais à vous réclamer le reste du lot.
  • L'ancrage sur la blockchain. La transaction Cardano dans laquelle la racine a été publiée, l'heure que la blockchain a enregistrée pour elle, et quelques liens vers des explorateurs publics pour que chacun puisse la consulter par lui-même.

Il comprend aussi une ligne claim en clair qui énonce ce que le certificat prouve, et une courte note sur la manière de le vérifier de façon indépendante. Un même certificat peut couvrir un fichier ou plusieurs à la fois — chacun reçoit son propre chemin de preuve et une marque verified explicite.

CardanoWall peut vous remettre ce dossier en plusieurs formats : un fichier JSON (l'original lisible par machine que des outils peuvent revérifier) et un PDF (une version lisible et imprimable pour les personnes et les dossiers juridiques, avec le JSON glissé à l'intérieur en pièce jointe, de sorte que le document reste vérifiable par machine).

Comment en obtenir un ?

Vous le fabriquez vous-même, sur la page de la transaction, dans votre navigateur.

Ouvrez la page publique de la transaction qui a porté le lot. Parce que le record contient une racine de Merkle, la page propose un contrôle d'inclusion. À partir de là, deux petites étapes :

  1. Indiquez-lui quel fichier. Collez l'empreinte du fichier, ou déposez simplement le fichier sur la page — votre navigateur en calcule l'empreinte localement et ne le téléverse jamais.
  2. Lisez le résultat. La page récupère la liste de feuilles du lot, recalcule la preuve et vous affiche un résultat clair, vert (votre fichier est dans le lot) ou rouge (il n'y est pas).

Quand c'est vert, vous téléchargez le certificat — JSON, PDF, ou les deux. Ce téléchargement, c'est la preuve portable. Envoyez-le par e-mail, classez-le, joignez-le à un contrat, déposez-le dans une salle de données. Il est désormais entièrement indépendant de CardanoWall.

Tout se passe côté client. Nous ne générons pas le certificat sur un serveur en vous demandant de lui faire confiance ; c'est votre propre navigateur qui fait le travail, et c'est précisément pour cela que le résultat est digne de confiance.

Pourquoi personne n'a-t-il à faire confiance à CardanoWall ?

Parce que rien, dans le certificat, ne dépend de notre honnêteté, de notre présence en ligne, ni même de notre survie.

Deux affirmations sont contenues dans un certificat d'inclusion, et toutes deux sont des choses que n'importe qui peut vérifier par lui-même :

  • Votre fichier était dans le lot. Un vérificateur replie l'empreinte de votre fichier le long du chemin de preuve et confirme qu'elle reproduit la racine publiée. C'est de la pure arithmétique — elle ne requiert que le fichier de certificat, rien d'autre. Si un seul bit de votre fichier avait changé, le repliement aboutirait à une racine différente et le contrôle échouerait.
  • La racine est réellement sur Cardano. Un vérificateur recherche la transaction sur n'importe quel explorateur Cardano public — Cardanoscan, AdaStat, celui de son choix — et confirme que la même racine figure dans le record sur la chaîne. Aucun serveur de CardanoWall n'intervient dans cette recherche.

Réunis, ces deux contrôles prouvent que le fichier existait à l'heure que la blockchain a apposée sur cette transaction, ou avant. Et cette heure provient de Cardano, pas de nous. Nous ne pouvons ni faire avancer un bloc, ni antidater une transaction, ni réécrire discrètement l'histoire ; c'est la blockchain qui décide du moment où les choses se sont produites. C'est tout l'intérêt de l'ancrage à une chaîne publique plutôt que de vous demander de faire confiance à l'horloge d'une entreprise.

Si CardanoWall disparaissait demain, chaque certificat que nous avons émis continuerait de se vérifier. L'outil en ligne de commande open source cardanowall, et tout outil indépendant qui comprend le format, peuvent réexécuter les mêmes contrôles.

flowchart LR
  A["Votre fichier"] -->|"empreinte locale"| B["Empreinte du fichier"]
  B --> C["Replier le long du chemin de preuve"]
  C --> D["Racine recalculée"]
  E["Transaction Cardano<br/>(explorateur public)"] --> F["Racine publiée + horodatage de bloc"]
  D -->|"doit correspondre"| F
  F --> G["Existait à l'horodatage<br/>de bloc, ou avant"]

Que ne prouve pas un certificat ?

Un certificat est précis sur une seule chose et muet sur tout le reste — et être honnête à ce sujet, c'est précisément ce qui le rend digne de confiance.

Il prouve que l'empreinte d'un fichier précis existait à l'horodatage de bloc de la blockchain, ou avant, et qu'elle faisait partie du lot engagé. C'est tout. En particulier :

  • Il ne prouve pas qui a créé le fichier. Un certificat ne dit rien sur la paternité. N'importe qui aurait pu publier le lot. (Dans Label 309, la paternité est une signature distincte et optionnelle, jamais présumée — voir ce qu'une preuve ne prouve pas.)
  • Il ne prouve pas que le fichier est vrai, exact ou licite. Il prouve que les octets existaient avant une certaine date, non que ce qu'ils affirment est correct.
  • Il ne prouve pas que le fichier est la seule version, ni la version originale. Il prouve que ce fichier précis figurait dans le lot — non qu'aucune autre version n'existe.
  • Ce n'est pas un horodatage « qualifié ». C'est un horodatage ancré sur la blockchain, de la même famille que les autres horodatages blockchain. C'est une solide preuve corroborante du moment, mais ce n'est pas un horodatage électronique qualifié eIDAS émis par une autorité réglementée. Si un processus exige expressément un horodatage qualifié, ceci ne suffit pas à lui seul à satisfaire cette exigence (voir preuve d'existence et autorité d'horodatage).

La valeur du certificat tient justement à ce qu'il n'affirme rien de trop. Il fixe le moment et l'intégrité, et il laisse le sens aux documents et aux personnes qui l'entourent.

Quel rapport avec OpenTimestamps ?

Si vous connaissez déjà OpenTimestamps, l'idée vous semblera familière.

OpenTimestamps vous donne un petit fichier de preuve .ots : un horodatage portable et autonome que n'importe qui peut vérifier ensuite sans faire confiance au service qui l'a créé. Un certificat d'inclusion est une chose de même nature — un fichier de preuve portable que vous pouvez remettre à qui vous voulez — avec deux différences qu'il vaut la peine de connaître.

L'autorité d'horodatage est la blockchain Cardano, l'heure étant prise dans le bloc qui a porté votre racine, plutôt que dans un serveur calendaire. Et le calcul de la preuve repose sur la même construction en arbre de Merkle utilisée ailleurs dans le standard, de sorte qu'un seul certificat peut extraire un fichier d'un grand lot engagé. Même esprit, ancrage différent.

Pour une comparaison plus complète côte à côte, voir comment la preuve d'existence se compare à OpenTimestamps.

En bref

Publiez de nombreux fichiers sous une seule racine de Merkle et vous maintenez le coût blockchain au minimum. Un certificat d'inclusion, c'est le moyen de prouver plus tard que n'importe lequel de ces fichiers faisait réellement partie du lot : un petit téléchargement, vérifiable dans votre propre navigateur, face à n'importe quel explorateur Cardano public, l'heure étant fournie par la chaîne et sans aucune confiance envers CardanoWall. Le chemin de preuve est intégré au fichier, de sorte que le certificat continue de fonctionner bien après la disparition de tel outil, de tel compte ou de telle entreprise.

Pour aller plus loin

merkleproof-of-existencelabel-309