76
Mental Jinro を支える暗号技術 Tsukuba.pm #3 吉村 優 https://twitter.com/_yyu_ http://qiita.com/yyu https://github.com/y-yu May 14, 2016 吉村 優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 1 / 21

Mental Jinroを支える暗号技術

  • Upload
    -

  • View
    358

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Mental Jinroを支える暗号技術

Mental Jinroを支える暗号技術Tsukuba.pm #3

吉村優

https://twitter.com/_yyu_http://qiita.com/yyu

https://github.com/y-yu

May 14, 2016

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 1 / 21

Page 2: Mental Jinroを支える暗号技術

自己紹介

筑波大学情報科学類学士(COINS11)WORD編集部 OB

プログラム論理研究室 OB

現在は Scalaを書く仕事に従事

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 2 / 21

Page 3: Mental Jinroを支える暗号技術

自己紹介

筑波大学情報科学類学士(COINS11)

WORD編集部 OB

プログラム論理研究室 OB

現在は Scalaを書く仕事に従事

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 2 / 21

Page 4: Mental Jinroを支える暗号技術

自己紹介

筑波大学情報科学類学士(COINS11)WORD編集部 OB

プログラム論理研究室 OB

現在は Scalaを書く仕事に従事

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 2 / 21

Page 5: Mental Jinroを支える暗号技術

自己紹介

筑波大学情報科学類学士(COINS11)WORD編集部 OB

プログラム論理研究室 OB

現在は Scalaを書く仕事に従事

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 2 / 21

Page 6: Mental Jinroを支える暗号技術

自己紹介

筑波大学情報科学類学士(COINS11)WORD編集部 OB

プログラム論理研究室 OB

現在は Scalaを書く仕事に従事

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 2 / 21

Page 7: Mental Jinroを支える暗号技術

Mental Jinroとは?

“ Mental Jinroは人狼からゲームマスターを排除したゲームである ”ゲームマスターとは何か?

そもそも人狼とは何か?

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 3 / 21

Page 8: Mental Jinroを支える暗号技術

Mental Jinroとは?

“ Mental Jinroは人狼からゲームマスターを排除したゲームである ”

ゲームマスターとは何か?

そもそも人狼とは何か?

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 3 / 21

Page 9: Mental Jinroを支える暗号技術

Mental Jinroとは?

“ Mental Jinroは人狼からゲームマスターを排除したゲームである ”ゲームマスターとは何か?

そもそも人狼とは何か?

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 3 / 21

Page 10: Mental Jinroを支える暗号技術

Mental Jinroとは?

“ Mental Jinroは人狼からゲームマスターを排除したゲームである ”ゲームマスターとは何か?

そもそも人狼とは何か?

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 3 / 21

Page 11: Mental Jinroを支える暗号技術

人狼とは?

人狼 ∗

プレイヤーはそれぞれが村人と村人に化けた人狼となり、自分自身の正体がばれないように他のプレイヤーと交渉して正体を探るゲームは半日単位で進行し、昼には全プレイヤーの投票により決まった人狼容疑者の処刑が、夜には人狼による村人の襲撃が行われる

I 全ての人狼を処刑することができれば村人チームの勝ち

I 人狼と同じ数まで村人を減らすことができれば人狼チームの勝ち

Wikipedia ——汝は人狼なりや?”∗人狼には様々なルールがあるが、このスライドではこのルールを用いる

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 4 / 21

Page 12: Mental Jinroを支える暗号技術

人狼とは?

人狼 ∗

“ プレイヤーはそれぞれが村人と村人に化けた人狼となり、自分自身の正体がばれないように他のプレイヤーと交渉して正体を探る

ゲームは半日単位で進行し、昼には全プレイヤーの投票により決まった人狼容疑者の処刑が、夜には人狼による村人の襲撃が行われる

I 全ての人狼を処刑することができれば村人チームの勝ち

I 人狼と同じ数まで村人を減らすことができれば人狼チームの勝ち

Wikipedia ——汝は人狼なりや?”∗人狼には様々なルールがあるが、このスライドではこのルールを用いる

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 4 / 21

Page 13: Mental Jinroを支える暗号技術

人狼とは?

人狼 ∗

“ プレイヤーはそれぞれが村人と村人に化けた人狼となり、自分自身の正体がばれないように他のプレイヤーと交渉して正体を探るゲームは半日単位で進行し、昼には全プレイヤーの投票により決まった人狼容疑者の処刑が、夜には人狼による村人の襲撃が行われる

I 全ての人狼を処刑することができれば村人チームの勝ち

I 人狼と同じ数まで村人を減らすことができれば人狼チームの勝ち

Wikipedia ——汝は人狼なりや?”∗人狼には様々なルールがあるが、このスライドではこのルールを用いる

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 4 / 21

Page 14: Mental Jinroを支える暗号技術

人狼とは?

人狼 ∗

“ プレイヤーはそれぞれが村人と村人に化けた人狼となり、自分自身の正体がばれないように他のプレイヤーと交渉して正体を探るゲームは半日単位で進行し、昼には全プレイヤーの投票により決まった人狼容疑者の処刑が、夜には人狼による村人の襲撃が行われる

I 全ての人狼を処刑することができれば村人チームの勝ち

I 人狼と同じ数まで村人を減らすことができれば人狼チームの勝ち

Wikipedia ——汝は人狼なりや?”∗人狼には様々なルールがあるが、このスライドではこのルールを用いる

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 4 / 21

Page 15: Mental Jinroを支える暗号技術

人狼とは?

人狼 ∗

“ プレイヤーはそれぞれが村人と村人に化けた人狼となり、自分自身の正体がばれないように他のプレイヤーと交渉して正体を探るゲームは半日単位で進行し、昼には全プレイヤーの投票により決まった人狼容疑者の処刑が、夜には人狼による村人の襲撃が行われる

I 全ての人狼を処刑することができれば村人チームの勝ち

I 人狼と同じ数まで村人を減らすことができれば人狼チームの勝ち

Wikipedia ——汝は人狼なりや?”∗人狼には様々なルールがあるが、このスライドではこのルールを用いる

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 4 / 21

Page 16: Mental Jinroを支える暗号技術

人狼の役職

人狼に必要な役職参加者を次の役職に分ける必要がある

村人人狼ゲームマスター

ゲームマスターとは何か?

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 5 / 21

Page 17: Mental Jinroを支える暗号技術

人狼の役職

人狼に必要な役職参加者を次の役職に分ける必要がある

村人

人狼ゲームマスター

ゲームマスターとは何か?

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 5 / 21

Page 18: Mental Jinroを支える暗号技術

人狼の役職

人狼に必要な役職参加者を次の役職に分ける必要がある

村人人狼

ゲームマスター

ゲームマスターとは何か?

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 5 / 21

Page 19: Mental Jinroを支える暗号技術

人狼の役職

人狼に必要な役職参加者を次の役職に分ける必要がある

村人人狼ゲームマスター

ゲームマスターとは何か?

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 5 / 21

Page 20: Mental Jinroを支える暗号技術

人狼の役職

人狼に必要な役職参加者を次の役職に分ける必要がある

村人人狼ゲームマスター

ゲームマスターとは何か?

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 5 / 21

Page 21: Mental Jinroを支える暗号技術

ゲームマスターと公平性ゲームマスターの役割

人狼と村人のチーム分けをする人狼に襲撃された村人を村人チームに宣告する人狼と村人の数を管理し、どちらかのチームが勝利した時それを宣言する

ゲームマスターとは審判

ゲームマスターが不公平だったら?

大問題!

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 6 / 21

Page 22: Mental Jinroを支える暗号技術

ゲームマスターと公平性ゲームマスターの役割

人狼と村人のチーム分けをする

人狼に襲撃された村人を村人チームに宣告する人狼と村人の数を管理し、どちらかのチームが勝利した時それを宣言する

ゲームマスターとは審判

ゲームマスターが不公平だったら?

大問題!

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 6 / 21

Page 23: Mental Jinroを支える暗号技術

ゲームマスターと公平性ゲームマスターの役割

人狼と村人のチーム分けをする人狼に襲撃された村人を村人チームに宣告する

人狼と村人の数を管理し、どちらかのチームが勝利した時それを宣言する

ゲームマスターとは審判

ゲームマスターが不公平だったら?

大問題!

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 6 / 21

Page 24: Mental Jinroを支える暗号技術

ゲームマスターと公平性ゲームマスターの役割

人狼と村人のチーム分けをする人狼に襲撃された村人を村人チームに宣告する人狼と村人の数を管理し、どちらかのチームが勝利した時それを宣言する

ゲームマスターとは審判

ゲームマスターが不公平だったら?

大問題!

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 6 / 21

Page 25: Mental Jinroを支える暗号技術

ゲームマスターと公平性ゲームマスターの役割

人狼と村人のチーム分けをする人狼に襲撃された村人を村人チームに宣告する人狼と村人の数を管理し、どちらかのチームが勝利した時それを宣言する

ゲームマスターとは審判

ゲームマスターが不公平だったら?

大問題!

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 6 / 21

Page 26: Mental Jinroを支える暗号技術

ゲームマスターと公平性ゲームマスターの役割

人狼と村人のチーム分けをする人狼に襲撃された村人を村人チームに宣告する人狼と村人の数を管理し、どちらかのチームが勝利した時それを宣言する

ゲームマスターとは審判

ゲームマスターが不公平だったら?

大問題!

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 6 / 21

Page 27: Mental Jinroを支える暗号技術

ゲームマスターと公平性ゲームマスターの役割

人狼と村人のチーム分けをする人狼に襲撃された村人を村人チームに宣告する人狼と村人の数を管理し、どちらかのチームが勝利した時それを宣言する

ゲームマスターとは審判

ゲームマスターが不公平だったら?

大問題!

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 6 / 21

Page 28: Mental Jinroを支える暗号技術

Mental Jinro

ゲームマスターを消そう!

ゲームマスターが消えると……

チーム分けはどうする?襲撃された村人の情報をどう伝える?勝敗は誰が判断する?

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 7 / 21

Page 29: Mental Jinroを支える暗号技術

Mental Jinro

ゲームマスターを消そう!

ゲームマスターが消えると……

チーム分けはどうする?襲撃された村人の情報をどう伝える?勝敗は誰が判断する?

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 7 / 21

Page 30: Mental Jinroを支える暗号技術

Mental Jinro

ゲームマスターを消そう!

ゲームマスターが消えると……チーム分けはどうする?

襲撃された村人の情報をどう伝える?勝敗は誰が判断する?

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 7 / 21

Page 31: Mental Jinroを支える暗号技術

Mental Jinro

ゲームマスターを消そう!

ゲームマスターが消えると……チーム分けはどうする?襲撃された村人の情報をどう伝える?

勝敗は誰が判断する?

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 7 / 21

Page 32: Mental Jinroを支える暗号技術

Mental Jinro

ゲームマスターを消そう!

ゲームマスターが消えると……チーム分けはどうする?襲撃された村人の情報をどう伝える?勝敗は誰が判断する?

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 7 / 21

Page 33: Mental Jinroを支える暗号技術

Mental Jinroを支える暗号技術

コミットメント

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 8 / 21

Page 34: Mental Jinroを支える暗号技術

Mental Jinroを支える暗号技術コミットメント

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 8 / 21

Page 35: Mental Jinroを支える暗号技術

コイントスゲーム

アリスとボブの二人がいるとする

1 アリスがコインの “表”または “裏”を紙に書き、紙を封筒に入れる

2 ボブはコインを投げる3 封筒から紙を取り出し、

I アリスの予想とコインの結果が同じなら、アリスの勝利I アリスの予想とコインの結果が違えば、ボブの勝利

4 このゲームは電話上で行う

アリスが予想を反故にする?

封筒をどうやって実現する?

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 9 / 21

Page 36: Mental Jinroを支える暗号技術

コイントスゲーム

アリスとボブの二人がいるとする1 アリスがコインの “表”または “裏”を紙に書き、紙を封筒に入れる

2 ボブはコインを投げる3 封筒から紙を取り出し、

I アリスの予想とコインの結果が同じなら、アリスの勝利I アリスの予想とコインの結果が違えば、ボブの勝利

4 このゲームは電話上で行う

アリスが予想を反故にする?

封筒をどうやって実現する?

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 9 / 21

Page 37: Mental Jinroを支える暗号技術

コイントスゲーム

アリスとボブの二人がいるとする1 アリスがコインの “表”または “裏”を紙に書き、紙を封筒に入れる

2 ボブはコインを投げる

3 封筒から紙を取り出し、I アリスの予想とコインの結果が同じなら、アリスの勝利I アリスの予想とコインの結果が違えば、ボブの勝利

4 このゲームは電話上で行う

アリスが予想を反故にする?

封筒をどうやって実現する?

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 9 / 21

Page 38: Mental Jinroを支える暗号技術

コイントスゲーム

アリスとボブの二人がいるとする1 アリスがコインの “表”または “裏”を紙に書き、紙を封筒に入れる

2 ボブはコインを投げる3 封筒から紙を取り出し、

I アリスの予想とコインの結果が同じなら、アリスの勝利I アリスの予想とコインの結果が違えば、ボブの勝利

4 このゲームは電話上で行う

アリスが予想を反故にする?

封筒をどうやって実現する?

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 9 / 21

Page 39: Mental Jinroを支える暗号技術

コイントスゲーム

アリスとボブの二人がいるとする1 アリスがコインの “表”または “裏”を紙に書き、紙を封筒に入れる

2 ボブはコインを投げる3 封筒から紙を取り出し、

I アリスの予想とコインの結果が同じなら、アリスの勝利I アリスの予想とコインの結果が違えば、ボブの勝利

4 このゲームは電話上で行う

アリスが予想を反故にする?

封筒をどうやって実現する?

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 9 / 21

Page 40: Mental Jinroを支える暗号技術

コイントスゲーム

アリスとボブの二人がいるとする1 アリスがコインの “表”または “裏”を紙に書き、紙を封筒に入れる

2 ボブはコインを投げる3 封筒から紙を取り出し、

I アリスの予想とコインの結果が同じなら、アリスの勝利I アリスの予想とコインの結果が違えば、ボブの勝利

4 このゲームは電話上で行う

アリスが予想を反故にする?

封筒をどうやって実現する?

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 9 / 21

Page 41: Mental Jinroを支える暗号技術

コイントスゲーム

アリスとボブの二人がいるとする1 アリスがコインの “表”または “裏”を紙に書き、紙を封筒に入れる

2 ボブはコインを投げる3 封筒から紙を取り出し、

I アリスの予想とコインの結果が同じなら、アリスの勝利I アリスの予想とコインの結果が違えば、ボブの勝利

4 このゲームは電話上で行う

アリスが予想を反故にする?

封筒をどうやって実現する?

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 9 / 21

Page 42: Mental Jinroを支える暗号技術

コイントスゲームプロトコル

1 ボブは p = 2q+ 1となる大きな素数 p, qをランダムに生成して、Z∗

p†の位数 qの部分群Gから生成元 ‡g, vをランダムに選

択して p, q, g, vをアリスへ送信する2 アリスは p, q, g, vを検証し、表と予想するならm := 1を選択し、裏と予想するならm := q− 1を選択し、乱数r ∈ {1, . . . , q− 1}を用いて c := grvm mod p計算し cをボブへ送信する

3 ボブはコイントスをして、結果をアリスへ送信する4 アリスは r,mを公開する5 ボブは c ≡ grvm (mod p)を検証する

†整数 x mod pかつ xy ≡ 1 (mod p)となる逆元 yが存在する xの集合である

‡後述する吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 10 / 21

Page 43: Mental Jinroを支える暗号技術

コイントスゲームプロトコル

1 ボブは p = 2q+ 1となる大きな素数 p, qをランダムに生成して、Z∗

p†の位数 qの部分群Gから生成元 ‡g, vをランダムに選

択して p, q, g, vをアリスへ送信する

2 アリスは p, q, g, vを検証し、表と予想するならm := 1を選択し、裏と予想するならm := q− 1を選択し、乱数r ∈ {1, . . . , q− 1}を用いて c := grvm mod p計算し cをボブへ送信する

3 ボブはコイントスをして、結果をアリスへ送信する4 アリスは r,mを公開する5 ボブは c ≡ grvm (mod p)を検証する

†整数 x mod pかつ xy ≡ 1 (mod p)となる逆元 yが存在する xの集合である

‡後述する吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 10 / 21

Page 44: Mental Jinroを支える暗号技術

コイントスゲームプロトコル

1 ボブは p = 2q+ 1となる大きな素数 p, qをランダムに生成して、Z∗

p†の位数 qの部分群Gから生成元 ‡g, vをランダムに選

択して p, q, g, vをアリスへ送信する2 アリスは p, q, g, vを検証し、表と予想するならm := 1を選択し、裏と予想するならm := q− 1を選択し、乱数r ∈ {1, . . . , q− 1}を用いて c := grvm mod p計算し cをボブへ送信する

3 ボブはコイントスをして、結果をアリスへ送信する4 アリスは r,mを公開する5 ボブは c ≡ grvm (mod p)を検証する

†整数 x mod pかつ xy ≡ 1 (mod p)となる逆元 yが存在する xの集合である

‡後述する吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 10 / 21

Page 45: Mental Jinroを支える暗号技術

コイントスゲームプロトコル

1 ボブは p = 2q+ 1となる大きな素数 p, qをランダムに生成して、Z∗

p†の位数 qの部分群Gから生成元 ‡g, vをランダムに選

択して p, q, g, vをアリスへ送信する2 アリスは p, q, g, vを検証し、表と予想するならm := 1を選択し、裏と予想するならm := q− 1を選択し、乱数r ∈ {1, . . . , q− 1}を用いて c := grvm mod p計算し cをボブへ送信する

3 ボブはコイントスをして、結果をアリスへ送信する

4 アリスは r,mを公開する5 ボブは c ≡ grvm (mod p)を検証する

†整数 x mod pかつ xy ≡ 1 (mod p)となる逆元 yが存在する xの集合である

‡後述する吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 10 / 21

Page 46: Mental Jinroを支える暗号技術

コイントスゲームプロトコル

1 ボブは p = 2q+ 1となる大きな素数 p, qをランダムに生成して、Z∗

p†の位数 qの部分群Gから生成元 ‡g, vをランダムに選

択して p, q, g, vをアリスへ送信する2 アリスは p, q, g, vを検証し、表と予想するならm := 1を選択し、裏と予想するならm := q− 1を選択し、乱数r ∈ {1, . . . , q− 1}を用いて c := grvm mod p計算し cをボブへ送信する

3 ボブはコイントスをして、結果をアリスへ送信する4 アリスは r,mを公開する

5 ボブは c ≡ grvm (mod p)を検証する

†整数 x mod pかつ xy ≡ 1 (mod p)となる逆元 yが存在する xの集合である

‡後述する吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 10 / 21

Page 47: Mental Jinroを支える暗号技術

コイントスゲームプロトコル

1 ボブは p = 2q+ 1となる大きな素数 p, qをランダムに生成して、Z∗

p†の位数 qの部分群Gから生成元 ‡g, vをランダムに選

択して p, q, g, vをアリスへ送信する2 アリスは p, q, g, vを検証し、表と予想するならm := 1を選択し、裏と予想するならm := q− 1を選択し、乱数r ∈ {1, . . . , q− 1}を用いて c := grvm mod p計算し cをボブへ送信する

3 ボブはコイントスをして、結果をアリスへ送信する4 アリスは r,mを公開する5 ボブは c ≡ grvm (mod p)を検証する†整数 x mod pかつ xy ≡ 1 (mod p)となる逆元 yが存在する xの集合で

ある‡後述する

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 10 / 21

Page 48: Mental Jinroを支える暗号技術

コイントスゲームの検証

アリスが予想を反故にする?

アリスはmをコミットした後で、m′(m′ 6= m)と偽れる⇓ ならば

アリスは grvm = gr′vm

′ となる r′を計算できる⇓ ならば

アリスは gを何乗したら vとなるかという離散対数が求められる

grvm ≡ gr′vm

′(mod p)

vm−m′ ≡ gr′−r (mod p)

logg (vm−m′

) ≡ r′ − r (mod q)

logg v ≡ (r′ − r)/(m−m′) (mod q)

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 11 / 21

Page 49: Mental Jinroを支える暗号技術

コイントスゲームの検証アリスが予想を反故にする?

アリスはmをコミットした後で、m′(m′ 6= m)と偽れる⇓ ならば

アリスは grvm = gr′vm

′ となる r′を計算できる⇓ ならば

アリスは gを何乗したら vとなるかという離散対数が求められる

grvm ≡ gr′vm

′(mod p)

vm−m′ ≡ gr′−r (mod p)

logg (vm−m′

) ≡ r′ − r (mod q)

logg v ≡ (r′ − r)/(m−m′) (mod q)

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 11 / 21

Page 50: Mental Jinroを支える暗号技術

コイントスゲームの検証アリスが予想を反故にする?

アリスはmをコミットした後で、m′(m′ 6= m)と偽れる⇓ ならば

アリスは grvm = gr′vm

′ となる r′を計算できる⇓ ならば

アリスは gを何乗したら vとなるかという離散対数が求められる

grvm ≡ gr′vm

′(mod p)

vm−m′ ≡ gr′−r (mod p)

logg (vm−m′

) ≡ r′ − r (mod q)

logg v ≡ (r′ − r)/(m−m′) (mod q)

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 11 / 21

Page 51: Mental Jinroを支える暗号技術

コイントスゲームの検証アリスが予想を反故にする?

アリスはmをコミットした後で、m′(m′ 6= m)と偽れる⇓ ならば

アリスは grvm = gr′vm

′ となる r′を計算できる⇓ ならば

アリスは gを何乗したら vとなるかという離散対数が求められる

grvm ≡ gr′vm

′(mod p)

vm−m′ ≡ gr′−r (mod p)

logg (vm−m′

) ≡ r′ − r (mod q)

logg v ≡ (r′ − r)/(m−m′) (mod q)

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 11 / 21

Page 52: Mental Jinroを支える暗号技術

コイントスゲームの検証アリスが予想を反故にする?

アリスはmをコミットした後で、m′(m′ 6= m)と偽れる⇓ ならば

アリスは grvm = gr′vm

′ となる r′を計算できる⇓ ならば

アリスは gを何乗したら vとなるかという離散対数が求められる

grvm ≡ gr′vm

′(mod p)

vm−m′ ≡ gr′−r (mod p)

logg (vm−m′

) ≡ r′ − r (mod q)

logg v ≡ (r′ − r)/(m−m′) (mod q)

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 11 / 21

Page 53: Mental Jinroを支える暗号技術

離散対数問題

離散対数問題

“ 次の条件を満す g, p, y(y = gx mod p)が与えられたとき、xを求める問題のことである

クラウドを支えるこれからの暗号技術 [2]”

g, pが次を満すとき、離散対数問題を解くことは困難

pは巨大な素数p− 1の約数の中に、巨大な素数 qが含まれているgは全ての i = 1, . . . , q− 1について、gi 6≡ 1 (mod p)となる §

§このような gのことを生成元と言い、生成元は全ての i = 1, . . . , q− 1とj = 1, . . . , q− 1について、i 6= jならば gi 6≡ gj (mod p)となる吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 12 / 21

Page 54: Mental Jinroを支える暗号技術

離散対数問題

離散対数問題

“ 次の条件を満す g, p, y(y = gx mod p)が与えられたとき、xを求める問題のことである

クラウドを支えるこれからの暗号技術 [2]”g, pが次を満すとき、離散対数問題を解くことは困難

pは巨大な素数p− 1の約数の中に、巨大な素数 qが含まれているgは全ての i = 1, . . . , q− 1について、gi 6≡ 1 (mod p)となる §

§このような gのことを生成元と言い、生成元は全ての i = 1, . . . , q− 1とj = 1, . . . , q− 1について、i 6= jならば gi 6≡ gj (mod p)となる吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 12 / 21

Page 55: Mental Jinroを支える暗号技術

離散対数問題

離散対数問題

“ 次の条件を満す g, p, y(y = gx mod p)が与えられたとき、xを求める問題のことである

クラウドを支えるこれからの暗号技術 [2]”g, pが次を満すとき、離散対数問題を解くことは困難

pは巨大な素数

p− 1の約数の中に、巨大な素数 qが含まれているgは全ての i = 1, . . . , q− 1について、gi 6≡ 1 (mod p)となる §

§このような gのことを生成元と言い、生成元は全ての i = 1, . . . , q− 1とj = 1, . . . , q− 1について、i 6= jならば gi 6≡ gj (mod p)となる吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 12 / 21

Page 56: Mental Jinroを支える暗号技術

離散対数問題

離散対数問題

“ 次の条件を満す g, p, y(y = gx mod p)が与えられたとき、xを求める問題のことである

クラウドを支えるこれからの暗号技術 [2]”g, pが次を満すとき、離散対数問題を解くことは困難

pは巨大な素数p− 1の約数の中に、巨大な素数 qが含まれている

gは全ての i = 1, . . . , q− 1について、gi 6≡ 1 (mod p)となる §

§このような gのことを生成元と言い、生成元は全ての i = 1, . . . , q− 1とj = 1, . . . , q− 1について、i 6= jならば gi 6≡ gj (mod p)となる吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 12 / 21

Page 57: Mental Jinroを支える暗号技術

離散対数問題

離散対数問題

“ 次の条件を満す g, p, y(y = gx mod p)が与えられたとき、xを求める問題のことである

クラウドを支えるこれからの暗号技術 [2]”g, pが次を満すとき、離散対数問題を解くことは困難

pは巨大な素数p− 1の約数の中に、巨大な素数 qが含まれているgは全ての i = 1, . . . , q− 1について、gi 6≡ 1 (mod p)となる §

§このような gのことを生成元と言い、生成元は全ての i = 1, . . . , q− 1とj = 1, . . . , q− 1について、i 6= jならば gi 6≡ gj (mod p)となる吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 12 / 21

Page 58: Mental Jinroを支える暗号技術

コイントスゲームプロトコル

1 ボブは p = 2q+ 1となる大きな素数 p, qをランダムに生成して、Z∗

p†の位数 qの部分群Gから生成元 ‡g, vをランダムに選

択して p, q, g, vをアリスへ送信する2 アリスは p, q, g, vを検証し、表と予想するならm := 1を選択し、裏と予想するならm := q− 1を選択し、乱数r ∈ {1, . . . , q− 1}を用いて c := grvm mod p計算し cをボブへ送信する

3 ボブはコイントスをして、結果をアリスへ送信する4 アリスは r,mを公開する5 ボブは c ≡ grvm (mod p)を検証する†整数 x mod pかつ xy ≡ 1 (mod p)となる逆元 yが存在する xの集合で

ある‡後述する

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 13 / 21

Page 59: Mental Jinroを支える暗号技術

コイントスゲームの検証アリスが予想を反故にする?

アリスはmをコミットした後で、m′(m′ 6= m)と偽れる⇓ ならば

アリスは grvm = gr′vm

′ となる r′を計算できる⇓ ならば

アリスは gを何乗したら vとなるかという離散対数が求められる

grvm ≡ gr′vm

′(mod p)

vm−m′ ≡ gr′−r (mod p)

logg (vm−m′

) ≡ r′ − r (mod q)

logg v ≡ (r′ − r)/(m−m′) (mod q)

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 14 / 21

Page 60: Mental Jinroを支える暗号技術

コイントスゲームの検証

アリスはmをコミットした後で、m′(m′ 6= m)と偽れる⇓ ならば

アリスは gを何乗したら vとなるかという離散対数が求められる

離散対数問題を解くことは困難であるということに矛盾する

アリスはmをコミットした後でm′と偽ることは困難である

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 15 / 21

Page 61: Mental Jinroを支える暗号技術

コイントスゲームの検証

アリスはmをコミットした後で、m′(m′ 6= m)と偽れる⇓ ならば

アリスは gを何乗したら vとなるかという離散対数が求められる

離散対数問題を解くことは困難であるということに矛盾する

アリスはmをコミットした後でm′と偽ることは困難である

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 15 / 21

Page 62: Mental Jinroを支える暗号技術

コイントスゲームの検証

アリスはmをコミットした後で、m′(m′ 6= m)と偽れる⇓ ならば

アリスは gを何乗したら vとなるかという離散対数が求められる

離散対数問題を解くことは困難であるということに矛盾する

アリスはmをコミットした後でm′と偽ることは困難である

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 15 / 21

Page 63: Mental Jinroを支える暗号技術

コイントスゲームの検証

封筒をどうやって実現する?

ボブは grvmからmを特定できる↓ しかし

g, vは生成元である⇓ 従って

gr mod pは 1, . . . , p− 1の全ての値を取る⇓ つまり

全てのm′には grvm = gr′vm

′ となる r′が存在する⇓ つまり

ボブは正しいmを区別することができない

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 16 / 21

Page 64: Mental Jinroを支える暗号技術

コイントスゲームの検証

封筒をどうやって実現する?

ボブは grvmからmを特定できる↓ しかし

g, vは生成元である⇓ 従って

gr mod pは 1, . . . , p− 1の全ての値を取る⇓ つまり

全てのm′には grvm = gr′vm

′ となる r′が存在する⇓ つまり

ボブは正しいmを区別することができない

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 16 / 21

Page 65: Mental Jinroを支える暗号技術

コイントスゲームの検証

封筒をどうやって実現する?

ボブは grvmからmを特定できる↓ しかし

g, vは生成元である⇓ 従って

gr mod pは 1, . . . , p− 1の全ての値を取る⇓ つまり

全てのm′には grvm = gr′vm

′ となる r′が存在する⇓ つまり

ボブは正しいmを区別することができない

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 16 / 21

Page 66: Mental Jinroを支える暗号技術

コイントスゲームの検証

封筒をどうやって実現する?

ボブは grvmからmを特定できる↓ しかし

g, vは生成元である⇓ 従って

gr mod pは 1, . . . , p− 1の全ての値を取る⇓ つまり

全てのm′には grvm = gr′vm

′ となる r′が存在する⇓ つまり

ボブは正しいmを区別することができない

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 16 / 21

Page 67: Mental Jinroを支える暗号技術

コイントスゲームの検証

封筒をどうやって実現する?

ボブは grvmからmを特定できる↓ しかし

g, vは生成元である⇓ 従って

gr mod pは 1, . . . , p− 1の全ての値を取る⇓ つまり

全てのm′には grvm = gr′vm

′ となる r′が存在する⇓ つまり

ボブは正しいmを区別することができない

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 16 / 21

Page 68: Mental Jinroを支える暗号技術

まとめ

Mental Jinroはゲームマスターを排除した人狼であるコミットメントを利用することで、コミットした情報を反故にしたり、コミットメントからコミットした情報を特定されることを防げるMental Jinroはこのコミットメントによって成り立っているMental Jinroの詳細はQiitaの記事を参照のこと

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 17 / 21

Page 69: Mental Jinroを支える暗号技術

まとめ

Mental Jinroはゲームマスターを排除した人狼である

コミットメントを利用することで、コミットした情報を反故にしたり、コミットメントからコミットした情報を特定されることを防げるMental Jinroはこのコミットメントによって成り立っているMental Jinroの詳細はQiitaの記事を参照のこと

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 17 / 21

Page 70: Mental Jinroを支える暗号技術

まとめ

Mental Jinroはゲームマスターを排除した人狼であるコミットメントを利用することで、コミットした情報を反故にしたり、コミットメントからコミットした情報を特定されることを防げる

Mental Jinroはこのコミットメントによって成り立っているMental Jinroの詳細はQiitaの記事を参照のこと

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 17 / 21

Page 71: Mental Jinroを支える暗号技術

まとめ

Mental Jinroはゲームマスターを排除した人狼であるコミットメントを利用することで、コミットした情報を反故にしたり、コミットメントからコミットした情報を特定されることを防げるMental Jinroはこのコミットメントによって成り立っている

Mental Jinroの詳細はQiitaの記事を参照のこと

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 17 / 21

Page 72: Mental Jinroを支える暗号技術

まとめ

Mental Jinroはゲームマスターを排除した人狼であるコミットメントを利用することで、コミットした情報を反故にしたり、コミットメントからコミットした情報を特定されることを防げるMental Jinroはこのコミットメントによって成り立っているMental Jinroの詳細はQiitaの記事を参照のこと

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 17 / 21

Page 73: Mental Jinroを支える暗号技術

目次

1 自己紹介

2 Mental Jinroとは?人狼とは?人狼の役職ゲームマスターと公平性Mental Jinro

3 コミットメントコイントスゲームコイントスゲームの検証離散対数問題

4 まとめ

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 18 / 21

Page 74: Mental Jinroを支える暗号技術

参考文献

H.デルフス, H.クネーブル.暗号と確率的アルゴリズム入門—数学理論と応用.シュプリンガーフェアラーク東京, 12 2003.

光成滋生.クラウドを支えるこれからの暗号技術.秀和システム, 6 2015.

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 19 / 21

Page 75: Mental Jinroを支える暗号技術

余談

このスライドは LuaLATEXと Beamerにより作成され、Travis CIによる自動コンパイルが行われているソースコード

https://github.com/y-yu/mental-jinro-slidePDF(アニメーションあり)

https://y-yu.github.io/mental-jinro-slide/mental_jinro.pdf

PDF(アニメーションなし)https://y-yu.github.io/mental-jinro-slide/mental_jinro_without_animation.pdf

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 20 / 21

Page 76: Mental Jinroを支える暗号技術

Thank you for listening!

Any question?

吉村優 (https://twitter.com/_yyu_) Mental Jinro を支える暗号技術 May 14, 2016 21 / 21