How att intyga ett hemligt beslut avslöjat vid en försening i ett spel för spel?

37

I ett spel för spel som kräver att en spelare begår ett hemligt beslut och senare avslöjar det beslutet offentligt, hur kan en spelare intyga att de gjorde det ärligt utan att förlita sig på god tro?

Tänk på följande spelscenario.

  • Alice förbinder sig till ett beslut, som att förprogrammera en åtgärd som hon kommer att ta. En åskådare kanske märker att hon gör något , men de skulle inte känna till uppgifterna.
  • Även om Bob inte vet exakt vad Alice gör är han skyldig till ett beslut som svar på det, som att reagera för att stoppa henne. Att lösa sitt beslut beror på att hon löser sitt beslut.
  • Alice måste avslöja vad hennes engagerade beslut var efter faktum för att lösa det vid denna tidpunkt tillsammans med Bobs reaktion på det. Om hon är ärlig eller har ett sätt att certifiera vad hennes beslut var, är det bra. Om hon kan ljuga, kan hon ändra sitt beslut retroaktivt.
  • Finns det vanliga verktyg, tekniker eller konventioner som stöder detta? Vid ett bord kunde Alice helt enkelt skriva sitt beslut i ett brett notkort och avslöja det senare; eller i ett brädspel kunde hon spela sitt actionkort med ansiktet ner och avslöja det senare. Dessa vanliga bordskonventioner översätter inte bra till onlinespel. Så hur kan Alice intyga att hennes hemliga beslut avslöjas i en försening?

    Antag följande om spelet, dess regler och spelarna:

    • Systemet är inte freeform. Det har regler som matchar ovanstående scenario.

    • Även om spelarna känner och litar på varandra, behöver de (eller vill) ett sätt att certifiera sina beslut utan att förlita sig på god tro.

    • Gamemaster kan också vara en spelare (eventuellt till och med en motsats) och är inte befriad från behovet (eller vill) för att certifiera sina beslut utan att förlita sig på god tro.

    uppsättning Bloodcinder 22.11.2018 17:49

    8 svar

    129

    Har Alice genererat och publicerat en SHA-256-hash av hennes åtgärd.

    SHA-256 är en beräkningsmässig säker (till rimlig approximation) -algoritm som omvandlar en given sträng till en oförståelig hexadecimal hash. Det finns online-implementeringar som beräknar SHA256 för dig, till exempel här .

    Tanken är detta:

  • Alice bestämmer sin handling - säga, "Jag kastade Fireball på Bob"
  • Alice registrerar privat den exakta texten
  • Alice går in i den texten i en SHA256-generator, vilket ger en meningslös sken av karaktärer - A0FC4543FDBA266006F1F9FA818183710A8C5CA80613DA109B8A9DBA194DEC4E
  • Alice offentliggör "Jag har planerat en åtgärd, SHA-256 är A0FC4543FDBA266006F1F9FA818183710A8C5CA80613DA109B8A9DBA194DEC4E"
  • Nu kan Bob inte berätta vad Alice har planerat eftersom SHA-256 inte är reversibel; Det finns inget sätt att komma från hasen tillbaka till åtgärden.

    Senare, när Alice avslöjar sin plan, ger hon den exakta texten hon förberett tidigare. Om Bob inte litar på henne kan han helt enkelt upprepa SHA-256-krypteringen och verifiera att signaturerna matchar.

    Om Alice misstänker att Bob kan gissa hennes åtgärd, kan hon göra saker svårare genom att lägga till en extra, irrelevant komponent i åtgärden innan SHA-256 beräknas. Till exempel, om Alice spelar in, tecken och senare avslöjar "Jag kastade Fireball på Bob (pistasch)", då skulle Bob inte kunna gissa och verifiera åtgärden utan att gissa extra "pistasch". Detta är känt som att använda en "nonce".

        
    svaret ges 22.11.2018 17:58
    12

    Skicka besluten till en betrodd tredje part.

    När tiden kommer att avslöja åtgärden kommer den tredje parten att göra det.

    Detta har fördelen av att vara enkel och kräver ingen teknisk know-how.

        
    svaret ges 22.11.2018 18:43
    9

    Använd ett kommunikationssystem som facebook som låter dig sätta upp synlighet på varje inlägg.

    Lägg in ett offentligt synligt postmeddelande

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

    Skriv ett privat inlägg som säger

    If X happens Alice will cast fireball at Y

    Om utlösaren händer ändras sekretess för posten till allmänheten.

    Tidstämpeln och redigeringshistoriken ska kunna visa att inlägget inte har ändrats än att ändra synligheten.

    Som V2Blast påpekade och Zac erbjöd en lösning på den offentliga posten, borde länka till den privata posten för att bevisa att det är samma post och du postade inte flera dolda inlägg.

    Om du har en DM eller liknande i spelet kan du också ge dem tillgång till privata inlägg för deras information.

        
    svaret ges 22.11.2018 21:45
    8

    En enkel resurs för exakt denna typ av sak är länk . Det låter dig skapa en "hemlig" och publicera länken till den, men när hemligheten har blivit synad en gång, raderas den och kan inte ses igen.

    Alice går in i hennes hemlighet och skickar hyperlänken till Bob men berättar att han inte tittar på det ännu. Bob förklarar offentligt sin handlingsåtgärd och tittar sedan på Alice's onetimesecret-post. Alice kan kontrollera tiden då hennes hemlighet visades för att verifiera att det var efter Bobs offentliga deklaration.

    På så sätt kan Alice inte ljuga om sitt beslut, men Bob vet inte vad det var förrän han förklarade sin handlingsåtgärd.

    (Obs! Jag är inte ansluten på något sätt med onetimesecret.com. Jag tycker bara att det är en användbar resurs.)

        
    svaret ges 23.11.2018 20:34
    5

    Ett alternativ till hash-engagemang som kräver mindre teknisk kunskap: gör vad forskarna brukade göra för att skapa prioritet för en idé tills de var redo att publicera. I stället för en SHA, publicera en signatur som lätt kan härledas från meddelandet av en människa men kan inte lätt vändas.

    En enkel "signatur" visar bara hur många gånger varje brev visas i meddelandet, men inte deras order. Då är det dags att avslöja det är lätt att verifiera. Så Alice kan skriva under meddelandet

    I betray Bob

    som

    ABBBEIORTY

    Ett uppenbart problem är att för ett så kort, rakt meddelande kan Bob antagligen gissa vad det menas: det finns många Bs och en O, så det handlar nog om honom. Han kan också utesluta några möjligheter som han oroar sig för: meddelandet kan tydligt inte inkludera eldboll, för det finns ingen F; men det kan innefatta svik.

    Alice kan förhindra detta genom att tala något mer kryptiskt eller använda några få ord än nödvändigt. Om Alice publicerar

    AAABDDDDEEEEEFGGGHHHHHHIIIIIILLLLMMNOOOOOORRRRRSSTTTTTTTUUUWW

    Det är svårt att gissa att hon menar

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

    Bara för skojs skull, notera att det här meddelandet lämnar öppna möjligheten till en eldboll (eftersom den innehåller alla bokstäver i "FIREBALL"), om Alice tycker att det är något Bob skulle vilja utesluta.

        
    svaret ges 23.11.2018 00:07
    4

    Trust

    Den här är inte alltid lämplig - men om du spelar med en konstant grupp vänner, så lita bara på att de är ärliga, så spelar jag vanligtvis spel. Detta fungerar för mig, för att jag inte spelar vanligtvis med randoms eller vid händelser utanför hemmet.

    Självklart kommer detta inte alltid att fungera - inte alla har den nödvändiga integriteten att motstå strävan att fuska. Men om du spelar en längre kampanj med en konsekvent grupp lär du dig ganska snabbt med den här metoden om det verkligen är genomförbart.

    Om inte, är de andra metoderna som nämns ovan steller. Men vad gäller enkelheten och användarvänligheten är det överlägset enklast.

        
    svaret ges 23.11.2018 00:37
    4

    Jag håller med om att någon form av kryptering är bäst, men jag förstår också att det kan vara skrämmande för människor som inte är mycket i teknik.

    Här är ett (förhoppningsvis) enklare sätt att uppnå samma.

    Jag skriver en kort notering som beskriver mitt beslut. Zip it med ett lösenord (se länk ) och skicka zip-filen som en bilaga till min e-post till varje och alla andra deltagare.

    När det är dags att avslöja mitt beslut skickar jag ut pwd. Alla kan pakka ut och läsa vad jag skrev.

    Obs! Om det här är en vanlig praxis (dvs. alla måste skicka ut mycket "hemliga" meddelanden) gör du bättre bokföring. Dvs. förbereda ett kalkylblad eller en anteckning där du skriver pwd och en kort beskrivning (eller kanske bara datum) för det krypterade meddelandet. Så det är dags att avslöja "vad gjorde du medan du var ensam i lila grottan" eller "vad var i anteckningen du skickade ut den 15 maj" kan du kolla din lista och tillhandahålla lämplig pwd.

        
    svaret ges 26.11.2018 09:24
    2

    Det här problemet har redan lösts tidigare. Som exibit A skulle jag introducera spelet "Diplomacy" som hade en flitig historia av spel per post. I det här spelet måste 7 spelare samordna (och förråda) varandra ständigt för att utveckla spelet. Det finns givetvis direkt kommunikation mellan spelare, men alla drag måste vara begåvade och skickade till en tredje part "domare". Domaren skulle ta emot rörelserna, genomföra och lösa dem på lämpligt sätt och sedan publicera resultatet i en offentlig kanal (vanligtvis en tidning, plus direktpost till varje spelare.)

    Det enda kravet här är förtroende med spelaren. Men varför skulle du spela om du inte litar på organisatören?

        
    svaret ges 23.11.2018 10:04