科学普及:ゼロ知識証明とは何か、ゼロ知識証明のユースケースにはどのようなものがあるか?

バビット
2022-01-26 16:57:45
コレクション
この記事では、ゼロ知識証明に関する多くの問題が解決されます。

著者:キャプテン・ヒロ、バビット

おそらく、あなたはZK Proofまたはゼロ知識証明について聞いたことがあるでしょう。しかし、それが何であるかを理解していないようです。ZK-rollupsとは何ですか?ZK-SNARKsとは何ですか?この記事では、ゼロ知識証明に関するあなたのすべての疑問に答えますので、さあ、時間を取ってゼロ知識証明の旅を始めましょう!
image

ゼロ知識証明とは?

ゼロ知識証明は、一方(証明者)が実際の情報を開示することなく、他方(検証者)に秘密を知っていることや主張が真実であることを証明できる証明方法です。

上記の用語「ゼロ知識」は、実際には何の情報も開示せず、第二者(検証者)が第一者(証明者)がその秘密を知っているか、彼らの主張が真実であると当然に信じるという事実の証明です。

では、なぜ私たちはゼロ知識証明が必要なのでしょうか?他人が情報を開示することを信じられないときでも、私たちがその秘密を知っているか、私たちの主張が真実であることを納得させたいからです。

ゼロ知識証明には2つのタイプがあります:

  1. 対話型
  2. 非対話型

1️. 対話型ゼロ知識証明の例を見てみましょう

あなたが成人であることをゼロ知識証明する必要があると仮定しますが、具体的な年齢を実際に開示することはできません。私たちは、あなたの年齢を証明するために第三者の権威機関が必要です。その機関の手続きは次のようになります:

「あなたが提供した出生証明書のコピーをありがとう。私たちはあなたが21歳であることを知っています。ここに秘密の番号がありますので、秘密に保管し、安全にしてください。後で必要になるかもしれません。」

「あなたの秘密の番号は22回ハッシュ処理され、最終的な年齢ハッシュコードが作成されます(はい、システムのデフォルトの操作は、あなたの年齢+1をハッシュすることです)。したがって、私たちがあなたに渡す秘密の番号とこの最終的な年齢ハッシュコードの間には22回のハッシュ処理があります。」

「私たちはあなたの名前、タイムスタンプ、そしてこの最終的な年齢ハッシュコードを使って包装します。これが他の人に渡す証明材料です。」

今、あなたが他の人に18歳を超えていることを証明したい場合、あなたは秘密の番号から最終的な年齢ハッシュコードまでに18回以上のハッシュステップがあることを効果的に証明する必要があります。

これを行うには、最後の18回のハッシュステップを彼らに示すだけで済みます。最初に自分で最初の4回のハッシュステップを行い(秘密の番号を4回ハッシュ処理する)、その結果を彼らに渡します。つまり、4回目のハッシュ処理の結果です。

その後、彼らはあなたが提供した結果に対して18回ハッシュを行います(機関はすでにあなたの秘密の番号に対して合計22回ハッシュ処理を行っています)。最終的に彼らは最後の年齢ハッシュコードを得て、あなたが成人であるかどうかを検証できます。なぜなら、その情報はすべてあなたの証明キットに含まれているからです。

実際、検証者はこう言うでしょう:「私たちに値を与えてください。私たちはそれを18回ハッシュして、あなたの最終的な年齢ハッシュコードと一致する値を得ることができます。もしあなたが18歳でないなら、あなたの最終的な年齢ハッシュコードには18回のハッシュステップがないでしょうから、私たちはあなたの本当の年齢を適切に認証できません。」

これは良い例でもありますか?

良いゼロ知識証明の例 - MathOverflow

しかし、この対話型の方法にもいくつかの制限があります:

  1. 彼らが検証するたびに、全体の冗長なプロセスを経る必要があります。このプロセスは実際には非常に単純なハッシュ処理ですが、実際の暗号アルゴリズムの計算がどのようなものか想像してみてください。
  2. また、オンラインでもオフラインでも、双方が同じ時間、同じ場所(ネットワークプラットフォーム)で会う必要があります。

2️. 非対話型証明を見てみましょう

1986年、フィアットとシャミールはフィアット-シャミールヒューリスティック(Fiat--Shamir heuristic、非対話型ゼロ知識証明)を発明し、対話型ゼロ知識証明に基づく最初のデジタル署名アルゴリズムとなりました。

フィアット-シャミールヒューリスティックは、コミットメントスキーム(Commitment Scheme)を通じて非対話型ゼロ知識証明に変換できるため、ZK-SNARKsまたはゼロ知識の簡潔な非対話型知識証明が生まれました。

フィアット-シャミールヒューリスティックをより強力にするために、私たちはコミットメントスキームを使用しました。コミットメントスキームは多くの暗号プロトコルの基本的な構成要素です。これにより、コミッターは値(コミットメント)を公開し、その値をメッセージにバインド(binding)しながら、それを開示することなく(hiding)行うことができます。

現在、ゼロ知識証明に使用される2つの際立ったコミットメントスキームは、ペダーソンコミットメント(Pederson commitment)と多項式コミットメント(Polynomial commitment)です。

しかし、2013年頃まで、ZK-SNARKsは実際に有効になり、開発者は現実世界のアプリケーションでそれを実装し使用できるようになりました。

私は、Vitalik Buterinのこの優れた記事を読むことをお勧めします。この記事は、ZK-SNARKsがなぜ利用可能であるかを概説し、それらがどのように実現されるかを説明しています。おそらく、一度で理解するのは難しいかもしれませんが、何度も読んでみてください。一旦内容を理解すれば、その原理を理解できるようになります。

ポスト量子の世界では、私たちはZK-SNARKsに選択した暗号関数が量子コンピュータによって強制的に破られないことを確認する必要があります。これが、ポスト量子安全性を実現するための改善が進められている理由です。この分野についてもっと知りたい場合は、ACMのこの講演を見てください:

改善された非対話型ゼロ知識とポスト量子署名の応用

さて、ゼロ知識証明が何であるかを理解しましたが、それらは何に使われるのでしょうか?

概念的には、主に2つの主要なユースケースがあります:

  1. ブロックチェーンの取引規模の拡大
  2. プライバシー------例えば、医療などの分野で個人データの安全を保護すること

ブロックチェーンの拡張------ZK Rollups

rollupは、取引を第一層ネットワークの外で実行し、第一層に取引データを公開することで機能するブロックチェーンの拡張ソリューションです。これにより、rollupはネットワークを拡張し、依然としてイーサリアムのコンセンサスから安全性を得ることができます。

計算をチェーン外に移動することで、より多くの取引を処理できます。なぜなら、rollupの一部の取引データのみがイーサリアムブロックを使用する必要があるからです。

これを実現するために、rollup取引は別のチェーン上で実行され、特定のバージョンのイーサリアム仮想マシン(EVM)を実行することもできます。

rollup上で取引を実行した後の次のステップは、それらをバッチ処理し、イーサリアムのメインチェーンに公開することです。

このプロセスは本質的に取引を実行し、データを取得し、データを圧縮し、それを単一のバッチ処理の形でメインチェーンに「rollup」(ロールアップ)することです。したがって、このプロセスは「rollup」と呼ばれます。

イーサリアムは、公開されたデータが有効であり、自己利益を追求する悪意のある行為者によって提出されたものでないことをどのように知るのでしょうか??

各rollupは第一層に一組のスマートコントラクトを展開し、これが入金と出金を処理し、証明を検証します。

証明は、異なるタイプのrollup間の主な違いでもあります。

Optimisticのrollupは詐欺証明を使用しますが、対照的にZKrollupは有効性証明を使用します。

ZKrollupでは、第一層に公開される各バッチにはZK-SNARKと呼ばれる暗号証明が含まれています。取引バッチが提出されると、その証明は第一層のコントラクトによって迅速に検証され、不正なバッチは直接拒否されます。

ゼロ知識証明とOptimistic rollupsについては、実装方法や制限など、まだ多くのことを学ぶ必要があります。この記事ではいくつかの基本的な概念に触れただけで、さらに多くの関連情報を学ぶ必要があります。

多くのプロジェクトがイーサリアム向けにZKrollupに基づく拡張ソリューションを開発しています。いくつかの際立ったプロジェクトにはdYdX、Loopring、Polygon Miden、Polygon Hermezがあります。

プライバシー------日常生活での応用

仮に、2つの会社AとBがブロックチェーンを媒介として運営し、コミュニケーションを取りたいとします。

AはBに資産を移転し、彼らはその資産が内部に留まることを望んでいます。はい、ブロックチェーンは透明性、相互運用性、データの安全性と完全性、その他の利点をもたらしますが、なぜある会社が内部の物流情報を公開するのでしょうか?この時、ゼロ知識証明が役立ちます。

さらに、あなたが海外の友人にお金を密かに送金したいが、政府にその取引を監視されたくない場合、どうしますか?ゼロ知識証明が助けになります。

他のいくつかの分野でも、ゼロ知識証明は深遠な影響を与えるでしょう。例えば、医療、保険、電子投票、身分管理などです。

医療分野では、DNAデータ、個人情報、医療記録、基本的な病歴情報、薬物の追跡可能性、臨床試験、医療供給チェーン、臓器移植の安全性を確保します。

保険分野では、デジタル形式の保険証明書や保険証書、個人情報、車両情報、請求の決済を確保します。

ブロックチェーンとZKPを使用した身分管理は深遠な意義を持ちます。KYC(顧客確認)に関連するすべてのアプリケーション、学校、大学、支払いアプリケーションは、運転免許証、パスポート、有権者身分証、国民身分証などの私たちのID画像を提供することを要求します。私たちの敏感な個人データは実際にそこにあり、情報がいつ漏洩するリスクがあることに気づいていないことが多いです。ゼロ知識証明を利用すれば、私たちはこれらの身分情報を保護し、必要な情報だけを供給者、アプリケーション、政府に開示できます。実際、ゼロ知識証明を使用して、これらの身分情報の公開方法を完全に再構築することができます。

私たちはこれらすべてにゼロ知識証明を使用できます。これにより、特定の情報が必要なとき、ユーザーは選択的に承認し、必要な情報を提供し、残りの詳細は隠されます。

ただし、ZK-SNARKsの効率は2013年以降に実際に実現可能であり、開発者によって使用されるようになったため、ゼロ知識証明を使用したさまざまなアプリケーションが今後大きなスペースで出現する可能性があります。

2016年に導入されたZcashは、現在、ZK-SNARKsを成功裏に実現し、ユーザー間のプライバシー取引を提供する唯一の際立った製品です。

ZK-SNARKsとZK-STARKs

画像出典:Matter Labs githubリポジトリ
画像出典:Matter Labs githubリポジトリ

ZK-STARKはゼロ知識スケーラブルな透明知識証明を、ZK-SNARKはゼロ知識の簡潔な非対話型知識証明を表します。

これら2つのゼロ知識技術は本質的に非対話型であり、つまりコードは展開され、自主的に動作することができます。

ZK-SNARKsは、その基盤として楕円曲線の安全性に依存しています。暗号学における楕円曲線の基本的な仮定は、ランダムな楕円曲線要素に対して公知の基点の離散対数を見つけることが不可能であるということです。

信頼できる設定(trusted setup)とは、プライベート取引に必要な証明を作成するための鍵の初期作成イベントおよびこれらの証明の検証を指します。

信頼できる設定イベントでこれらの鍵を作成するために使用された秘密が破棄されていない場合、これらの秘密は虚偽の検証を通じて取引を偽造するために使用される可能性があります。

SNARKsのもう一つの制限は、私たちがすでに知っているように、ポスト量子の世界での実行可能性です。

一方、ネットワーク内でSTARKsを使用し始める際には、信頼設定は必要ありません。これらは量子耐性とも呼ばれます。ただし、STARKの証明規模はSNARKよりもはるかに大きいです。

しかし、STARKsはまだ初期段階にあり、現時点では開発者のサポートも少ないため、ZK-STARKに基づく製品が登場するまでには数年かかるでしょう。

この記事はここで終了します。これは、Web3の世界でゼロ知識証明がどのように使用されているかについての初歩的な紹介です。あなたはゼロ知識証明について一定の理解を得たことでしょう。

ChainCatcherは、広大な読者の皆様に対し、ブロックチェーンを理性的に見るよう呼びかけ、リスク意識を向上させ、各種仮想トークンの発行や投機に注意することを提唱します。当サイト内の全てのコンテンツは市場情報や関係者の見解であり、何らかの投資助言として扱われるものではありません。万が一不適切な内容が含まれていた場合は「通報」することができます。私たちは迅速に対処いたします。
banner
チェーンキャッチャー イノベーターとともにWeb3の世界を構築する