もしa=1なら、証明者はg=rs mod nを計算して送信します。検証者が送信するランダムビットaを設定し、aの値に基づいて、証明者はgを計算します;
最後に、検証者は受け取ったgに基づいてxがg^2 mod nに等しいかどうかを検証します。等式が成り立つ場合、検証者はこの証明を受け入れます。a=0のとき、検証者はx=g^2 mod nを計算し、右側でg^2 mod nを検証します。a=1のとき、検証者はx=g^2/v mod nを計算し、右側で(rs)^2/s^2 mod nを検証します。
ここでは、検証者が計算したx=g^2 mod nが、証明者が検証プロセスを成功裏に通過したことを示しており、その間に彼の秘密の数字sを漏らしていないことを示しています。ここで、aは0または1のいずれかしか取れないため、2つの可能性しかありません。証明者は運に頼って検証に合格する確率が1/2(であり、aが0のとき)です。しかし、検証者はその後証明者にk回挑戦し、証明者は関連する数字を次々と変更し、検証者に提出し、常に成功裏に検証プロセスを通過します。こうして、証明者が運に頼って検証に合格する確率(1/2)^k(は0.0)に無限に近づき、証明者が実際にある秘密の数字sを知っているという結論が証明されます。この例は、零知識証明システムの完全性、信頼性、そして零知識性を証明しています。
zk-SNARKs技術デプス解析:アルゴリズムからアプリケーションへの包括的レビュー
ゼロ知識証明技術の開発と応用:ブロックチェーン分野の展望
まとめ
zk-SNARKs(ZKP)は、暗号学の分野における重要な突破口として、ブロックチェーン技術において重要な役割を果たしています。本稿では、ZKPの過去40年にわたる発展の歴史と最新の研究について系統的にレビューします。
まず、ZKPの基本概念と歴史的背景を紹介します。次に、回路ベースのZKP技術、特にzkSNARK、Ben-Sasson、Pinocchio、Bulletproofs、Ligeroなどのモデルの設計、応用、および最適化方法を重点的に分析します。計算環境の観点から、本論文ではZKVMとZKEVMが取引処理能力を向上させ、プライバシーを保護し、検証効率を高める方法について考察します。また、零知识RollupがLayer 2拡張ソリューションとしての作業メカニズムと最適化方法、さらにはハードウェアアクセラレーション、ハイブリッドソリューション、専用ZK EVMの最新の進展についても紹介します。
最後に、ZKCoprocessor、ZKML、ZKThreads、ZK Sharding、ZK StateChannelsなどの新興概念を展望し、これらがブロックチェーンのスケーラビリティ、相互運用性、プライバシー保護において持つ潜力について探討しました。
これらの技術の発展トレンドを分析することにより、本稿はZKP技術の理解と応用に対する包括的な視点を提供し、ブロックチェーンシステムの効率と安全性を向上させる上でのその巨大な潜在能力を示し、将来の投資判断に重要な参考を提供します。
目次
前書き
ゼロ知識証明の基礎知識
概要
ゼロ知識証明の例
非対話型のゼロ知識証明
背景
NIZKの提案
フィアット・シャミール変換
ジェンス・グロスとその研究
その他の研究
回路ベースのゼロ知識証明
背景
回路モデルの基本概念と特徴
ゼロ知識証明における回路設計と応用
潜在的な落とし穴と課題
第四に、ゼロ知識証明モデル
背景
一般的なアルゴリズムモデル
線形PCPと離散対数問題に基づくスキーム
一般人が証明するためのスキーム
ゼロ知識(PCP)確率主義に基づく検証可能な証明
CPC( Universal Proof Construction )のセットアップ段階に基づいて分類します
ゼロ知識仮想マシンの概要と開発
背景
既存のZKVMの分類
フロントエンドとバックエンドのパラダイム
ZKVMパラダイムの長所と短所
六、zk-SNARKsイーサリアム仮想マシンの概説と発展
背景
ZKEVMのしくみ
ZKEVMの実装プロセス
ZKEVMの特徴
ゼロ知識レイヤー2ネットワークソリューションの概要と開発
背景
ZK Rollupの作業メカニズム
ZK Rollupの欠点と最適化
ゼロ知識証明の今後の展開方向
コンピューティング環境の開発を加速する
ZKMLの提案・開発
ZKP拡張技術の開発
ZKPの相互運用性の開発
まとめ
イントロダクション
インターネットはWeb3時代に突入しており、ブロックチェーンアプリケーション(DApps)が急速に発展しています。近年、ブロックチェーンプラットフォームは毎日数百万のユーザーアクティビティを支え、数十億件の取引を処理しています。これらの取引から生じる膨大なデータは、通常、敏感な個人情報を含んでいます。ブロックチェーンのオープン性と透明性の特性を考慮すると、これらの保存データはすべての人に公開されており、そのためにさまざまなセキュリティとプライバシーの問題を引き起こしています。
現在、これらの課題に対処するためのいくつかの暗号技術があり、同態暗号、リング署名、安全なマルチパーティ計算、そして零知識証明が含まれます。零知識証明は、より包括的な解決策であり、この検証プロトコルは、中介データを開示することなく特定の命題の正当性を検証することを可能にします。このプロトコルは、複雑な公開鍵基盤を必要とせず、その繰り返しの実施は悪意のあるユーザーに追加の有用な情報を取得する機会を提供することはありません。ZKPを通じて、検証者はプライベートな取引データを漏らすことなく、証明者が十分な取引額を持っているかどうかを検証することができます。
ZKPのこの特性は、ブロックチェーン取引や暗号通貨アプリケーションにおいて中心的な役割を果たすことを可能にし、特にプライバシー保護やネットワークの拡張において重要です。このため、ZKPは学術研究の焦点となり、分散型台帳技術が成功裏に実施されて以来、最も重要な技術革新の1つとして広く認識されています。また、業界の応用やベンチャーキャピタルの注目の分野でもあります。
このように、ZKPに基づく多くのネットワークプロジェクトが次々と登場しています。例えば、ZkSync、StarkNet、Mina、Filecoin、Aleoなどです。これらのプロジェクトの発展に伴い、ZKPのアルゴリズム革新が次々と生まれており、報告によればほぼ毎週新しいアルゴリズムが登場しています。さらに、ZKP技術に関連するハードウェア開発も急速に進展しており、ZKPに最適化されたチップが含まれています。たとえば、Ingonyama、Irreducible、Cysicなどのプロジェクトはすでに大規模な資金調達を完了しており、これらの発展はZKP技術の急速な進歩を示すだけでなく、汎用ハードウェアからGPU、FPGA、ASICなどの専用ハードウェアへの移行を反映しています。
これらの進展は、zk-SNARKs技術が暗号学分野の重要な突破口であるだけでなく、より広範なブロックチェーン技術の応用を実現するための重要な推進力であることを示しています。
したがって、私たちは将来の投資判断をより良くサポートするために、零知识证明(ZKP)に関連する知識を体系的に整理することを決定しました。そのために、私たちはZKPに関連する主要な学術論文を総合的にレビューしました。同時に、この分野の先進的なプロジェクトの資料やホワイトペーパーを詳細に分析しました。これらの包括的な資料収集と分析は、本論文の執筆に堅固な基盤を提供しました。
1. ゼロ知識証明の基礎知識
1. 概要
1985年、学者Goldwasser、MicaliとRackoffは初めてzk-SNARKs(Zero-Knowledge Proof、ZKP)とインタラクティブゼロ知識(Interactive Zero-Knowledge、IZK)を提唱しました。この論文はzk-SNARKsの基礎となる作品であり、後の学術研究に影響を与える多くの概念を定義しました。例えば、知識の定義は「計算不可能な出力」であり、知識は出力でなければならず、計算不可能であることを意味します。つまり、単純な関数ではなく、複雑な関数でなければなりません。計算不可能は通常NP問題として理解でき、これは多項式時間内にその解の正当性を検証できる問題を指します。多項式時間とは、アルゴリズムの実行時間が入力サイズの多項式関数で表現できることを指します。これは計算機科学においてアルゴリズムの効率と実行可能性を測る重要な基準です。NP問題の解決過程は複雑であるため、計算不可能と見なされますが、その検証過程は比較的簡単であるため、zk-SNARKsの検証に非常に適しています。
NP問題の一つの古典的な例は巡回セールスマン問題であり、これは一連の都市を訪れて出発点に戻る最短経路を見つけることです。最短経路を見つけることは難しいかもしれませんが、与えられた経路が最短であるかどうかを検証するのは比較的容易です。なぜなら、具体的な経路の総距離を検証することは多項式時間内に行うことができるからです。
Goldwasserらはその論文の中で「知識の複雑さ」という概念を導入し、インタラクティブ証明システムにおいて、証明者が検証者に漏らす知識の量を定量化しました。彼らはまた、インタラクティブ証明システム(Interactive Proof Systems, IPS)を提案し、証明者(Prover)と検証者(Verifier)が複数回のインタラクションを通じて特定の命題の真実性を証明します。
以上のように、Goldwasserらがまとめたzk-SNARKsの定義は、検証者が検証プロセスにおいて文の真偽以外の追加情報を得ることがない特殊なインタラクティブ証明である; そして、次の3つの基本的な特性を提案した。
完備性(completeness): もし証明が真実であれば、誠実な証明者は誠実な検証者にこの事実を納得させることができる;
信頼性(サウンドネス): もし証明者が声明の内容を知らなければ、彼は検証者を騙す確率は微々たるものである;
ゼロ知識(zero-knowledge): 証明プロセスが完了した後、検証者は「証明者がこの知識を持っている」という情報のみを得ることができ、追加の内容を得ることはできません。
2. ゼロ知識証明の例
より良く理解するために、zk-SNARKsとその属性について、以下は証明者が特定の秘密情報を持っているかどうかを検証するための例であり、この例は三つの段階に分かれています: セットアップ、チャレンジ、応答。
ステップ 1: (Setup)を設定する
このステップでは、証明者の目標は、ある秘密の数字sを知っていることを証明する証拠を作成することですが、sを直接表示しないことです。秘密の数字sを設定します;
2つの大きな素数pとqを選び、それらの積nを計算します。素数pとqを設定し、得られたnを計算します。
v=s^2 mod nを計算します。ここで、vは証明の一部として検証者に送信されますが、それだけでは検証者や他の観察者がsを推測することはできません。
ランダムに整数rを選択し、x=r^2 mod nを計算して検証者に送信します。この値xは後続の検証プロセスに使用されますが、sは同様に公開されません。ランダム整数rを設定し、計算して得られたx。
ステップ2:チャレンジ(Challenge)
検証者はランダムに位置a(を選択します。これは0または1)であり、その後、証明者に送信されます。この"チャレンジ"は、証明者が次に取るべきステップを決定します。
ステップ 3: (Response)に応答する
検証者が発信したa値に基づいて、証明者が応答します:
もしa=0なら、証明者はg=r(を送ります。ここでrは彼が以前にランダムに選んだ数)です。
もしa=1なら、証明者はg=rs mod nを計算して送信します。検証者が送信するランダムビットaを設定し、aの値に基づいて、証明者はgを計算します;
最後に、検証者は受け取ったgに基づいてxがg^2 mod nに等しいかどうかを検証します。等式が成り立つ場合、検証者はこの証明を受け入れます。a=0のとき、検証者はx=g^2 mod nを計算し、右側でg^2 mod nを検証します。a=1のとき、検証者はx=g^2/v mod nを計算し、右側で(rs)^2/s^2 mod nを検証します。
ここでは、検証者が計算したx=g^2 mod nが、証明者が検証プロセスを成功裏に通過したことを示しており、その間に彼の秘密の数字sを漏らしていないことを示しています。ここで、aは0または1のいずれかしか取れないため、2つの可能性しかありません。証明者は運に頼って検証に合格する確率が1/2(であり、aが0のとき)です。しかし、検証者はその後証明者にk回挑戦し、証明者は関連する数字を次々と変更し、検証者に提出し、常に成功裏に検証プロセスを通過します。こうして、証明者が運に頼って検証に合格する確率(1/2)^k(は0.0)に無限に近づき、証明者が実際にある秘密の数字sを知っているという結論が証明されます。この例は、零知識証明システムの完全性、信頼性、そして零知識性を証明しています。
次に、非対話型のゼロ知識証明
1. バックグラウンド
zk-SNARKs(ZKP)は、従来の概念では通常、インタラクティブでオンラインのプロトコル形式です。例えば、Sigmaプロトコルは通常、認証を完了するために3から5回のインタラクションを必要とします。しかし、即時取引や投票などのシーンでは、複数回のインタラクションを行う機会がしばしばありません。特にブロックチェーン技術の応用において、オフライン検証機能が重要となります。
2. NIZKのご提案
1988年、Blum、Feldman、Micaliは非交互式零知识(NIZK)証明の概念を初めて提案し、複数ラウンドの相互作用なしで証明者(Prover)と検証者(Verifier)が認証プロセスを完了する可能性を証明しました。この突破口により、即時取引や投票、ブロックチェーンアプリケーションの実現が可能になりました。
彼らは非対話型のzk-SNARKs(NIZK)が3つの段階に分けられると提案しました:
設定段階で計算関数を使用し、安全なパラメータを公共知識(に変換します。証明者と検証者は共に)を取得でき、通常、共通の参照文字列(CRS)にエンコードされます。これは、正しいパラメータとアルゴリズムを使用して証明を計算し、検証する方法です。
計算フェーズでは、計算関数、入力および証明鍵を使用し、計算結果と証明を出力します。
検証段階で、検証キーを使用して証明の有効性を検証します。
彼らが提案した公共参照文字列(CRS)モデルは、すべての参加者が共有する文字列に基づいてNP問題の非対話型零知識証明を実現します。このモデルの運用はCRSの信頼できる生成に依存し、すべての参加者が同じ文字列にアクセスできる必要があります。CRSが正しく安全に生成される場合にのみ、このモデルに基づいて実施されるスキームが安全性を確保できます。多くの参加者にとって、CRSの生成プロセスは非常に複雑で時間がかかる可能性があるため、このようなスキームは通常操作が簡単で証明のサイズが小さいにもかかわらず、その設定プロセスは非常に挑戦的です。
その後、NIZK技術は急速に発展し、インタラクティブな零知識証明を非インタラクティブな証明に変換するさまざまな方法が登場しました。これらの方法はシステムの構築において