ゼロ知識証明: ブロックチェーンのプライバシー保護のための強力なツール
哈希未来
2018-07-16 06:20
本文约3718字,阅读全文需要约15分钟
レポート概要:ゼロ知識証明は確率に基づく検証手法であり、検証内容には「事実の記述」と「個人の知識に関する記述」が含まれます。



著者:Chen Zhijia、Meng Yize、Xie Qian、Jiang Zewu (Hash World)

レポートの概要:

レポートの概要:

ゼロ知識証明は確率に基づく検証手法であり、検証内容には「事実の記述」と「個人の知識に関する記述」が含まれます。検証者は、あるランダム性に基づいて証明者に質問をし、正しく答えることができれば、証明者は自分が主張する「知識」を高い確率で持っていることになります。 Zerocoin (Zero Coin Protocol) は、Zero Coins の鋳造と Zero Coins の引き換えのプロセスでゼロ知識検証を使用して、取引に対応する送金者と受取人の情報を非表示にします。Zerocash (Zero Banknote Protocol) は、より斬新な zkSNARKs テクノロジーを使用して、取引を変換します。 2 つの多項式の積が等しいことを証明するために検証する必要があるコンテンツを抽出し、準同型暗号と他のテクノロジーを組み合わせて、隠された取引金額を保護しながら取引検証を実行します。欠点は、ネットワークが攻撃を受けてゼロキャッシュを過剰発行した場合、それを検知したり対策を講じることができないことであり、ゼロコインもゼロキャッシュも事前に設定された「トラスト設定」が必要であり、真の「トラストレス性」は実現されていない。 Intel SGX や zkSTARK などの新しいテクノロジーは上記の問題を解決する可能性がありますが、実際にはまだテストする必要があります。

1. ゼロ知識証明の原則

ゼロ知識証明は、もともと 1980 年代に MIT の研究者によって論文で提案された暗号化方式です。 「ゼロ知識プロトコルとは、一方の当事者 (証明者) が、この特定のステートメントが真実であるという事実以外の追加情報を明らかにすることなく、何かが真実であることを別の当事者 (検証者) に証明できる方法です。つまり、顧客のパスワードのハッシュ値は Web サーバーに保存されており、顧客が実際にパスワードを知っているかどうかを確認するために、現在ほとんどの Web サイトでは、顧客が入力したパスワードのハッシュ値をサーバーが計算し、それと比較する方法が採用されています。ただし、この方法の欠点は、計算中にサーバーがクライアントの元のパスワードを知ることができることです。サーバーが攻撃されると、ユーザーのパスワードが漏洩してしまいます。ゼロ知識証明が実現できれば、実現できます。クライアントのパスワードを知らなくても、クライアントのログインを確認するために、サーバーが攻撃された場合でも、クライアントのプレーンテキストのパスワードは保存されないため、ユーザーのアカウントは安全です。

基本的なゼロ知識証明プロトコルは対話型であり、検証者は、習得した「知識」について証明者に一連の質問をし続ける必要があります。正しい答えを与えることができれば、確率の観点から言えば、証明者は確かに非常に優れています。それが「知識」であると主張しているものを知っているかもしれません。たとえば、誰かが数独パズルの答えを知っていると主張する場合、ゼロ知識証明方法は、検証者が列、行、または 9 マスのグリッドごとにチェックする時間をランダムに指定することであり、特定の位置を見る必要はありません。各テストの数字振り子の数を調べます。1 ~ 9 の数字が含まれているかどうかを検出するだけで済みます。検証回数が十分である限り、証明者は数独問題の解法を知​​っていると高い確率で信じられます。 。しかし、このような単純な方法では、証明者も検証者も不正行為をしていないと思わせることはできず、数独の場合、両者が事前に共謀し、証明者が答えを知らなくても検証を通過する可能性があります。第三者を説得したい場合、検証者は、検出スキームが毎回ランダムであり、検証者と共謀していないことも証明する必要があります。

インタラクティブなゼロ知識証明の結果を第三者の観察者が検証することは難しいため、複数の人に何かを証明する場合には余分な労力とコストを支払う必要があります。非インタラクティブなゼロ知識証明は、その名前が示すように、インタラクティブなプロセスを必要とせず、共謀の可能性を回避しますが、試行の順序を決定するために追加でいくつかのマシンやプログラムが必要になる場合があります。たとえば、数独の例では、プログラムを通じて、行ごとにどの時間をテストするか、列ごとにどの時間をテストするかを決定しますが、このテスト シーケンスは秘密にしておく必要があります。そうでない場合、検証者はテスト シーケンスを事前に知っていて事前に準備していれば、実際の内容を知らずにこの情報を使用する可能性があります。 「知識」は承認されました。

ゼロ知識証明の内容は、次の 2 つのカテゴリに要約できます: 「事実」の記述: たとえば、「特定のグラフは 3 色になる可能性がある」または「数値 N は合成数である」ことを証明するためのもの、および個人に関する記述知識: たとえば、「この特定のグラフの配色を知っています」または「N の因数分解を知っています」。

しかし、すべての問題にゼロ知識証明用の暗号化スキームがあるわけではなく、Goldreich、Micali、Wigderson はゼロ知識証明解の理論的に有効な範囲を示しました。彼らは、その解が多項式時間で検証できる決定問題 (答えが「はい/いいえ」のみである問題) に対して既知のゼロ知識証明スキームが存在することを発見しました。このようなNP問題から証明したい文を見つけて3色問題のインスタンスに変換するだけで、既存のプロトコルを利用してゼロ知識証明を実現できます。 3 色問題は NPC 問題であるため、他の NP 問題はこの問題のインスタンスに変換できます。

2. ブロックチェーンにおけるゼロ知識証明の応用

ビットコインやイーサリアムネットワークなどのブロックチェーン上のトランザクションでは、アドレスを使用してトランザクションの両当事者の本当の身元を置き換えることに加えて、トランザクションを部分的に匿名にし、送受信アドレスと金額が知られることが可能になります。ネットワーク上のさまざまな情報や現実世界でのやりとり記録を通じて、ビットコインアドレスと実体を照合するため、プライバシー漏洩の危険が潜んでいます。ゼロコインは、取引履歴分析ではユーザーの本当の身元を取得することができない、まったく新しいアイデアを設計しました。ゼロコインでは、取引する通貨の一定量を消費することで、固有のシリアル番号を持つゼロコインが生成されます。ゼロ知識証明は、どの通貨が使われたかを明らかにすることなく、実際にお金を使ったことを証明できます。このお金を他人に移すためには、論理的にはこのゼロコインを他人が使えないようにする必要があり、ゼロコインの方法は、使用されたすべてのゼロコインのシリアル番号を保存した無効化リストを共同で管理することです。マイナーは支出トランザクションを検証する際にゼロ知識証明法を使用するため、どのゼロコインが支出されたかを知る必要がなく、ゼロコインのシリアル番号が無効化リストにあるかどうかも検証できます。支出トランザクションにはアドレスと署名情報が含まれていないため、マイナーはトランザクションプロセス全体を通じてゼロコインの出所を知りません。そのため、トランザクション履歴を分析してユーザーの身元を取得することは困難です。

Zerocoinでは取引金額を知ることができますが、zkSNARKsの技術を利用したZerocashでは取引金額さえ隠すことができ、台帳に公的に記録されるのは取引の存在だけです。 NP のすべての問題に対して zkSNARK が存在することがわかります。いくつかの革新的なテクノロジーが導入され、ブロックチェーンで使用できるようになります。最も重要なことは、zkSNARK は証明のサイズと証明に必要な計算量を削減することです。そのプロセスは次のように簡単に説明できます。

1. 検証対象プログラムを論理検証ステップに分解し、その論理ステップを加算、減算、乗算、除算からなる演算回路に分解します。

2. 検証する必要があるプログラムを、t(x)h(x) = w(x)v(x) の証明など、一連の変換を通じて多項式の積が等しいことを検証するように変換します。

3. 証明をより簡潔にするために、検証者は事前にいくつかのチェックポイントをランダムに選択し、それらの点で等価性が確立されるかどうかをチェックします。

4. 準同型エンコード/暗号化により、検証者は方程式を計算するときに実際の入力値を知りませんが、それでも検証することはできます。

5. 非ゼロの機密値 k は、方程式の両側で同時に乗算でき、(t(s)h(s)k) が (w(s)v(s) に等しいことを検証するときに) k) の場合、特定の t(s)、h(s)、w(s)、v(s) を知ることは不可能であるため、情報は保護されます。

Zerocoin の暗号化原始的な RSA アキュムレータとは異なり、zkSNARKs 技術は比較的新しく、広く検証されていないためリスクがありますが、同時に、匿名性が高いため、Zerocash の脆弱性も発見されにくくなっています。取引金額までの情報も不明であるため、攻撃者が無期限にゼロ紙幣を発行したとしても、そのような状況は検出できません。

また、Zerocoin も Zerocash も生成パラメータが事前に組み込まれている必要があり、ユーザーはこれらのパラメータが漏洩していないことを信頼してネットワークを利用する必要がありますが、一旦これらのパラメータが漏洩するとネットワーク全体が壊滅的な打撃を受けることになります。 Zerocash は、自分自身を証明するために一連の「儀式」(キーを保存しているコンピューターを破壊するプロセスを記録するなど)を設計したとしても、複雑な信頼設定により物議を醸しています。

zkSTARKsのホワイトペーパーによると、zkSTARKsは、信頼設定に依存せずにブロックチェーン検証を完了できる最初のシステムであり、同時に、計算​​データ量の増加に応じて計算速度が飛躍的に向上します。公開キー暗号化に依存せず、ハッシュ関数 (SHA2 など) が予測不可能であることが唯一の暗号学的前提であるため、単純な前提により理論的に安全性が高まります (この前提はビットコイン マイニングの安定性の基礎でもあります)。したがって、耐量子性も備えています。 zkSTARKs のような新しいテクノロジーであるため、時間の試練に合格する必要があります。


参考文献:

参考文献:

1. Zcoin 中国語コミュニティ、「Zcoin と Zcash: 類似点と相違点」 http://www.zcoinchina.org/zcoin-and-zcash/https://z.cash/technology/zksnarks.html.

2. Zcash チーム「zk-SNARK とは何ですか?」

4. Christian Reitwiessner,《zkSNARKs in a nutshell》,https://blog.ethereum.org/2016/12/05/zksnarks-in-a-nutshell/

5. Matthew Green,《Zero Knowledge Proofs: An illustrated primer》,https://blog.cryptographyengineering.com/2014/11/27/zero-knowledge-proofs-illustrated-primer/

3. ゼロコインテクノロジーホワイトペーパー「ゼロコインプロトコルを使用して会計プライバシーを保証する暗号通貨」http://www.sohu.com/a/224915382_117959

6. Lao Qian、「数独が引き起こした悲劇: ゼロ知識証明 (ゼロ知識証明)」、

記事の著作権はHash Futureに帰属しますので、転載が必要な場合はHash Futureスタッフまでご連絡ください。





哈希未来
作者文库