Web サイトを使用する際、ユーザーは自分が秘密鍵を持っていること、または自分だけが知っている答えを知っていることを Web サイトに証明することができ、Web サイトは鍵を知る必要はなく、ゼロ知識証明によってユーザーの身元を確認できます。分散ストレージを通じて、サーバーはデータが適切に保存され、漏洩していないことをユーザーに証明できます。
暗号通貨トランザクションはパブリック チェーン上で公開されます。ユーザーは匿名で取引を行いますが、(たとえば、Twitter や GitHub のプロファイルに ETH アドレスを含めることによって) 現実世界の ID にもリンクされるか、オンチェーンおよびオフチェーンのデータ分析を通じて現実世界の ID を取得することもできます。
SNARKの正式名称は「zero-knowledge saccinct non-interactive argument on know」(簡潔で非対話的なゼロ知識証明)です。これは、ファイルが小さく、簡単に検証できることを暗号的に証明します。ランダムな楕円曲線要素の離散対数が公開基点から見つからないと仮定した楕円曲線を使用して暗号証明を生成します。楕円曲線の計算コストは STARK のハッシュ関数よりも低いため、SNARK プロトコルのガスコストは低くなります。
ゼロ知識証明の解釈
この記事には次の内容が含まれます: 1. ゼロ知識証明とは何ですか? 2. ゼロ知識証明が必要なのはなぜですか? 3. ゼロ知識証明の応用シナリオ。 4. ゼロ知識証明の仕組み。 5. ゼロ知識証明の分類と応用例。 6. ゼロ知識証明の欠陥。
パート01
ゼロ知識証明とは
**ゼロ知識証明 (Zero-Knowledge Proof) は、1980 年代初頭に S.Goldwasser、S.Micali、C.Rackoff によって提案されました。これは、検証者に有益な情報を提供することなく、特定の主張が正しいことを検証者に納得させる証明者の能力を指します。 **
簡単な例を挙げると、パフさんは自分はシェフで、中華料理、韓国料理、イタリア料理を作ることができると言いました。私が家で一度も料理をしたことがなかったので、母は信じられないと言っていました。では、現時点で料理ができることを証明するにはどうすればよいでしょうか?
母親に私がキッチンで食事を終えるのを見てもらい、私が本当に料理の仕方を知っていることを証明できます。でも、料理中にキッチンで散らかしているところを母に見られたくないし、また小言を言われることになるので、どうしたらいいでしょうか?私は一人でキッチンに入り、両親は外で待っていて、調理を終えて荷物をまとめた後、食器を運びました。これは私が料理ができることを証明しています。私がどんな材料を使ったのか、どんな調味料を入れたのか、その過程でキッチンがどれほど汚かったのかについては、私には必要ありません。私が食事を作ることができることを母が知っている限り、それは私が料理を作れないことの証明になります。嘘をついています。
簡単に言うと、ゼロ知識証明は、最小限の情報交換で 2 者間に信頼を確立しようとします。さらなる情報を明らかにすることなく、一方の当事者(証明者、証明者)は、あることが真実であることを他方の当事者(検証者、検証者)に証明できます。
パート02
ゼロ知識証明が必要な理由
個人データを保護
不正なベンダーはできるだけ多くのユーザー データを収集したいと考えており、ビジネスに関係のない領収書の中にはユーザーに許可を求めるものもあります (本当に嫌いです)。収集したユーザーの個人識別情報 (PII) は一元的なデータベースに保存されますが、これらのデータベースは攻撃に対して非常に脆弱であり、一度攻撃されると個人識別情報が漏洩し、さまざまな詐欺問題につながります。
認証
Web サイトを使用する際、ユーザーは自分が秘密鍵を持っていること、または自分だけが知っている答えを知っていることを Web サイトに証明することができ、Web サイトは鍵を知る必要はなく、ゼロ知識証明によってユーザーの身元を確認できます。分散ストレージを通じて、サーバーはデータが適切に保存され、漏洩していないことをユーザーに証明できます。
コンピューティング圧縮とブロックチェーン拡張
従来のブロックアーキテクチャでは、署名検証、トランザクション有効性検証、スマートコントラクト実行などで同じ計算が何度も繰り返されますが、計算証明があれば同じ計算を何度も繰り返す必要がなく、計算プロセスが必要になります。はゼロ知識技術によって圧縮されて証明できる。
**ゼロ知識証明はデータの信頼性を実際に解決し、個人データの保護を実現し、ブロックチェーンにマシンを信頼するという概念を真に実現させます。 **
パート03
ゼロ知識証明の応用シナリオ
**ゼロ知識証明の主な応用シナリオは、匿名支払い、身元証明、検証可能な計算、匿名投票です。 **
匿名支払い
暗号通貨トランザクションはパブリック チェーン上で公開されます。ユーザーは匿名で取引を行いますが、(たとえば、Twitter や GitHub のプロファイルに ETH アドレスを含めることによって) 現実世界の ID にもリンクされるか、オンチェーンおよびオフチェーンのデータ分析を通じて現実世界の ID を取得することもできます。
完全に匿名のトランザクション用に設計された特定の「プライバシー コイン」があります。例には、送信者/受信者のアドレス、資産タイプ、金額、取引タイムラインなどの取引詳細をマスクする Zcash や Monero が含まれます。ゼロ知識技術をプロトコルに組み込むことにより、プライバシーを重視したブロックチェーン ネットワークでは、ノードがトランザクション データにアクセスすることなくトランザクションを検証できるようになります。
ゼロ知識証明は、パブリック ブロックチェーン上の匿名トランザクションにも適用されています。ユーザーがイーサリアム上でプライベートトランザクションを実行できるようにする分散型非保管サービスである Tornado Cash などです。 Tornado Cash は、ゼロ知識証明を使用して取引の詳細を難読化し、財務上のプライバシーを保証します。
個人ID
特定個人情報を漏らさないことを前提として、特定個人証明書が発行されます。たとえば、オンライン サービスを使用するには、ユーザーの身元とそれらのプラットフォームにアクセスする権利を証明する必要があります。これには通常、名前、電子メールアドレス、生年月日などの個人情報の提供が必要です。
ゼロ知識証明により、プラットフォームとユーザーの認証が簡素化されます。 ZK 証明は、パブリック入力 (例: ユーザーがプラットフォームのメンバーであることを証明するデータ) とプライベート入力 (例: ユーザーの詳細) を使用して生成され、ユーザーはサービスにアクセスする必要がある場合に身元を確認するためにこれらを提示するだけで済みます。例えば、利用者が成人であるかどうかを証明するには、IDカード情報や具体的な生年月日の発行は必要なく、利用者が18歳かどうかの結論だけで証明できます。
検証可能な計算
ユーザーのデバイスが必要なコンピューティングをサポートできない場合、またはローカルでのコンピューティングのコストが高すぎる場合は、サードパーティのサービスが考慮されます。これらのサードパーティ サービスは、迅速かつ安価に出力結果をユーザーに返すことができます (Chainlink の Oracle サービスなど)。このシナリオのゼロ知識証明により、サードパーティのコンピューティング電源プロバイダーは計算整合性証明を出力して、ユーザーが受け取る出力結果が正しいことを確認できます。
匿名投票
具体的な身元を明らかにしないことを前提として、ユーザーの身元を証明し、投票権限を取得することで投票が完了します。
パート04
ゼロ知識証明の仕組み
ゼロ知識証明は、MIT の Shafi Goldwasser と Silvio Micali によって 1985 年の論文「対話型証明システムの知識の複雑さ」で初めて提案されました。著者は論文の中で、証明者が特定のデータを明かさずにデータの信頼性を検証者に納得させることは可能であると述べています。ゼロ知識証明は対話型にすることもできます。つまり、証明者は各検証者に対してデータの信頼性を 1 回証明する必要があります。また、非対話型にすることもできます。つまり、証明者が証明を作成し、この証明を使用する人は誰でも証明を行うことができます。確認されること。現在、zk-SNARKS、zk-STARKS、PLONK、Bulletproofs など、ゼロ知識証明の実装が多数あります。各方法には、証明サイズ、証明者時間、検証時間の点で独自の長所と短所があります。
ゼロ知識証明には、次の 3 つの基本機能があります。
要約すると、ゼロ知識証明を作成するには、検証者は証明者に、基礎となる情報を知っている場合にのみ正しく実行できる一連の操作を実行させる必要があります。証明者が結果をだました場合、検証者は検証で自分の間違いを見つけて証明する可能性が非常に高くなります。
パート05
ゼロ知識証明の分類
ゼロ知識証明は、対話方式により「対話型ゼロ知識証明」と「非対話型ゼロ知識証明」に分けられます。
インタラクティブなゼロ知識証明
証明者と検証者は複数回対話する必要があり、検証者は証明者に疑問を呈するために質問をし続け、証明者は検証者が納得するまでこれらの課題に応答し続けます。
インタラクティブなゼロ知識証明 - 色盲ゲーム
アリスは色覚異常ですが、ボブは色覚異常ではありません。ボブには同じサイズと形の 2 つのボールがありますが、これら 2 つのボールの色は異なります。1 つのボールは青で、もう 1 つのボールは赤です。アリスは色覚異常なので、アリスは2 つのボールが同じかどうか判断できないため、ボブは 2 つのボールが異なることをアリスに証明する必要があります。ここで、アリスは検証者と呼ばれます。彼はボブの発言が正しいかどうかを検証する必要があります。ボブは証明者と呼ばれます。彼は自分の発言を証明する必要があります(色の異なるボールが 2 つあります)。ボールの色が異なることをアリスに証明します。これはゼロ知識証明の定義と一致します。
アリスはボブの前で 2 つのボール、左手に青いボール、右手に赤いボールを拾い、ボブがアリスの手に持っているボールを見られないように両手を後ろに置き、アリスはランダムにボールを交換します。交換が完了した後、アリスは手を伸ばして 2 つのボールの位置が入れ替わったかどうかボブに尋ねます。ボブがボールの色を見ることができれば、アリスが位置を変えるたびに、ボールの場合、ボブはアリスの質問に正しく答えることができます。
初めて、アリスは手の中のボールの位置をこっそり交換しました。そしてアリスはボブにボールの位置を交換したかどうか尋ねました。ボブが「はい」と答えた場合、アリスはボブがボールの色を区別できる確率が 50% になります。ボールが 2 つです。ボブが正解する確率は 1/2 なので、アリスはもう一度挑戦できます。ボブが「いいえ」と答えた場合、アリスはボブが 2 つのボールの色を区別できないと確信できます。
2 回目では、アリスは手の中のボールの位置を交換しませんでしたが、アリスはボブにボールの位置を交換したかどうかを尋ねます。ボブが「いいえ」と答えた場合、アリスはボブが 2 つのボールの色を区別できると信じる確率が 75% になります。
最初の繰り返しの後、アリスは、ボブが述べた主張は 50% の確率で真実であると言えます。ボブが 2 回目に正しく答えた場合、アリスはボブの発言が 75% の確率で正しいと言えます。 3 回目の反復後は 87.5% になります。ボブが n 回連続してチェックに合格した場合、アリスは 1-(1/2)^n の確率でボブの言ったことは真実であると考えることができ、2 つのボールは確かに赤と青です。
インタラクティブなゼロ知識証明は、確率ベースの検証方法です。検証者は、特定のランダム性に基づいて証明者に質問します。証明者が正しい答えを与えることができれば、証明者は自分が持っているすべての証明を持っている可能性が高いことを意味します. 「知識」を主張した。ゼロ知識証明は、誤りの確率が低く、欺瞞的な証明者が虚偽の記述によって検証者を欺く可能性があるため、数学的な意味での証明ではありません。言い換えれば、ゼロ知識証明は決定論的証明ではなく確率論的証明ですが、誤差を無視できる値まで減らすことができる技術があります。
この対話型アプローチにはいくつかの制限があります。
非インタラクティブなゼロ知識証明
インタラクティブなゼロ知識証明では、2 者がすぐに対応でき、繰り返し対話できる必要があります。検証者が証明者が正直であると確信している場合でも、その証明を独立した検証に使用することはできません (新しい証明を計算するには、証明者と検証者の間で新しい一連のメッセージが必要です)。
対話型のゼロ知識証明が直面する問題を解決するために、非対話型のゼロ知識証明が登場しました。マヌエル・ブルム、ポール・フェルドマン、シルビオ・ミカリは、証明者と検証者が共有秘密を持つ、初のインタラクティブなゼロ知識証明を提案しました。これにより、証明者は、情報自体を提供することなく、一部の情報についての知識を証明できます。
非インタラクティブなゼロ知識証明 --- 数独ゲーム
数独は 18 世紀にスイスで生まれた数学ゲームで、紙とペンを使って計算を行う論理ゲームです。プレイヤーは、9×9 ボード上の既知の数字に基づいて残りのすべてのスペースの数字を推測し、各行、各列、および各太線の宮殿 (3*3) の数字に 1- が含まれていることを確認する必要があります。 9. 繰り返します。
ボブに数独パズルを解いたことを証明するために、アリスはそのための改ざん防止マシンを作成します。アリスが生成した数独の答えをマシンに入力すると、マシンは証明をボブに送信できます。アリスのマシンは、次の公的に検証可能なプロトコルに従います。まず、アリスは未解決のオリジナルの数独パズルをマシンに置き、数独の 3 枚のパズル カードを表向きにします。次に、アリスは答えを裏向きにしてマシンの対応するセルに置き、各セルに 3 枚のカードも置きます。最後に、ボブは機械から証拠を取得し、機械は 27 個のバッグをボブに返します。
マシンは数独の各列から 9 枚のカードを取り出し、別々に混ぜて袋に入れます。合計 9 列あり、9 つの袋を使用します。マシンは数独の各列から 9 枚のカードを取り出し、それらを混ぜて、それらを袋に入れます、合計 9 列あり、9 袋が使用されます; 機械は数独の各太線宮殿 (3*3) のカードを取り出し、それらを混ぜ合わせて箱に入れます袋、合計 9 、9 袋を使い切ります。
ボブは 27 個の袋をそれぞれ個別にチェックし、各袋の中のカードに 1 から 9 までの数字が含まれており、どの数字も欠落していたり重複していない場合、ボブはアリスが実際に数独を解き、ボブが数独を解いていないことを確認できます。マシンからボブのバッグに返されるデータはランダムにシャッフルされるため、数独の解に関するあらゆる知識は、返された証明から得ることができます。
非対話型のゼロ知識証明は、対話型のゼロ知識証明の欠点の一部を克服し、オンラインでの長時間の対話を必要とせず、多くの人 (または全員) によって信頼され、証明は常に有効ですが、追加のマシンとプログラムが必要です。実験的な順序を決定するために必要な場合があります。たとえば、Sudoku の場合、どの列または行を検証するかはプログラムによって決定されます。検証シーケンスは秘密にしておかなければなりません。そうでないと、検証者は本当の「知識」を知らずに検証に合格してしまう可能性があります。
インタラクティブなゼロ知識証明 VS 非インタラクティブなゼロ知識証明
インタラクティブ証明の各検証には新しいラウンドの通信が必要ですが、非インタラクティブ証明では参加者 (証明者と検証者) 間の通信は 1 ラウンドのみ必要です。証明者は秘密情報を特別なアルゴリズムに渡し、ゼロ知識証明を計算します。この証明は検証者に送信され、検証者は別のアルゴリズムを使用して証明者が秘密を知っているかどうかを確認します。
非インタラクティブな証明により、証明者と検証者の間の通信が削減され、ZK 証明がより効率的になります。また、証明が生成されると、他の誰でも (共有秘密と検証アルゴリズムにアクセスできれば) 検証することができます。
パート****06
ゼロ知識証明の技術的ソリューションと応用
ゼロ知識テクノロジーにより、開発者はイーサリアムなどの基盤となるブロックチェーンのセキュリティを活用できるだけでなく、dApps のトランザクション スループットと速度を向上させることができ、同時にユーザーの個人情報をオフチェーンに置いてユーザーのプライバシーを保護することができます。エンドユーザーの使用コストを削減するために、トランザクションはパッケージ化されてチェーンにアップロードされます。最終的に、プロジェクトはこれらの機能を活用して、パフォーマンスで Web2 システムに匹敵するだけでなく、Web3 の分散化の利点を維持できる高度な dApp を作成できます。
(画像出典: チェーンリンク)
Layer2 では、zk-rollup は複数のトランザクションをパッケージ化して Layer1 ブロックチェーン上に公開し、計算の妥当性を検証するためにゼロ知識証明も公開します。オンチェーンに投稿された証拠は「有効性証明」とも呼ばれます。 **有効性証明技術は SNARK と STARK の 2 種類に分類されます。 **
zk-SNAR
SNARKの正式名称は「zero-knowledge saccinct non-interactive argument on know」(簡潔で非対話的なゼロ知識証明)です。これは、ファイルが小さく、簡単に検証できることを暗号的に証明します。ランダムな楕円曲線要素の離散対数が公開基点から見つからないと仮定した楕円曲線を使用して暗号証明を生成します。楕円曲線の計算コストは STARK のハッシュ関数よりも低いため、SNARK プロトコルのガスコストは低くなります。
事例:Zcash、Loopring、zkSync1.0、zkSync 2.0、Zigzag、Mine
zk-スターク
STARKの正式名称は「zero-knowledge scalable transparent argument ofKnowledge」(ゼロ知識スケーラブルで透明な知識証明)です。この暗号証明では、証明者と検証者の間での対話はほとんど必要ありません。 SNARKsに対するSTARKsの最大の利点は、証明時間が短く、拡張が容易であることです。また、STARKはハッシュ関数を使用しているため、量子攻撃にも耐性があります。
STARKs の発明者は、StarkEx と StarkNet も開発したチームである StarkWare の共同創設者である Eli Ben-Sasson であることは言及する価値があります。
例: StarkEx、StarkNet、Immutable X、Starkware
パート07
ゼロ知識証明の欠点
ハードウェアのコストが高い
証明システムに応じて、ゼロ知識証明の生成プロセスは異なります。しかし、最終的には、大きな数のベクトル (フィールドまたはグループ) の乗算、特に可変基数と固定基数を使用したマルチスカラー乗算 (MSM)、または高速フーリエ変換 (FFT) と逆 FFT などの難しい問題に直面することになります。
MSM と FFT はどちらも低速な演算です。 FFT と MSM の両方が存在するシステムでは、プルーフ生成時間の約 70% が MSM に費やされ、30% が FFT に費やされます。複雑な計算を実装するにはハードウェア アクセラレーションが必要です。一般に、ZK ハードウェア アクセラレーションにとって最も重要なテクノロジは、GPU (コストとエネルギー効率のため) や ASIC (柔軟性のなさと長い反復サイクルのため) ではなく、FPGA であると考えられています。最上位の FPGA は、最上位の GPU よりも約 3 倍安価です。また、FPGA は GPU よりも 10 倍以上エネルギー効率が高く、これは主に GPU が大量の電力を消費するホスト デバイスに接続する必要があるためです。
検証コスト
証明を検証するには多くの複雑な計算が必要となり、計算コストも増加します。たとえば、ZK-rolluo はイーサリアム上で 1 つの AK-SNARK 証明を検証するために約 500,000 ガスを支払う必要があり、ZK-STARK はさらに高い料金を必要とします。
信頼の仮定
ゼロ知識証明の前提は、双方が正直で本当の答えを知りたいと考えており、データを改ざんしないことです。 ZK-SNARK では、パブリック パラメータを一度生成すると、ゼロ知識プロトコルに参加する当事者が再利用できます。これは、参加者が提供するデータがデフォルトで正しいことを意味します。
しかし実際には、ユーザーは参加者の誠実さを評価する方法がなく、たとえ参加者が虚偽のデータを入力したとしても、ユーザーはそれを信じる必要があります。 ZK-STARK には信頼の前提がありません。現在、研究者は証明メカニズムのセキュリティを向上させるために、ZK-SNARK の信頼できない設定に取り組んでいます。
量子コンピューティングの脅威
ZK-SNARKは暗号化に楕円曲線デジタル署名アルゴリズム(ECDSA)を使用しており、現時点では安全と思われますが、将来の量子コンピュータの開発によりこのアルゴリズムが解読される可能性があります。
ZK-STARK は衝突防止ハッシュを使用して暗号化されているため、量子コンピューティングによる脅威にさらされることはないと一般に考えられていますが、ECDSA の公開鍵と秘密鍵のペアとは異なり、衝突防止ハッシュは量子コンピューティングによる解読がより困難です。