Le mécanisme
Une empreinte est un court code calculé à partir d’un texte : changez une virgule et le code change entièrement. Chaque entrée de notre registre contient l’empreinte de l’entrée précédente. Modifier une vieille entrée change son empreinte, donc celle de la suivante, et ainsi de suite jusqu’à la dernière — celle qu’on appelle la tête. Un lecteur qui a noté la tête hier et la recalcule aujourd’hui voit tout de suite si nous avons touché au passé.
Ce système n’empêche pas de réécrire une archive. Il fait que ça se voit. C’est suffisant.
Pourquoi un tiers doit dater la tête
Il reste un trou : rien ne nous empêche de refabriquer toute la chaîne d’un coup, avec une histoire différente mais cohérente. Il faut donc une date que nous ne contrôlons pas. Nous envoyons la tête à un service extérieur d’horodatage, qui nous renvoie un reçu signé attestant que ce code existait à cette date précise.
Ce service ne voit jamais nos articles : il ne reçoit que le code, qui ne permet pas de les reconstituer. Il ne garantit donc pas que nous disons la vérité. Il garantit que nous disions cela ce jour-là — et c’est exactement ce qu’il faut pour qu’une réécriture devienne repérable.
node outils/chaine.mjs --verifier
# Chaîne intacte — 159 entrées
# tête 3dbd38eda4d943a37a0af51e6e4fc327…