ゼロ知識証明とは【基礎知識】

ゼロ知識証明は、信頼を犠牲にせずに取引のプライバシーを確保することに役立つ。ここではゼロ知識証明とは何か、どのように機能するのか、そしてなぜWeb3でゼロ知識証明が必要なのかを見ていこう。

ゼロ知識証明とは?

ゼロ知識証明(ZKP)とは、プライバシーを侵害する可能性のある情報を提供することなく、ブロックチェーン上のステートメントの正当性を証明するためのプロトコル。ゼロ知識証明によって、ユーザーは取引の詳細を明らかにすることなく、取引の正当性を検証することができる。

ゼロ知識証明では、証明者の責任はステートメントを証明することであり、検証者の役割はそれを検証することだ。プロトコルは、隠された情報が有効であることをオンチェーンで明らかにし、証明者はこれを高い確実性で知ることができる。

悪意のある行為者の手にかかると、個人を特定できる情報(PII:personally identifiable information)は、なりすまし、風評被害、差別などの特定のリスクをもたらす可能性がある。ゼロ知識証明はあなたのPIIを確実に保護する。

取引を完了するために身元を証明しなければならないシナリオを考えてみよう。運転免許証やその他のPIIなどの証拠を提出する必要がある。

しかし、その情報が第三者の手に渡ると、あなたはその情報の安全性をコントロールできなくなる。ハッカーがサードパーティの中央データベースを狙う可能性もあるし、サードパーティがターゲット広告やその他の目的のためにあなたの情報を他者と共有する可能性もある。

ゼロ知識証明を使えば、このような情報の共有を避け、その正当性を証明することに特化させることができる。

ゼロ知識証明の仕組み

ゼロ知識証明は、入力データを処理してその真実性を確認するアルゴリズムを利用する。現在、イーサリアムのStarkNet、Polygon Zero、Zk Syncなどのプロジェクトがこのプロトコルを利用している。

ゼロ知識証明が効率的に機能するためには、以下の3つの基準を満たす必要がある。

  • ゼロ知識:検証者は元の入力にアクセスできない。彼らが入手できる唯一の情報は、ステートメントの有効性だけ。
  • 健全性:プロトコルは無効な入力を真であると検証することはできない。プロトコルは、証明者が検証者を操作して自分のステートメントが真であると思い込ませる余地がないことを保証するセーフガードを備えていなければならない。
  • 完全性:入力が有効であれば、プロトコルは常にステートメントの正当性を認める。プロトコルは、両者が正直に行動し、基盤となる情報が真であれば、その証明を受け入れる。

基本的なゼロ知識証明は次の3つの要素で構成される。

  • まず、秘密情報である証拠がある。証明者は、その情報を知っている当事者だけが知り得る質問を提供する。
  • 2つ目の要素はチャレンジで、検証者は証明者が答えるべき質問をセットから選択する。
  • 3番目の要素はレスポンスで、証明者が質問に答える。そのレスポンスによって、検証者は証明者が証拠にアクセスできることを確認する。検証者は次に、セットからさらに質問を選択する。複数の質問によって、証明者が情報を偽る可能性が抑えられる。

ゼロ知識証明の種類

ゼロ知識証明には、対話型と非対話型の2種類がある。

  • 対話型のゼロ知識証明:2つの当事者間で往復のコミュニケーションが可能。これにより、検証者が満足するまでステートメントの妥当性を検証できる。
  • 非対話的ゼロ知識証明:2つの当事者は1ラウンドのコミュニケーションのみを行う。証明者はゼロ知識証明を計算するアルゴリズムと情報を共有する。検証者は証明を受け取り、別のアルゴリズムを使って証明者の知識を確認する。

非対話型ZKPの利便性から、現在利用可能なプロトコルの多くは非対話型ZKPのカテゴリーに入る。そのいくつかを見てみよう。

  • ZK-SNARK: 正式名称はZero-Knowledge Succinct Non-Interactive Argument of Knowledge、サイズが小さいため検証プロセスが簡単になる。暗号証明を生成するために楕円曲線を利用しており、このプロセスはガス代効率に優れていると考えられている。
  • ZK-STARK: 正式名称はZero-Knowledge Scalable Transparent Argument of Knowledge、2者間のやり取りが最小限であるため、高速。
  • Bulletproofs: 信頼できるセットアップを必要としない。短い非対話的ゼロ知識証明により、プライベートな暗号資産(仮想通貨)取引が可能。
  • PLONK: Permutations over Lagrange bases for Oecumenical Non-interactive arguments of Knowledgeの略。普遍的な信頼できるセットアップを使用することで、多数の参加者を可能にする。

なぜ、ゼロ知識証明が必要なのか?

ゼロ知識証明が必要な理由は、さまざまなユースケースで説明できる。最も重要なものをいくつか見てみよう。

  • セキュリティとプライバシー: 取引履歴がパブリックブロックチェーン上でアクセス可能であるため、Web3の偽名性は、完全なプライバシーを保証できない。ZKPを使えば、PIIを明らかにすることなく情報の検証が可能であり、匿名性が維持される。
  • 本人確認: 自分の身元を証明するのに、機密情報を共有する必要はない。ZKPは、身元確認プロセスを非公開で安全に実行する手段を提供する。
  • 拡張性: ZKPがあれば、ブロックチェーンネットワークは、基盤となるデータを明らかにすることなく取引を検証できる。ブロックチェーンに保存される情報が大幅に削減されるため、ネットワークの効率性が向上する。
  • コンプライアンス: 組織はマネーロンダリング、KYC、その他の関連法にまつわる規制要件を遵守できる。ZKPにより、組織はユーザーの個人情報を中央データベースに保存することなく、コンプライアンスを遵守できる。

ゼロ知識証明は、身元不明または信頼できない当事者に対して情報認証を提供する基本的な暗号化ツールだ。

Web3空間の偽名性は、情報検証に課題をもたらす。ZKPは、高速で安全な取引を保証する画期的なプロトコルとして、この問題に対処できる。

|翻訳・編集:山口晶子、増田隆幸
|画像:Shutterstock
|原文:What Are Zero-Knowledge Proofs?