ゼロ知識証明とは?
よく言われるのは、
自分が秘密の情報を知っていることを他人に証明することができるが、その情報そのものは明かさない。
ということです。これをわかりやすく深掘りしてみます。
具体例
例を挙げて考えてみましょう。例えばある扉を開ける魔法の合言葉「アロホモラ」をあなたが知っていたとします。しかし、その合言葉はあなただけの秘密です。
そして、その合言葉を知りたい貴族がいました。でも、あなたはその情報を教える前に、自分が本当にそれを知っていることを証明したい。貴族も、合言葉を知っているかどうかを確かめたい。そこで登場するのがゼロ知識証明です。
ここに合言葉が必要な扉がある通路があります。その通路はAとBどちらからも入ることができ、奥には合言葉が必要な扉があります。
出典: https://ja.wikipedia.org/wiki/ゼロ知識証明
この扉を開けるための合言葉を知っているのはあなただけで、貴族は知りません。あなたは、合言葉を教えずに、自分が合言葉を知っていることを証明します。
あなたは貴族が見ていないところで、扉のAまたはBから入ります。ゼロ知識証明では、貴族に情報を与えることはありません。そして、貴族はAまたはBどちらかを選択して、あなたに出てくるように伝えます。
出典: https://ja.wikipedia.org/wiki/ゼロ知識証明
あなたが扉Aから入り、貴族がBを指定したとしましょう。あなたは合言葉を使って扉を開けて、Bから出て来れたら証明完了です。また、あなたが扉Aから入り、貴族もAを指定したとしましょう。その場合は、あなたは道を引き返すだけで良いのです。
出典: https://ja.wikipedia.org/wiki/ゼロ知識証明
ここで疑問が残ります。来た道を引き返すだけの場合は、合言葉の証明できないではないかと。
この問題を解決するために、この証明の作業を何度もやるのです。仮に20回行ったとしたら、確率は約0.0001%となります。
非対話ゼロ知識証明
今回の例では、あなたと貴族が対話をしながら、合言葉を知っていることを証明しました。しかし、コンピューターの世界では、対話を行うと外部から攻撃に非常に弱くなります。そのため、ブロックチェーンのゼロ知識証明では、対話を行わない「非対話ゼロ知識証明」を用いています。
ライター: @1mono2
No comments yet.