ゼロ知識証明(ZKP、zero-knowledge proof)は、ある事柄に対してそれが正しいことを、なんの情報も教えずに証明する方法のことです。
ゼロ知識証明とは
たとえばあなたは、秘密の扉が開く合言葉、を知っているとします。
では、お友達が「秘密の扉を開ける方法、知ってる?」と、あなたに訊ねたとしましょう。
あなたは「知ってるよ」と答えます。
しかし、あなたはお友達に、秘密の扉の合言葉を教えるわけにはいきません。
合言葉を教えないためには、合言葉で開く、ということも言わない方がよさそうです。
するとお友達は、「ホントに知ってるの?」と疑いはじめました。
そこであなたはお友達に、扉を開ける方法を教えずに、扉を開ける方法を知っている、ということを証明したいと思うわけです。
このように、相手になんの情報も教えることなく、とある事柄が「正しい」ことだけを証明する方法が、ゼロ知識証明です。
なんとなく分かる、ゼロ知識証明の例え
ゼロ知識証明を分かりやすく説明してくれる、有名なお話がいくつかあります。
今回はその中でも、不思議な洞窟のお話をします。
このお話は、「How to Explain Zero-Knowledge Protocols to Your Children(自分の子供にゼロ知識証明をどう説明するか)」という論文を、かんたんにアレンジしたものです。
参考:【ウィスコンシン大学マディソン校】How to explain zero-knowledge protocols to your children(https://pages.cs.wisc.edu/~mkowalcz/628.pdf)
あるところに、不思議な洞窟がありました。
その洞窟に入ると、左右(A, B)に道が分かれています。
しかし、奥に進んでも、どちらの道も突き当たりに扉があり、固く閉ざされていました。
その洞窟ですが、なんと驚きの秘密がありました。
実は、左右の道は繋がっており、突き当たりの扉に向かって「おっぷんぷん」という呪文を唱えると、不思議な力で開くのです。
そしてその呪文は、あなただけが知っていました。
ある日、村の偉い人が、「おぬし、あの扉の開け方を知っておるか?」と訊ねました。
あなたは緊張気味に、「はい、知っておるます」と答えました。
すると偉い人は、「本当に開け方を知っておるのか、ここで証明するがよい」と、あなたに言いました。
あなたは悩みました。しかし「おっぷんぷん」だなんて、恥ずかしくて言えません……じゃなくて、たとえどんなに偉い人だったとしても、開け方も、呪文も、教えるわけにはいきません。
さらに偉い人は、「証明の様子を、ビデオカメラで撮影する」と、めんどくさいことを言いやがりました。
なにを偉そうに、と開きかけた口を鼻歌でごまかしつつ、しかたがないので、扉の開け方を知っていることを、どのように証明するか考えることにしました。
あなたの頭に、3つの方法が思い浮かびました。
- 偉い人と一緒に洞窟の奥の扉まで行き、扉を開ける
- 偉い人に、洞窟の分かれ道のところで待っていてもらって、あなたが右の道から進んで、扉を通って、左の道から出てくる
- 「しばらくしてから分かれ道まで来て、左か右かどちらか叫んで」と、偉い人にあらかじめ伝えておき、洞窟の外で待っていてもらう。あなたがどちらかの道を進んだあと、分かれ道から偉い人が実際に右か左かを叫び、そして、その方向からあなたが出てくる
1の方法は、偉い人に、扉の開け方や呪文を教えることになるので、なし、です。
2の方法で証明はできそうですが、撮影もされているので、あなたが扉を開く方法を知っているということが、多くの人に知られてしまうかもしれません。ちょっと危ない気がします。
では、3の方法はどうでしょう。
実は、この3の方法こそがゼロ知識証明の基本となる方法なのですが、ちょっと分かりにくいので、まずはその方法を、もうちょっと詳しく見てみましょう。
まず、村の偉い人に、洞窟の外で待っていてもらいます。
あなたは、左右のどちらかの道を進みます。
今回は、右に進みました。
その後、偉い人が分かれ道まで移動し、「右」か「左」か、どちらかを叫びます。
今回、偉い人は、「左!」と叫んだとします。
あなたは右の道を進んだので、左から出ていくには、扉を通る必要があります。
「おっぷんぷん」と、偉い人に聞こえない声で囁き、扉を開けて、偉い人から見て左の道から戻ります。
もし偉い人が、「右!」と叫んだのであれば、あなたは扉を通らずに、右の道から戻ります。
あなたがもし、扉を開く方法を知らないのならば、偉い人が叫んだ方から戻れる確率は、50%です。
でも、これを何度も何度も繰り返せば、あなたが扉を開く方法を知っているという証明になりそうです。
扉を開く方法を知らない人が20回この方法を試して、すべて偉い人の叫んだ通りの方向から戻れる確率は、2の20乗分の1、つまりだいたい0.0001%となります。
これで、扉を開く方法を知っている、と証明されたといってもいいでしょう。
はたして、こんなに大変なことをするのはなぜなのでしょうか。
そういえば、偉い人はあなたの証明を動画で撮影していました。
その映像を見た人が、あなたが扉の開け方を知っている、と考えるのであれば、それはあなたが思っていることに反しています。
あなたは扉の開け方を知っていることを、多くの人に知られたくないわけです。
安心してください。実は、撮影している偉い人には洞窟の外で待ってもらっているので、映像に記録されているのは、「右!」、「左!」という偉い人の声と、その方向から戻ってくるあなただけになります。
するとその映像を見た人は、あなたと偉い人があらかじめ話し合っていれば、こんな映像かんたんに撮れる、と思うでしょう。
さらに言えば、半分の確率で当たるんですから、当たった映像だけ使えば、扉を開ける方法を知っているかのように見せることもできる、とも思うかもしれません。
あなたが入った道とは違う方から出てきた、というのは記録されていないので、映像を見た人にとっては、あなたが扉の開け方を知っているという証明にはなっていないのです。
さて、これであなたは、扉の開け方を知っていることを、なんの情報も明かさずに、偉い人に対してだけ、証明することができました。
どんなことに役立つの?
では、ゼロ知識証明はいったいどんなことに役立つのでしょうか。
たとえば、身分証明書を出さずに日本人だと証明する、インターネット上のサービスを利用するときゼロ知識証明をユーザの詳しい情報などから作成しておくことで便利になる、などがあげられます。
とくに、ブロックチェーンの話では、ゼロ知識証明の技術がよく出てきます。
ブロックチェーンでは、行なわれた取引のすべてを、いつでも誰でも見ることができてしまいます。
しかし、ゼロ知識証明の技術を使えば、たとえば、暗号資産(仮想通貨)を送るとき、内容を隠して取引ができるようになります。
例えば、暗号資産の取引で使われる、「ミキシングサービス」というものがあります。
ミキシングサービスは、暗号資産の取引を混ぜて、それらがどういうふうに取引されていったのか、という情報を分からなくすることができます。ここでも、ゼロ知識証明の技術が使われています。
しかし、そういった技術を悪いことに使ってしまう人もいるので、問題になることもあります。
また、「INGグループ(https://www.ing.com/)」というオランダ大きな会社は、ゼロ知識証明をうまく使った技術として、ゼロ知識範囲証明「zero-knowledge range proof(ZKRP)」、「ゼロ知識セットメンバーシップ(ZKSM)」を発表しています。
ZKRPでは、例えば、家を買うお金を借りたいとき、ちゃんと返せる範囲の収入がある、ということを、具体的な金額は隠したまま証明できます。
ZKSMでは、例えば、銀行は、利用する人がどこの国に住んでいるのかを知らないままでも、その国がEUという大きな国の集まりに入っているかどうか、を知ることができます。
ゼロ知識証明の条件
ゼロ知識証明で証明できるのは、正しい、間違っている、というふうに、答えがはっきりとしているものです。
「私は扉の開け方を知っている」という証明は、「正しい」または「間違っている」という答えを出すことができます。
ゼロ知識証明では、次の条件を満たす必要があります。
安全性 | 証明する側が「正しい」ならば、確認する側にも必ず「正しい」と分かる |
---|---|
健全性 | 証明したい側が「間違い」ならば、確認する側は高い確率で「間違い」と分かる |
ゼロ知識性 | 証明する側が「正しい」ならば、確認する側は「正しい」ということ以外、なにも知ることはできない |
まとめ
ゼロ知識証明は、それが正しいことを、ほかになにも教えずに証明する方法のことです。
不思議な洞窟のお話は、ゼロ知識証明について分かりやすく説明してくれている、有名なお話です。
身分証を使わずに日本人だと証明したり、インターネット上のサービスを便利にするために使われたり、といったことができるようになります。
さらにはブロックチェーンなど、いろんな分野で使われるようになっています。
参考
【Ethereum.org】ゼロ知識証明とは何か(https://ethereum.org/ja/zero-knowledge-proofs/)
【YouTube】Tornado Cash – How it Works | DeFi + Zero Knowledge Proof(https://youtu.be/z_cRicXX1jI?feature=shared)
【COINPOST】プライバシーインフラ「Nym」が必要な理由、ゼロ知識証明の可能性を探る|WebX:(https://coinpost.jp/?p=475641)
【COINPOST】大手銀行INGが独自の「ゼロ知識範囲証明」を開発、通常の証明に比べ高性能かつ幅広い応用が可能に(https://coinpost.jp/?p=52226)
【ING】Blockchain innovation improves data privacy for clients(https://www.ing.com/Newsroom/News/Blockchain-innovation-improves-data-privacy-for-clients.htm)