Comment ça marche
- Avant la donne, le serveur choisit un secret au hasard et montre seulement son empreinte (SHA-256). Une empreinte ne permet pas de retrouver le secret, mais elle l'engage : il ne peut plus changer.
- Votre appareil envoie alors un nombre au hasard qu'il est le seul à connaître. Le serveur ne pouvait pas le deviner en choisissant son secret.
- Le paquet est mélangé à partir du secret et des nombres de tous les joueurs. Personne, pas même nous, ne peut donc choisir la donne.
- Après la donne, le secret est révélé. L'appli vérifie seule que l'empreinte correspond, que votre nombre a servi, que le mélange redonne le même paquet et que vos cartes viennent bien de ce paquet. Un bouclier vert s'affiche à la table ; cette page refait le même calcul, dans votre navigateur.
Ce que cela ne prouve pas
Les robots jouent sur le serveur. La donne vérifiable prouve que les cartes n'ont pas été choisies ; elle ne peut pas prouver qu'un robot ne regarde pas vos cartes. Ils ne le font pas : chaque robot ne reçoit que sa propre main, et nos tests vérifient qu'aucune place ne voit les cartes d'une autre.
Le calcul exact
Texte = atout-v1|secret|nombre place 0|nombre place 1|… (vide pour un robot). Clé = SHA-256 du texte, en hexadécimal. Nombres = blocs de 4 octets (gros-boutiste) de SHA-256(clé:0), SHA-256(clé:1)… Paquet de départ : trèfle, carreau, cœur, pique, chacun du 7 à l'as. Pour i de 31 à 1 : on tire des nombres jusqu'à en avoir un sous 2³² − (2³² mod (i+1)), j = ce nombre mod (i+1), on échange les cartes i et j.
Distribution. Coinche : une carte à la fois, de la place 0 à la place 3. Belote : 5 cartes chacun en commençant à droite du donneur, la 21e est retournée, le reste après la prise (2 pour le preneur, 3 pour les autres). Duo : quatre paquets de 4 cachés puis quatre visibles, receveur d'abord.