
序章
ゼロ知識証明 (ZKP) の可能性に関する伝染性の興奮により、一部の人々が魔法にかけられています。この陣営にとって、ZKP は、ZKP が解決できない問題が存在しない暗号の涅槃のように感じられます。
ZKP は、包括的なプライバシー ソリューションとして一部で販売されています。それは単に不正確です。この記事の目標は、特にプライバシーに関して、ZK ができることとできないことについての正直な評価を提供することです。また、ZKP を強化するために ZK と組み合わせることができる補完的なツールについても検討します。
ZKP には素晴らしい長所がいくつかありますが、限界もあります。全能であるという幻想から逃れるためには、両方を理解することが重要です。その理解を備えた場合にのみ、責任を持って構築用のツールボックスにそれらを含めることができます。
ZKP を使用すると、ユーザーは詳細を明かさずに知識を証明できます
ゼロ知識証明を使用すると、ユーザーは、それについての詳細を明らかにすることなく、何かを知っていることを証明できます。これが機能するには、「証明者/テスト者」と「検証者」が必要です。
ZKP を説明するのに役立つ有名な洞窟の話があります。
2 人の友人、アリスとホルヘは洞窟を見つけます。洞窟には出入りする 2 つの道があり、真ん中にドアがあります。このドアにはおそらく 2 つの道を繋ぐ暗号がある。
ホルヘさんはドアの暗号を知っていると言う。アリスは彼からコードを購入したいと考えていますが、彼がそれを知っているという証拠が必要です。ホルヘさんは、それを証明するために彼女にすぐにコードを教えることができません。そこで、二人とも「知識ゼロ」の交換テストに同意します。
アリスはホルヘに、道のいずれかを通って洞窟に入るように言います。もし彼が本当にコードを持っていれば、他のパスから抜け出すことができるでしょう。
ゼロ知識証明は、この物語に対する暗号的な解決策です。彼らはシーケンサーを活用して、両者の間で知識を交換する必要のない「証明」を生成します。
ZKP はトランザクションのプライバシーとスケーラビリティを提供します
ZKP の簡単な使用例の 1 つは、ユーザーの識別と署名の確認です。これは、その得意分野にしっかりと当てはまります。
ZCash のようなプロジェクトでは、ゼロ知識を活用してトランザクションのプライバシーを提供します。
ZKP は、それによって実現されるスケーラビリティでよく知られています。情報のパケットを軽量の「プルーフ」に置き換えることができるため、ブロックチェーンの混雑が緩和され、トランザクションが高速化されます。これにより、ZKP は、 ゼロ知識ロールアップのような拡張性の高いレイヤー 1 またはレイヤー 2 のスケーリング ソリューションを構築するのに適しています。
ZKP は安全な計算やスケーラブルなプライバシーに対応できません
ZKP は、プライバシーの約束を「ローカルに」 (トランザクション レベルで) 履行できます。しかし、「グローバル」(ネットワーク レベル、アプリケーション、マルチパーティ) レベルで秘密を保持することはできません。
たとえば、DeFi をプライベートにするには、ユーザーは自分のデータを常にプライベートに保ちながら、スマート コントラクトに基づく DEX などのトラストレス エージェントと取引できる必要があります。そして、これは ZKP では不可能です。
トランザクションから安全な計算の領域に移行すると、ZKP のプライバシーは崩壊します。
トランザクションから安全な計算の領域に移行すると、ZKP のプライバシーは崩壊します。
Secret Labs の CEO、Guy Zyskind 氏は、これが実際にどのように機能するかを次のように説明しています。
集中化された当事者 (シーケンサーと呼ばれることが多い) は、すべてのトランザクション (および計算) をオフチェーンで実行します。これは、クライアントがブロックチェーンではなくこのシーケンサーと直接対話し、暗号化されていない入力データを送信することを意味します。シーケンサーは、すべての計算を実行した後、簡潔な証明を生成し、それを出力 (通常は更新された状態) とともにブロックチェーンに送信します。検証者として機能するブロックチェーンは、証明が正しいことを検証し、正しい場合は、クライアントのデータを直接学習することなく状態の変更を適用します。すべての汎用ブロックチェーン ZK ソリューションは、このスケーリング方法を使用します。
それは簡単です。データを見ることができれば、それを証明できます。他人のデータとの類似点や相違点を証明することはできません。誰が、あるいは何をするのでしょうか?シーケンサーは、すべての参加者データに対する証明を生成します。
しかし、ユーザーが自分のデータに関してオフチェーンの集中型シーケンサーを信頼する必要がある場合は、Web2 の基本的な問題に戻ります。

ZKPを使用した安全な計算
インフラストラクチャ層での情報漏洩に関する理論的な懸念もあります。たとえば、ZKP は、ZKP トランザクションに関する情報が漏洩する可能性がある、トランザクション サイズ分析やその他のさまざまな形式のメタデータ漏洩から保護しません。
つまり、ZKP は (ピアツーピア トランザクションのように) 秘密をローカルに保持するのに最適です。しかし、同じデータをグローバル/ネットワーク規模でプライベートに保つことはできません。
つまり、ZKP は (ピアツーピア トランザクションのように) 秘密をローカルに保持するのに最適です。しかし、同じデータをグローバル/ネットワーク規模でプライベートに保つことはできません。
これは主に、ゼロ知識証明ではスマート コントラクトや DEX を非公開にすることができないためです。そして、残念なことに、ZKP がプライバシーのすべてを解決するものではないのはなぜでしょうか。
ZKP の長所と限界は、他のプライバシー ソリューションとどのように比較されますか?
暗号化では、「最適な」方法が存在することはほとんどありません。ここで説明したすべてのソリューションには複数の構造があり、単独で使用することも、他のソリューションと組み合わせて使用して、ケースバイケースで興味深い問題を解決することもできます。以下の図に示すように、それぞれの構造と組み合わせにはトレードオフと相対的な利点があります。

オンチェーンのプライバシー ソリューションの比較と対比
完全準同型暗号化は、復号化せずに暗号化されたデータを計算します。
完全準同型暗号化 (FHE) は、理解するのは簡単ですが、実装するのが非常に難しいアイデアです。
ユーザーが 1 人、サーバーが 1 つだけ存在する世界を想像してください。サーバーはプライバシーを保護しません。プライバシーの問題をどのように解決すればよいでしょうか?
FHE を使用すると、ユーザーは暗号化されたデータをサーバーに送信でき、サーバーは生のデータを表示することなくデータを計算します。

FHEを使用した安全な計算
FHEを使用した安全な計算
FHE は既存のプライバシー テクノロジーの中で最も非効率的です
残念ながら、これまでの FHE は非常に非効率的でした。実際、FHE は、私たちが知っているプライバシー保護テクノロジーの中で最も遅いものです。しかし、FHE 計算の効率は驚くべき速度で向上しており、特殊なハードウェア (CPU → GPU → FPGA → ASIC) により、今後 10 年間で計算速度がさらに数桁向上するでしょう。
しかし、5 ~ 10 年後でも、FHE 機能の使用は、特定のユースケースまたはスマート コントラクト実行の特定の部分でのみ意味をなす可能性が高くなります。たとえば、FHE を使用して、暗号キーや SSN などの非常に機密性の高い (小さい) データを保存および操作したい場合があります。
FHE は、異なるキーで暗号化されたデータを計算できません
この安全な計算の問題に 2 番目のクライアントを導入するにはどうすればよいでしょうか?
世界にクライアントが 2 人だけだと想像してみましょう。どちらのクライアントも独自の入力を持っており、その入力に対して関数を計算したいと考えています。どちらもプライバシーを望んでいます。
「純粋な」FHE では、各クライアントが独自のキーを使用してデータを暗号化するため、これを行う方法が不明瞭です。 FHE は、異なるキーで暗号化されたデータを計算できません。では、これをどうやって解決すればいいのでしょうか?

FHE によるマルチユーザー安全計算
部分準同型暗号化 (PHE) は一般的なスマート コントラクトをサポートできません
この問題を解決するには、多くの方法を使用する必要があることがわかりました。暗号化されたデータに対して任意の関数を計算できる完全準同型暗号化に加えて、多くの部分準同型暗号化スキーム (HE または PHE) があります。これらの部分スキームは、特定の機能 (通常は加算または乗算のいずれか) を計算できますが、両方は計算できません (すべての関数は加算と乗算の演算に還元できることに注意してください)。これらの部分的な HE スキームは数十年前に発明され、はるかに効率的で、限られた一連のユースケースには十分かもしれませんが、安全な計算の一般的なケースには十分ではありません。
いくつかのネットワークは、PHE のような部分的なスキームを使用してプライバシーを実現することを目指しています (Penumbra や Dero など)。ただし、定義上、汎用スマート コントラクトをサポートできないことを理解することが重要です。プライバシーを重視したブロックチェーンへのこれらの技術の応用は斬新ですが、サポートできるユースケースは非常に限られています。
このような部分的なソリューションでサポートできるアプリケーションの範囲を拡張する簡単な方法はありませんが、それには暗号化に関する深い専門知識が必要です。これらのアプリケーションは、多くの場合、理由を説明するのが難しい他の隠れたトレードオフをもたらします。そのため、PHE では、開発者がプライバシーを保った任意のアプリケーションを構築することは決して許可されないでしょう。
では、FHE または部分的な HE ソリューションだけではマルチクライアントの安全な計算の問題を解決できないとしたら、何が解決できるでしょうか?
Secure Multi-Party Computation (MPC) はシステム全体に計算を分散します。
MPC は、プライベート データをコンピューティングするための分散システム アプローチです。その意味では、ブロックチェーンの基本アーキテクチャに自然に適合します。
MPC では、単一のサーバーを信頼するのではなく、クライアント データの計算を共同で実行する複数の信頼できないサーバーを使用します。信頼の前提を変更すると、ソリューションの余地が大幅に広がります。 MPC ソリューションは、複数のクライアントを念頭に置いて開発されています。したがって、複数のユーザーからのデータを組み合わせたサーバーには理論上の問題はありません (FHE とは異なります)。
ただし興味深いことに、MPC を FHE と組み合わせて「しきい値 FHE」を作成できます。しきい値 FHE は、単一の FHE 暗号化キーをすべてのサーバー間の共有に分割します。
MPC は非共謀による安全性を重視しています
FHE (単独) を使用すると、サーバーがデータにアクセスすることなく、ユーザーは秘密の暗号化キーを保持できます。
しかし、MPC を使用すると、すべてのサーバーが共謀すると、プライベート データを再構築できます。 1 つのサーバーが誠実である限り、この共謀は回避され、モデルは安全になります。
この時点で、MPC ソリューションにはキーが含まれていないことに注意することが重要です。代わりに、MPC は各サーバーにデータの「暗号化された」共有を与えることでデータを隠します。そのため、データを「復号化」するにはすべての共有が必要になります。さらに、各共有だけでは、平文データについては何も明らかにされません。

MPC を使用した安全な計算
実際には、共謀のしきい値を調整して、生存性またはプライバシーのいずれかを最適化できます。上記の例では、データを再構築するためにすべてのキー共有が必要なため、最大限のプライバシーが得られます。
ただし、システム全体に対してサービス拒否 (DoS) 攻撃を仕掛けるには、サーバーが 1 つだけ必要です。これは、クライアントのリクエストに応答しないサーバーが 1 台だけ必要であり、結果を計算できないためです。
一方で、主要なシェアの 1/2 または 2/3 しか必要としない可能性もあります。これには、サーバーの大部分が正直であり、計算の実行中に共謀しないことが必要になります。
MPC では、プライバシーは正しさよりも解決が難しい
正確さは検証可能です。トランザクションが改ざんされている場合、それが発見されるか、コンセンサスが停止することさえあります。ただし、プライバシーに対する共謀攻撃を検証することはできないため、「サイレント」攻撃となります。
サーバーが (システムの外部で) キーを共有することで共謀した場合、サーバーがデータを復号できるかどうかは決してわかりません。この攻撃ベクトルを排除するには、できるだけ多くのサーバーに計算を実行させ、共謀攻撃を回避することを目指すことができます。
残念ながら、MPC はパーティの数に合わせて拡張することができず、サーバーの数が増えると稼働率が妨げられます。したがって、MPC だけでは十分ではなく、共謀を困難にする他のテクノロジーを実装する必要があると思われます。
TEE は MPC の共謀攻撃ベクトルを複雑にする可能性がある
MPC の共謀をより困難にする 1 つの方法は、分散システム内のすべてのサーバーに信頼できる実行環境の使用を強制することです (詳細は後述します)。
MPC の共謀をより困難にする 1 つの方法は、分散システム内のすべてのサーバーに信頼できる実行環境の使用を強制することです (詳細は後述します)。
あるいは、サーバーが(部分的に)信頼されており、データ漏洩が発生した場合に再識別できる許可設定で作業することにより、共謀を複雑にすることもできます。これが Partisia Blockchain が採用していると思われる方向です。半信頼されたノードのオフチェーン セットがプライベートな計算を実行し、ブロックチェーンは状態を保存して検証するだけです。
Trusted ExecutionEnvironment (TEE) は、計算を残りの CPU から分離します。
TEE は処理を「ブラック ボックス」に移動し、コンピューターの CPU がアクセスできないようにします。この領域にはデータ (暗号化キーなど) を保存し、マシンのホストによって改ざんできない計算を実行できます。また、ホストはその領域に保存されているデータを (少なくとも理論上は) 抽出できません。
TEE は、サーバー (またはブロックチェーン設定ではサーバー) に TEE 内のすべての計算の実行を要求することで、プライバシーと正確性を解決できます。さらに、サーバーの TEE でのみ利用可能なキーを使用して入力データを暗号化するようクライアントに依頼することもできます。
この設計では、サーバーを所有するホストであっても、誰もクライアントのデータにアクセスできません。これは、データが TEE 内でのみ復号化および計算されるためです。このようなシステムが実際にどのように動作するか、および暗号化キーがどのように安全に保たれるかについて詳しくは、 Secret Network の技術ドキュメントを参照してください。
TEE について考えるもう 1 つの方法は、以前に想像した単純な世界 (計算を正しくかつプライベートに実行できる 1 人のユーザーと 1 台の信頼できるサーバー) のハードウェア近似として考えることです。ただし、TEE を最大限に活用することは、その世界よりもはるかに複雑です。検閲や DoS 攻撃を防ぐには、単一のサーバーに依存するのではなく、ブロックチェーンのような分散システムで TEE を使用することが依然として最善です。
TEE システムは、純粋な暗号化ではなく、ハードウェアへの依存によってセキュリティを取得するため、非常に効率的です。暗号ソリューションは通常、平文での計算よりも桁違いに遅くなりますが、ほとんどの場合、TEE の計算時間のオーバーヘッドは 40% 未満です。これは主に、プライバシーを保護するために入力を復号化し、出力を再暗号化する必要があることに起因します。

TEEを使用した安全な計算
ユーザーを心配させる TEE の主な欠点は、サイドチャネル攻撃の可能性です。近年、研究者らは主に投機的実行を使用して TEE から情報を抽出する方法を示しました。投機的実行は、効率を高めるために最新のすべてのプロセッサで使用されている方法です。これらの問題のほとんどはソフトウェアまたはハードウェアで解決でき、実際に悪用することは困難ですが、この特定の攻撃ベクトルに対しては純粋な暗号技術と比較して欠点があります。アーキテクチャ上のバグ (安全なエンクレーブだけでなく、あらゆるタイプのハードウェアに影響を与える可能性がある) も発生する可能性があり、重大なリスクを引き起こすため、無視すべきではありません。
これらのトレードオフを考慮すると、TEE は現在でも、特に低感度データの高性能計算にとって、最良の実用的なソリューションとして機能します。潜在的なソリューションの中核が本質的に暗号である場合でも、TEE はセキュリティを強化する鍵であり、スケーラビリティを向上させながら共謀を防止するのに役立ちます。
ZKP は、追加のブロックチェーン プライバシー ソリューションと組み合わせると「強化」されます
たとえば、ビルダーは ZKP とマルチパーティ計算を組み合わせて、完全にプライベートなアプリケーションを構築する場合があります。ハードウェア ベースのソリューション (信頼された実行環境、TEE) もありますが、TEE を使用する場合は追加の ZKP はおそらく必要ありません。
マルチパーティ計算は、暗号化されたプライベート データに対する計算を可能にすることで、ZKP の欠点を補います。したがって、スマート コントラクト レベルでデータをプライベートに保つことができます。
この例では、MPC を使用して DEX の内部状態を暗号化することができ、復号化することなくデータに対して計算を実行し、データを更新できます。これにより、データは常にプライベートに保たれます。
最終的に、ZKP は、ユーザー ID の検証、署名、軽量トランザクションなど、その得意分野で役立ちます。
Web3 プライバシーの将来は画一的なものではありません
この議論を通じてわかってきたように、すべてのプライバシー ソリューションにはトレードオフがあります。そして、何を聞いたとしても、すべてのプライバシー ニーズに対応でき、リスクがゼロの単一のソリューションはありません。
プライバシー テクノロジを使用して責任を持って構築するということは、その固有の制限を理解することを意味します。
これらを明確に理解すると、より広範なプライバシー ツールボックスに手を伸ばすことができ、場合によっては、そのテクノロジーとそれぞれの弱点を補うソリューションを組み合わせることができます。 ZKP、TEE、MPC、FHE はすべて、長所と限界を持ったものをもたらします。
オンチェーンのプライバシーはユーザーにとって「普通」であるべきです。そのビジョンに向けて構築するということは、単一のソリューションを中心に最大限の考え方に落ち着くのではなく、さまざまなプライバシー ツールを受け入れることを意味します。
著者について
Secret は、ビルダーとユーザーのための一連のプライバシー ソリューションを構築しています: Secret 2.0 。私たちのビジョンは、誰もがプログラム可能なプライバシーを備えた、汎用化および構成可能な分散アプリケーションを構築できるようにすることです。
Sean は Secret Agency DAO の共同創設者であり、ネットワークの教育クリエーターです。 Guy Zyskind は Secret の創設者であり Secret Labs の CEO であり、2020 年に世界初のプライベート スマート コントラクトを Secret のメインネットに導入しました。MIT の元研究者として、彼は最も引用度の高いブロックチェーン プライバシーに関する論文の著者です ( 2015 年に書かれた「プライバシーの分散化」を含む)
無料のオンライン Rust トレーニングのために Secret University に参加してください: https://scrt.university HackSecret のビデオとリソースを探索してください: https://scrt.network/hacksecret-2023
参考文献
[1] https://scrt.network/blog/beyond-zk-guide-to-web3-privacy-part-1/
[2] https://scrt.network/blog/beyond-zk-guide-to-web3-privacy-part-2
[3] https://homepage.cs.uiowa.edu/~ghosh/blockchain.pdf
全てのコメント