Wiki ZooBC
Sécurité et architecture

L’épingle de version

Une version de ZooBC peut embarquer une épingle de version, aussi appelée épingle de dorsale : un petit fichier public qui désigne un bloc de la chaîne dorsale par sa hauteur et son hachage. Au démarrage, un nœud compare sa propre dorsale avec l’épingle et refuse de fonctionner sur une dorsale qui la contredit. L’épingle fournit à une installation une ancre de confiance livrée avec le logiciel lui-même, de sorte qu’un historique de dorsale falsifié est refusé avant que le nœud ne bâtisse quoi que ce soit dessus.

Pourquoi une épingle est utile

La dorsale est l’ancre à laquelle un nœud se fie pour deux choses : l’instantané de l’état de la chaîne à charger, et les clés de nœud qui appartiennent au registre (voir instantanés et synchronisation rapide). Un nœud en fonctionnement qui suit la chaîne depuis des mois dispose de son propre historique pour juger la dorsale. Une installation toute neuve n’en a aucun. Elle doit bien partir de quelque part, et un attaquant capable de lui fournir toute une dorsale falsifiée, par exemple construite avec les anciennes clés de nœuds qui ont quitté le registre depuis longtemps, pourrait la conduire vers un état falsifié.

L’épingle comble cette lacune. Elle fait partie de la version que l’opérateur installe, si bien que le nouveau nœud connaît au moins un bloc dorsal authentique avant de parler à un quelconque pair. Tout historique de dorsale qui ne contient pas exactement ce bloc est refusé.

Ce qu’est l’épingle

Le fichier s’appelle spine-pin.txt et se trouve à côté de la base de données du nœud. Il contient une seule ligne : une hauteur de dorsale et le hachage hexadécimal de 64 caractères du bloc dorsal à cette hauteur.

Rien n’y est secret. C’est un hachage public que chacun peut comparer avec la dorsale de son propre nœud. Sans le fichier, il n’y a pas d’épingle, et les autres défenses de la dorsale s’appliquent comme d’habitude.

Ce que le nœud en fait

  • Au démarrage, le nœud compare avec l’épingle son propre bloc dorsal stocké à la hauteur épinglée. Si les hachages diffèrent, le nœud se trouve sur un historique de dorsale bifurqué ou altéré, et il ne fonctionne pas dessus. Selon les règles arrêtées pour la version 0.5.8, il se reconstruit alors à partir du réseau.
  • En fonctionnement, un bloc dorsal qui contredit l’épingle est refusé à son arrivée.
  • Quand des dorsales sont en concurrence, un nœud ne ramène jamais sa dorsale en deçà de l’épingle.
Déroulement du démarrage : lire spine-pin.txt (une ligne : hauteur et hachage de 64 caractères hexadécimaux), comparer avec mon propre bloc dorsal à cette hauteur ; identique : démarrer ; différent : refuser et se reconstruire à partir du réseau.
Déroulement du démarrage : lire spine-pin.txt (une ligne : hauteur et hachage de 64 caractères hexadécimaux), comparer avec mon propre bloc dorsal à cette hauteur ; identique : démarrer ; différent : refuser et se reconstruire à partir du réseau.

Comment les versions l’utilisent

Deux règles régissent la façon dont les versions portent l’épingle :

  • L’installateur s’arrête lorsque la version mentionne une épingle qu’il ne parvient pas à récupérer.
  • Chaque version ultérieure épingle un bloc dorsal récent, de sorte que l’ancre avance avec la chaîne.

La version elle-même est protégée séparément. L’autorité de publication enregistre chaque version sur la chaîne avec le hachage de son manifeste, l’installateur vérifie la signature de la version et le hachage du manifeste par rapport à la chaîne, et deux tiers des sièges peuvent opposer leur veto à une version (voir versions et mises à jour et vérifier un fichier téléchargé).

Ce que l’épingle n’est pas

  • Elle ne lie pas le nœud à un pair fixe : le nœud se synchronise auprès de ses pairs comme d’habitude.
  • Elle ne fige pas le logiciel du nœud : les mises à jour se poursuivent selon le choix de l’opérateur.
  • Elle ne contient aucune clé, ni privée ni publique : seulement une hauteur de bloc et un hachage de bloc.

Sa place parmi les défenses

L’épingle est l’une des multiples défenses contre une attaque à longue portée, c’est-à-dire une tentative de réécrire l’historique depuis un passé lointain. Les nœuds en fonctionnement sont protégés par la limite de retour arrière de 720 blocs et par le plancher des points de contrôle de la dorsale (voir finalité et retour arrière) ; les nouveaux nœuds, par les cosignatures des deux tiers sur la dorsale, par la trace que la dorsale tient elle-même des clés arrivées et parties, et par l’épingle. Voir ce contre quoi protège la preuve de participation.

Voir aussi