ゼロ知識証明とは何ですか?

初級編1/4/2024, 6:21:16 PM
この記事では、ゼロ知識証明(ZKP)の詳細な証明を提供します。

ゼロ知識プロトコルは、1つの当事者(証明者)が、他の当事者(検証者)に、特定の文が真実であることを除いて、情報を一切明かさずに証明できる方法です。

ゼロ知識証明は数年の間に改善され、現在はいくつかの実世界のアプリケーションで使用されています。

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

ゼロ知識証明は、応用暗号化において画期的な進歩を表しており、個人の情報セキュリティを向上させることを約束しています。別の当事者(たとえばサービスプロバイダー)に主張(例:「私はX国の市民です」)を証明する方法を考えてみてください。ナショナルパスポートや運転免許証などの「証拠」として主張を裏付ける必要があります。

しかし、このアプローチには問題点があります。主にプライバシーの欠如です。第三者サービスと共有される個人を特定できる情報(PII)は、ハッキングのリスクにさらされる中央データベースに保存されています。身元盗用が重大な問題となっている中、機密情報を共有するためのプライバシー保護手段が求められています。

ゼロ知識証明は、主張の妥当性を証明するために情報を明らかにする必要がないようにすることで、この問題を解決します。ゼロ知識プロトコルは、主張(証人と呼ばれる)を入力として使用して、その妥当性の簡潔な証明を生成します。この証明は、その主張が真実であることを強力に保証し、それを作成する際に使用された情報を公開せずに済みます。

先ほどの例に戻ると、市民権主張を証明するために必要な唯一の証拠は、ゼロ知識証明です。検証者は、証明の特定の属性が真実であるかどうかをチェックするだけで、基になる文が真実であると納得することができます。

ゼロ知識証明はどのように機能しますか?

ゼロ知識証明は、文の内容を共有せずにその真実を証明することを可能にします。このため、ゼロ知識プロトコルは、データを入力として受け取り、「true」または「false」を出力するアルゴリズムに依存しています。

ゼロ知識プロトコルは次の基準を満たさなければなりません:

  1. 完全性: 入力が有効である場合、ゼロ知識プロトコルは常に「true」を返します。したがって、基になる文が真であり、証明者と検証者が正直に行動する場合、証明は受け入れられます。
  2. 正当性:入力が無効である場合、ゼロ知識プロトコルを 'true' と返すことを理論的には欺くことは不可能です。したがって、ウソをつくプローバは、信頼できる検証者を無効なステートメントが有効であると信じさせることはできません(確率のわずかな余地を除いて)。
  3. ゼロ知識:検証者は、その真偽を超えてステートメントについて何も学びません(ステートメントについて「ゼロ知識」を持っています)。この要件は、検証者が証明から元の入力(ステートメントの内容)を導出するのをも防ぎます。

基本的な形で、ゼロ知識証明は、証人、挑戦、応答の3つの要素で構成されています。

  • 証人:ゼロ知識証明を用いて、証明者は隠された情報の知識を証明したいと考えています。秘密の情報は証明の「証人」であり、証明者が証人の知識を仮定することで、情報の知識を持つ者にのみ回答できる一連の質問を確立します。したがって、証明者は無作為に質問を選択し、答えを計算して検証者に送信することで証明プロセスを開始します。
  • チャレンジ:検証者はセットから別の質問をランダムに選び、証明者に回答するよう求めます。
  • 応答: プロバーは質問を受け入れ、答えを計算し、それを検証者に返します。プロバーの応答により、検証者は以前に証人にアクセスできているかどうかを確認できます。プロバーが単に適当に推測して正しい答えを得ていないことを確認するために、検証者はさらに多くの質問を選びます。このやり取りを何度も繰り返すことで、証人の知識を偽造する可能性は著しく低下し、検証者が満足するまで続けられます。

上記は、'インタラクティブゼロ知識証明'の構造を説明しています。初期のゼロ知識プロトコルでは、文の妥当性を検証するには、証明者と検証者の間でのやり取りが必要でした。

相互証明がどのように機能するかを示す良い例は、ジャン=ジャック・キスカテールの有名なアリババの洞窟物語

(新しいタブで開きます)

物語では、ペギー(証明者)は、魔法の扉を開く秘密のフレーズを明かさずに、ヴィクター(検証者)にそのフレーズを知っていることを証明したいと思っています。

非対話型ゼロ知識証明

革新的でインタラクティブな証明は、2つの当事者が利用可能で繰り返しやり取りする必要があったため、限られた有用性しか持っていませんでした。検証者が証明者の誠実さに納得しても、証拠は独立した検証のために利用できませんでした(新しい証明を計算するには、証明者と検証者の間で新しいメッセージのセットが必要でした)。

この問題を解決するために、Manuel Blum、Paul Feldman、およびSilvio Micaliは最初の提案をしました非対話型ゼロ知識証明

(新しいタブで開きます)

検証者と検証者が共有キーを持っている場合、これにより検証者は情報(すなわち、証人)の知識を提供せずにその情報を証明することができます。

対話型証明とは異なり、非対話型証明は参加者(証明者と検証者)間で1ラウンドの通信のみが必要でした。証明者は秘密情報を特別なアルゴリズムに渡してゼロ知識証明を計算します。この証明は検証者に送信され、検証者は別のアルゴリズムを使用して証明者が秘密情報を知っていることを確認します。

非対話型証明は、証明者と検証者の間の通信を減らし、ZK-証明をより効率的にします。さらに、証明が生成されると、それは共有キーと検証アルゴリズムへのアクセス権を持つ他の誰でも検証できます。

非対話型証明は、ゼロ知識技術にとって画期的なものであり、現在使用されている証明システムの開発を促進しました。以下でこれらの証明タイプについて説明します。

ゼロ知識証明の種類

zk-SNARKs

ZK-SNARKはZero-Knowledge Succinct Non-Interactive Argument of Knowledgeの頭字語です。 ZK-SNARKプロトコルには次の特性があります:

  • ゼロ知識:検証者は、その文が真実か偽かだけを知ることができ、その他の情報を知る必要はありません。検証者がその文について持っている知識は、それが真実か偽かだけです。
  • 簡潔であり、ゼロ知識証明は証人よりも小さく、迅速に検証できます。
  • Non-interactive: 証拠は、証明者と検証者が1回しかやり取りしないため、「非対話型」とされます。これは、複数の通信ラウンドを必要とする対話型証明とは異なります。
  • 議論: 証拠は「正確性」要件を満たしているため、不正行為は非常に起こりにくいです。
  • 知識:秘密情報(証人)にアクセスせずにゼロ知識証明を構築することはできません。証人を持たない証明者が有効なゼロ知識証明を計算するのは難しい、不可能であるかもしれません。

先に言及した '共有キー' とは、証明者と検証者が生成および検証のために合意する公共パラメータを指します。公共パラメータ(一般に Common Reference String (CRS) として知られています)を生成することは、プロトコルのセキュリティにおける重要性から、機密操作です。CRS の生成に使用されるエントロピー(ランダム性)が不正な証明者の手に渡ると、彼らは虚偽の証明を計算できます。

多者計算(MPC)

(新しいタブで開きます)

公共パラメータを生成する際のリスクを軽減する方法です。複数の当事者が参加します。信頼されたセットアップセレモニー

(新しいタブで開きます)

, それぞれの人がいくつかのランダムな値を貢献してCRSを生成します。1つの誠実な当事者が自分のエントロピーの部分を破壊すれば、ZK-SNARKプロトコルは計算上の妥当性を保持します。

信頼できるセットアップは、パラメータ生成の参加者を信頼する必要があります。しかし、ZK-STARKの開発により、信頼されていないセットアップで機能する証明プロトコルが可能になりました。

ZK-STARKs

ZK-STARKは、Zero-Knowledge Scalable Transparent Argument of Knowledgeの頭字語です。ZK-STARKは、ZK-SNARKと類似していますが、次の点が異なります。

  • スケーラブル:ZK-STARKは、証人のサイズが大きい場合に、証明を生成および検証する速度がZK-SNARKよりも速いです。STARK証明では、証人が成長するにつれて、証明者および検証者の時間はわずかに増加するだけです(SNARKの証明者および検証者の時間は、証人のサイズと線形に増加します)。
  • 透明性:ZK-STARKは、信頼されるセットアップではなく、公に検証可能なランダム性に依存して公開パラメータを生成し、証明および検証を行います。そのため、ZK-SNARKsと比較してより透明性があります。

ZK-STARKsは通常、ZK-SNARKsよりも大きな証明を生成するため、一般的により高い検証オーバーヘッドを持ちます。ただし、大規模なデータセットを証明する場合など、ZK-STARKsの方がZK-SNARKsよりもコスト効果が高いケースもあります。

ゼロ知識証明のユースケース

匿名支払い

クレジットカードの支払いは、支払いプロバイダー、銀行、その他関係者(例:政府当局)など、複数の当事者によってしばしば見えます。金融監視は違法活動の特定に役立つ一方、一般市民のプライバシーを損なうこともあります。

暗号通貨は、ユーザーがプライベートでピア・ツー・ピアの取引を行う手段を提供することを意図していました。しかし、ほとんどの暗号通貨取引は公開されたブロックチェーン上で明らかになっています。ユーザーのアイデンティティはしばしば擬似的であり、意図的に実世界のアイデンティティにリンクされていたり(例:TwitterやGitHubプロファイルにETHアドレスを含めることによって)、または基本的なオンチェーンおよびオフチェーンのデータ分析を使用して実世界のアイデンティティと関連付けられることがあります。

完全匿名取引向けに設計された特定の「プライバシーコイン」があります。ZcashやMoneroなどのプライバシー重視のブロックチェーンは、送信者/受信者アドレス、資産タイプ、数量、取引のタイムラインなどの取引詳細を保護します。

プロトコルにゼロ知識技術を組み込むことで、プライバシーに焦点を当てたブロックチェーンネットワークは、ノードが取引データにアクセスする必要なく取引を検証することができます。

ゼロ知識証明は、公開ブロックチェーン上で取引を匿名化するためにも適用されています。その例として、Ethereum上でユーザーがプライベート取引を行うことを可能にする分散型の非キュストディアルサービスであるTornado Cashがあります。Tornado Cashは、取引の詳細を曖昧にし、財務プライバシーを保証するためにゼロ知識証明を使用しています。残念ながら、これらは「オプトイン」のプライバシーツールであるため、違法な活動と関連付けられています。これを克服するためには、プライバシーは最終的に公開ブロックチェーン上のデフォルトとならなければなりません。

アイデンティティ保護

現在のアイデンティティ管理システムは個人情報を危険にさらします。ゼロ知識証明は、個人がアイデンティティを検証するのに役立ち、同時に機密情報を保護します。

ゼロ知識証明は特にの文脈で特に有用です分散型アイデンティティ. 分散型アイデンティティ(自己主権アイデンティティとも呼ばれる)は個人に個人識別子へのアクセスを制御する機能を提供します。 納税番号やパスポートの詳細を明かさずに市民権を証明することは、ゼロ知識技術が分散型アイデンティティを可能にする良い例です。

認証

オンラインサービスを利用するには、自分の身元やプラットフォームへのアクセス権を証明する必要があります。これには、名前、電子メールアドレス、生年月日などの個人情報を提供することがしばしば必要です。また、長いパスワードを覚えておく必要があるか、アクセス権を失うリスクがあります。

ただし、ゼロ知識証明は、両プラットフォームとユーザーの認証を簡単にすることができます。 ZKプルーフが生成されたら、ユーザーは単にそれを提示して、サービスにアクセスする際に自分の身元を認証できます。 これにより、ユーザーのエクスペリエンスが向上し、組織は膨大なユーザー情報を保存する必要性から解放されます。

検証可能な計算

検証可能な計算は、ブロックチェーン設計の改善のためのゼロ知識技術の別の応用です。検証可能なコンピューティングは、他のエンティティに計算を外部委託しながら、検証可能な結果を維持することを可能にします。エンティティは、プログラムが正しく実行されたことを検証する証拠とともに結果を提出します。

検証可能な計算は、セキュリティを低下させることなく、ブロックチェーン上の処理速度を向上させる上で重要です。これを理解するには、Ethereumのスケーリングのための提案されたソリューションの違いを知っていることが必要です。

オンチェーンスケーリングソリューション、シャーディングなどのようなものは、ブロックチェーンの基本層を広範囲に修正する必要があります。しかし、このアプローチは非常に複雑で、実装上のエラーがEthereumのセキュリティモデルを損なう可能性があります。

オフチェーンスケーリングソリューションコアのEthereumプロトコルを再設計する必要はありません。代わりに、Ethereumの基本層のスループットを向上させるために、アウトソーシングされた計算モデルに依存しています。

実践での動作方法は次のとおりです:

  • すべての取引を処理する代わりに、Ethereumは実行を別のチェーンにオフロードします。
  • トランザクションを処理した後、他のチェーンは結果を返し、イーサリアムの状態に適用されます。

ここでの利点は、イーサリアムが実行を行う必要がなく、外部の計算結果を状態に適用するだけで済むことです。これによりネットワークの混雑が軽減され、トランザクションの速度も向上します(オフチェーンプロトコルはより高速な実行を最適化しています)。

チェーンは、オフチェーン取引を再実行せずに検証する方法が必要です。そうでないと、オフチェーン実行の価値が失われます。

これが検証可能な計算が重要となるポイントです。ノードがイーサリアムの外でトランザクションを実行する際、オフチェーン実行の正確性を証明するためにゼロ知識証明を提出します。この証明(

バリデーションプルーフ)は、取引が有効であることを保証し、イーサリアムがその結果を状態に適用できるようにするものであり、誰かがそれに異議を唱えるのを待つ必要はありません。

ゼロ知識ロールアップそしてvalidiumsは、セキュアなスケーラビリティを提供するために有効性証明を使用する2つのオフチェーンスケーリングソリューションです。これらのプロトコルは、オフチェーンで数千の取引を実行し、イーサリアム上で検証のための証明を提出します。その結果は、証明が検証されるとすぐに適用でき、イーサリアムがベースレイヤー上での計算を増やさずにより多くの取引を処理できます。

オンチェーン投票における贈収賄と共謀の削減

ブロックチェーン投票システムには多くの好ましい特性があります: それらは完全に監査可能で、攻撃に対して安全で、検閲に対抗し、地理的制約から解放されています。しかし、オンチェーンの投票システムでさえ、共謀の問題に免疫ではありません。

「オープンな競争を制限するために共謀し、他者を欺き、詐欺し、誤解させること」と定義される共謀は、悪意のある行為者が賄賂を提供して投票を影響させる形を取ることがあります。 例えば、アリスは、自分がオプションAを好むにも関わらず、ボブからオプションBに投票するための賄賂を受け取るかもしれません。

贈収賄や共謀は、投票を信号機構として使用するプロセスの効果を制限します(特にユーザーが投票した方法を証明できる場合)。これは、特に投票が希少なリソースを割り当てるための責任がある場合、重大な影響を与える可能性があります。

例えば、二次資金調達メカニズム

(新しいタブで開きます)

寄付に頼って、さまざまな公共物件の中で特定のオプションの選好を測定します。各寄付は特定のプロジェクトへの「投票」として数えられ、より多くの投票を受けたプロジェクトがマッチングプールからより多くの資金を受け取ります。

オンチェーン投票を使用すると、二次資金調達は共謀に対して脆弱になります:ブロックチェーン取引は公開されているため、賄賂を受ける側のオンチェーンの活動を調査することができ、どのように「投票」したかが分かります。このように、二次資金調達は、コミュニティの集約された選好に基づいて資金を割り当てるための効果的な手段ではなくなります。

幸いなことに、MACI(最小アンチ共謀インフラストラクチャ)などの新しいソリューションでは、ゼロ知識証明を使用して、オンチェーン投票(例:二次資金調達メカニズム)を賄賂や共謀に対して耐性を持たせています。MACIは、中央管理者(「コーディネーター」と呼ばれる)が投票を集計し、個々の投票方法の詳細を明らかにせずに結果を集計できる一連のスマートコントラクトとスクリプトです。それでも、投票が適切に集計されたことを検証したり、特定の個人が投票ラウンドに参加したことを確認することは可能です。

MACIはゼロ知識証明とどのように連携しますか?

最初に、コーディネーターはMACI契約をEthereumに展開し、その後、ユーザーは投票にサインアップできます(スマート契約に公開鍵を登録することで)。 ユーザーは、スマート契約に彼らの公開鍵で暗号化されたメッセージを送信することで投票を行います(有効な投票は、他の基準の中でユーザーのアイデンティティに関連付けられた最新の公開鍵で署名されている必要があります)。 その後、コーディネーターは、投票期間が終了すると、すべてのメッセージを処理し、投票を集計し、チェーン上で結果を検証します。

MACIでは、コーディネーターが投票を誤って処理したり、集計結果を誤って計算することを不可能にするために、ゼロ知識証明が使用されています。これは、コーディネーターにZK-SNARK証明を生成するよう要求することによって実現されます。これにより、a) すべてのメッセージが正しく処理されたこと、b) 最終結果がすべての有効な投票の合計に対応していることが検証されます。

そのため、通常の場合と同様に、ユーザーごとの投票の内訳を共有しなくても、MACIは集計プロセス中に計算された結果の整合性を保証します。この機能は、基本的な共謀計画の効果を低下させるのに役立ちます。ボブがアリスに賄賂を贈って特定のオプションに投票するように依頼するという前述の例を使用して、この可能性を探ることができます。

  • アリスは、自分の公開鍵をスマートコントラクトに送信して投票登録を行います。
  • アリスは、ボブからの賄賂と引き換えに、オプションBに投票することに同意します。
  • アリスはオプションBに投票します。
  • アリスは、彼女のアイデンティティに関連付けられた公開鍵を変更するために暗号化されたトランザクションを秘密裏に送信します。
  • アリスは、新しい公開鍵を使用して、オプションAに投票するためにスマートコントラクトに別の(暗号化された)メッセージを送信します。
  • アリスは、ボブにトランザクションを示し、それによって彼女がオプションBに投票したことを示しています(これは公開鍵がもはやシステム内でアリスのアイデンティティに関連付けられていないため、無効です)
  • メッセージの処理中、コーディネーターはアリスのオプションBへの投票をスキップし、オプションAへの投票のみをカウントします。したがって、ボブのアリスとの共謀を無視し、オンチェーンの投票を操作しようとする試みは失敗します。

MACIを使用するには、コーディネーターが賄賂を受け取る者と共謀したり、投票者自体に賄賂を提供しようとしないことを信頼する必要があります。 コーディネーターはユーザーメッセージを復号化できるので(証拠を作成するために必要)、各個人がどのように投票したかを正確に検証できます。

しかし、コーディネータが正直である場合、MACIはオンチェーン投票の信頼性を保証する強力なツールを表します。これが、二次資金提供アプリケーションの間で人気がある理由です(例えば、clr.fund

(新しいタブで開きます)

)それは個々の投票選択の信頼性に大きく依存しています。

MACIについて詳しく学ぶ

(opens in a new tab)

.

ゼロ知識証明の欠点

ハードウェアコスト

ゼロ知識証明の生成には、非常に複雑な計算が必要であり、専用マシンで最も効果的に実行されます。これらのマシンは高価なため、一般の個人には手の届かないことがしばしばあります。さらに、ゼロ知識技術を使用したいアプリケーションは、ハードウェアコストを考慮に入れる必要があります。これはエンドユーザーのコストを増加させる可能性があります。

プルーフ検証コスト

証明の検証には複雑な計算が必要であり、アプリケーションでゼロ知識技術を実装するコストが増加します。このコストは特に計算の検証の文脈で重要です。たとえば、ZK-rollupsは、イーサリアム上で1つのZK-SNARK証明を検証するのに約500,000ガスを支払い、ZK-STARKsはさらに高い手数料が必要です。

信頼の前提

ZK-SNARKでは、一般参照文字列(公開パラメータ)は一度生成され、ゼロ知識プロトコルに参加したい当事者に再利用可能です。公開パラメータは信頼されたセットアップセレモニーを通じて作成され、参加者が正直であると仮定されます。

ただし、ユーザーが参加者の誠実さを評価する方法は実際にはありません。ユーザーは開発者の言葉を信じなければなりません。ZK-STARKsは、文字列を生成する際に使用されるランダム性が公開可能であるため、信頼前提から解放されています。一方、研究者は、ZK-SNARKsのための信頼されていないセットアップに取り組んでおり、証明メカニズムのセキュリティを高めています。

量子コンピューティングの脅威

ZK-SNARKは楕円曲線暗号を使用します

ECDSA) for encryption. ECDSAアルゴリズムは現在は安全ですが、将来的には量子コンピューターの開発によってそのセキュリティモデルが崩壊する可能性があります。

ZK-STARKは、暗号化に衝突耐性ハッシュを使用しているため、量子コンピューティングの脅威に対して免疫力があると考えられています。楕円曲線暗号に使用される公開鍵・秘密鍵ペアとは異なり、衝突耐性のハッシングは量子コンピューティングアルゴリズムにとって破るのがより難しいです。

免責事項:

  1. この記事は[から転載されていますイーサリアム]. すべての著作権は元の著者に帰属します[イーサリアム]. If there are objections to this reprint, please contact the Gate Learnチームはすぐに対応します。
  2. 免責事項:本文に表現された意見は著者個人のものであり、投資アドバイスを構成するものではありません。
  3. 他の言語への記事の翻訳は、Gate Learnチームによって行われます。特に言及がない限り、翻訳された記事のコピー、配布、または盗用は禁止されています。

ゼロ知識証明とは何ですか?

初級編1/4/2024, 6:21:16 PM
この記事では、ゼロ知識証明(ZKP)の詳細な証明を提供します。

ゼロ知識プロトコルは、1つの当事者(証明者)が、他の当事者(検証者)に、特定の文が真実であることを除いて、情報を一切明かさずに証明できる方法です。

ゼロ知識証明は数年の間に改善され、現在はいくつかの実世界のアプリケーションで使用されています。

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

ゼロ知識証明は、応用暗号化において画期的な進歩を表しており、個人の情報セキュリティを向上させることを約束しています。別の当事者(たとえばサービスプロバイダー)に主張(例:「私はX国の市民です」)を証明する方法を考えてみてください。ナショナルパスポートや運転免許証などの「証拠」として主張を裏付ける必要があります。

しかし、このアプローチには問題点があります。主にプライバシーの欠如です。第三者サービスと共有される個人を特定できる情報(PII)は、ハッキングのリスクにさらされる中央データベースに保存されています。身元盗用が重大な問題となっている中、機密情報を共有するためのプライバシー保護手段が求められています。

ゼロ知識証明は、主張の妥当性を証明するために情報を明らかにする必要がないようにすることで、この問題を解決します。ゼロ知識プロトコルは、主張(証人と呼ばれる)を入力として使用して、その妥当性の簡潔な証明を生成します。この証明は、その主張が真実であることを強力に保証し、それを作成する際に使用された情報を公開せずに済みます。

先ほどの例に戻ると、市民権主張を証明するために必要な唯一の証拠は、ゼロ知識証明です。検証者は、証明の特定の属性が真実であるかどうかをチェックするだけで、基になる文が真実であると納得することができます。

ゼロ知識証明はどのように機能しますか?

ゼロ知識証明は、文の内容を共有せずにその真実を証明することを可能にします。このため、ゼロ知識プロトコルは、データを入力として受け取り、「true」または「false」を出力するアルゴリズムに依存しています。

ゼロ知識プロトコルは次の基準を満たさなければなりません:

  1. 完全性: 入力が有効である場合、ゼロ知識プロトコルは常に「true」を返します。したがって、基になる文が真であり、証明者と検証者が正直に行動する場合、証明は受け入れられます。
  2. 正当性:入力が無効である場合、ゼロ知識プロトコルを 'true' と返すことを理論的には欺くことは不可能です。したがって、ウソをつくプローバは、信頼できる検証者を無効なステートメントが有効であると信じさせることはできません(確率のわずかな余地を除いて)。
  3. ゼロ知識:検証者は、その真偽を超えてステートメントについて何も学びません(ステートメントについて「ゼロ知識」を持っています)。この要件は、検証者が証明から元の入力(ステートメントの内容)を導出するのをも防ぎます。

基本的な形で、ゼロ知識証明は、証人、挑戦、応答の3つの要素で構成されています。

  • 証人:ゼロ知識証明を用いて、証明者は隠された情報の知識を証明したいと考えています。秘密の情報は証明の「証人」であり、証明者が証人の知識を仮定することで、情報の知識を持つ者にのみ回答できる一連の質問を確立します。したがって、証明者は無作為に質問を選択し、答えを計算して検証者に送信することで証明プロセスを開始します。
  • チャレンジ:検証者はセットから別の質問をランダムに選び、証明者に回答するよう求めます。
  • 応答: プロバーは質問を受け入れ、答えを計算し、それを検証者に返します。プロバーの応答により、検証者は以前に証人にアクセスできているかどうかを確認できます。プロバーが単に適当に推測して正しい答えを得ていないことを確認するために、検証者はさらに多くの質問を選びます。このやり取りを何度も繰り返すことで、証人の知識を偽造する可能性は著しく低下し、検証者が満足するまで続けられます。

上記は、'インタラクティブゼロ知識証明'の構造を説明しています。初期のゼロ知識プロトコルでは、文の妥当性を検証するには、証明者と検証者の間でのやり取りが必要でした。

相互証明がどのように機能するかを示す良い例は、ジャン=ジャック・キスカテールの有名なアリババの洞窟物語

(新しいタブで開きます)

物語では、ペギー(証明者)は、魔法の扉を開く秘密のフレーズを明かさずに、ヴィクター(検証者)にそのフレーズを知っていることを証明したいと思っています。

非対話型ゼロ知識証明

革新的でインタラクティブな証明は、2つの当事者が利用可能で繰り返しやり取りする必要があったため、限られた有用性しか持っていませんでした。検証者が証明者の誠実さに納得しても、証拠は独立した検証のために利用できませんでした(新しい証明を計算するには、証明者と検証者の間で新しいメッセージのセットが必要でした)。

この問題を解決するために、Manuel Blum、Paul Feldman、およびSilvio Micaliは最初の提案をしました非対話型ゼロ知識証明

(新しいタブで開きます)

検証者と検証者が共有キーを持っている場合、これにより検証者は情報(すなわち、証人)の知識を提供せずにその情報を証明することができます。

対話型証明とは異なり、非対話型証明は参加者(証明者と検証者)間で1ラウンドの通信のみが必要でした。証明者は秘密情報を特別なアルゴリズムに渡してゼロ知識証明を計算します。この証明は検証者に送信され、検証者は別のアルゴリズムを使用して証明者が秘密情報を知っていることを確認します。

非対話型証明は、証明者と検証者の間の通信を減らし、ZK-証明をより効率的にします。さらに、証明が生成されると、それは共有キーと検証アルゴリズムへのアクセス権を持つ他の誰でも検証できます。

非対話型証明は、ゼロ知識技術にとって画期的なものであり、現在使用されている証明システムの開発を促進しました。以下でこれらの証明タイプについて説明します。

ゼロ知識証明の種類

zk-SNARKs

ZK-SNARKはZero-Knowledge Succinct Non-Interactive Argument of Knowledgeの頭字語です。 ZK-SNARKプロトコルには次の特性があります:

  • ゼロ知識:検証者は、その文が真実か偽かだけを知ることができ、その他の情報を知る必要はありません。検証者がその文について持っている知識は、それが真実か偽かだけです。
  • 簡潔であり、ゼロ知識証明は証人よりも小さく、迅速に検証できます。
  • Non-interactive: 証拠は、証明者と検証者が1回しかやり取りしないため、「非対話型」とされます。これは、複数の通信ラウンドを必要とする対話型証明とは異なります。
  • 議論: 証拠は「正確性」要件を満たしているため、不正行為は非常に起こりにくいです。
  • 知識:秘密情報(証人)にアクセスせずにゼロ知識証明を構築することはできません。証人を持たない証明者が有効なゼロ知識証明を計算するのは難しい、不可能であるかもしれません。

先に言及した '共有キー' とは、証明者と検証者が生成および検証のために合意する公共パラメータを指します。公共パラメータ(一般に Common Reference String (CRS) として知られています)を生成することは、プロトコルのセキュリティにおける重要性から、機密操作です。CRS の生成に使用されるエントロピー(ランダム性)が不正な証明者の手に渡ると、彼らは虚偽の証明を計算できます。

多者計算(MPC)

(新しいタブで開きます)

公共パラメータを生成する際のリスクを軽減する方法です。複数の当事者が参加します。信頼されたセットアップセレモニー

(新しいタブで開きます)

, それぞれの人がいくつかのランダムな値を貢献してCRSを生成します。1つの誠実な当事者が自分のエントロピーの部分を破壊すれば、ZK-SNARKプロトコルは計算上の妥当性を保持します。

信頼できるセットアップは、パラメータ生成の参加者を信頼する必要があります。しかし、ZK-STARKの開発により、信頼されていないセットアップで機能する証明プロトコルが可能になりました。

ZK-STARKs

ZK-STARKは、Zero-Knowledge Scalable Transparent Argument of Knowledgeの頭字語です。ZK-STARKは、ZK-SNARKと類似していますが、次の点が異なります。

  • スケーラブル:ZK-STARKは、証人のサイズが大きい場合に、証明を生成および検証する速度がZK-SNARKよりも速いです。STARK証明では、証人が成長するにつれて、証明者および検証者の時間はわずかに増加するだけです(SNARKの証明者および検証者の時間は、証人のサイズと線形に増加します)。
  • 透明性:ZK-STARKは、信頼されるセットアップではなく、公に検証可能なランダム性に依存して公開パラメータを生成し、証明および検証を行います。そのため、ZK-SNARKsと比較してより透明性があります。

ZK-STARKsは通常、ZK-SNARKsよりも大きな証明を生成するため、一般的により高い検証オーバーヘッドを持ちます。ただし、大規模なデータセットを証明する場合など、ZK-STARKsの方がZK-SNARKsよりもコスト効果が高いケースもあります。

ゼロ知識証明のユースケース

匿名支払い

クレジットカードの支払いは、支払いプロバイダー、銀行、その他関係者(例:政府当局)など、複数の当事者によってしばしば見えます。金融監視は違法活動の特定に役立つ一方、一般市民のプライバシーを損なうこともあります。

暗号通貨は、ユーザーがプライベートでピア・ツー・ピアの取引を行う手段を提供することを意図していました。しかし、ほとんどの暗号通貨取引は公開されたブロックチェーン上で明らかになっています。ユーザーのアイデンティティはしばしば擬似的であり、意図的に実世界のアイデンティティにリンクされていたり(例:TwitterやGitHubプロファイルにETHアドレスを含めることによって)、または基本的なオンチェーンおよびオフチェーンのデータ分析を使用して実世界のアイデンティティと関連付けられることがあります。

完全匿名取引向けに設計された特定の「プライバシーコイン」があります。ZcashやMoneroなどのプライバシー重視のブロックチェーンは、送信者/受信者アドレス、資産タイプ、数量、取引のタイムラインなどの取引詳細を保護します。

プロトコルにゼロ知識技術を組み込むことで、プライバシーに焦点を当てたブロックチェーンネットワークは、ノードが取引データにアクセスする必要なく取引を検証することができます。

ゼロ知識証明は、公開ブロックチェーン上で取引を匿名化するためにも適用されています。その例として、Ethereum上でユーザーがプライベート取引を行うことを可能にする分散型の非キュストディアルサービスであるTornado Cashがあります。Tornado Cashは、取引の詳細を曖昧にし、財務プライバシーを保証するためにゼロ知識証明を使用しています。残念ながら、これらは「オプトイン」のプライバシーツールであるため、違法な活動と関連付けられています。これを克服するためには、プライバシーは最終的に公開ブロックチェーン上のデフォルトとならなければなりません。

アイデンティティ保護

現在のアイデンティティ管理システムは個人情報を危険にさらします。ゼロ知識証明は、個人がアイデンティティを検証するのに役立ち、同時に機密情報を保護します。

ゼロ知識証明は特にの文脈で特に有用です分散型アイデンティティ. 分散型アイデンティティ(自己主権アイデンティティとも呼ばれる)は個人に個人識別子へのアクセスを制御する機能を提供します。 納税番号やパスポートの詳細を明かさずに市民権を証明することは、ゼロ知識技術が分散型アイデンティティを可能にする良い例です。

認証

オンラインサービスを利用するには、自分の身元やプラットフォームへのアクセス権を証明する必要があります。これには、名前、電子メールアドレス、生年月日などの個人情報を提供することがしばしば必要です。また、長いパスワードを覚えておく必要があるか、アクセス権を失うリスクがあります。

ただし、ゼロ知識証明は、両プラットフォームとユーザーの認証を簡単にすることができます。 ZKプルーフが生成されたら、ユーザーは単にそれを提示して、サービスにアクセスする際に自分の身元を認証できます。 これにより、ユーザーのエクスペリエンスが向上し、組織は膨大なユーザー情報を保存する必要性から解放されます。

検証可能な計算

検証可能な計算は、ブロックチェーン設計の改善のためのゼロ知識技術の別の応用です。検証可能なコンピューティングは、他のエンティティに計算を外部委託しながら、検証可能な結果を維持することを可能にします。エンティティは、プログラムが正しく実行されたことを検証する証拠とともに結果を提出します。

検証可能な計算は、セキュリティを低下させることなく、ブロックチェーン上の処理速度を向上させる上で重要です。これを理解するには、Ethereumのスケーリングのための提案されたソリューションの違いを知っていることが必要です。

オンチェーンスケーリングソリューション、シャーディングなどのようなものは、ブロックチェーンの基本層を広範囲に修正する必要があります。しかし、このアプローチは非常に複雑で、実装上のエラーがEthereumのセキュリティモデルを損なう可能性があります。

オフチェーンスケーリングソリューションコアのEthereumプロトコルを再設計する必要はありません。代わりに、Ethereumの基本層のスループットを向上させるために、アウトソーシングされた計算モデルに依存しています。

実践での動作方法は次のとおりです:

  • すべての取引を処理する代わりに、Ethereumは実行を別のチェーンにオフロードします。
  • トランザクションを処理した後、他のチェーンは結果を返し、イーサリアムの状態に適用されます。

ここでの利点は、イーサリアムが実行を行う必要がなく、外部の計算結果を状態に適用するだけで済むことです。これによりネットワークの混雑が軽減され、トランザクションの速度も向上します(オフチェーンプロトコルはより高速な実行を最適化しています)。

チェーンは、オフチェーン取引を再実行せずに検証する方法が必要です。そうでないと、オフチェーン実行の価値が失われます。

これが検証可能な計算が重要となるポイントです。ノードがイーサリアムの外でトランザクションを実行する際、オフチェーン実行の正確性を証明するためにゼロ知識証明を提出します。この証明(

バリデーションプルーフ)は、取引が有効であることを保証し、イーサリアムがその結果を状態に適用できるようにするものであり、誰かがそれに異議を唱えるのを待つ必要はありません。

ゼロ知識ロールアップそしてvalidiumsは、セキュアなスケーラビリティを提供するために有効性証明を使用する2つのオフチェーンスケーリングソリューションです。これらのプロトコルは、オフチェーンで数千の取引を実行し、イーサリアム上で検証のための証明を提出します。その結果は、証明が検証されるとすぐに適用でき、イーサリアムがベースレイヤー上での計算を増やさずにより多くの取引を処理できます。

オンチェーン投票における贈収賄と共謀の削減

ブロックチェーン投票システムには多くの好ましい特性があります: それらは完全に監査可能で、攻撃に対して安全で、検閲に対抗し、地理的制約から解放されています。しかし、オンチェーンの投票システムでさえ、共謀の問題に免疫ではありません。

「オープンな競争を制限するために共謀し、他者を欺き、詐欺し、誤解させること」と定義される共謀は、悪意のある行為者が賄賂を提供して投票を影響させる形を取ることがあります。 例えば、アリスは、自分がオプションAを好むにも関わらず、ボブからオプションBに投票するための賄賂を受け取るかもしれません。

贈収賄や共謀は、投票を信号機構として使用するプロセスの効果を制限します(特にユーザーが投票した方法を証明できる場合)。これは、特に投票が希少なリソースを割り当てるための責任がある場合、重大な影響を与える可能性があります。

例えば、二次資金調達メカニズム

(新しいタブで開きます)

寄付に頼って、さまざまな公共物件の中で特定のオプションの選好を測定します。各寄付は特定のプロジェクトへの「投票」として数えられ、より多くの投票を受けたプロジェクトがマッチングプールからより多くの資金を受け取ります。

オンチェーン投票を使用すると、二次資金調達は共謀に対して脆弱になります:ブロックチェーン取引は公開されているため、賄賂を受ける側のオンチェーンの活動を調査することができ、どのように「投票」したかが分かります。このように、二次資金調達は、コミュニティの集約された選好に基づいて資金を割り当てるための効果的な手段ではなくなります。

幸いなことに、MACI(最小アンチ共謀インフラストラクチャ)などの新しいソリューションでは、ゼロ知識証明を使用して、オンチェーン投票(例:二次資金調達メカニズム)を賄賂や共謀に対して耐性を持たせています。MACIは、中央管理者(「コーディネーター」と呼ばれる)が投票を集計し、個々の投票方法の詳細を明らかにせずに結果を集計できる一連のスマートコントラクトとスクリプトです。それでも、投票が適切に集計されたことを検証したり、特定の個人が投票ラウンドに参加したことを確認することは可能です。

MACIはゼロ知識証明とどのように連携しますか?

最初に、コーディネーターはMACI契約をEthereumに展開し、その後、ユーザーは投票にサインアップできます(スマート契約に公開鍵を登録することで)。 ユーザーは、スマート契約に彼らの公開鍵で暗号化されたメッセージを送信することで投票を行います(有効な投票は、他の基準の中でユーザーのアイデンティティに関連付けられた最新の公開鍵で署名されている必要があります)。 その後、コーディネーターは、投票期間が終了すると、すべてのメッセージを処理し、投票を集計し、チェーン上で結果を検証します。

MACIでは、コーディネーターが投票を誤って処理したり、集計結果を誤って計算することを不可能にするために、ゼロ知識証明が使用されています。これは、コーディネーターにZK-SNARK証明を生成するよう要求することによって実現されます。これにより、a) すべてのメッセージが正しく処理されたこと、b) 最終結果がすべての有効な投票の合計に対応していることが検証されます。

そのため、通常の場合と同様に、ユーザーごとの投票の内訳を共有しなくても、MACIは集計プロセス中に計算された結果の整合性を保証します。この機能は、基本的な共謀計画の効果を低下させるのに役立ちます。ボブがアリスに賄賂を贈って特定のオプションに投票するように依頼するという前述の例を使用して、この可能性を探ることができます。

  • アリスは、自分の公開鍵をスマートコントラクトに送信して投票登録を行います。
  • アリスは、ボブからの賄賂と引き換えに、オプションBに投票することに同意します。
  • アリスはオプションBに投票します。
  • アリスは、彼女のアイデンティティに関連付けられた公開鍵を変更するために暗号化されたトランザクションを秘密裏に送信します。
  • アリスは、新しい公開鍵を使用して、オプションAに投票するためにスマートコントラクトに別の(暗号化された)メッセージを送信します。
  • アリスは、ボブにトランザクションを示し、それによって彼女がオプションBに投票したことを示しています(これは公開鍵がもはやシステム内でアリスのアイデンティティに関連付けられていないため、無効です)
  • メッセージの処理中、コーディネーターはアリスのオプションBへの投票をスキップし、オプションAへの投票のみをカウントします。したがって、ボブのアリスとの共謀を無視し、オンチェーンの投票を操作しようとする試みは失敗します。

MACIを使用するには、コーディネーターが賄賂を受け取る者と共謀したり、投票者自体に賄賂を提供しようとしないことを信頼する必要があります。 コーディネーターはユーザーメッセージを復号化できるので(証拠を作成するために必要)、各個人がどのように投票したかを正確に検証できます。

しかし、コーディネータが正直である場合、MACIはオンチェーン投票の信頼性を保証する強力なツールを表します。これが、二次資金提供アプリケーションの間で人気がある理由です(例えば、clr.fund

(新しいタブで開きます)

)それは個々の投票選択の信頼性に大きく依存しています。

MACIについて詳しく学ぶ

(opens in a new tab)

.

ゼロ知識証明の欠点

ハードウェアコスト

ゼロ知識証明の生成には、非常に複雑な計算が必要であり、専用マシンで最も効果的に実行されます。これらのマシンは高価なため、一般の個人には手の届かないことがしばしばあります。さらに、ゼロ知識技術を使用したいアプリケーションは、ハードウェアコストを考慮に入れる必要があります。これはエンドユーザーのコストを増加させる可能性があります。

プルーフ検証コスト

証明の検証には複雑な計算が必要であり、アプリケーションでゼロ知識技術を実装するコストが増加します。このコストは特に計算の検証の文脈で重要です。たとえば、ZK-rollupsは、イーサリアム上で1つのZK-SNARK証明を検証するのに約500,000ガスを支払い、ZK-STARKsはさらに高い手数料が必要です。

信頼の前提

ZK-SNARKでは、一般参照文字列(公開パラメータ)は一度生成され、ゼロ知識プロトコルに参加したい当事者に再利用可能です。公開パラメータは信頼されたセットアップセレモニーを通じて作成され、参加者が正直であると仮定されます。

ただし、ユーザーが参加者の誠実さを評価する方法は実際にはありません。ユーザーは開発者の言葉を信じなければなりません。ZK-STARKsは、文字列を生成する際に使用されるランダム性が公開可能であるため、信頼前提から解放されています。一方、研究者は、ZK-SNARKsのための信頼されていないセットアップに取り組んでおり、証明メカニズムのセキュリティを高めています。

量子コンピューティングの脅威

ZK-SNARKは楕円曲線暗号を使用します

ECDSA) for encryption. ECDSAアルゴリズムは現在は安全ですが、将来的には量子コンピューターの開発によってそのセキュリティモデルが崩壊する可能性があります。

ZK-STARKは、暗号化に衝突耐性ハッシュを使用しているため、量子コンピューティングの脅威に対して免疫力があると考えられています。楕円曲線暗号に使用される公開鍵・秘密鍵ペアとは異なり、衝突耐性のハッシングは量子コンピューティングアルゴリズムにとって破るのがより難しいです。

免責事項:

  1. この記事は[から転載されていますイーサリアム]. すべての著作権は元の著者に帰属します[イーサリアム]. If there are objections to this reprint, please contact the Gate Learnチームはすぐに対応します。
  2. 免責事項:本文に表現された意見は著者個人のものであり、投資アドバイスを構成するものではありません。
  3. 他の言語への記事の翻訳は、Gate Learnチームによって行われます。特に言及がない限り、翻訳された記事のコピー、配布、または盗用は禁止されています。
今すぐ始める
登録して、
$100
のボーナスを獲得しよう!
It seems that you are attempting to access our services from a Restricted Location where Gate is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Thailand, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.