Wirf einen Würfel per E-Mail

7

Ich wurde diese Frage gestellt, habe aber keinen Artikel gefunden, der eine gute Methode beschreibt. Stattdessen kam ich mit meiner eigenen Methode heraus (siehe meine Antwort unten). Es ist aber auch möglich, dass ich nur eine Methode gefunden habe, die ich nicht schlau genug bin zu brechen. Ich gebe diese Frage an Sie weiter:

Alice und Bob möchten ein Brettspiel per E-Mail spielen. Sie müssen einen Weg finden, die Würfel so zu würfeln, dass sie nicht schummeln können.

Was ist ein guter Algorithmus dazu?

    
Chen Levy 02.02.2011, 15:57
quelle

7 Antworten

7

Dies ist ein klassisches Problem in der Kryptographie.

Ein solches Papier: Coin Flipping per Telefon .

Es gibt auch einige Unmöglichkeitsergebnisse.

Zum Beispiel verweisen [C86] in diesem Papier hier: Ссылка

Ich hoffe, das hilft.

    
Aryabhatta 02.02.2011, 20:40
quelle
4

Spiele, die per Post gespielt werden - egal ob per E-Mail oder nicht - verwenden eine öffentlich verfügbare (Pseudo) Zufallszahl - typischerweise die niedrigste Ziffer einer Aktienkurse an einer bestimmten Position in einer Aktienliste (nicht eine bestimmte Aktie). Dies konnte nicht vorhergesagt werden und war nach dem Ereignis verifizierbar. Die Spieler würden Details austauschen - bevor die Würfel rollen - welche Position der Börsennotierung (typischerweise bei Geschäftsschluss) für die nächsten Würfelwürfe verwendet werden sollte.

    
Chris Walton 02.02.2011 16:16
quelle
4

Verwenden Sie einen vertrauenswürdigen Dritten wie Ссылка , der E-Mails mit Seriennummern und einem online überprüfbaren Hashwert per E-Mail versenden kann.

    
Justin Morgan 02.02.2011 16:28
quelle
4

Alice und Bob müssen in der Lage sein, einander einen Beweis zu schicken, dass sie eine Nummer ausgewählt haben, bevor sie angeben, welche Nummer sie ausgewählt haben. Dann muss die Nummer, die sie gewählt haben, gegen den Beweis verifiziert werden. Schließlich müssen beide Zahlen in einer Weise zusammengefügt werden, die nicht jedem eine totale Kontrolle über das Ergebnis gibt.

Im Folgenden kann crypto_function etwas wie sha1sum oder md5sum :

sein

Schritt 1 :

benötigt, um den Bereich der möglichen Werte für crypto_function unter ausreichend groß zu machen

  • Alice wählt die Zufallszahlen Ra1 und Ra2 aus und sendet Ra1 an Bob.
  • Bob wählt die Zufallszahlen Rb1 und Rb2 aus und sendet Rb1 an Alice.

Schritt 2 :

erstellt den Beweis Hx , dass der Wert Vx jetzt fixiert ist, aber verhindern, dass dieser Wert aus diesem Beweis abgeleitet wird

  • Alice wählt einen Wert Va (0 & lt; = Va & lt; = 5), erstellt eine Zeichenfolge Sa="Va Ra2 Rb1" und sendet eine Ha=crypto_hash(Sa) an Bob.
  • Bob wählt einen Wert Vb (0 & lt; = Vb & lt; = 5), erstellt eine Zeichenfolge Sb="Vb Rb2 Ra1" und sendet eine Hb=crypto_hash(Sb) an Alice.

Schritt 3 :

erzeugt das gewünschte Ergebnis V

  • Alice sendet Sa an Bob. Bob Berechne Ha von Sa und vergleiche es mit Ha von Schritt 2. Nimmt Va von Sa und berechne den Wert V=(Va+Vb)%6+1 .
  • Bob sendet Sb an Alice. Alice Berechne Hb von Sb und vergleiche sie mit Hb von Schritt 2. Dann wird Vb von Sb genommen und der Wert V=(Vb+Va)%6+1 berechnet.

Aktualisieren :

Basiert auf Münzwurf per Telefon , vorgeschlagen von @ Moron kann der Algorithmus zu:

werden
  1. Bob wählt eine Zufallszahl R und den Wert 0 <= Vb <= 5 , Berechnet einen Hash H=crypto_hash("Vb R") und sendet ihn an Alice.

  2. Alice wählt den Wert 0 <= Va <= 5 aus und sendet ihn an Bob.

  3. Bob sendet Vb und R an Alice; Bob berechnet V=(Va+Vb)%6+1

  4. Alice überprüft H=crypto_hash("Vb R") ; Alice berechnet V=(Va+Vb)%6+1

... Obwohl ich mich besser fühlen würde, wenn:

0. Alice wählt eine Zufallszahl Q aus und sendet sie an Bob.

Und die zu hashende Zeichenfolge wird dann "Vb Q R" .

    
Chen Levy 02.02.2011 16:12
quelle
2

Alice und Bob einigen sich auf zwei Session-Schlüssel mit Diffie-Hellman, Sa und Sb . Jeder Sitzungsschlüssel ist der Ausgangspunkt eines Zufallsgenerators, Ra und Rb .

Die RNGs werden als einmalige Pads für jeden Würfelwurf verwendet. Wenn Alice rollen möchte, nimmt Ra[i] , wobei i die i-te Zufallszahl in der Sequenz ist. Alice sendet sowohl i als auch Ra[i] an Bob. Bob kann i mit seiner eigenen Kopie von Ra verifizieren.

Dies hält Alice ehrlich, indem sie fordert, dass sie sequentielle Werte von i verwendet, die von Bob verifiziert werden können.

    
Justin Morgan 02.02.2011 16:26
quelle
1

Ich erhielt eine Antwort auf eine ähnliche Frage, die ich fragte: Wie kann ich Würfel für R machen? Die Antwort war ein Programm für R neben einem Programm für "intime Würfel". Ich bin mir nicht sicher, an welchem ​​Würfel Alice und Bob interessiert sind, aber ich schlage vor, R zusätzlich zu einem Remote-Desktop zu verwenden, damit jeder Spieler sehen kann, dass der andere nicht betrügt.

Ich weiß nicht, wie ich die Codes schreiben soll, also habe ich die Antwort kopiert / eingefügt:

Wenn Sie Würfel im statistischen Programm R machen wollen. Beginnen Sie mit dem Download hier: Ссылка .

Verwenden Sie das folgende Skript, um einen normalen Würfel zu machen:     #Dice Roll-Funktion     RollDie = Funktion (n) Beispiel (1: 6, n, ersetzen = T)     #use Sterben     RollDie (n)

%Vor%     
Tyler 28.02.2012 06:21
quelle
0

Richten Sie einen automatisierten Third-Party-Server ein, wo jeder E-Mails zum Würfeln und Weiterleiten an den anderen Player sendet?

Ansonsten ist es einfach zu viel Arbeit, um dieses Spiel zu spielen und ich höre auf!

    
SuggestionBox 02.02.2011 16:21
quelle

Tags und Links