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