SlideShare una empresa de Scribd logo
1 de 44
Descargar para leer sin conexión
1
味噌荘= Justice of Punctual +まぜこぜ+馬飛び
Justice of Punctual
+
「まぜこぜ (DH-shuffle) 」
+
DHT 馬跳び
||
Dapps 味噌荘
( インターネット雀荘 )
blockchain.tokyo #15
2018/12/16
梅濁酒 (@umedoblock)
2
自己紹介
● 梅濁酒
● Twitter:@umedoblock
● Github:umedoblock
● 馬跳び simulator を開発中
● 馬跳びは Github にて公開中
3
block chain の定義
● # block 化技術
電子情報を一単位に区切り,
その一単位に対改竄性を含ませる技術,
● # chain 技術
一単位に区切った電子情報を,
参加者の合意に基づいて,
一方向に連ねる技術,
● # block chain 技術
上記技術の組み合わせを,
block chain 技術と呼ぶ。
4
chain 技術について
● # chain 技術
一単位に区切った電子情報を,
参加者の合意に基づいて,
一方向に連ねる技術
● Justice of Punctual
● block を時系列によって一方向に連ねる。
● 10 分ごとに作成する block に対局結果を含ませる。
● 対局終了時から 10 分 +α 以内に対局結果を投稿。
5
まぜこぜ( DH-shuffle )+馬跳び
● まぜこぜとは,
一言でいうと, DH-Keyexchange の拡張版です。
具体的には,
多原始根の多重べき乗の計算を多人数によって行い,
計算した値を昇順に並び替える(まぜこぜする),
ということです。
● 馬跳びとは,自分からみて,
「 n 個隣の node にとって, n 個隣の node を尋ね」,
2n 個隣の node を知る
ということです。
6
まぜこぜ( DH-shuffle )+馬跳び
● まぜこぜとは,
一言でいうと, DH-Keyexchange の拡張版です。
具体的には,
多原始根の多重べき乗の計算を多人数によって行い,
計算した値を昇順に並び替える(まぜこぜする),
ということです。
● 馬跳びとは,自分からみて,
「 n 個隣の node にとって, n 個隣の node を尋ね」,
2n 個隣の node を知る
ということです。
7
DH-Keyexchange
● Alice と Bob は,原始根g,法nについて合意する。
● Alice は秘密の数 x を生成し, X=g^x mod n を計算する。
● Bob は秘密の数 y を生成し, Y=g^y mod n を計算する。
● Alice と Bob は公に X,Y を交換する。
●
盗聴者 Eve も X,Y を入手する。
8
DH-Keyexchange
● Alice は Key-X =Y^x mod n
● Bob は Key-Y =X^y mod n
を計算する。 Key-X = Key-Y !!! 一致してる !!!
Alice と Bob は公に
秘密の情報 Key-X=Key-Y の共有に成功した。
9
DH-Keyexchange
● Alice は Key-X =Y^x mod n ≡(g^y)^x mod n
● Bob は Key-Y =X^y mod n ≡(g^x)^y mod n
を計算する。
Key-X = Key-Y !!! 一致してる !!!
Alice と Bob は公に
秘密の情報 Key-X=Key-Y の共有に成功した。
10
DH-Keyexchange
● Alice は Key-X =Y^x mod n ≡ g^yx mod n
● Bob は Key-Y =X^y mod n ≡ g^xy mod n
???
● Key-X = Key-Y !!! 一致してる !!!
Key-X = Key-Y !!! 一致してる !!!
Alice と Bob は公に
秘密の情報 Key-X=Key-Y の共有に成功した。
11
DH-Keyexchange
● Alice は Key-X =Y^x mod n ≡ g^yx mod n
● Bob は Key-Y =X^y mod n ≡ g^xy mod n
???
● Key-X = Key-Y !!! 一致してる !!!
● Alice と Bob は公に
秘密の情報 Key-X=Key-Y の共有に成功した。
Eve の持つ X(=g^x mod n), Y(=g^y mod n) からは,
g^xy mod n を計算できない。
12
DH-Keyexchange
● Alice は Key-X =Y^x mod n ≡ g^yx mod n
● Bob は Key-Y =X^y mod n ≡ g^xy mod n
???
● Key-X = Key-Y !!! 一致してる !!!
● Alice と Bob は公に
秘密の情報 Key-X=Key-Y の共有に成功した。
● Eve が盗聴した情報 X(=g^x mod n), Y(=g^y mod n) からは,
g^xy mod n を計算できない。
13
まぜこぜ( DH-shuffle )
● まぜこぜとは,
一言でいうと, DH-Keyexchange の拡張版です。
● 具体的には,
多原始根の多重べき乗の計算を多人数によって行い,
計算した値を昇順に並び替える(まぜこぜする),
ということです。
14
まぜこぜ( DH-shuffle )
●
参加者4名, Alice, Bob, Carol, Dave は,
以下に合意する。
●
巨大な素数 p
● n 個の原始根 (g1..gn)(↓ を満たす )
2 <= g1..gn <= p-1
15
まぜこぜ( DH-shuffle )
● Alice は a, Bob は b, Carol は c, Dave は d を,
↓ を満たすように,秘密にしてそれぞれ決める。
● gcd(a, p-1) = 1
● gcd(b, p-1) = 1
● gcd(c, p-1) = 1
● gcd(d, p-1) = 1
● ※ ポーカープロトコルをする度に,
毎回異なる値 a, b, c, d を選ぶ。
16
まぜこぜ( DH-shuffle )
● a * a^-1 ≡ 1 (mod p-1)
● b * b^-1 ≡ 1 (mod p-1)
● c * c^-1 ≡ 1 (mod p-1)
● d * d^-1 ≡ 1 (mod p-1)
● ↑ を満たす,
a^-1, b^-1, c^-1, d^-1
を各々計算し,秘密にする。
17
まぜこぜ( DH-shuffle )
● DH-Keyexchange を参加者人数分,
今回は4名で4回繰り返し,
最終的に,
(g1..gn)^abcd mod p
を計算する。
(g1..gn)^abcd mod p を昇順に並び替え,
ゲーム開始時の並びとする。
18
まぜこぜ( DH-shuffle )
● DH-Keyexchange を参加者人数分,
今回は4名で4回繰り返し,
最終的に,
(g1..gn)^abcd mod p
を計算する。
● (g1..gn)^abcd mod p
を,昇順に並び替え(まぜこぜし)て,
ゲーム開始時の並びとする。
● ※ 参加者のみの計算によって,この並びを得ました。
19
まぜこぜ( DH-shuffle )
● ゲーム開始後は,
任意の GX( 原始根の多重べき乗 )
(GX=gx^abcd mod p)
に対して,
● a^-1, b^-1, c^-1, d^-1 のべき乗を
Alice, Bob, Carol, Dave が
それぞれ秘密裏に計算し,
20
まぜこぜ( DH-shuffle )
● GX^((a^-1)(b^-1)(c^-1)(d^-1)) mod p =
=gx^(abcd*(a^-1)(b^-1)(c^-1)(d^-1)) mod p
=gx^((a*a^-1)(b*b^-1)(c*c^-1)(d*d^-1)) mod p
≡gx^1 mod p
=gx mod p
●
として,原始根を多重べき乗した値 (=GX) から,
原始根の値 (=gx) を秘密裏に得ます。
21
まぜこぜの核心
● 多重べき乗した原始根を
まぜこぜし(昇順に並び替え)て,
多重べき乗した原始根と原始根の関係を
知ることはできない( DDH 仮定より)のだから,
予測不能な原始根の並びを得ることが出来る。
●
参考 Security Akademeia
http://akademeia.info/index.php?DDH%B2%BE
%C4%EA#k03fb3e7
22
ゲーム的にまぜこぜの重要なところ
● トランプのカードの枚数52枚,原始根52個
麻雀の牌144個,原始根144個
の初期の並びを,
参加者の計算のみによって予測不能に出来,
かつ,秘密裏に牌・カードを手に出来る。
● そして,ゲーム終了後にゲーム中の不正を検証でき,
ゲーム進行の透明性を信用できる方法が,
まぜこぜです。
23
ゲームの提供者に委ねるのは?
● どの程度?まだ読み切れていません。
●
ゲームの進行を管理する script ?
●
ゲーム完了後,ゲームの進行を検証する script ?
∵ カードの扱い方がゲーム毎に異なる。
24
世界に羽ばたく
● 世界中の人に自由にゲームを提供してもらいたいです。
● 世界各国固有のゲームを楽しめるようにしたい。
25
馬跳び DHT について
● 馬跳びとは,自分からみて,
「 n 個隣の node にとって, n 個隣の node を尋ね」,
2n 個隣の node を知る,
ということです。
言葉だけでは分かりづらいですね。
次のページから図に書いて説明します。
26
馬跳び DHT について
● 馬跳びとは,自分からみて,
「 n 個隣の node にとって, n 個隣の node を尋ね」,
2n 個隣の node を知る,
ということです。
● 言葉だけでは分かりづらいですね。
● 次のページでは,図に書いて説明します。
271
14
3
4
5
6
8
9
10
11
12
13
15
2
初期状態です。各ノードの key を元に一次元ト
ーラスを構成しています。
黒点の近くに振ってある番号がそれぞれのノー
ドの key 値です。また、 key 値はノードの番号も
示します。
7
0
281
14
3
4
5
6
8
9
10
11
12
13
15
初期状態では、時計周り方向の一つ隣のノード
については知っているものとします。ノード 0 はノ
ード 1 を知っています。
2
7
0
291
14
3
4
5
6
8
9
10
11
12
13
15
2
初期状態では、時計周り方向の一つ隣のノード
については知っているものとします。ノード 0 はノ
ード 1 を知っています。
そして、ノード 1 はノード 2 を知っています。
7
0
301[2]
14[15]
3[4]
4[5]
5[6]
6[7]
8[9]
9[10]
10[11]
11[12]
12[13]
13[14]
15[0]
[] の中にそれぞれのノードが知っているノード番
号が書かれています。
2[3]
7[8]
0[1]
311[2]
14[15]
3[4]
4[5]
5[6]
6[7]
8[9]
9[10]
10[11]
11[12]
12[13]
13[14]
15[0]
第一回目の問い合わせです。
自分が知っているノードのうち、一次元トーラス
上においてもっとも遠いノードについてノード情
報の問い合わせを行います。
2[3]
7[8]
0[1]
321[2]
14[15]
3[4]
4[5]
5[6]
6[7]
8[9]
9[10]
10[11]
11[12]
12[13]
13[14]
15[0]
問い合わせを受けたノードは、自分が知っている
全てのノードの情報を問い合わせ元ノードに伝
えます。
2[3]
7[8]
0[1]
331[2]
14[15]
3[4]
4[5]
5[6]
6[7]
8[9]
9[10]
10[11]
11[12]
12[13]
13[14]
15[0]
2[3]
ノード 0 の第一回目の問い合わせは終了しまし
た。知っているノードは [1, 2] です。 2 個のノード
を知っています。
7[8]
0[1, 2]
34
2[3, 4]
1[2, 3]
14[15, 0]
3[4, 5]
4[5, 6]
5[6, 7]
6[7, 8]
8[9, 10]
9[10, 11]
10[11, 12]
11[12, 13]
12[13, 14]
13[14, 15]
15[0, 1]
全てのノードが同じように、第一回目の問い合
わせを行った結果が示されています。
7[8, 9]
0[1, 2]
35
2[3, 4]
1[2, 3]
14[15, 0]
3[4, 5]
4[5, 6]
5[6, 7]
6[7, 8]
8[9, 10]
9[10, 11]
10[11, 12]
11[12, 13]
12[13, 14]
13[14, 15]
15[0, 1]
第二回目の問い合わせです。
自分が知っているノードのうち、一次元トーラス
上においてもっとも遠いノードについてノード情
報の問い合わせを行います。
7[8, 9]
0[1, 2]
36
2[3, 4]
1[2, 3]
14[15, 0]
3[4, 5]
4[5, 6]
5[6, 7]
6[7, 8]
8[9, 10]
9[10, 11]
10[11, 12]
11[12, 13]
12[13, 14]
13[14, 15]
15[0, 1]
問い合わせを受けたノードは、自分が知っている
全てのノードの情報を問い合わせ元ノードに伝
えます。
7[8, 9]
0[1, 2]
37
2[3, 4]
1[2, 3]
14[15, 0]
3[4, 5]
4[5, 6]
5[6, 7]
6[7, 8]
8[9, 10]
9[10, 11]
10[11, 12]
11[12, 13]
12[13, 14]
13[14, 15]
15[0, 1]
ノード 0 の第二回目の問い合わせは終了しまし
た。知っているノードは [1, 2, 3, 4] です。 4 個のノ
ードを知っています。
7[8, 9]
0[1, 2, 3, 4]
38
2[3, 4, 5,
6] 1[2, 3, 4,
5]
14[15, 0, 1,
2]
3[4, 5, 6,
7]
4[5, 6, 7, 8]
5[6, 7,
8, 9]
6[7, 8, 9,
10]
8[9, 10,
11, 12] 9[10, 11,
12, 13]
10[11, 12, 13,
14]
11[12, 13,
14, 15]
12[13, 14, 15,
0]
13[14, 15, 0,
1]
15[0, 1, 2, 3]
全てのノードが同じように、第二回目の問い合
わせを行った結果が示されています。
7[8, 9,
10, 11]
0[1, 2, 3, 4]
39
2[3, 4, 5,
6] 1[2, 3, 4,
5]
14[15, 0, 1,
2]
3[4, 5, 6,
7]
4[5, 6, 7, 8]
5[6, 7,
8, 9]
6[7, 8, 9,
10]
8[9, 10,
11, 12] 9[10, 11,
12, 13]
10[11, 12, 13,
14]
11[12, 13,
14, 15]
12[13, 14, 15,
0]
13[14, 15, 0,
1]
15[0, 1, 2, 3]
第三回目の問い合わせです。
自分が知っているノードのうち、一次元トーラス
上においてもっとも遠いノードについてノード情
報の問い合わせを行います。
7[8, 9,
10, 11]
0[1, 2, 3, 4]
40
2[3, 4, 5,
6] 1[2, 3, 4,
5]
14[15, 0, 1,
2]
3[4, 5, 6,
7]
4[5, 6, 7, 8]
5[6, 7,
8, 9]
6[7, 8, 9,
10]
8[9, 10,
11, 12] 9[10, 11,
12, 13]
10[11, 12, 13,
14]
11[12, 13,
14, 15]
12[13, 14, 15,
0]
13[14, 15, 0,
1]
15[0, 1, 2, 3]
問い合わせを受けたノードは、自分が知っている
全てのノードの情報を問い合わせ元ノードに伝
えます。
7[8, 9,
10, 11]
0[1, 2, 3, 4]
41
2[3, 4, 5,
6] 0[1, 2, 3, 4,
5, 6, 7, 8]
1[2, 3, 4,
5]
14[15, 0, 1,
2]
3[4, 5, 6,
7]
4[5, 6, 7, 8]
5[6, 7,
8, 9]
6[7, 8, 9,
10]
8[9, 10,
11, 12] 9[10, 11,
12, 13]
10[11, 12, 13,
14]
11[12, 13,
14, 15]
12[13, 14, 15,
0]
13[14, 15, 0,
1]
15[0, 1, 2, 3]
ノード 0 の第三回目の問い合わせは終了しまし
た。知っているノードは [1, 2, 3, 4, 5, 6, 7, 8] で
す。 8 個のノードを知っています。
7[8, 9,
10, 11]
42
2[3, 4, 5,
6] 1[2, 3, 4,
5]
14[15, 0, 1,
2]
3[4, 5, 6,
7]
4[5, 6, 7, 8]
5[6, 7,
8, 9]
6[7, 8, 9,
10]
7[8, 9,
10, 11]
8[9, 10,
11, 12] 9[10, 11,
12, 13]
10[11, 12, 13,
14]
11[12, 13,
14, 15]
12[13, 14, 15,
0]
13[14, 15, 0,
1]
15[0, 1, 2, 3]
 こうして、ノード 0 は三回の問い合わせだけで、
8 個のノードの情報を知ることができました。
 今後も一回問い合わせを行うたびに,知るノー
ドの数が二倍に増えていきます。
0[1, 2, 3, 4,
5, 6, 7, 8]
43
これ以降の結果は示しませんが、「馬跳
び」 DHT アルゴリズムの概略がお分かりになっ
たでしょうか?
44
おしまい
●
以上で, Dapps 味噌荘の基礎となる技術,
Justice of Punctual と,
まぜこぜと,
馬飛び
の説明は終わりです。

Más contenido relacionado

Similar a Misosou=Justice of Punctual+mazekoze+umatobi

『データ解析におけるプライバシー保護』勉強会 秘密計算
『データ解析におけるプライバシー保護』勉強会 秘密計算『データ解析におけるプライバシー保護』勉強会 秘密計算
『データ解析におけるプライバシー保護』勉強会 秘密計算
MITSUNARI Shigeo
 
Code iq×japanr 公開用
Code iq×japanr 公開用Code iq×japanr 公開用
Code iq×japanr 公開用
Nobuaki Oshiro
 

Similar a Misosou=Justice of Punctual+mazekoze+umatobi (11)

Mazekoze2
Mazekoze2Mazekoze2
Mazekoze2
 
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
 
『データ解析におけるプライバシー保護』勉強会 秘密計算
『データ解析におけるプライバシー保護』勉強会 秘密計算『データ解析におけるプライバシー保護』勉強会 秘密計算
『データ解析におけるプライバシー保護』勉強会 秘密計算
 
ggplot2 110129
ggplot2 110129ggplot2 110129
ggplot2 110129
 
Code iq×japanr 公開用
Code iq×japanr 公開用Code iq×japanr 公開用
Code iq×japanr 公開用
 
EmacsとGlossでお絵描きしてみるよ
EmacsとGlossでお絵描きしてみるよEmacsとGlossでお絵描きしてみるよ
EmacsとGlossでお絵描きしてみるよ
 
Donutsプロコンチャレンジ 2015 解説
Donutsプロコンチャレンジ 2015 解説Donutsプロコンチャレンジ 2015 解説
Donutsプロコンチャレンジ 2015 解説
 
実用Brainf*ckプログラミング
実用Brainf*ckプログラミング実用Brainf*ckプログラミング
実用Brainf*ckプログラミング
 
色々なダイクストラ高速化
色々なダイクストラ高速化色々なダイクストラ高速化
色々なダイクストラ高速化
 
2012年10月27日 Hbstudy#38
2012年10月27日 Hbstudy#382012年10月27日 Hbstudy#38
2012年10月27日 Hbstudy#38
 
ggplot2 110129
ggplot2 110129ggplot2 110129
ggplot2 110129
 

Misosou=Justice of Punctual+mazekoze+umatobi