1. HOME»
  2. 分かりやすいIT用語辞典»
  3. ゼロ知識証明

ゼロ知識証明

ゼロ知識(ちしき)証明(しょうめい)(ZKP、zero-knowledge proof)は、ある事柄(ことがら)に対してそれが正しいことを、なんの情報(じょうほう)も教(おし)えずに証明する方法のことです。

目次
  1. ゼロ知識証明とは
  2. なんとなく分かる、ゼロ知識証明の例え
  3. どんなことに役立つの?
  4. ゼロ知識証明の条件
  5. まとめ
  6. 参考

ゼロ知識証明とは

たとえばあなたは、秘密(ひみつ)の扉(とびら)が開く合言葉(あいことば)、を知っているとします。

では、お友達(ともだち)が「秘密の扉を開ける方法、知ってる?」と、あなたに訊(たず)ねたとしましょう。
あなたは「知ってるよ」と答えます。

しかし、あなたはお友達に、秘密の扉の合言葉を教えるわけにはいきません。
合言葉を教えないためには、合言葉で開く、ということも言わない方がよさそうです。

するとお友達は、「ホントに知ってるの?」と疑(うたが)いはじめました。

そこであなたはお友達に、扉を開ける方法を教えずに、扉を開ける方法を知っている、ということを証明したいと思うわけです。

このように、相手になんの情報も教えることなく、とある事柄(ことがら)が「正しい」ことだけを証明する方法が、ゼロ知識(ちしき)証明(しょうめい)です。

なんとなく分かる、ゼロ知識証明の例え

ゼロ知識(ちしき)証明(しょうめい)を分かりやすく説明(せつめい)してくれる、有名(ゆうめい)なお話(はなし)がいくつかあります。
今回はその中でも、不思議(ふしぎ)な洞窟(どうくつ)のお話をします。

このお話は、「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. 「しばらくしてから分かれ道まで来て、左か右かどちらか叫(さけ)んで」と、偉い人にあらかじめ伝えておき、洞窟の外で待っていてもらう。あなたがどちらかの道を進んだあと、分かれ道から偉い人が実際に右か左かを叫び、そして、その方向からあなたが出てくる

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)

オリジナルゲーム.com