メインコンテンツへスキップ

ゼロ知識証明とは

この記事は約 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 はファイルストレージで同様の設計を採用しています。これらのサービスでは、マスターパスワードから導出された鍵でクライアント側で暗号化を行い、サーバーには暗号文のみが保存されます。プライバシーと利便性のバランスの記事も参考にしてください。

明かさずに示せることの範囲

元の値を渡さずに示せるのは、あらかじめ決められた形に書き換えられた主張だけです。示したい内容は、答えが定まる問いの形に組み替えられている必要があり、その組み替え方を決めた時点で答えられる問いの範囲も固定されます。後から別の問いを足したくなれば、仕組みそのものを作り直すことになります。したがって設計で先に決まるのは方式の選択ではなく、どの問いに答えられるようにしておくかという一覧です。次に、一回ごとに元の値を明かさないという性質は、答えを重ねた全体には自動では引き継がれません。同じ相手に対して異なる問いへの答えを重ねると、答えの組み合わせが元の値の取り得る範囲を狭めていきます。ここで狭まっているのは、証明の確かさではなく、開示していないはずの値の候補です。そのため運用で決めるべきことには、どの問いに答えるかに加えて、同じ相手に対して答えを重ねる回数と、答えの履歴が誰の手元に残るかが含まれます。そして示せるのは値についての事実であり、その値が誰のものであるかは別の仕組みが担います。条件を満たす値を持っていることを確かに示せても、その値が示している側に正しく結び付いているかは、値の出どころを確かめる部分で決まります。全体の確かさはこの二つのうち弱い側に合わせて決まるため、示す仕組みだけを強くしても、結び付ける部分が緩いままでは全体は変わりません。

よくある誤解

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

関連用語

この記事は役に立ちましたか?