ゼロ知識証明技術は、その名の通り、暗号アルゴリズムを使用して複数の当事者が情報の真実性を検証できるようにし、その情報を構成する材料を共有する必要がありません。しかし、裏付けの証拠がない状況で、どのようにして何かを証明するのでしょうか?この記事では、読者にわかりやすく説明するよう努めます。
なぜ?
私たちは毎日自問自答しています——なぜ人々はこんなに複雑な概念を使うことを決めるのでしょうか。毎日数百万人がインターネットを利用し、Cookiesを受け入れ、サービスやデジタル製品へのアクセスと引き換えに個人情報を共有しています。ユーザーは徐々にセキュリティの脆弱性やデータへの不正アクセスの影響を受けやすくなっています。さらに、個人はしばしばプライバシーを放棄して、提案、相談、カスタマイズされたサポートなどのデジタルプラットフォームサービスを受ける必要がありますが、これらはプライベートブラウジングでは得られません。上記の理由から、情報へのアクセスには一定の非対称性が存在します——ユーザーはサービスと引き換えに情報を提供します。
1985年、三人の偉大な思想家が「力の中の巨大な擾乱」に気づき、「インタラクティブ証明システムの知識の複雑性」という論文を発表し、ゼロ知識証明(ZKP)の概念を初めて導入しました。
それは一体何か?
ZKPは、サポートデータを開示することなくデータを評価するためのツールのセットです。これは、テスターが検証者に対して、計算声明が有効であることを数学的に証明できるようにする一連の暗号手法によって実現されます。
これにより、第三者と共有することなく特定の事実の正確性を確認できます。たとえば、ユーザーは特定の製品やサービスにアクセスするための法定年齢に達していることを証明できますが、具体的な年齢を開示する必要はありません。あるいは、友人に運転免許証を見せるようなもので、メキシコに運転して行くことで運転できることを証明する必要はありません。
この技術は、情報が盗まれるリスクを冒すことなく、デジタル世界でシステムを検証するために一般的に使用されます。実際、個人データを提供することなく、個人の身元を確認することができるようになりました。
いい感じだけど、どうやって機能するのか?
証明者と検証者は、ゼロ知識証明において最も重要な二つの役割です。証明者は秘密を知っていることを証明しなければならず、検証者は証明者が嘘をついているかどうかを判断できる必要があります。
その仕組みは、検証者が証明者に、証明者が秘密を知っていると確信している場合にのみ実行できる行動を要求することです。もし証明者が推測している場合、検証者のテストは彼または彼女を暴露します。秘密が知られている場合、証明者は毎回検証者の試練を簡単に通過できます。これは、銀行や他の機関が身元を確認するために既知の秘密の単語を提供するように求めるのと同じです。証明者は銀行に自分の口座にいくらお金があるかを伝えるのではなく、ただ自分が知っていることを示すだけです。
素晴らしいけど、実際にはどう機能するのか?
この質問に答えるために、Kamil Kuleszaの研究を見てみましょう。

二人の役割、アリスとボブが、二つの独立した通路がある洞窟の入り口に立っていると仮定します(AとB)。洞窟の中には二つの通路をつなぐドアがありますが、秘密のコードでしか開けられません。このコードはボブ(「テスター」)のもので、アリス(「検証者」)はそれを購入したいと思っていますが、まずボブが嘘をついていないことを確認したいと思っています。
ボブは、内容を明かさずにアリスにコードを持っていることを証明するにはどうすればよいのでしょうか?彼らは次の手順を実行します:ボブはランダムにどちらかの入口から洞窟に入りますが、アリスは外で待っています(AまたはB)。洞窟に入ったら、アリスは前のドアに近づき、ボブを呼び、二つの出口のうちの一つを使うよう指示します。ボブは常にアリスが使った経路を通って戻ることができるのです。なぜなら、彼は秘密のコードを知っているからです。
たとえボブが最初に選んだ経路がアリスの指示した経路と一致しなくても、彼は秘密のコードを使ってドアを開けて反対側から出ることができるため、アリスの指示した経路を通って戻ることができます。
しかし、待ってください、アリスとボブが同じ経路を選ぶ確率は依然として50%ですよね?確かにそうですが、この実験を何度も繰り返すと、ボブがアリスが選んだのと同じ経路を通って逃げる可能性は減少し、ほぼ不可能になります。結論は?ボブがこの経路を十分に多く通過すれば、彼はアリスに秘密のコードを持っているという主張を疑いなく証明することになります。さらに、この場合、彼は実際のコードを明かす必要はありません。
ボブとアリスのメタファーについては、こちらで見ることができます。
理解した、それはどのように使用されているのか?
現在、ZKPはブロックチェーン技術と共に発展しています。
Zcashは、独自のゼロ知識証明の反復(zk-SNARKsと呼ばれる)を使用する暗号プラットフォームです。これにより、ローカル取引が完全に暗号化されたまま、ネットワークの合意ルールの下で確認されます。これは、この技術が実際に使用されている素晴らしい例です。
ゼロ知識証明は、今日のデータシステムが情報を検証する方法を変える可能性を秘めていますが、この技術はまだ初期段階にあると見なされています——主に研究者がこの概念を最も効果的に活用する方法を模索し、潜在的な欠陥を特定しているためです。しかし、これが私たちが製品にこのプロトコルを使用することを妨げるわけではありません!
このプロトコルの技術的側面と歴史を深く理解するために、このYouTube動画を視聴することをお勧めします。

