アリスとボブは友達です。友達としてはお互いに好意を持っていますが、異性としてお互いにどう思っているのかは知りません。もし直接告白してしまうと、片想いだった場合に友達関係が解消されてしまうリスクがあります。なるべく気まずくならないように、両想いかどうかを知ることはできないでしょうか?
もし両想いなら二人ともハッピーです。もしお互いに「異性としては興味なし」ならば、友達関係は継続しますし、お互いの足並みが揃っているので、この場合も二人ともハッピーです。気まずくなるのは片想いのときです。「両想いかどうか」だけを知ることができて、「両想いではない」と判定された場合も「お互いに興味なし」と「どちらかの片想い」の二つの状態が区別できないような仕組みがあったら、気まずくならない告白ができたことになりそうです。
好きを1、興味なしを0とみなすと、「両想いかどうか」は「二人の入力の掛け算」で表せます。実際、両想いのときは1×1=1ですし、それ以外のときは1×0=0×1=0×0=0ですので、「掛け算の結果が1のときは両想い、0のときは両想いでない」とみなせます。
0と1の計算は、偽(false)と真(true)の論理演算とみなせるので、上の計算は論理積(logical AND)と呼ばれています。そして、入力をできるだけ隠したまま論理積を出力する方式(プロトコル)をANDプロトコルと呼びます。ここでは、5枚のカードを用いるANDプロトコル(通称ファイブカードトリック)を紹介します。ぜひ遊んでみてください。
アリスとボブとキャロルはお互いのことをまだあまり知りません。いま世間では共和党と民主党の話でもちきりです。もし三人とも同じ政党を支持していたら、政治の話で盛り上がれそうです。異なる政党を支持している場合、政治の話はしない方が無難です。このように、2択の質問に対して、三人が同じ意見を持っているかどうかだけを確かめる方法はないでしょうか?
共和党と民主党だとセンシティブすぎるので、ここからはキノコ派とタケノコ派で考えてみましょう。こちらも古くからの論争テーマで、三人とも同じ派閥ならば例のお菓子を買いに行けますが、そうでないなら例のお菓子は買いに行けません。
このような計算を3入力等号判定関数と呼び、これを計算する方式を3入力等号判定プロトコルと呼びます。ここでは、6枚のカードを用いる3入力等号判定プロトコル(通称シックスカードトリック)を紹介します。ぜひ遊んでみてください。
アリスとボブとキャロルはお互いのことをとても気遣う性格です。いまここにオセロが一式あったとします。「3人のうちオセロで遊びたい人数」は0人か1人か2人か3人のいずれかですが、もし0人ならオセロで遊ばないだけですし、もし2人ならちょうどオセロ1台で遊べます。しかし、遊びたい人数が1人または3人のときは、お互いに気を遣いあって、気まずくなる可能性があります。遊びたい人数が「0人または2人である」ということだけを確かめる方法はないでしょうか?
このような計算を3入力排他的論理和(XOR: exclusive OR)関数と呼び、これを計算する方式を3入力XORプロトコルと呼びます。3入力XOR関数は0か1かを表す入力a,b,cを受け取り、a+b+cが奇数ならば1、偶数ならば0を出力します。上の例の場合、遊びたい人は1、遊びたくない人は0を入力して、出力結果が1(遊びたい人数が1人または3人)ならオセロでは遊ばないことにすれば良いでしょう。ここでは、8枚のカードを用いる3入力XORプロトコルを紹介します。ぜひ試してみてください。
株式会社ハナヤマと共同制作で、カードベース暗号を遊ぶためのキットを作成しました。
今回のキットの特徴は、シャッフル用のコマが付いていて、操作がとても簡単になっていることです。論文のプロトコルの説明より、今回の説明の方が視覚的にも分かりやすいです。
2025年3月15日に東京国際フォーラムで開催された 高機能暗号とそれを支える物理・視覚暗号シンポジウム にて無料配布を行いました。詳細は 紹介ページ をご覧ください。
3Dプリンタでシャッフル用コマを製作しました。「カードベース暗号はじめて体験キット」のプロトタイプ的な位置付けになりますが、体験キットのコマよりも大きく見栄えが良いため、オープンキャンパスや展示会ではこちらを使用しています。
このシャッフル操作は専門的には「ランダムカット」と呼ばれますが、実際にコマの動きを見てもらうことで、「カード列のシフト回数の一様ランダムかつ誰にも推測のできない乱数であること」について納得してもらいやすくなります。
このパズルは、ボードもピースも最初は砂嵐画像になっています。ピースを正しい位置に置くと、文字が浮かび上がります。ボードは四国地方を表し、ピースは県の形をしていて、県名が浮かび上がる仕組みです。
この技術は視覚復号型秘密分散(VSS: Visual Secret Sharing)という暗号技術です。パズルボードだけを見ても、あるいはピースだけを見ても、県名は一切見えません。これは「見えにくい」のではなく、どんな高性能なコンピュータでも、片方だけでは県名を特定できないという性質があります。
VSSは歴史のある技術ですが、地図パズルへの応用はオリジナルです。この動画のパズルは私がレーザーカッターで自作したものですが、 株式会社ハナヤマ と共同で量産版も製作しました。