跳转到主要内容

零知识证明

本文约需 2 分钟阅读

ゼロ知識証明 (Zero-Knowledge Proof, ZKP) とは、ある情報を知っていることを、 その情報自体を一切明かさずに証明する暗号技術です。 1985 年に Shafi Goldwasser 、 Silvio Micali 、 Charles Rackoff の 3 人が理論的基盤を確立しました。 パスワードを送信せずに認証を行う、取引内容を公開せずに正当性を検証するなど、 プライバシーとセキュリティを両立する革新的な技術として、暗号化技術の 最前線に位置しています。

概念の理解 - アリババの洞窟

ゼロ知識証明の概念は「アリババの洞窟」の例え話で直感的に理解できます。 環状の洞窟の奥に魔法の扉があり、合言葉を知っている者だけが通り抜けられます。 証明者 (Peggy) は合言葉を知っていることを、検証者 (Victor) に証明したいが、 合言葉自体は教えたくありません。

1.Peggy が洞窟に入り、左右どちらかの道をランダムに選んで奥に進む
2.Victor が洞窟の入口で「左から出てきて」または「右から出てきて」と指示する
3.Peggy が合言葉を知っていれば、どちらを指示されても扉を通って正しい側から出られる
4.これを 20 回繰り返せば、偶然正解し続ける確率は 100 万分の 1 以下になる

この過程で Victor は「Peggy が合言葉を知っている」という確信を得ますが、 合言葉そのものは一切知ることができません。これがゼロ知識証明の本質です。

zk-SNARK と zk-STARK

特性zk-SNARKzk-STARK
信頼できるセットアップ必要不要
証明サイズ小さい (数百バイト)大きい (数十 KB)
検証速度高速やや遅い
耐量子性なし (楕円曲線依存)あり (ハッシュ関数依存)

zk-SNARK (Succinct Non-interactive Argument of Knowledge) は証明サイズが小さく 検証が高速ですが、初期セットアップに信頼が必要です。 zk-STARK (Scalable Transparent Argument of Knowledge) はセットアップ不要で量子耐性がありますが、 証明サイズが大きくなります。用途に応じた使い分けが重要です。

パスワード認証への応用

従来のパスワード認証では、ユーザーがパスワードをサーバーに送信し、サーバー側で 照合します。この方式では通信経路やサーバー側でパスワードが漏洩するリスクがあります。 ゼロ知識証明を応用すると、パスワードそのものを送信せずに「正しいパスワードを 知っている」ことだけを証明できます。 SRP (Secure Remote Password) プロトコルは この考え方に基づいており、 1Password などのパスワードマネージャーで 採用されています。暗号化の基礎の 記事で、関連する暗号技術の全体像を解説しています。

ゼロナレッジ暗号化サービス

「ゼロナレッジ」を謳うクラウドサービスは、サービス提供者自身がユーザーのデータを 復号できない設計を意味します。 Proton Mail はメールのエンドツーエンド暗号化を 提供し、 Proton 社のサーバーでもメール内容を読めません。 Tresorit はファイル ストレージで同様の設計を採用しています。これらのサービスでは、マスターパスワードから 導出された鍵でクライアント側で暗号化を行い、サーバーには暗号文のみが保存されます。プライバシーと利便性のバランスの 記事も参考にしてください。

現場での使用例

「金融機関の本人確認で、年齢が 18 歳以上であることを生年月日を開示せずに 証明する仕組みを検討しています。ゼロ知識証明により、必要最小限の情報だけで コンプライアンス要件を満たせる可能性があります。」

よくある誤解

「ゼロ知識 = データが存在しない」という誤解がありますが、データは存在します。 ゼロ知識とは「検証者が証明の過程で新たな知識を得ない」という意味です。 また、ゼロナレッジ暗号化サービスでもマスターパスワードを忘れるとデータを 復元できないというトレードオフがあります。利便性とセキュリティのバランスを 理解した上で採用を判断することが重要です。 暗号技術の最新動向に関心がある方には、暗号技術の専門書 (Amazon)が参考になります。耐量子暗号とパスワードセキュリティの 記事で、量子時代の暗号技術についても解説しています。

相关术语

这篇文章对您有帮助吗?

XHatena