certifier document numerique

Certifier l’existence d’un document numérique

Dans le passé, de nombreux chercheurs en informatique se sont intéressés à trouver un moyen de certifier l’existence d’un document numerique à un moment précis (date et heure). Cela s’appelle timestamping. Jusqu’à présent, cela s’est toujours fait par l’intervention d’un notaire ou d’une autre autorité pouvant certifier l’existence du document. La technologie de la blockchain, introduite par bitcoin, a cependant complètement changé la donne en rendant disponible un registre universel, ouvert, accessible à tous et immuable, capable de créer une sorte de calendrier partagé et distribué.

Bitcoin, nous le savons tous, est un système économique décentralisé, utilisé pour effectuer des transactions entre des personnes éloignées qui ne se connaissent pas, avec une sécurité maximale et sans intermédiaire financier. En pratique, bitcoin nous permet d’échanger de la valeur en appuyant notre sécurité sur un protocole mathématique précis et non modifiable, capable d’assurer la confiance de toutes les parties concernées.

La blockchain peut résoudre le problème de la certification?

Mais comment bitcoin peut-il également aider à résoudre le problème de la certification? La réponse se trouve dans la chaîne de blocs utilisée par bitcoin. La blockchain est en fait un registre comptable dans lequel les transactions sont en séquence dans un ordre temporel acceptée par tous les nœuds du réseau (consensus) et non modifiable. La blockchain de bitcoin certifie ensuite de manière temporelle précise chaque transaction qu’elle contient, comme s’il s’agissait d’une véritable “horloge” du passé, absolument immuable.
Pour toutes ces raisons, nous pouvons donc penser à une opération particulière qui peut inscrire dans ce registre non pas un mouvement comptable comme cela se fait habituellement, mais une autre information numérique. On peut donc utiliser la chaîne de blocs pour stocker une petite partie des informations dans un bloc afin de certifier que ces informations existaient réellement à ce moment précis. Ces informations deviendraient immuables et irréfutables.

L’opérateur OP_RETURN

Cela est possible depuis la version 0.9 du bitcoin core qui a introduit l’opérateur RETURN. Avec cet opérateur, nous pouvons écrire 80 bytes de données non liées à un paiement, sur une “output” de transaction. Dans ce cas, cependant, l’opérateur RETURN crée une output non consommable qui ne doit pas être enregistrée dans le UTXO set. De cette façon, la chaîne de blocs peut stocker les données sans créer de fausses UTXO.

Vous vous demandez peut-être : que fais-je avec seulement 80 bytes de données ? Aucun document n’est si petit que je puisse traiter si peu d’informations. Mais c’est là que la magie des mathématiques et du cryptage entre en jeu. En fait, nous n’allons pas écrire les données correspondant au document, mais un “digest” de celui-ci, c’est-à-dire le résumé du document.

L’hash du document

Nous pouvons facilement calculer un hash sha256 du document (32 bytes) et sauvegarder cette information dans la transaction. Le hash du document est un nombre hexadécimal qui représente le “résumé” du document, il n’est pas inversible et n’est pas sujet à collision (on ne peut pas trouver deux données différentes avec le même hash – ou plutôt il y a une très faible probabilité que cela se produise). De plus, le hash est déterministe, dans le sens où chaque fois que je le calcule sur le même document, j’obtiens toujours le même résultat.

Ce nombre peut être utilisé pour vérifier l’intégrité d’un document, en fait il suffit de changer un byte du document numérique pour obtenir un digest complètement différent. Donc, si nous prenons un document numérique, calculons son hash et enregistrons ensuite ce hash dans une transaction de bitcoin, nous aurons certifié l’existence de ce document à ce moment précis, de manière sûre, immuable et irréfutable.

Pour cette opération, les 80 bytes sont suffisants et nous avons également la possibilité d’ajouter une autre petite quantité de données à l’hash du document qui est en fait de juste 256 bits.

tx return transaction

Ce type de certification nécessite une transaction. Dans cette transaction, il n’y a aucune dépense de bitcoin à l’exception des frais payés aux mineurs pour la vérification de la transaction elle-même. Comme d’habitude, après 6 confirmations, nous pouvons considérer que la transaction est complètement sécurisée et ancrée dans la blockchain, puis le document vérifié.

Comment pouvez-vous vérifier par la suite que le document existait à cette date ? il suffit de conserver l’identifiant de la transaction (dans notre cas, une sorte de reçu de certification). à ce stade, n’importe qui peut vérifier sur la blockchain cette transaction, visualiser le hash enregistré ci-dessous à l’opérateur RETURN pour confirmer que ce hash est présent.