本文へ移動

ゼロ知識証明

ゼロ知識証明を正確に理解するためのガイド。完全性、健全性、シミュレーション、証人、セットアップの前提、ブロックチェーンでの用途、検証リスクを解説します。

更新日

教育目的のみであり、投資またはセキュリティ上の助言ではありません。有効な証明が保証するのは、証明システムの前提の下で符号化された命題だけです。

直接の答え

ゼロ知識証明(ZKP)では、証明者は命題の成立に使う秘密の証人を明かさずに、その命題が真であると検証者を納得させられます。形式的な保証は、記録に文字どおり情報が一切含まれないという意味ではありません。公開命題から分かることを除き、許容された検証者が得るものを、証人なしでもシミュレートできるという意味です。

証明システムでは三つの性質を別々に評価します。完全性は、有効な証人を持つ正直な証明者が受理されること、健全性は、偽の命題が受理される確率が無視できること、ゼロ知識性は、定義された脅威モデルで証人が隠れることです。実用システムの多くは計算量的な論証であり、健全性は計算能力が制限された攻撃者に対して、明示された暗号学的仮定に基づいて成立します。

ゼロ知識性は簡潔性や有効性とも別です。ゼロ知識でも検証が高価な証明、簡潔でも公開データを見せる証明、正しく符号化された関係を証明していてもアプリの意図した規則と一致しない証明があり得ます。

1
実行

証明者がバッチまたは計算を実行し、状態遷移を得ます。

仕組み

公開命題 x、秘密の証人 w、厳密に定義した関係 R から始めます。証明者が証明を生成し、検証者が公開パラメーターまたは検証鍵で評価します。意図する健全性の主張は次のように要約できます。

Verify(vk, x, proof) = 1 => exists w: R(x, w) = 1

この式が述べるのは、符号化された関係に適合する証人が存在することだけです。証人を開示せず、オフチェーン入力を真正だと認証せず、R がアプリの全業務ルールを表すことも保証しません。

  • 対話型と非対話型。 初期の ZK プロトコルはチャレンジと応答を交換します。非対話型システムは証拠を一つの証明にまとめ、通常はセットアップ資料、ランダムオラクルモデル、または両方に依存します。
  • セットアップモデル。 Groth16 は非常に小さな証明を実現しますが、回路固有の構造化セットアップを使います。PLONK 系は汎用で更新可能な構造化参照文字列を使えます。STARK は構造化された信頼済みセットアップを避けますが、通常は証明が大きく、ハッシュと低次数テストに依存します。
  • 算術化とコミットメント。 実装はプログラムを代数制約へ変換し、証人から導いた値にコミットし、ランダム化検査によって、計算の再実行や証人の閲覧なしで検証できるようにします。
  • 知識の証明。 一部のシステムは、受理された証明者が証人を知ることも、抽出器で形式化して主張します。これは独立した性質で、「ゼロ知識」という名称だけからは推定できません。

x にコミットメントと 100 units のしきい値、w にコミットされた残高とブラインド因子が入るとします。関係はコミットメントが正しく開くことと、残高が少なくとも 100 units であることを確認します。有効なゼロ知識証明は、正確な残高を明かさずにこの関係を立証できます。

それだけでは、証明者が口座を所有すること、資金に制約がないこと、同じコミットメントを再利用していないことは証明されません。これらには追加の制約と公開入力が必要です。

シールド型暗号資産では、回路が一部の取引情報を隠しつつ、認可、価値保存、重複防止を強制できます。有効性 Rollup では、証明がバッチの状態遷移を立証できますが、取引データを公開する場合もあるため、「ZK Rollup」が自動的に非公開取引を意味するわけではありません。

リスク

  • 不完全または誤った回路が、誤った規則を完璧に証明する可能性があります。
  • ドメイン分離、チェーン識別子、ルート、コミットメントの欠落により、証明が別の文脈へ結び付く可能性があります。
  • 信頼済みセットアップを要するシステムでは、セットアップの侵害やトキシックウェイストの残存が健全性を損ないます。
  • 証明器、検証器、トランスクリプト、曲線、ハッシュ、コンパイラー、スマートコントラクトの不具合が理論上の保証を無効にし得ます。
  • 公開入力、証明時刻、取引グラフ、手数料、ネットワークメタデータが、形式的な ZK 命題の外で情報を漏らす場合があります。
  • 証人生成、ブラウザー、ハードウェア、リモート証明サービスのサイドチャネルが、証明生成前に秘密を漏らす場合があります。
  • 証明検証は、データ可用性、シーケンサーの稼働、決済のファイナリティ、検閲耐性、安全なアップグレードを提供しません。
  • 暗号学的仮定と具体的な安全余裕は方式ごとに異なり、証明サイズや検証速度だけでは安全性を順位付けできません。

よくある誤解

  • 「ゼロ知識ならデータを何も公開しない。」 公開命題と意図的に公開する出力は見えたままで、証明モデル外のメタデータも漏れる可能性があります。
  • 「有効な証明ならアプリも正しい。」 受理されたのは符号化関係です。回路、統合、ポリシーの誤りは残ります。
  • 「すべての ZK システムの信頼仮定は同じ。」 セレモニー、曲線、ハッシュ、トランスクリプトモデル、アップグレード管理は大きく異なります。
  • 「ZK は暗号化である。」 暗号化は、権限を持つ相手が復号できるようデータを隠します。ZK 証明は、証人を復号用に送らず主張を立証します。

関連トピック

出典

ナビゲーション

Wiki を検索...