GnuPGの応用:じゃんけん
暗号を使うことにより、メールなどを通じて遠隔の場所にいる人とじゃんけんを行うことができます。
暗号を使用しない場合のじゃんけん
まず、暗号を使用せず、じゃんけんを行う場合を考えてみます。
暗号化の使用、かつ第三者の介入なしにメールなどを使用してじゃんけんすることは事実上できません。なぜなら、後発の送信者が受信した他方のじゃんけんの手を見ていないことを担保する情報がないからです。
例えば・・・・・・二人がじゃんけんした場合は以下のようになります。
- AがBにメール送信:「チョキ」
- BがAにメール送信:「グー」
ただ、この場合、BがAの結果を見ていない、という保証はありません。
BがAに「グー」で勝ったのは偶然だったかも知れませんが、もしかしてAの「チョキ」を見て「グー」を出したのかも知れません。Bがプログラムに長けているとしたら、もしかしてAが送信したメールに反応して「グー」を出したのかも知れません。
この解決策として考えられるのが第三者の審判役の介入が考えられます。
この場合は以下のようになります。
- AがCにメール送信:「チョキ」
- BがCにメール送信:「グー」
- Cが結果を確認
この場合、Cが介入することによりA、もしくはBがそれぞれの結果を見ていないことを保証できます。
暗号を使用したじゃんけん
暗号を使用するとこれを簡単に解決することができます。
この場合以下のようになります。
- Aは「チョキ」と入力したファイルを対称暗号で暗号化(パスワードはAが選択)
- Bは「グー」と入力したファイルを対称暗号で暗号化(パスワードはBが選択)
- AはBに「チョキ」を暗号化したファイルをメールで送信
- BはAに「グー」を暗号化したファイルをメールで送信
- AはBからのファイルの受信を確認後、1で選択したパスワードを送信
- BはAからのファイルの受信を確認後、2で選択したパスワードを送信
- それぞれ結果を確認
つまり、この場合A、Bそれぞれは暗号化されたファイルを持っているという事実をもってそれぞれ相手の手を担保することになり、不正を防ぐことができます。この場合、AとBはそれぞれ相手のファイルを持つため、それぞれが相手の手を見て自分の手を出した、ということがないことになります。併せて電子署名を同時に使用することにより、それぞれの手が確かに当人により発行されたかという確認も可能となります。
さらなる応用
ファイルそのものを担保とすることができることで、いくつかの応用が考えられます。
- 将棋・囲碁などの封じ手の保存(ファイルは双方、もしくは第三者により保持)
- 特殊なケースでの情報の公表など「情報の受け渡し」とその「公表日」が異なる場合の情報配布(公表者はまずファイルを他方に渡し、パスワードを後から送信する。)尚、これを応用したものがSteamなどのゲームプラットフォームで行われる「プレローディング」です。サービスはユーザーに暗号化されたゲームをあらかじめ送信しておき、公開日にそれに対応するキーを配信します。
GNU Privacy Guard講座