Mécanique
drand : pourquoi le hasard de votre tirage ne vient pas de chez nous
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À la question « d'où vient le hasard ? », la plupart des outils répondent « de notre générateur ». C'est une réponse qui demande la confiance, et qui la demande à la personne la moins bien placée pour l'accorder : le participant qui a perdu.
Chez DrawSeal, la réponse est différente : le hasard ne vient pas de nous.
Le problème d'un hasard maison
Un générateur interne, si excellent soit-il, partage un défaut avec tous les autres : celui qui l'exécute décide quand l'exécuter. Il peut le lancer, regarder le résultat, et recommencer. Le générateur ne garde aucune trace du nombre d'appels.
Ce n'est pas une faiblesse mathématique, c'est une faiblesse de position. Aucune qualité de générateur ne la corrige, parce que le problème n'est pas la valeur produite mais l'autorité de celui qui la produit.
La seule sortie consiste à prendre le hasard ailleurs, chez quelqu'un qui ne sait pas à quoi il sert.
Ce qu'est drand
drand est un réseau de balises aléatoires publiques. Des organisations indépendantes produisent ensemble, à intervalle régulier, une valeur aléatoire que personne ne contrôle seul. Chaque valeur porte un numéro de round, et une signature que n'importe qui peut vérifier contre la clé publique du réseau.
Trois propriétés en font ce qu'il nous faut :
- publique : la valeur est lisible par tous, au même moment ;
- imprévisible : personne ne connaît la valeur du round 5 000 000 avant qu'il ne survienne ;
- vérifiable : la signature prouve que la valeur vient bien du réseau, et n'a pas été inventée.
Comment nous l'utilisons
À la programmation du tirage, DrawSeal annonce quel round sera employé — un numéro futur, choisi d'après l'heure du tirage. C'est un engagement, au même titre que l'empreinte de la graine.
Annoncer le round à l'avance ferme une porte précise. Sans cela, un organisateur pourrait attendre, comparer plusieurs valeurs successives, et retenir celle qui désigne le bon gagnant. En nommant le round, on s'interdit ce choix.
À l'heure dite, la valeur paraît. Elle est combinée à la graine révélée et à la liste scellée, et le gagnant se calcule. Trois entrées, une seule sortie possible.
L'invariant d'ordre, qui tient en deux entiers
Le point qui donne sa force au dispositif est une comparaison de nombres, vérifiable par quiconque :
`roundDuSceau < roundDuTirage`
La liste a été scellée pendant une fenêtre temporelle antérieure à celle qui a produit le hasard employé. Autrement dit, au moment où le vivier a été figé, le hasard n'était pas connaissable — pas même par nous, qui détenions pourtant la graine et la base de données.
Ce n'est pas une promesse. C'est un `<` entre deux entiers publiés.
Ce que cela change pour un participant
Il n'a plus à nous croire sur deux points. Il peut constater que la valeur employée est bien celle du round annoncé, et que ce round est postérieur au scellement de la liste. La signature du réseau lui garantit le premier point ; la comparaison des deux numéros lui donne le second.
Reste un troisième point — la liste elle-même —, et c'est l'objet du sceau de Merkle.
Ce qu'il faut retenir
Un générateur interne pose un problème de position, pas de mathématiques : celui qui l'exécute choisit quand. DrawSeal prend donc son hasard chez drand, un réseau public dont les valeurs sont signées, imprévisibles et lisibles par tous. Le round employé est annoncé à l'avance, et il est postérieur au scellement de la liste — ce qui se vérifie par une comparaison de deux entiers publiés.
FAQ
Que se passe-t-il si drand est indisponible à l'heure du tirage ?
Le tirage attend la valeur : il ne bascule pas sur une source de secours, ce qui reviendrait à employer un hasard que personne n'a annoncé. L'indisponibilité de drand fait l'objet d'une alerte côté exploitation, et le tirage s'exécute dès que la valeur est disponible.
Pourquoi ne pas utiliser le cours d'une action ou un tirage du Loto ?
Ce sont des sources publiques, ce qui est déjà bien, mais elles ne sont ni signées ni conçues pour cet usage. drand fournit en plus une preuve cryptographique d'origine : on vérifie que la valeur vient du réseau, pas seulement qu'elle a été affichée quelque part.
Un participant doit-il comprendre drand pour vérifier ?
Non. Le vérificateur récupère la valeur du round, contrôle sa signature et refait le calcul. Comprendre le fonctionnement interne du réseau n'est utile qu'à qui veut auditer le vérificateur lui-même — ce qui est possible, et c'est le but.
La graine ne suffirait-elle pas ?
Non, et c'est le point où beaucoup de dispositifs s'arrêtent trop tôt. Une graine engagée interdit d'en changer, mais elle vient de nous. Il faut une seconde entrée que nous ne contrôlons pas, sans quoi l'ensemble du hasard reste d'origine interne.