グラフィカルゼロ知識証明 (ZKP)
編集者注: この記事は以下から引用しましたブロックチェーンキャンプ(ID:blockchain_camp)編集者注: この記事は以下から引用しました
ブロックチェーンキャンプ(ID:blockchain_camp)
、著者:Oscar W、編纂者:Huohuojiang、許可を得てOdailyによって複製されました。
ゼロ知識証明(ゼロ知識証明またはゼロ知識プロトコル)は、「事実に類似した記述」と「個人的な知識に関する記述」を含む確率ベースの検証手法です。
現在、ゼロ知識証明は、多くのブロックチェーン プロジェクトによって最良のプライバシー保護スキームの 1 つとみなされています。データを明らかにすることなく、データの信頼性を証明できます。
この記事では、謎に満ちたゼロ知識証明とその現在の応用について解説します。
副題
ZKP がそれほど重要なのはなぜですか?
テクノロジーの時代において、私たちは前例のない量のデータを作成しており、私たち自身に関する略奪可能なデータを絶えず作成しています。

Google や Facebook などの大企業は、私たちのデータを利用して今日の世界のテクノロジー巨人となっています。しかし、最近の暗号技術の進歩とブロックチェーンの台頭により、データとアイデンティティを保護する新しい方法が提供されています。ゼロ知識証明が答えかもしれません。
副題

ゼロ知識証明の原則
ゼロ知識証明は、1980 年代に MIT の研究者によって提案された暗号化方式です。ゼロ知識証明プロトコルとは、一方の当事者 (証明者) が別の当事者 (検証者) に対して何かが真実であることを証明できるプロトコルです。この特定の声明が真実であること以外の情報は開示されません。
ゼロ知識証明により、ユーザー アカウントの漏洩を防ぐことができます。ゼロ知識証明を実装できれば、クライアントのパスワードは誰にもわかりませんが、クライアントのログインは認証できます。サーバーが攻撃されても、パスワードは Web サーバーに保存されないため、ユーザーのアカウントは安全に保たれます。
ゼロ知識証明は「対話型」と「非対話型」の2種類に分類できます。次に、これら 2 つの証明方法の違いを 1 つずつ見てみましょう。
副題
インタラクティブなゼロ知識証明
ゼロ知識証明プロトコルの基本は対話型です。検証者は、証明者が持つ「知識」について一連の質問を継続的に行うことが求められます。
たとえば、誰かが数独ゲームの答えを知っていると主張する場合、ゼロ知識証明のプロセスでは、検証者は列、行、または 9 つのマス目で検証するかどうかをランダムに指定する必要があります。
テストの各ラウンドでは、特定の答えを知る必要はなく、1 ~ 9 の数字が含まれているかどうかを確認するだけで済みます。検証の数が十分に大きい限り、証明者が数独の問題の答えを知っていると信じる理由があります。
第三者を説得したい場合、検証者は検証プロセスがランダムであること、および検証者に答えを漏らさないことも証明する必要があります。

したがって、対話型のゼロ知識証明の結果を第三者が検証することは難しく、複数の人に何かを証明するには余分な労力とコストがかかります。
副題
名前が示すように、非対話型のゼロ知識証明は対話型のプロセスを必要とせず、共謀の可能性を回避しますが、実験の順序を決定するために追加のマシンやプログラムが必要になる場合があります。
たとえば、Sudoku の場合、どの列または行を検証するかはプログラムによって決定されます。検証シーケンスは秘密にしておかなければなりません。そうでないと、検証者は本当の「知識」を知らずに検証に合格してしまう可能性があります。
副題
ブロックチェーン上のゼロ知識証明
ビットコインとイーサリアムはどちらもパブリック アドレスを使用して関係者の実際の身元を置き換え、取引を部分的に匿名にし、一般の人が知ることができるのは送受信アドレスと取引金額だけです。ただし、ブロックチェーン上のさまざまな情報(やり取り記録など)からアドレスの正体が分かるため、プライバシーが漏洩する可能性があります。

ゼロ知識証明は、送信者、受信者、およびその他のトランザクションの詳細が匿名のままである一方で、トランザクションが有効であることを保証します。
ZCash はおそらく、ゼロ知識証明の実装に成功した最も有名なブロックチェーン プロジェクトの 1 つです。 Zcash は、zk-SNARKS と呼ばれる ZKP の修正バージョンを実装しています。これは、Zero-Knowledge Succinct Non-Interactive Argument of Knowledge (Zero-Knowledge Concise Non-Interactive Argument of Knowledge) の略です。
zk-SNARK テクノロジーは、証明のサイズと検証に必要な計算量を削減します。アドレスや関連する値に関する重要な情報を明らかにすることなく、有効なトランザクションの条件が満たされていることを証明できます。
zk-SNARKは、検証が必要な取引内容を2つの多項式の積が等しい証明に変換し、準同型暗号とその他の高度な技術を組み合わせて、取引検証時に隠された取引金額を保護します。
このプロセスは次のように簡単に説明できます。
コードを検証可能な論理検証ステップに分割し、それらのステップを加算、減算、乗算、除算で構成される算術回路に分割します。
一連の変換を実行して、検証するコードを t(x)h(x)=w(x)v(x) などの多項式に変換します。
証明をより簡潔にするために、検証者は事前にいくつかのチェックポイントをランダムに選択し、これらの点の方程式が真であるかどうかをチェックします。
準同型エンコード/暗号化により、検証者は方程式を計算するときに実際の入力値を知りませんが、それでも検証することはできます。
方程式の左側と右側の両方に、ゼロに等しくない秘密の値 k を掛けます。 (t(s)h(s)k) が (w(s)v(s)k) に等しいことを検証する場合、具体的な t(s)、h(s)、w(s)、および v(s) は次のようになります。情報保護の目的を達成するために、利用できません。
しかし、zk-SNARK は完璧ではありません。現在の zk-SNARK 実装の欠陥は、事前にパラメータを設定する必要があることです。これらのパラメータが漏洩すると、ネットワーク全体が壊滅的な打撃を受けることになります。したがって、これらのネットワークを使用する場合、ユーザーはパラメータが漏洩しないことを強く信頼する必要があります。
考えられる解決策には、Intel SGX や ARM TrustZone などの最新の「信頼された実行環境」の使用が含まれます。 Intel の SGX テクノロジーを使用すると、アプリケーション、オペレーティング システム、BIOS、または VMM が侵害された場合でも、秘密キーは安全です。
さらに、最近のホワイトペーパーでは、ゼロ知識暗号化におけるイノベーションである ZK-STARK (Zero-Knowledge Scalable Transparent ARguments of Knowledge) が明らかにされました。
zk-STARK ホワイトペーパーによると、zk-STARK は信頼設定に依存せずにブロックチェーン検証を実現した最初のシステムであり、計算データの増加に応じて計算速度が飛躍的に向上します。







