41 votes

Comment certifier une décision secrète révélée en différé dans un match play-by-post ?

Dans un jeu de type "play-by-post" qui demande à un joueur de s'engager à prendre une décision secrète et de la révéler publiquement par la suite, comment un joueur peut-il certifier qu'il l'a fait honnêtement sans s'appuyer sur la bonne foi ?

Considérons le scénario de jeu suivant.

  1. Alice s'engage à prendre une décision, comme si elle préprogrammait une action qu'elle va entreprendre. Un observateur pourrait remarquer qu'elle fait quelque chose mais ils ne connaissent pas les détails.
  2. Bien que Bob ne sache pas exactement ce que Alice prépare, il s'engage à prendre une décision en réponse à cela, comme réagir pour l'arrêter. La résolution de sa décision dépendra de la résolution de la décision d'Alice.
  3. Alice doit révéler après coup quelle était sa décision engagée afin de la résoudre à ce stade, ainsi que la réaction de Bob à cette décision. Si elle est honnête ou si elle a un moyen de certifier sa décision, c'est parfait. Si elle est capable de mentir, elle pourrait changer sa décision rétroactivement.

Existe-t-il des outils, des techniques ou des conventions communes à cet effet ? À une table, Alice pourrait simplement écrire sa décision sur une carte de notes pliée et la révéler plus tard ; ou dans un jeu de société, elle pourrait jouer sa carte d'action face cachée et la révéler plus tard. Ces conventions de table courantes ne se transposent pas bien au jeu en ligne. Alors, comment Alice peut-elle certifier que sa décision secrète sera révélée sur un délai ?

Supposez ce qui suit à propos du jeu, de ses règles et des joueurs :

  • Le système n'est pas libre. Il a des règles qui correspondent au scénario donné ci-dessus.

  • Même si les joueurs se connaissent et se font confiance, ils ont toujours besoin (ou veulent) d'un moyen de certifier leurs décisions sans se fier à la bonne foi.

  • Le maître de jeu peut également être un joueur (peut-être même un adversaire) et n'est pas exempté de la nécessité (ou de l'envie) d'un moyen de certifier ses décisions sans s'appuyer sur la bonne foi.

133voto

Chowlett Points 1879

Demandez à Alice de générer et de publier un hachage SHA-256 de son action.

SHA-256 est un algorithme sûr sur le plan informatique (jusqu'à une approximation raisonnable) qui convertit une chaîne de caractères donnée en un hachage hexadécimal inintelligible. Il existe des implémentations en ligne qui calculent SHA256 pour vous, par exemple, ici .

L'idée est la suivante :

  1. Alice décide de son action - disons, "Je lance une boule de feu sur Bob".
  2. Alice en privé ce texte exact
  3. Alice entre ce texte dans un générateur SHA256, ce qui produit un méli-mélo de caractères dénué de sens : A0FC4543FDBA266006F1F9FA8183710A8C5CA80613DA109B8A9DBA194DEC4E.
  4. Alice annonce publiquement "J'ai planifié une action ; son SHA-256 est A0FC4543FDBA266006F1F9FA818183710A8C5CA80613DA109B8A9DBA194DEC4E".

Maintenant, Bob ne peut pas savoir ce qu'Alice a prévu car le SHA-256 n'est pas réversible ; il n'y a aucun moyen de passer du hachage à l'action.

Plus tard, quand Alice révèle son plan, elle donne le texte exact qu'elle a préparé auparavant. Si Bob ne lui fait pas confiance, il peut simplement répéter le chiffrement SHA-256 et vérifier que les signatures correspondent.

Si Alice soupçonne que Bob peut devinez son action, elle peut rendre les choses plus difficiles en ajoutant un composant supplémentaire, non pertinent, à l'action avant de calculer le SHA-256. Par exemple, si Alice enregistre, signe et révèle ensuite "Je lance une boule de feu sur Bob (pistache)", Bob ne pourra pas deviner et vérifier l'action sans deviner également le "(pistache)" supplémentaire. C'est ce qu'on appelle utiliser un "nonce".

14voto

Destruktor Points 6035

Envoyez les décisions à un tiers de confiance.

Lorsque le moment sera venu de révéler l'action, le tiers le fera alors.

Cela a l'avantage d'être simple et de ne nécessiter aucun savoir-faire technologique.

11voto

Ryan Smith Points 4067

Utilisez un système de communication comme facebook qui vous permet de paramétrer la visibilité de chaque post.

Publier un message visible par tous disant

Alice jette un coup d'œil à son livre de sorts puis fait un geste, prête à lancer un sort.

Publier un message privé disant

Si X se produit, Alice lancera une boule de feu sur Y.

Si le déclencheur se produit, changez la confidentialité du message en public.

L'horodatage et l'historique des modifications devraient pouvoir montrer que le message n'a pas été modifié autrement que pour changer la visibilité.

Comme V2Blast l'a souligné et comme Zac a proposé une solution, le message public doit contenir un lien vers le message privé pour prouver qu'il s'agit du même message et que vous n'avez pas publié plusieurs messages cachés.

Si vous disposez d'un SM ou d'une personne similaire dans le jeu, vous pouvez également lui donner accès aux messages privés pour son information.

11voto

ralphthemagician Points 1459

Une ressource simple pour ce genre de choses est la suivante http://onetimesecret.com . Il vous permet de créer un "secret" et de publier le lien vers celui-ci, mais une fois que le secret a été consulté une fois, il est supprimé et ne peut plus être consulté.

Alice entre son secret, et envoie l'hyperlien à Bob, mais lui dit de ne pas encore le regarder. Bob déclare publiquement son plan d'action, puis consulte le post onetimesecret d'Alice. Alice peut vérifier l'heure à laquelle son secret a été consulté, pour s'assurer qu'il s'agit bien d'un secret. après La déclaration publique de Bob.

De cette façon, Alice ne peut pas mentir sur sa décision, mais Bob ne la connaîtra qu'après avoir déclaré son plan d'action.

(Note : Je ne suis pas affilié de quelque manière que ce soit à onetimesecret.com. Je trouve simplement que c'est une ressource utile).

6voto

jwfearn Points 8813

Une alternative à l'engagement de hachage qui nécessite moins de connaissances techniques : do ce que faisaient les scientifiques pour établir la priorité d'une idée jusqu'à ce qu'ils soient prêts à publier. Au lieu d'une ZSD, publiez une signature qui est facilement dérivée du message par un humain mais qui ne peut pas être facilement inversée.

Une simple "signature" consiste à montrer combien de fois chaque lettre apparaît dans le message, mais pas leur ordre. Ensuite, quand il est temps de le révéler, il est facile de le vérifier. Donc Alice peut signer le message

Je trahis Bob

comme

ABBBEIORTY

Un problème évident est que pour un message aussi court et direct, Bob peut probablement deviner ce qu'il veut dire : il y a beaucoup de B et un O, donc il s'agit probablement de lui. Il peut également exclure certaines possibilités qui l'inquiètent : le message ne peut clairement pas inclure boule de feu, car il n'y a pas de F ; mais il pourrait inclure trahir.

Alice peut éviter cela en parlant de manière un peu plus cryptique ou en utilisant quelques mots de plus que nécessaire. Si Alice publie

AAABDDDDEEEEEFGGGHHHHHIIIIIILLLLMMNOOOOOORRRRRSSTTTTTTTUUUWW

il est difficile de deviner qu'elle veut dire

Bien qu'allié à Robert, je me suis lassé de lui et l'ai vendu aux gardes.

Juste pour le plaisir, notez que ce message laisse ouverte la possibilité d'une boule de feu (parce qu'il contient toutes les lettres de "FIREBALL"), au cas où Alice pense que c'est quelque chose que Bob voudrait exclure.

AlleGamers.com

AlleGamers est une communauté de gamers qui cherche à élargir la connaissance des jeux vidéo.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X