メンタルポーカー:ディーラーなしで公平に配牌する暗号学
1979年、のちにチューリング賞を受賞する2人の暗号学者が、遊び心のある問いを立てました。互いに信用しない2人が、電話越しに公平なポーカーを打てるか? ディーラーも審判もおらず、相手の姿も見えない。それでも、誰も覗けず、誰もカードをすり替えられないことを保証する——その答えが「メンタルポーカー」プロトコルです。今日のあらゆる検証可能な配牌システムの祖先にあたります。
南京錠の例え:3分でわかる核心
すべてのカードを1枚ずつ箱に入れると想像してください。鍵になる道具は特殊な南京錠です。1つの箱に複数の錠を同時に掛けられ、外す順番は自由(数学的には「可換暗号」と呼びます)。
- あなたが暗号化:52枚をそれぞれ箱に入れ、全箱に自分の錠を掛け、箱の順序をシャッフルして相手に渡す
- 相手が暗号化:中身は見えないまま(あなたの錠が掛かっている)、全箱に自分の錠を追加し、もう一度シャッフルする
- この時点で:各箱には2つの錠が掛かり、順序は2人によって攪拌済み——どちらか1人が最終順序を知ることも、決めることもできません
- 配牌:あなたに配られた箱については、相手が(その箱だけ)自分の錠を外し、あなたが自分の錠を外す——カードを見るのはあなただけ
- ショーダウン:双方が該当する箱の鍵を差し出し、誰でも開けて確認できる
この流れに不正の足場はありません。先に覗こうにも相手の鍵がなく、すり替えようにも相手の錠が掛かっており、後から言い逃れようにも全手順が記録されています。
1979年から今日まで:強くなった3つのもの
原型は理論上の構成でした。実用化は3つの進歩のおかげです。
- より強い暗号プリミティブ:現代の楕円曲線暗号により「可換の錠」は安全かつ高速になり、スマホのブラウザでもミリ秒で処理できます
- コミットメントとハッシュチェーン:各ステップを実行前に「封印」し、ハッシュチェーンで痕跡を残すことで、1ハンド全体が検証可能な証拠の鎖になります
- ブラウザが暗号端末になった:現代のブラウザには安全な乱数と暗号のインターフェースが標準搭載され、「全員が自分の金庫を持ち歩く」ことが現実になりました
Fair Poker の実装上の選択
Fair Poker はこの学術プロトコルをプレイ可能な製品へと工学化しました。着席プレイヤー全員のブラウザが順にデッキを暗号化・シャッフルし、カードごとの復号鍵は受け取る本人だけに送られ、中継サーバーは署名済みの暗号文だけを運びます(運営はあなたのカードを見られるのか参照)。そして各ハンドの完全な記録は公開検証ツールで自分の手で再検証できます。
一言でまとめると:メンタルポーカーは「公平」を、人への信頼から数学への信頼に置き換えました。人は変わり、買収され、間違えます。離散対数はそうなりません。
よくある質問
- 性能は足りる? 52枚のマルチパーティ暗号化シャッフルは現代の端末では1秒未満です。ボトルネックは通常、計算ではなくネットワークです
- 切断されたら? プロトコルは複数当事者の参加を前提とするため、切断からの復旧は本当に難しい工学課題です——Fair Poker が再接続と状態復元に多大な労力を注ぐ理由でもあります
- 共謀は防げる? 防げません。メンタルポーカーが根治するのは配牌層の不正です。プレイヤーが場外で結託する問題は別の領域です(共謀特集参照)