7

この質問を受けましたが、適切な方法を説明している記事が見つかりませんでした。代わりに、私は独自の方法を考え出しました (以下の回答を参照してください)。しかし、私が単に破るほど頭が良くない方法を思いついただけの可能性もあります。だから私はあなたにこの質問を渡します:

Alice と Bob は、電子メールでボード ゲームをしたいと考えています。彼らは、カンニングをさせない方法でサイコロを振る方法を見つける必要があります。

そうするための良いアルゴリズムは何ですか。

4

7 に答える 7

7

これは、暗号化における古典的な問題です。

そのような論文の 1 つ: Coin Flipping by Telephone .

明らかにいくつかの不可能な結果もあります。

たとえば、この論文の [C86] を参照してください: http://www.cs.columbia.edu/~dglasner/MyPapers/coin-cut.pdf

それが役立つことを願っています。

于 2011-02-02T20:40:45.200 に答える
4

アリスとボブは、選んだ番号を明らかにする前に、番号を選んだという証拠をお互いに送信できる必要があります。次に、彼らが選んだ数字を証明と照らし合わせて検証する必要があります。最後に、両方の数値を、それぞれが結果を完全に制御できないような方法で結合する必要があります。

以下では、またはのcrypto_functionようなものにすることができます:sha1summd5sum

ステップ 1 :

以下の可能な値の範囲をcrypto_function十分に大きくする必要がありました

  • Alice は乱数を選びRa1、BobRa2に送信します。Ra1
  • ボブは乱数を選びRb1、アリスRb2に送信します。Rb1

ステップ 2 :

Hx値が修正されたという証明を作成しますVxが、その証明からこの値を推測することを防ぎます

  • Alice は値Va(0<= Va<=5) を選択し、文字列を構成して、ボブSa="Va Ra2 Rb1"に a を送信します。Ha=crypto_hash(Sa)
  • Bob は値Vb(0<= Vb<=5) を選択し、文字列を構成して、AliceSb="Vb Rb2 Ra1"に送信します。Hb=crypto_hash(Sb)

ステップ 3 :

望ましい結果を生み出すV

  • AliceSaが Bob に送信します。ボブ から計算Haし、ステップ 2Saと比較します。次に、 から を取り出し、値を計算します。HaVaSaV=(Va+Vb)%6+1
  • ボブSbはアリスに送信します。アリス から計算Hbして、ステップ 2Sbと比較します。次に から を取り出し、値 を計算します。HbVbSbV=(Vb+Va)%6+1

更新

@ Moronによって提案された電話によるコイン投げに基づいて、アルゴリズムは次のようになります。

  1. ボブは乱数Rと値を選び0 <= Vb <= 5、ハッシュを計算し、H=crypto_hash("Vb R")それをアリスに送信します。

  2. アリスは値を選択し、0 <= Va <= 5それをボブに送信します。

  3. BobはVbandRを Alice に送信します。ボブは計算しますV=(Va+Vb)%6+1

  4. アリスは検証しH=crypto_hash("Vb R")ます。アリスが計算するV=(Va+Vb)%6+1

...次の場合は気分が良くなりますが:

0. Alice は乱数を選び、Qそれを Bob に送信します。

そして、ハッシュされる文字列は then になり"Vb Q R"ます。

于 2011-02-02T16:12:34.950 に答える
4

郵便でプレイされるゲームは、電子メールであるかどうかに関係なく、公開されている (疑似) 乱数を使用していました。これは通常、株式上場の特定の位置 (特定の株ではありません) の株価上場の最下位桁です。これは予測できず、イベント後に検証可能でした。プレイヤーは、サイコロを振る前に、株式上場のどのポジション (通常は営業終了時) を次のサイコロに使用するかの詳細を交換します。

于 2011-02-02T16:16:07.663 に答える
4

http://rpglibrary.org/software/securediceのような信頼できるサード パーティを使用して、オンラインで検証可能なシリアル番号とハッシュを含むサイコロのロールを電子メールで送信できます。

于 2011-02-02T16:28:05.110 に答える
2

Alice と Bob は、Diffie-Hellman などを使用して 2 つのセッション キーに同意しSaますSb。各セッション キーは、乱数ジェネレーターのシードでありRaRb.

RNG は、サイコロを振るたびに 1 回限りのパッドとして使用されます。Alice が転がりたい場合は、シーケンスの i 番目の乱数をとりRa[i]ますi。Alice は と の両方を Bob に送信iRa[i]ます。Bob はi、自分の のコピーを使用して確認できますRa

これにより、アリスiは、ボブが検証できる一連の値を使用する必要があるため、正直に保つことができます。

于 2011-02-02T16:26:54.440 に答える
1

私が尋ねた同様の質問に対する回答を受け取りました.Rのサイコロを作るにはどうすればよいですか? 応答は、「親密なダイス」のプログラムに加えて、R のプログラムでした。Alice と Bob がどちらのサイコロに興味を持っているかはわかりませんが、リモート デスクトップに加えて R を使用することをお勧めします。これにより、各プレイヤーは相手が不正を行っていないことを確認できます。

コードの書き方がわからないので、受け取った応答をコピーして貼り付けました。

統計プログラム R でサイコロを作りたい場合は、ここからダウンロードして開始します: http://cran.r-project.org/

通常のサイコロを作成するには、次のスクリプトを使用します。 #Dice 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's 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's to one more reason for celebrating math & science
于 2012-02-28T06:21:39.457 に答える
0

サイコロを振って他のプレイヤーに転送するための電子メールをそれぞれが送信する自動化されたサードパーティ サーバーをセットアップしますか?

そうでなければ、このゲームをプレイするにはあまりにも多くの作業が必要であり、私はやめました!

于 2011-02-02T16:21:07.307 に答える