ゼロ知識証明とは何かご存じでしょうか。
本記事では、ゼロ知識証明について以下の点を中心にご紹介します!
- ゼロ知識証明とは?
- ゼロ知識証明が必要な理由
- ゼロ知識証明の種類
ゼロ知識証明について理解するためにもご参考いただけると幸いです。
ぜひ最後までお読みください。
Pacific Metaでは、Web3の事業に取り組む企業様向けにメールマガジンを配信しています。
これまで100件以上のプロジェクト支援して培ったノウハウをもとに、Web3業界の最新情報や、支援事例など、課題解決に役立つ情報をお届けします。
⇒ Pacific Metaのメールマガジンに登録する(無料)
ゼロ知識証明とは?
ゼロ知識証明(ZKP)は、情報を知っていることを他者に示すための革命的な技術です。具体的には、情報を持っていることを証明したい人が、その詳細を明かさずに、相手にその事実だけを確信させられます。
例えば、特定の資格を持っていることを示したい場合、通常は証明書やその他の情報を提供する必要がありますが、これには余計な情報も含まれることが多いです。ゼロ知識証明を使用すると、必要な情報だけを相手に伝えられ、余計な情報の漏洩を防げます。
この技術は1980年代に暗号学の分野で生まれ、特定の「命題」に関する知識を証明するために使用されます。現代のデジタルセキュリティにおいて、ゼロ知識証明は、情報を共有するための強力なツールとして注目されています。
ゼロ知識証明が必要な理由
ゼロ知識証明は暗号学の革命的な進展で、個人のデータ保護を新たなレベルへと引き上げました。例えば、ある人が「X国の市民である」と主張する場面を考えてみましょう。通常、その主張を証明するためには、パスポートや運転免許証などの具体的な「証明書」を提出する必要があります。
しかし、このアプローチには欠点があります。特に、提供された個人情報は、ハッキングのリスクを持つ中央のデータベースに格納されることが多いのです。このような背景から、情報の信頼性を確保する新しい方法が求められています。
ゼロ知識証明は、情報を公開せずに、主張が正しいことを立証する技術として登場しました。このプロトコルは、「証明」として知られるステートメントを受け取り、その正確さの証明を生成します。そして、この証明だけで、主張が正しいことが確認できます。
簡単に言えば、身分を確認するための従来の証明書は不要で、ゼロ知識証明だけで、その主張が正確であることが検証者に伝わります。
ゼロ知識証明の性質
ゼロ知識証明は以下の性質の基準を満たさなければなりません。解説します。
完全性
ゼロ知識証明の「完全性」とは、証明者の主張が真実である場合、検証者はその事実を正確に確認できる性質を指します。ゼロ知識プロトコルを適切に使用すると、正しい入力に対しては必ず「真」の結果が得られます。つまり、証明者の正当な主張は、正直な検証者によって確実に認識されることが保証されています。この特性は、ゼロ知識証明の信頼性を高める要因となっています。
健全性
ゼロ知識証明の「健全性」とは、証明者が不正確な主張をした場合、検証者がその不正を確実に検出できる特性を指します。このプロトコルを使用すると、無効な入力に対して「真」の結果を得ることは実質的に不可能となります。従って、証明者が真実でない主張をしても、正直な検証者はその誤りを見抜けます。
ゼロ知識性
ゼロ知識証明の「ゼロ知識性」とは、証明者が主張の真実性を示す際に、その詳細や背後の情報を検証者に明かさずに済む特性を指します。この性質のおかげで、検証者は主張が真であることのみを確認できますが、その主張の具体的な内容や背景知識を知ることはできません。これにより、情報のプライバシーが確保され、検証者が証明から元の情報を再構築することが防がれます。
ゼロ知識証明の種類
ゼロ知識証明には2つ種類があります。それぞれ解説します。
ZK-SNARKs
ZK-SNARKsは、ゼロ知識証明の一種で、その名前は「Zero-Knowledge Succinct Non-Interactive Argument of Knowledge」から取られています。この技術の特徴は、情報を公開せずに、証明者が特定の知識を持っていることを短時間で証明できる点にあります。具体的には、ゼロ知識性により、検証者は証明の真偽のみを知り、詳細は知れません。また、簡潔性のおかげで、証明は迅速に検証され、非対話型の性質により、証明者と検証者は一度のやり取りで証明を完了できます。
Zcashは、この技術をブロックチェーンに初めて導入したプロジェクトで、ZK-SNARKsを使用することで、取引の詳細を隠蔽しながらも、その正当性を証明できます。しかし、ZK-SNARKsの導入には課題もあり、特に「Trusted Setup」と呼ばれる初期設定が重要です。この設定は信頼性に基づいており、正しく行われないと、プライバシーが危険にさらされる可能性があります。また、理論的には、高度な計算能力を持つ攻撃者が偽の証明を作成する可能性も指摘されています。
ZK-STARKs
ZK-STARKsは、ゼロ知識証明の新しいプロトコルで、zk-SNARKsの課題を解決するために開発されました。この名前は「Zero Knowledge Scalable Transparent Argument of Knowledge」から来ています。ZK-STARKsの特徴は、Trusted Setupを必要としない点です。これにより、システムの信頼性が向上します。
エリ・ベン・サソン教授がイスラエル工科大学で提唱し、彼はこの技術をブロックチェーン企業StarkWareで実装しています。ZK-STARKsは、大量の計算を効率的に行い、その結果の正しさを迅速に証明・検証できます。特に、ブロックチェーンのスケーラビリティ問題を解決するため、大部分の計算をオフチェーンで行い、必要な情報だけをオンチェーンに残す方法が採用されています。
ZK-STARKsの透明性は、公開されているランダム性を利用しています。これにより、ZK-STARKsを使用するシステムは、ZK-SNARKsよりも信頼性が高いとされています。しかし、ZK-STARKsの証明サイズはZK-SNARKsよりも大きく、これがブロックチェーンのトランザクションコストの増加という課題を引き起こしています。
ゼロ知識証明のメリット
ゼロ知識証明のメリットも解説していきます。
ブロックチェーンのプライバシー強化
ブロックチェーン技術は、仮想通貨をはじめとして多岐にわたる分野での利用が拡大しています。この技術の特徴として、分散型の台帳が参加者全員によって共有されることで、高い透明性が確保されています。しかし、この透明性がユーザのプライバシーを脅かすこともあるため、その対策が求められています。
ゼロ知識証明は、このプライバシー問題の解決策として注目を浴びています。具体的には、zk-SNARKやzk-STARKといった技術を用いて、取引の詳細を公開せずに、その正当性だけを証明することが可能となります。このようなゼロ知識証明の導入は、ブロックチェーンの取引速度の向上にも寄与しており、多くの関心を集めているのです。
所得範囲の証明
2017年11月、INGというオランダの主要銀行は、ゼロ知識証明の一形態であるゼロ知識範囲証明(ZKRP)を導入しました。この技術の魅力は、特定の数値がある範囲内であることを確認できる点にありますが、具体的な数値自体を明かさずに証明できます。具体的な利用シーンとして、住宅ローンを申し込む際に、申請者は自らの収入が必要な基準を満たしていることを示せます。しかし、その具体的な収入の額を開示することなく、範囲内にあることだけを証明することが可能です。
情報の選択開示
W3C、Web技術の標準化を推進する組織は、検証可能な資格情報(VC)というデータモデルの標準化を進めています。この中で、ゼロ知識証明を活用して、特定の属性情報だけを選んで証明する方法が取り上げられています。具体的な例として、大学の卒業証明において、個人の詳細な情報を伏せたまま、単に学位を取得したという事実だけを証明するシナリオが紹介されています。
このような情報の選択的な開示は、プライバシーの保護と情報の信頼性を両立させるための手段として注目されています。日本の内閣官房が推進する「Trusted Web」のプロジェクトでも、このゼロ知識証明を活用したデータの選択的開示のアプローチが議論の中心となっており、ゼロ知識証明の重要性と可能性が強調されています。
ユーザの認証
多くのWebサービスはIDとパスワードを用いた認証を採用していますが、人の記憶能力の制約から、パスワードは総当たりやリスト型の攻撃に脆弱です。サーバが侵害されると、パスワード関連の情報が漏洩し、攻撃者の手がかりとなる可能性が高まります。ゼロ知識証明を利用した認証方法は、サーバ上にパスワード情報を持たないため、よりセキュアです。
シュノアプロトコルは、離散対数問題を基にしたゼロ知識証明を用いた認証手法の一つです。従来、この手法は通信量や処理速度の問題、秘密データの大きさなどの課題があったため、広く採用されていませんでした。しかし、通信技術の進化やデバイスの性能向上、データ保存技術の発展により、これらの課題は次第に緩和されてきています。
ゼロ知識証明のデメリット
ゼロ知識証明にはデメリットももちろん存在します。以下で見ていきましょう。
ハードウェアのコスト
ゼロ知識証明の生成には高度な計算が求められ、これを効率的に行うための特別な機械が必要です。これらの専用機械は高額で、多くの個人が購入するのは難しい状況です。そのため、ゼロ知識技術を採用するアプリケーションは、このハードウェアコストを考慮しなければならず、結果としてユーザーの負担が増えるリスクがあります。
証明検証のコスト
ゼロ知識証明の検証には高度な計算が伴い、これによりアプリケーションの導入コストが上昇する可能性があります。特に、ゼロ知識証明を計算に適用する際のコストは顕著です。例として、イーサリアムでのゼロ知識ロールアップの場面では、ZK-SNARKの証明の検証に50万ガスのコストがかかることが挙げられます。
公正さを信頼してもらうのは現実的に不可能
ZK-SNARKは、公開パラメータ(CRS)を再利用することが可能ですが、これは信頼されたセットアップセレモニーで生成されます。このセレモニーの参加者が公正であるとの前提が必要ですが、実際にその公正さを確認するのは難しいため、多くの場合デベロッパーの言葉を信じるしか選択肢がありません。
これに対して、ZK-STARKは公に検証可能なランダム性を使用するため、このような信頼の問題を回避します。それにもかかわらず、ZK-SNARKのセキュリティを向上させるための研究が進められており、信頼されないセットアップの実現に向けた取り組みが行われています。
量子計算による脅威
ZK-SNARKは、楕円曲線暗号を基盤としていますが、量子コンピュータの進化により、そのセキュリティが脅かされる可能性が指摘されています。一方、ZK-STARKは耐衝突ハッシュを暗号化の核として採用しており、この方式は量子攻撃に対しても強固であるとされています。楕円曲線暗号の公開鍵と秘密鍵の組み合わせの脆弱性とは対照的に、耐衝突ハッシュは量子技術を用いた攻撃への耐性が高いといわれています。
ゼロ知識証明を分かりやすく理解しよう!
以下で、ゼロ知識証明の有名な例を挙げます。例を基に、ゼロ知識証明の理解を深めましょう。
洞窟の問題
洞窟の問題はゼロ知識証明の理解を助ける有名な例です。
洞窟内には魔法の扉があり、その扉を開ける合言葉を知っているPさんがいます。Vさんはその合言葉を購入したいのですが、Pさんが本当に知っているのか疑問に思っています。取引のリスクを避けるため、Pさんは合言葉を明かさずに、その知識を持っていることだけを証明したいのです。
試行の手順は次の通りです。Pさんは洞窟のAまたはBの入り口から進みます。次に、VさんがAかBのどちらかをランダムに選び、Pさんにその方向から出てくるよう指示します。合言葉を知っているPさんは、どちらの方向からでも出てこれます。しかし、知らない場合、Vさんの指示に従って出てくる確率は50%となります。これを繰り返すことで、Pさんが本当に合言葉を知っているかをVさんに証明できます。
この例を通じて、情報を明かさずに何かを証明する「ゼロ知識」の概念が示されています。
ウォーリーをさがせの問題
「ウォーリーを探せ」の例は、ゼロ知識証明の理解を深めるための興味深いアプローチです。
アリスは「ウォーリーを探せ」の絵本でウォーリーを見つけました。彼女はボブにウォーリーを見つけたことを証明したいですが、ウォーリーの位置は秘密にしたいと思っています。
方法1では、アリスはウォーリーの部分だけを切り抜いてボブに示します。透かしを使って、それがオリジナルの絵から切り抜かれたものであることを確認します。
方法2では、アリスは絵全体をカバーし、ウォーリーの部分だけを露出させます。この方法で、ウォーリーの位置を明かさずに彼女がウォーリーを見つけたことを証明できます。
これらの方法は、ゼロ知識証明の3つの主要な要素を満たしています。
健全性: アリスがウォーリーの位置を知らない場合、彼女はボブを欺くことはできません。
完全性: アリスがウォーリーを見つけた場合、彼女はその事実をボブに毎回証明できます。
ゼロ知識: ボブは「アリスがウォーリーを見つけた」という事実のみを知り、ウォーリーの具体的な位置は知らされません。
この例を通じて、情報を公開せずに何かを証明するゼロ知識のコンセプトが示されています。
ゼロ知識証明についてのまとめ
ここまでゼロ知識証明についてお伝えしてきました。ゼロ知識証明の要点をまとめると以下の通りです。
- ゼロ知識証明とは、情報を持っていることを証明したい人が、その詳細を明かさずに、相手にその事実だけを確信させられる、革命的な技術
- ゼロ知識証明が必要な理由は、身分を確認するための従来の証明書は不要で、ゼロ知識証明だけで、その主張が正確であることが検証者に伝わるため
- ゼロ知識証明には、ZK-SNARKsとZK-STARKsがある
これらの情報が少しでも皆さまのお役に立てば幸いです。
最後までお読みいただき、ありがとうございました。
Pacific Metaでは、Web3の事業に取り組む企業様向けにメールマガジンを配信しています。
これまで100件以上のプロジェクト支援して培ったノウハウをもとに、Web3業界の最新情報や、支援事例など、課題解決に役立つ情報をお届けします。