ゼロ知識証明 — 答えを見せずに「知っている」を証明する
パスワードや秘密の解を、相手に一切見せないまま「たしかに知っている」と納得させられるでしょうか。一見矛盾するこの魔法は、暗号理論のもっとも美しい成果のひとつです。カギは対話とランダムな挑戦とくり返し。アリババの洞窟から出発し、3つの約束、確信が積み上がる仕組み、そしてブロックチェーンを支える現代の応用まで、動かしながら腹落ちさせます。
1. 「知っている」を、中身を見せずに証明する — アリババの洞窟
あなたは秘密の合言葉を知っています。それを相手に言わずに「知っている」と信じてもらいたい。合言葉をそのまま伝えたら、もう秘密ではありません。ここで登場するのが、Quisquater らが1990年に描いたアリババの洞窟という思考実験です。
洞窟はリング状で、奥に合言葉でしか開かない扉があり、そこで道 A と道 B がつながっています。検証者 V は入口で待ち、中は見えません。証明者 P は先に片方の道を選んで奥まで進みます。そのあと V が「A から出て」「B から出て」とランダムに叫ぶ。合言葉を知っていれば、どちらを指定されても扉を通って必ず応じられます。知らない偽物は、たまたま入った側を指定されたときだけ成功 —— つまり1回あたり成功率は 1/2。これを何度もくり返すと、偽物が運だけで通り続ける確率は雪だるま式に消えていきます。
2. ゼロ知識証明の3つの約束 — 完全性・健全性・ゼロ知識性
ゼロ知識証明が「証明」と呼べるためには、3つの性質を満たす必要があります。完全性(Completeness):本物の証明者は必ず受け入れられる。健全性(Soundness):偽物はいつか必ず(高い確率で)見破られる。ゼロ知識性(Zero-Knowledge):検証者は「主張が正しい」という事実以外、秘密について何も学べない。
3つ目がこの分野の核心です。なぜ「情報が漏れない」と言い切れるのか。答えはシミュレータという考え方にあります。もし、秘密をまったく知らない人が、本物のやり取りと見分けのつかない記録を自分ででっち上げられるなら —— その記録には秘密の情報が1ビットも含まれていないことになります(含まれていたら偽造できないはずだから)。これが「知識ゼロ」の正体です。
3. なぜ信じられるのか — 確信は指数関数で積み上がる
1ラウンドだけなら、偽物でも 50% で通ってしまいます。それでも安心できるのは、ラウンドが独立だからです。詐欺師が n 回すべてで指定された側を運だけで当て続ける確率は (1/2)n —— n が増えると爆発的に小さくなります。逆に検証者の確信度は 1 − (1/2)n で、みるみる 100% に近づきます。
下のスライダーで挑戦回数 n を動かしてください。たった20回で偽物が通る確率は100万分の1、30回で10億分の1。「絶対」ではないけれど、現実には起こらないと言い切れる水準に、あっという間に到達します。
4. 秘密を1ビットも漏らさない — グラフ彩色の対話型証明
洞窟は比喩でしたが、同じ仕組みは本物の数学の問題にそのまま使えます。例がグラフの3彩色:地図の隣り合う国が違う色になるように、3色だけで全頂点を塗り分けられるか。証明者は正しい塗り分け(秘密)を知っていて、それを見せずに「塗り分けられる」と納得させたい。
手順は洞窟とうり二つです。①証明者は3色をランダムに入れ替えて全頂点を伏せる(コミット)。②検証者はランダムに1本の辺を選ぶ。③証明者はその辺の両端だけを開けて見せる —— 色が違えば合格。他の頂点は伏せたまま。毎ラウンド色を入れ替えるので、開いた2色から本当の塗り方は復元できません(=ゼロ知識)。もし塗り分けにズルがあれば、その不正な辺がいつか選ばれて露見します(=健全性)。あらゆる NP 問題はグラフ3彩色に変換できるので、これは「証明できることは、何でもゼロ知識で証明できる」という驚くべき定理(Goldreich–Micali–Wigderson, 1987)の縮図です。
5. まとめ — 対話から非対話へ、そして現代の応用
- アリババの洞窟:対話・ランダムな挑戦・くり返しで、合言葉を明かさずに「知っている」を証明できる。
- 3つの約束:完全性(本物は必ず通る)・健全性(偽物は露見する)・ゼロ知識性(秘密は漏れない)。ゼロ知識性はシミュレータの存在で保証される。
- 確信は指数関数:偽物が通る確率 (1/2)n は数十回で実質ゼロ。安全水準から逆算して回数を決める。
- あらゆる NP 問題に適用可能:グラフ3彩色の対話型証明が、その普遍性を体現している。