Le 28 septembre 2017, j’étais invité par eFutura pour introduire une table ronde concernant la blockchain des archivistes. Exercice inédit pour moi qui avais pour objectif d’introduire un maximum de concepts en seulement 10 minutes. Autant dire que c’était très chaud.Je vous livre ici le support légèrement modifié ainsi qu’un résumé de la présentation.Si au premier abord, vous pouvez vous demander si on peut trouver un rapport entre blockchain et archiviste. Quand on parle de blockchain, on pense automatiquement à bitcoin et là il y a tout un imaginaire qui s’offre à nous :

Drogues, Armes, Trafics humains

Imaginaire de la blockchain

Les archivistes vont-ils s’échanger une monnaie appelée archivecoin ? Et se lancer dans le trafic de « trésors nationaux »? Pourquoi pas. Nous connaissons tous leur goût pour les endroits sombres (mais surtout pas trop humides).Il existe cependant aussi d’autres outils quotidiens de l’archiviste qui se rapprochent de la blockchain et qui méritent que nous les observions de plus près.

La journalisation NF Z42-013

Le rapport entre blockchain et archiviste se trouve dans la norme NF Z42-013:2009 dans sa partie journalisation.Quand elle parle de l’attestation, la norme indique les choses suivantes :

L’attestation doit contenir au minimum l’empreinte des documents déposés.

Afin d’empêcher la modification d’un enregistrement effectué dans le journal de cycle de vie des archives, il est obligatoire d’horodater celui-ci au minimum une fois par jour y compris en cas d’absence d’activité.

La continuité de la journalisation doit être assurée.

Dans les clauses de sécurité pour les tiers-archiveurs électroniques (TAE), le norme indique que ce dernier doit garantir la sécurité et l’intégrité du journal du cycle de vie des archives et du journal des événements.Dans un système d’archivage électronique, il y a différentes manières de procéder afin de produire les journaux. Toutes ces manières respectent les trois principes précédemment cités:

  • Empreinte
  • Horodatage
  • Continuité des journaux

Prenons l’exemple d’un versement d’archives. Quand les archives sont versées, le système va prendre une empreinte de chaque document. Les systèmes peuvent pousser jusqu’à prendre non seulement l’empreinte d’un document versé mais aussi de toute la trace, c’est à dire : la date et l’heure précise de l’événement, l’action réalisée et l’empreinte du document. Il est aussi possible de le sceller pour assurer son intégrité.Cette trace est ensuite ajoutée au journal.En fin de journée, le journal est clôturé. Le journal du jour suivant est alors ouvert avec le versement du journal tout juste clôturé. Nous avons alors notre premier chaînage.

Principe de la journalisation NF Z 42-013

Principe de la journalisation NF Z 42-013

Une blockchain, c’est exactement la même chose. Enfin presque…Si nous faisons le parallèle : une blockchain, c’est un grand registre (ensemble de journaux pour la NF Z42-013) sur lequel on inscrirait tout type d’informations (des événements sur un système ou des archives pour le NF Z42-013).Ce registre est dupliqué chez chaque participant. C’est la différence avec la NF Z42-013 où il n’y pas de notion de participant et donc personne chez qui dupliquer notre registre. Chaque participant dispose du registre au complet.Des nœuds sont chargés de tenir à jour le registre et de vérifier les inscriptions qui y sont faites. Ces inscriptions sont faites par les participants en transmettant leur transaction aux noeuds du réseau.Ainsi, si vous avez compris la « logchain », vous avez compris la blockchain. Le reste n’est que mécanismes cryptographiques et consensus algorithmique.

Les types de blockchain

Je catégorise les blockchains en trois types:

Types de blockchain

Types de blockchain

  • Publique : tout le monde y a accès pour y faire « ce qui est prévu d’y faire ». Généralement c’est de l’échange de cryptomonnaie ou de bonds.
  • De consortium : des gens très sérieux décident de partager de l’information ou des preuves d’existence et de consistance d’information. Par exemple les compagnies aériennes pourraient s’échanger des moyens de vérifier des informations sur les passagers. Une compagnie pourrait échanger ce type d’information avec des hôteliers ou des loueurs de véhicules.
  • Privée : Celle qui ne sert à rien. Vous êtes tout seul et vous l’utilisez pour stocker de l’information. Autant faire une base de données. Sauf si vous avez l’idée à terme de partager la blockchain.

Parmi les technologies, on retrouve des plateformes assez différentes :

Exemples de technologies de blockchain

Exemples de technologies de blockchain

Dans ce domaine, les alliances se forment. IBM mise sur Hyperledger et s’assure une diffusion large (et une sorte de blanc seing) grâce à la Linux Foundation.En réponse, Microsoft, Intel, Accenture et des banques s’associent pour adapter Ethereum aux pratiques de la banque. Réponse du berger à la bergère.Les technologies ne sont pas figées: ainsi Microsoft adapte Ethereum au lieu de la reprendre telle quelle.De plus, cela bouge aussi du côté de Ethereum. Les développeurs ont décidé de changer de type de consensus en 2018.

Anatomie de la blockchain

Une blockchain, c’est donc trois éléments importants:

  • Un bloc
  • Des transactions dans les blocs
  • Le chaînage entre les blocs
Anatomie d'une blockchain

Anatomie d’une blockchain

La transaction

Une transaction, c’est une ligne inscrite dans le registre de compte.Construisons notre propre transaction:

La transaction

La transaction

“Bob donne à Alice une montre à gousset le 1er Mars”. C’est notre transaction.Parce que c’est notre transactionBob signe cette transaction (en la chiffrant avec sa clé privée) afin de résoudre quelques problèmes « mineurs » :

  • l’authentification
  • la non-répudiation
  • L’intégrité de la transaction

Vu que la transaction est chiffrée, nous indiquons que c’est bien Bob qui l’a signée. Cela permet de savoir que c’est sa clé publique qu’il faut utiliser #astuceDeGrandMère.Nous pouvons faire évoluer notre transaction en lui ajoutant une valeur (pratique si l’on envisage de créer une monnaie), une date (on reviendra sur la notion d’horodatage plus loin) ou des frais si notre blockchain rémunère ceux qui vont s’accorder sur la validité de nos transactions.Le bitcoin, quant à lui, ne conservera que la valeur, les frais étant fixés par le système.Une fois que notre transaction est bien formée, elle est diffusée dans le réseau puis est raccrochée à un bloc.

Le bloc

Le bloc, c’est une enveloppe. C’est l’équivalent de notre page du registre sur laquelle sont inscrites des transactions. Nous allons y retrouver l’ensemble des transactions mais pas uniquement cela. Le noeud qui va tenter de faire accepter le bloc doit d’abord le finaliser. Nous y ajoutons donc :

  • l’empreinte du bloc auquel on veut le raccrocher
  • une date (on va y venir concernant l’horodatage, promis)
  • L’arbre de Merkle

Arbre de Merkle

Arbre de Merkle vs Arbre de Merkle

L’arbre de Merkle permet de réaliser un chaînage des transactions entre elles. Il s’agit d’un arbre dont chaque niveau est l’empreinte des niveaux inférieurs. Alors que les transactions n’ont rien à voir entre elles, l’arbre de Merkle matérialise une interdépendance.

Construction de l'arbre de Merkle

Construction de l’arbre de Merkle

La racine de l’arbre de Merkle se retrouve dans l’entête du bloc. Avec cet arbre, nous pouvons faire de nombreuses vérifications.Pour les acteurs d’une blockchain qui disposent d’une copie chez eux, il leur est possible de vérifier que la racine de l’arbre d’un bloc qu’ils ont en leur possession correspond bien à celle des autres participants, ainsi qu’à toutes les transactions qu’ils stockent. Cela rend toute altération du bloc impossible.Celui qui ne dispose que d’une transaction peut assez rapidement vérifier que celle-ci a eu lieu. Il suffira alors de ne télécharger auprès d’une première source que l’entête du bloc qui contient la transaction. Il pourra y retrouver la racine de l’arbre de Merkle.Ensuite, le client récupère, auprès d’autres sources, les éléments manquants afin de réaliser la vérification de l’empreinte de la racine de l’arbre de Merkle.Cette vérification ne nécessite pas de télécharger tout l’arbre de Merkle, seules certaines parties suffisent :

Vérification d'une transaction

Vérification d’une transaction

A terme, quand la blockchain sera trop grosse pour être stockée par tous, il sera possible de ne conserver que des versions allégées des anciens blocs. Ainsi, en interrogeant d’autres sources, il sera possible de télécharger et vérifier les éléments manquants tout en s’assurant que tout le monde parle bien du même bloc.

Le nonce ou comment faire accepter un bloc au réseau

A ce stade, tout est prêt pour transmettre le bloc aux autres participants. Cependant qu’est-ce qui me prouve que je peux vous faire confiance et que vous n’êtes pas en train de tenter de réaliser des transactions malhonnêtes ?Pour cela, un concept génial on été inventé : le consensus. Des gens se mettent autour d’une table et se débrouillent pour se mettre d’accord selon des règles préétablies au départ. Un peu comme des chefs d’Etat qui tenteraient de trouver un accord sur le nucléaire Nord Coréen.Il y a différents types de moyens de se mettre d’accord selon les cas :

  • Le proof of work : C’est la méthode « bitcoin ». Il consiste à produire un bloc ayant la plus petite empreinte possible.
  • Le proof of stake : Celui qui a le plus d’enjeux dans la blockchain décide. Pour de la monnaie, il doit posséder une certaine quantité de celle-ci. Il devient un « validateur ». –Peercoin, Ethereum en 2018
  • Le proof of activity : il s’agit d’un mélange de proof of work et de proof of stake. le calcul s’arrêtera quand un certain nombre de signatures de nœuds aura été apposé sur le bloc candidat.
  • Proof of burn : il s’agit de dépenser de l’argent vers une adresse qui n’existe pas afin d’être sélectionné par le réseau pour miner le bloc.

Et beaucoup d’autres :

  • Proof of capacity
  • Proof of elapsed time
  • Byzantine fault tolerance

Pour bitcoin, le proof of work est utilisé. Le minage consiste à atteindre la plus petite empreinte possible. Cela se fait en introduisant une variable (un nonce) qui va faire varier l’empreinte du bloc.Avec ces algorithmes, il est impossible de prévoir à l’avance à partir d’une empreinte, à quel fichier cela correspond. Ainsi il est nécessaire réaliser des tentatives de calcul d’empreinte en faisant varier une variable (le nonce) jusqu’à l’atteinte d’une empreinte satisfaisant aux règles du consensus.

Consensus Proof of Work

Consensus Proof of Work

Une fois que le bloc est bien formé et qu’il fera consensus, il peut être distribué.

La notion de « date certaine » avec la blockchain

Petit aparté sur l’horodatage: Sujet ô complexe (en fait pas du tout).À la notion de date certaine, la blockchain répond par le principe du consensus.Dans notre blockchain, nous avons choisi de dater les transactions. Il peut s’agir de la date de réalisation de la transaction ou dans le cas de bitcoin de la date de réception de la transaction par le noeud. A peu de choses près, cela s’est passé au même moment et n’est pas très important.Ce qui va être important, c’est le scellement du bloc. Dans notre blockchain, nous pouvons décider que la date du bloc valide doit dater de moins de deux heures pour être accepté par tous les autres noeuds. C’est d’ailleurs le principe adopté par bitcoin.Ainsi, on repose encore une fois sur une règle de consensus écrite à l’avance pour déterminer la “date certaine” du bloc. Tout ce travail pour faire consensus n’aura donc pas été vain.

En conclusion : blockchain ou base de données ?

Vous pouvez récupérer la présentation ici Principes de la blockchain

Image d’entête : Fingerprint, Sculpture outside Wagner Park, Manhattan | Charles Dyer | CC BY 2.0