猿でも分かるゼロ知識証明
クリプトの世界がゼロ知識証明で盛り上がっている。ゼロ知識証明とは、ある人物が特定の情報を持っているのかどうか、その情報の中身を確認しなくても証明できる方法のこと。
この技術が社会に与える影響は主に2つ。1つは、ブロックチェーンが格段に効率的になる。今はブロックチェーンに追加された情報が正しいかどうかを、多くの人が検証している。検証のたびに大量の計算を実行するわけだが、ゼロ知識証明を使えば、検証のために大量の計算をする人が一人だけですみ、残りの人はその人が嘘をついていないかだけをゼロ知識証明で検証すればよくなる。ブロックチェーン運営のコストや時間が大幅に削減されることになる。
2つ目は、やはりプライバシー。例えばある選挙で投票するのに18歳以上であることを証明しなければならないとする。今だと生年月日の書かれた運転免許証などを、選挙管理委員会のお手伝いをしている町内会の人に提示しないといけない。その人に年齢を知られてしまう。
ところがゼロ知識証明を使えば、ある人にだけ生年月日を一度教えておけば、その人が「この人が18歳以上であることは間違いありません。私が保証します」と言ってくれる。その人がウソをついていないことはゼロ知識証明で証明できるので、それ以後、生年月日を公表する必要がなくなる。
ではゼロ知識証明とはどんな技術なのか。簡単な例で説明しよう。

図のような洞窟があったとしよう。洞窟の奥には扉があって暗証番号鍵がかかっている。初対面の怪しそうな女性が入り口に立っていて「暗証番号を知ってますよ。10万円くれれば教えます」と言う。この女性を本当に信用できるだろうか。10万円支払って洞窟の中に入っている間に、女性に逃げられないだろうか。
そこで女性に洞窟の中に入ってもらい、扉の前から「扉のところまで来たよ」と大声で叫んでもらうことにした。
女性の叫び声が聞こえたので、男性は洞窟に入って、Aの道を少し進んだところで立ち止まり「Aの道を進んで来て」と声をかけた。
女性は男性が待っているAの道の入り口に戻ってきた。
女性がAの道に来れるのは、Bの道から入って扉を開けてAの道を進んできた場合と、番号を知らないんだけどたまたまAの道から入って Aの道を逆戻りしてきた場合の2つの可能性がある。たまたまAから入っただけかもしれない。その確率は50%だ。
次にまた女性に先に洞窟に入ってもらい、今度はBの道のほうで待っていた。女性は、また男性のいるところに戻ってきた。2回連続でまぐれで正解になる確率は25%だ。
これを何度も繰り返す。20回繰り返したら、女性が毎回男性の選んだ道に戻ってこれる確率は約0.000001%とめちゃくちゃ小さな数字になる。
こんな低い確率で正解を出せるのであれば、女性が暗証番号を知っていると考えていい、ということになる。10万円払ってもいいということになるわけだ。
これが暗証番号を入手しなくても、その人が暗証番号を知っていることを証明できるゼロ知識証明の基本的な考え方だ。
ゼロ知識証明を使うことで今まで困難とされていたことが可能になるケースがいろいろと想定され、来年以降にゼロ知識証明を使ったアプリケーションが数多く登場することだろうと思う。