【ぜろちしきしょうめい】

ゼロ知識証明 とは?

最終更新:
💡 秘密は見せず、条件を満たすと伝える

秘密の値そのものを見せずに、決めた条件が成り立つことを検証できる暗号技術。公開する条件や入力はあり、証明した範囲を超える事実まで保証するものではありません。

📌 このページのポイント
秘密を見せず、決めた条件を証明証明者秘密の値検証者条件の成立を確認する証明公開するもの:条件・公開入力など秘密の値そのものは見せない完全性・健全性・ゼロ知識性確認するのは、証明に定めた範囲実装や元の情報の扱いも重要
条件や公開入力は伝わります。「何も情報を出さない」という意味ではありません。
ひよこ ひよこ
秘密を見せないのに、何を確かめられるの?
ペンギン先生 ペンギン先生
条件が成り立つことを確かめるんだ。たとえば年齢確認なら、生年月日を全部伝えずに「指定した年齢以上」という条件を示す、という使い方を考えられる。ただし元の情報を誰が確かめたかや、本人との結び付きは別に設計する必要があるよ。
ひよこ ひよこ
証明には、どんな性質が必要なの?
ペンギン先生 ペンギン先生
正しい条件なら受け入れられる完全性、偽の条件をだまして通すのが十分難しい健全性、確認した事実以外に秘密の値を明かさないゼロ知識性だよ。方式によって、計算上の仮定や非常に小さな誤りの確率などを考えるんだ。
ひよこ ひよこ
「ゼロ」なら、何も情報を出さないの?
ペンギン先生 ペンギン先生
条件や公開入力、証明そのものは伝えるよ。何を公開し、何を秘密にするかを分けて設計するんだ。証明が「20歳以上」を示せば、その事実は相手に伝わる。本人の情報全部が隠れるという意味ではないね。
ひよこ ひよこ
ブロックチェーンでは何に使うの?
ペンギン先生 ペンギン先生
ZK Rollupなどで、まとめた取引や状態の更新が定めた規則を満たすことを確認するために使われるよ。ただ、正しさを証明することと、取引内容を秘密にすることは別。ゼロ知識の技術を使う名前だけでプライバシーまで判断しないでね。
ひよこ ひよこ
証明が通れば、システム全部が安全かな?
ペンギン先生 ペンギン先生
証明で確認するのは、定めた条件や計算の範囲だよ。条件の書き間違い、元の情報の扱い、実装の不具合まで自動でなくなるわけではない。証明を作る計算量や検証の費用も、方式と内容に応じて確認したいね。
もっと詳しく知りたい人へ

zk-SNARKやzk-STARKは何を選ぶための違い?

証明の大きさ、生成・検証に必要な計算、初期設定で置く信頼などが選択の観点です。SNARKには信頼された初期設定を使う方式があり、STARKはそのような初期設定を不要にする透明性を特徴とします。方式名だけで全実装の性能や安全性を決めず、使う方式の前提を確認します。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ゼロ知識証明」って出てきたら「秘密を見せずに、決めた条件の正しさを証明する技術」と思えばだいたいOK!
📖 おまけ:英語の意味
「Zero-Knowledge Proof」 = ゼロ知識証明
💬 証明で確認した事実以外に、秘密の値についての知識を与えないという考え方。「検証者に予備知識が要らない」という意味ではないよ

参考資料

← 用語集にもどる