公平なガチャ(tsukuba.lua)

15
公平なガチャ tsukuba.lua 吉村 優 [email protected] February 12, 2017 (Commit ID: 37f77d0) 吉村 優 公平なガチャ February 12, 2017 1 / 15

Upload: yyu

Post on 21-Feb-2017

223 views

Category:

Software


1 download

TRANSCRIPT

Page 1: 公平なガチャ(tsukuba.lua)

公平なガチャtsukuba.lua

吉村優

[email protected]

February 12, 2017(Commit ID: 37f77d0)

吉村優 公平なガチャ February 12, 2017 1 / 15

Page 2: 公平なガチャ(tsukuba.lua)

自己紹介

Twitter @_yyu_

Qiita yyu

GitHub y-yu

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

吉村優 公平なガチャ February 12, 2017 2 / 15

Page 3: 公平なガチャ(tsukuba.lua)

ガチャとは?

ソーシャルゲームなどに実装された機能のひとつユーザーがお金を投入すると確率で特定の景品を入手できる

誰が確率を計算するの?

運営のサーバー?

サーバーの実装が正しい確率に従っているのか?

吉村優 公平なガチャ February 12, 2017 3 / 15

Page 4: 公平なガチャ(tsukuba.lua)

公平なガチャ

次のような公平なガチャが欲しいユーザーにとっても運営にとっても、ガチャによる景品の出現確率が実装に基づいて明らかである悪意を持つユーザーや、悪意を持つ運営による確率操作ができない

吉村優 公平なガチャ February 12, 2017 4 / 15

Page 5: 公平なガチャ(tsukuba.lua)

コミットメント

コミットメントコミット

送信者はコミットしたい情報 bを暗号化して受信者に送信する

公開送信者は受信者が bを復元できるように付加的な情報 rを受信者に送信する

コミットメントの性質隠蔽 コミットのステップでは、受信者はコミットされた値につ

いて何も分からない束縛 送信者はコミットのステップ後に、コミットした値を変更

することができない吉村優 公平なガチャ February 12, 2017 5 / 15

Page 6: 公平なガチャ(tsukuba.lua)

コミットメントを用いた公平な乱数

1 サーバーは乱数mを生成しそのコミットメント c := C(m, r)をユーザーに送信する

2 乱数を利用する3 サーバーは乱数mとコミットメント情報 rをユーザーに公開する

4 ユーザーは c = C(m, r)を検証する

吉村優 公平なガチャ February 12, 2017 6 / 15

Page 7: 公平なガチャ(tsukuba.lua)

課題

サーバーはコミットメントを否認できるI あるコミットメントに対して、それはサーバーが発行したものではないと主張できる

I これは署名で防ぐことができるI 署名を利用すると検証鍵の配布機関が必要になる

吉村優 公平なガチャ February 12, 2017 7 / 15

Page 8: 公平なガチャ(tsukuba.lua)

ブロックチェーン

ブロックチェーンの性質一度ブロックチェーンに書き込まれたデータの書き換えが極めて困難信頼ある第三者を仮定しなくてよい

Bitcoinでは取引をブロックチェーンに書き込むBitcoinの OP_RETURNを使うことで、Bitcoinのブロックチェーンに任意のデータ∗を書き込める

∗ただしデータの容量は 80byte以下吉村優 公平なガチャ February 12, 2017 8 / 15

Page 9: 公平なガチャ(tsukuba.lua)

提案された公平な乱数の概要

1 サーバーは乱数を発生させて、そのコミットメントをブロックチェーンに書き込む

2 ユーザーはブロックチェーンを見てコミットメントを確認する

3 乱数を利用する4 サーバーは乱数とコミットメント情報を公開する5 ユーザーは 4 を検証する

吉村優 公平なガチャ February 12, 2017 9 / 15

Page 10: 公平なガチャ(tsukuba.lua)

提案された公平な乱数の詳細1 サーバーはハッシュ関数Hをユーザーに公開する2 サーバーは乱数 rsを発生させて、そのコミットメントをブロックチェーンに書き込む

3 ユーザーはブロックチェーンに書き込まれたコミットメントを確認する

4 ユーザーはサーバーに乱数 ruを送信する5 ユーザーはサーバーに i(i > 0)番目の乱数を要求する6 サーバーは次を計算してランダムな値 aiをユーザーに送信する

ai := H(ru || H(H(· · ·H︸ ︷︷ ︸i

(ru || rs)))

7 ゲームの後、サーバーは rsとコミットメント情報を公開する8 ユーザーはランダムな値を検証する

吉村優 公平なガチャ February 12, 2017 10 / 15

Page 11: 公平なガチャ(tsukuba.lua)

課題

この方法はラスベガス†なガチャしか実装できないI 一定の課金で任意の景品がもらえるI 重複が何度か発生した場合、任意の景品が貰える

†有限回の試行で特定の結果が得れない可能性があること吉村優 公平なガチャ February 12, 2017 11 / 15

Page 12: 公平なガチャ(tsukuba.lua)

まとめ

ガチャ(乱数)をより公平にするために、コミットメントをブロックチェーンに書き込むという手法が提案されたラスベガスではないアルゴリズムを開発すれば、ライブの座席チケットの抽選などにも使える実はラスベガスではないアルゴリズムとMental Pokerは関係がある?

吉村優 公平なガチャ February 12, 2017 12 / 15

Page 13: 公平なガチャ(tsukuba.lua)

参考文献

[1] 佐古和恵,井口圭一.ブロックチェーンを用いたオンラインゲーム向け検証可能乱数発生.暗号と情報セキュリティシンポジウム予稿集 (SCIS2017), No.1F2-4, January 2017.

[2] 吉村優.コミットメントによる公平なガチャシステムと電子署名, 2016.

[3] 吉村優.Bitcoinのブロックチェーンに任意の 80byteデータを刻みこむ, 2017.

吉村優 公平なガチャ February 12, 2017 13 / 15

Page 14: 公平なガチャ(tsukuba.lua)

目次

1 自己紹介2 ガチャとは?3 公平なガチャ4 コミットメント5 コミットメントを用いた公平な乱数6 ブロックチェーン7 提案されている公平な乱数8 課題9 まとめ

吉村優 公平なガチャ February 12, 2017 14 / 15

Page 15: 公平なガチャ(tsukuba.lua)

Thank you for your listening!

吉村優 公平なガチャ February 12, 2017 15 / 15