いぬおさんのおもしろ数学実験室

おいしい紅茶でも飲みながら数学、物理、工学、プログラミング、そして読書を楽しみましょう

電話でコイン投げの賭けをする

 電話で2人がコイン投げの賭けをやります。A君、B君としましょう。2人で1万円を賭けてコイン投げをやっているのです。A君が表、B君が裏に賭けました。A君がコインを投げて、表が出ました。A君は自分が勝ったことをB君に話しますが、B君は信用してくれません。B君にしてみれば「ホントか!?」とでも言いたいところでしょう。コイン投げでなくてもよいのです。何か2人ともインチキのしようがない、電話越しのよい賭けはありませんか……?
 たまたま2人の家では同じ新聞をとっていました。そこでB君は「先週の月曜の新聞の、3ページの最初の単語の字数が奇数か偶数か、で賭けないか?」と提案しましたが、A君は「おまえ、手元に新聞があって知ってるんだろ?」。だめですね。コインの裏表をB君に選ばせ、A君がコインを投げる様子をwebカメラで撮ってB君に送るのは? これもだめ。A君が動画に細工するかも知れないし、いくつも撮っておいて都合のいいものを送るかも知れません。
 いい方法があります。A君は大きな素数p,qを用意します(素数というのは1と自分自身以外に約数のない数。例えば5は素数だが、6は素数ではない)。pもqも大きな数、1000桁とか2000桁の数です。A君はB君にpとqの積を伝えておきます(r=pqとし、rを伝える。pとqはB君にはナイショ)。q<pとしておきましょう。A君はB君に「小さい方、qの4桁目が奇数か偶数かを当ててくれ」と言います。当たればB君の勝ちです。勝敗をB君に確認させたければ、A君が用意したp,qをB君に教えてやればよいのです。qの4桁目がB君の予想と一致しているか調べ、p,qをかけ算すれば確かにrになることを確認させることができます。5000桁でも10000桁でも、パソコンがあればかけ算など一瞬です。
 ここで大事な問題がありますね。「積rをあらかじめB君に教えてしまったら、素因数分解されてp,qが分かってしまい、賭けにならないのではないか?」ということです。でもその心配はいりません。p,qが大きな素数(1000桁とか)だったら、積rをB君に教えても素因数分解されることはないのです。素因数分解は非常に難しいということになっています。簡単だと思う人は、せいぜい2桁か3桁くらいの数しか相手にしていないからです(試しに4桁の数、1031を素因数分解してみてください。結構大変です。電卓を使ってもよいです。実は素数)。「非常に難しいということになっています」と書いたのは、そう証明されているわけではないからです。今のところ例えば「1000桁の数の素因数分解はこういう条件のコンピュータで×××万年かかる」みたいな証明がないのです。でも、素因数分解は困難であるという数学的な経験則を利用した暗号が実用になっています。例えば前にも書いたRSA暗号です。

 このコイン投げの話は多分『情報セキュリティの科学―マジック・プロトコルへの招待』(太田和夫、渡辺治、黒沢 馨1995講談社ブルーバックス)にあったと思うのですが、今手元になく、はっきりしません。面白い話だなあ、と思った覚えがあります。こうした分野も面白そうで勉強してみたいのですが、難しそうです。がんばります。