Vérification

Comment chaque tirage au sort peut être vérifié

Un tirage n’est équitable que si personne, ni l’organisateur ni nous, ne peut choisir ou prédire le gagnant. Voici exactement comment GetSocialExport tire les gagnants, et comment chacun peut vérifier un tirage à partir de son certificat.

Les quatre étapes d’un tirage

  1. La liste des participants est verrouillée. L’extension de l’organisateur collecte les commentaires, applique les règles du tirage et envoie la liste des participants éligibles à notre serveur. La liste est mise dans un ordre fixe et son empreinte SHA-256 est enregistrée avec l’heure. À partir de là, modifier un seul nom changerait l’empreinte.
  2. Un nombre aléatoire futur est choisi. À ce moment, le serveur choisit un tour drand qui ne sera publié qu’environ 30 secondes plus tard. drand est une balise d’aléa public gérée par la League of Entropy (Cloudflare, Protocol Labs, des universités et d’autres) : ses nombres ne peuvent être ni prédits ni influencés, et chacun porte une signature que tout le monde peut vérifier.
  3. Les gagnants sont calculés. Une fois le tour publié, une graine est formée à partir du code du tirage, du numéro du tirage, de l’empreinte de la liste et du nombre aléatoire. Les gagnants sont tirés à partir de cette graine avec SHA-256, sans biais, en donnant plus de poids uniquement aux participants qui ont des participations bonus prévues par les règles.
  4. Tout est publié. Le certificat affiche les gagnants, l’empreinte, le tour, la graine, l’heure de verrouillage de la liste, chaque nouveau tirage avec sa raison et (sauf si l’organisateur l’a rendue privée) la liste complète des participants.

Ce que vous pouvez vérifier sur un certificat

Ouvrez n’importe quel certificat (scannez son QR code) et votre navigateur le vérifie de lui-même, sans avoir à nous faire confiance :

  • la liste de participants publiée correspond à l’empreinte enregistrée avant le tirage ;
  • le nombre aléatoire provient de drand, avec une signature BLS valide de la League of Entropy ;
  • la liste a été verrouillée avant que ce nombre aléatoire n’existe ;
  • recalculer le tirage donne exactement les mêmes gagnants.

Vous pouvez aussi saisir votre nom dans Avez-vous participé ? pour confirmer que vous faisiez partie du tirage, même si l’organisateur garde la liste privée.

Ce qu’un certificat ne prouve pas

Le tirage lui-même est prouvablement équitable. Le certificat ne peut pas prouver que l’organisateur a appliqué des règles raisonnables ni qu’il a remis le lot. La liste des participants provient de l’extension de l’organisateur : c’est pourquoi elle est publiée pour que les participants puissent la vérifier, et pourquoi chaque nouveau tirage est affiché avec sa raison.

Détails techniques

  • Algorithme : socialexport-draw-v1. Liste canonique : une ligne par participant, id⇥nom⇥participations, triée par id, lignes séparées par des sauts de ligne ; empreinte = SHA-256 de ce texte.
  • Aléa : réseau drand quicknet, chaîne 52db9ba70e0cc0f6…, un tour toutes les 3 s, signatures BLS sur G1 (RFC 9380).
  • Graine : SHA-256 du nom de l’algorithme, du code du tirage, du numéro du tirage, de l’empreinte de la liste, du tour et de l’aléa, séparés par des sauts de ligne.
  • Tirage : SHA-256(graine ‖ compteur) donne des nombres de 64 bits ; les valeurs au-dessus du plus grand multiple de l’intervalle sont rejetées (pas de biais de modulo) ; chaque tirage retire le gagnant et ses participations.
  • Les certificats sont signés par notre serveur (ECDSA P-256) pour prouver quand chaque liste a été enregistrée. Clé publique : MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQdshCP/QsGG2k29W80CHSmWbwYpBNgrrIjTf0qPyQuB8cXXLxsCRaty97SO44XaM3aYr6PMwI4dYc/MnSQ3/aw==

Organisez votre propre tirage vérifiable →