Como certificar uma decisão secreta revelada em um atraso em um jogo por jogo?

37

Em um jogo de jogo a post que exige que um jogador se comprometa com uma decisão secreta e depois revele essa decisão publicamente, como um jogador pode afirmar que o fez honestamente sem depender de boa fé?

Considere o seguinte cenário de jogo.

  1. Alice se compromete com uma decisão, como pré-programar uma ação que ela tomará. Um espectador pode notar que ela está fazendo algo, mas eles não sabem os detalhes.
  2. Embora Bob não saiba exatamente o que Alice está aprontando, ele se compromete com uma decisão em resposta a isso, como reagir para impedi-la. Resolver sua decisão dependerá de resolver sua decisão.
  3. Alice tem que revelar qual foi a decisão dela depois do fato, a fim de resolvê-la nesse momento, junto com a reação de Bob a ela. Se ela está sendo honesta ou tem uma maneira de certificar sua decisão, tudo bem. Se ela é capaz de mentir, ela poderia mudar sua decisão retroativamente.

Existem ferramentas, técnicas ou convenções comuns para suportar isso? Em uma mesa, Alice podia simplesmente escrever sua decisão em um cartão dobrado e revelá-lo mais tarde; ou em um jogo de tabuleiro, ela poderia jogar sua carta de ação virada para baixo e revelá-la mais tarde. Essas convenções comuns de tabela não se traduzem bem em jogos on-line. Então, como pode Alice certificar sua decisão secreta de ser revelada em um atraso?

Assuma o seguinte sobre o jogo, suas regras e os jogadores:

  • O sistema não é de forma livre. Tem regras que correspondem ao cenário acima.

  • Mesmo que os jogadores saibam e confiem uns nos outros, eles ainda precisam (ou querem) uma maneira de certificar suas decisões sem confiar em boa fé.

  • O gamemaster também pode ser um jogador (possivelmente até um adversário) e não está isento da necessidade (ou desejo) de uma maneira de certificar suas decisões sem confiar em boa fé.

por Bloodcinder 22.11.2018 / 17:49

8 respostas

Faça com que Alice gere e publique um hash SHA-256 de sua ação.

SHA-256 é um algoritmo computacionalmente seguro (para aproximação razoável) que converte uma determinada string em uma hash hexadecimal ininteligível. Existem implementações on-line que irão computar o SHA256 para você, por exemplo, aqui .

A ideia é esta:

  1. Alice decide sua ação - diga: "Eu lancei Bola de fogo para Bob"
  2. Alice registra em particular esse texto exato
  3. Alice insere esse texto em um gerador SHA256, produzindo um amontoado sem sentido de caracteres - A0FC4543FDBA266006F1F9FA818183710A8C5CA80613DA109B8A9DBA194DEC4E
  4. Alice anuncia publicamente: "Planejei uma ação; sua SHA-256 é A0FC4543FDBA266006F1F9FA818183710A8C5CA80613DA109B8A9DBA194DEC4E"

Agora, Bob não sabe dizer o que Alice planejou porque o SHA-256 não é reversível; não há como voltar do hash para a ação.

Mais tarde, quando Alice revela seu plano, ela dá o texto exato que ela preparou anteriormente. Se Bob não confiar nela, ele pode simplesmente repetir a criptografia SHA-256 e verificar se as assinaturas correspondem.

Se Alice suspeitar que Bob pode adivinhar sua ação, então ela pode tornar as coisas mais difíceis adicionando um componente extra e irrelevante à ação antes de computar o SHA-256. Por exemplo, se Alice registra, assina e depois revela "Eu lancei Bola de fogo para Bob (pistache)", então Bob não seria capaz de adivinhar e verificar a ação sem também adivinhar o extra "(pistache)". Isso é conhecido como "nonce".

    
22.11.2018 / 17:58

Envie as decisões para um terceiro confiável.

Quando chegar a hora de revelar a ação, a terceira parte fará isso.

Isso tem a vantagem de ser simples e não requer nenhum conhecimento tecnológico.

    
22.11.2018 / 18:43

Use um sistema de comunicação como o facebook que permite que você configure a visibilidade em cada postagem.

Publique uma postagem visível publicamente dizendo

Alice glances at her spell book then gestures, ready to begin casting a spell.

Postar uma postagem privada dizendo

If X happens Alice will cast fireball at Y

Se o gatilho acontecer, mude a privacidade da postagem para público.

O registro de data e hora e o histórico de edição devem mostrar que a postagem não foi modificada, exceto para alterar a visibilidade.

Como o V2Blast apontou e o Zac ofereceu uma solução para o post público, ele deve ter um link para o post privado para provar que é o mesmo post e você não postou várias postagens ocultas.

Se você tem um mestre ou similar no jogo, também pode dar acesso às postagens privadas para obter informações.

    
22.11.2018 / 21:45

Um recurso simples para exatamente esse tipo de coisa é o link . Ele permite que você crie um "segredo" e publique o link para ele, mas, uma vez que o segredo tenha sido visto uma vez, ele será excluído e não poderá ser visualizado novamente.

Alice insere seu segredo e envia o link para Bob, mas diz para ele não olhar ainda. Bob declara publicamente seu curso de ação, depois olha para o post secreto de Alice. Alice pode verificar a hora em que seu segredo foi visto, para verificar se foi após a declaração pública de Bob.

Dessa forma, Alice não pode mentir sobre sua decisão, mas Bob não sabe o que foi até que ele declare seu curso de ação.

(Nota: Eu não sou afiliado de alguma forma com onetimesecret.com. Eu apenas acho que é um recurso útil.)

    
23.11.2018 / 20:34

Uma alternativa ao comprometimento de hash que requer menos conhecimento técnico: o que os cientistas costumavam fazer para estabelecer a prioridade de uma ideia até que eles estivessem prontos para publicar. Em vez de um SHA, publique uma assinatura que seja facilmente derivada da mensagem por um humano, mas não possa ser facilmente revertida.

Uma simples "assinatura" é apenas para mostrar quantas vezes cada letra aparece na mensagem, mas não na ordem. Então, quando é hora de revelar, é fácil verificar. Então Alice pode assinar a mensagem

I betray Bob

como

ABBBEIORTY

Um problema óbvio é que, para uma mensagem tão curta e direta, Bob provavelmente pode adivinhar o que significa: há muitos Bs e um O, então provavelmente é sobre ele. Ele também pode descartar algumas possibilidades que ele está preocupado: a mensagem claramente não pode incluir bola de fogo, porque não há F; mas poderia incluir trair.

Alice pode evitar isso falando um pouco mais enigmaticamente ou usando mais algumas palavras do que o necessário. Se Alice publica

AAABDDDDEEEEEFGGGHHHHHHIIIIIILLLLMMNOOOOOORRRRRSSTTTTTTTUUUWW

é difícil adivinhar que ela significa

Though allied with Robert, I grow tired of him and sell him out to the guards.

Apenas por diversão, note que esta mensagem deixa aberta a possibilidade de uma bola de fogo (porque contém todas as letras em "FIREBALL"), caso Alice pense que é algo que Bob gostaria de excluir.

    
23.11.2018 / 00:07

Confiança

Este não é sempre apropriado - mas se você joga com um grupo constante de amigos, então simplesmente confiar que eles estão sendo honestos é a maneira que eu costumo jogar. Isso funciona para mim, porque eu geralmente não brinco com randoms ou em eventos fora de casa.

Obviamente, isso nem sempre funciona - nem todos têm a integridade necessária para resistir à vontade de trapacear. Mas se você estiver jogando uma campanha mais longa com um grupo consistente, aprenderá rapidamente usando esse método, seja realmente viável.

Se não, os outros métodos mencionados acima são steller. No entanto, no que diz respeito à simplicidade e facilidade de implementação, esta é de longe a mais fácil.

    
23.11.2018 / 00:37

Concordo que algum tipo de criptografia é a melhor, mas também entendo que isso pode ser assustador para pessoas que não gostam muito de tecnologia.

Aqui está uma maneira (esperançosamente) mais simples de realizar o mesmo.

Eu escrevo uma pequena nota descrevendo minha decisão. Zip-lo com uma senha (ver link ) e enviar o arquivo zipado como um anexo para o meu e-mail para cada e todos os outros participantes.

Quando é hora de revelar minha decisão, eu mando o pwd. Todos podem descompactar e ler o que escrevi.

Nota: se isso é uma prática comum (ou seja, todo mundo tem que enviar muitas mensagens "secretas") é melhor você fazer alguma contabilidade. Ou seja prepare uma planilha ou uma nota onde você escreve o pwd e uma breve descrição (ou talvez apenas a data) da mensagem criptografada. Então, quando for a hora de revelar "o que você fez sozinho na caverna roxa" ou "o que estava na nota que você enviou em 15 de maio", você pode verificar sua lista e fornecer o código adequado.

    
26.11.2018 / 09:24

Este problema já foi resolvido no passado. Como exibit A, gostaria de introduzir o jogo "Diplomacy", que teve uma história prolífica de jogo pelo correio. Neste jogo, 7 jogadores precisam coordenar (e trair) um ao outro constantemente para progredir no jogo. Há, claro, comunicações diretas entre os jogadores, mas qualquer jogada deve ser cometida e enviada para um terceiro "árbitro". O árbitro receberia as jogadas, as executaria e as resolveria adequadamente, e então publicaria o resultado em um canal público (geralmente, uma revista, além de correspondência direta para cada jogador).

O único requisito aqui é confiar no organizador do jogo. Mas por que você jogaria se não pudesse confiar ao menos no organizador?

    
23.11.2018 / 10:04