Throw a die by email

I was asked this question, but could not find an article that describes a good method. Instead, I came out with my own method (see My answer below). However, it is also possible that I just came up with a method that I am not smart enough to break. Therefore, I am passing this question to you:

Alice and Bob want to play a board game by email. They need to find a way to roll the dice so that they do not cheat.

What is a good algorithm for this.

+7
source share
7 answers

This is a classic problem in cryptography.

One such article: Moving coins by phone .

There are also some impossibility results.

For example, the link here [C86] is here: http://www.cs.columbia.edu/~dglasner/MyPapers/coin-cut.pdf

Hope this helps.

+7
source

Alice and Bob should be able to send each other proof that they have chosen a number before they show which number they have chosen. Then, the number they chose should be checked against the evidence. Finally, both numbers must be combined in some way, which will not give each of them full control over the result.

The following crypto_function may be something like sha1sum or md5sum :

Step 1 :

to make the range of possible values โ€‹โ€‹for crypto_function below large enough

  • Alice picks the random numbers Ra1 and Ra2 and sends Ra1 to Bob.
  • Bob picks the random numbers Rb1 and Rb2 and sends Rb1 Alice.

Step 2 :

creates evidence of Hx that the value of Vx now corrected, but does not allow deriving this value from this proof

  • Alice chooses the value Va (0 <= Va <= 5), composes the line Sa="Va Ra2 Rb1" and sends Ha=crypto_hash(Sa) to Bob.
  • Bob selects the value of Vb (0 <= Vb <= 5), creates the string Sb="Vb Rb2 Ra1" and sends Hb=crypto_hash(Sb) Alice.

Step 3 :

generates the desired result V

  • Alice sends Sa Bob. Bob computes Ha from Sa and compares it with Ha from step 2. Then he takes Va from Sa and calculates the value V=(Va+Vb)%6+1 .
  • Bob sends Sb Alice. Alice Calculate Hb from Sb and compare it with Hb from step 2. Then select Vb from Sb and calculate the value V=(Vb+Va)%6+1 .

Update

Based on the Coin Transfer by Phone , the @ Moron algorithm suggested could be:

  • Bob picks the random number R and the value 0 <= Vb <= 5 , Calculates the hash H=crypto_hash("Vb R") and sends it to Alice.

  • Alice selects the value 0 <= Va <= 5 and sends it to Bob.

  • Bob sends Vb and R Alice; Bob computes V=(Va+Vb)%6+1

  • Alice checks H=crypto_hash("Vb R") ; Alice calculates V=(Va+Vb)%6+1

... Although I would feel better if:

0. Alice picks a random number Q and sends it to Bob.

And the line to be hashed then becomes "Vb QR" .

+4
source

Games that are played by mail โ€” whether email or not โ€” are used to use a public (pseudo) random number - usually the least significant figure in a stock price list in a specific stock listing position (rather than a specific fund). It is impossible to predict and is subject to verification after the event. Players will exchange information - before the dice roll - which position of the stock list (usually when closing a business) should be used for the next throw (s) of bets.

+4
source

Use a trusted third party, such as http://rpglibrary.org/software/securedice , which can send blocks by email with serial numbers and a hash that can be checked online.

+4
source

Alice and Bob agree to two session keys using something like Diffie-Hellman, Sa and Sb . Each session key is a seed of a random number generator, Ra and Rb .

Fuel and lubricants are used as disposable pads for each roll of dice. If Alice wants to roll, takes Ra[i] , where i is the ith random number in the sequence. Alice sends Bob both i and Ra[i] . Bob can test i using his own copy of Ra .

This keeps Alice honest by requiring her to use sequential i values โ€‹โ€‹that are verifiable by Bob.

+2
source

I got an answer to a similar question, which I asked, what is How can I make bones for R? The answer was a program for R in addition to a program for "intimate bones." I'm not sure who Alice and Bob are interested in, but I suggest using R in addition to Remote Desktop so that each player can see that the other is not cheating.

I do not know how to write codes, so I copied / pasted the received answer:

If you want to make bones in the statistical program R. Start by downloading here: http://cran.r-project.org/ .

To make a regular cube, use the following script: # Scale roll function RollDie = function (n) sample (1: 6, n, replace = T) #use Die RollDie (n)

 #If you'd like to spice things up a bit and make a dice for safe and consensual adult #activities then use the following series of scripts: #Creating the function, use this script: #Intimate dice function Actions= c("kiss","lick","suck","bite", "spank","blow", "stroke", "tickle","pinch", "torment") Body= c("lips","arms","chest","thighs", "neck","ear", "wrist", "navel","nipples", "the good stuff") Action= function(n) sample(Actions[1:10],n,replace=T) Area= function(n) sample(Body[1:10],n,replace=T) Action(1) Area(1) #If you'd like the dice saved to the R global environment so you can be ready for when the mood is right use the following script: #Save the following script as yourfile.R in something like this location "C:\\Documents and Settings\\yourfile.R" #Intimate dice Action(1) Area(1) #yes #Now create the following function to save to R global environment with the following: #Run all source("C:\\Documents and Settings\\yourfile.R",echo=T) hi<-function(){source("C:\\Documents and Settings\\yourfile.R",echo=T)} #ok #close and save your R workspace #upon opening run the following function: hi() #If this has been done properly then you should see something along the lines of this: #Intimate dice Action(1) [1] "bite" Area(1) [1] "ear" #yes #Here to one more reason for celebrating math & science 
+1
source

Set up an automated third-party server on which everyone sends emails there to download and forward the dice to another player?

Otherwise, itโ€™s just just too much work to play this game, and I left!

0
source

All Articles