Mécanique

Le sceau de la liste : prouver qu'elle n'a pas changé sans publier les participants

· · Par Yuval Abudarham

Un tirage que vos participants recalculent eux-mêmes

Graine publiée avant le tirage, aléa public drand, vidéo partageable. Gratuit pour les participants.

Créer un compteVérifier un tirage existant

Deux exigences s'opposent en apparence. Pour qu'un tirage soit démontrable, il faut prouver que la liste des participants n'a pas bougé. Pour respecter le RGPD, il est hors de question de publier cette liste. Le sceau résout la contradiction, et la manière dont il la résout est la partie la plus élégante du dispositif.

Pourquoi il faut sceller

L'empreinte de la graine et le round drand annoncé ferment deux portes. Il en reste une troisième, et c'est la plus large : la liste elle-même.

Tant qu'elle peut changer, les deux premiers engagements ne garantissent rien. Ajouter ou retirer une entrée après avoir vu le résultat suffit à changer le gagnant sans contredire aucune empreinte publiée. Le calcul a trois entrées ; en figer deux ne sert à rien si la troisième reste libre.

Ce qu'est une racine de Merkle

C'est une empreinte d'ensemble, construite par étages. Chaque participation devient une feuille ; les feuilles sont hachées deux à deux, puis les résultats deux à deux, jusqu'à une valeur unique : la racine.

Deux propriétés en découlent :

  • toute modification change la racine. Retirer une entrée, en ajouter une, en modifier une seule : la racine publiée cesse de correspondre, et cela se constate immédiatement ;
  • on peut prouver l'appartenance d'une feuille sans montrer les autres. C'est ce qui distingue une racine de Merkle d'une simple empreinte de fichier.

Ce que contient une feuille, et ce qu'elle ne contient pas

Le point qui règle la question RGPD tient ici : les feuilles ne portent aucune donnée personnelle. Elles contiennent un identifiant pseudonyme et un poids. Pas d'adresse e-mail, pas de nom, pas d'IP.

Conséquence directe : le sceau publié ne révèle rien de personne. Il est même publiable sans restriction, puisqu'il ne dit ni combien de personnes s'appellent comment, ni qui a participé — seulement qu'un ensemble donné, réduit à des pseudonymes, n'a pas changé.

Cette conception a un effet secondaire précieux. Un participant qui demande l'effacement de ses données après le tirage obtient satisfaction sans que le sceau ne devienne faux : on supprime les données personnelles rattachées à l'identifiant, et l'identifiant reste dans un arbre qui ne contenait rien d'autre.

La preuve d'inclusion

Un participant veut s'assurer qu'il figurait bien dans le vivier. On lui fournit une preuve d'inclusion : la suite des empreintes voisines nécessaires pour remonter de sa feuille jusqu'à la racine publiée.

S'il refait ce chemin et retrouve la racine, deux choses sont établies : il était dans la liste, et la liste est bien celle qui a été scellée. Il obtient cette certitude sans que personne ne lui montre les autres participants.

L'invariant d'ordre

Le sceau est publié à la clôture des inscriptions, avant que le round drand employé n'existe. Cela se vérifie par la même comparaison d'entiers que précédemment :

`roundDuSceau < roundDuTirage`

L'enchaînement complet donne alors : la liste ne peut plus changer sans que la racine cesse de correspondre ; le hasard n'était pas connaissable quand elle a été figée ; le résultat est donc déjà déterminé au moment du scellement, et personne — pas même celui qui détient la graine et la base de données — ne peut savoir lequel.

Ce qu'il faut retenir

Publier la liste des participants est exclu, publier son empreinte ne l'est pas. La racine de Merkle change au moindre ajout, retrait ou modification, et permet à un participant de prouver qu'il y figurait sans voir les autres. Les feuilles ne contiennent que des pseudonymes : le sceau reste donc valide même après l'effacement des données d'un participant. Il est publié à la clôture, avant que le hasard employé n'existe.

FAQ

Que se passe-t-il si la racine ne correspond pas à la vérification ?

Le tirage est invalide. Comme pour l'empreinte de la graine, le contrôle est binaire et ne se discute pas : les valeurs correspondent, ou elles ne correspondent pas.

Un participant peut-il découvrir les autres à partir du sceau ?

Non. La racine est une valeur unique, et une preuve d'inclusion ne révèle que des empreintes intermédiaires, desquelles on ne remonte à rien. Même en collectant plusieurs preuves, on n'obtient pas la liste.

Que deviennent les participations arrivées après la clôture ?

Elles ne sont pas dans le sceau, donc pas dans le tirage. C'est le sens même de la clôture, et c'est annoncé avant l'ouverture des inscriptions.

Pourquoi un poids sur chaque feuille ?

Parce qu'un giveaway peut prévoir des pondérations annoncées à l'avance — par exemple des chances supplémentaires pour une action donnée. Le poids fait partie de ce qui est scellé : il ne peut pas être ajusté après coup.

Essayer