【ぜろちしきしょうめい】
ゼロ知識証明 とは?
最終更新:
💡 秘密は見せず、条件を満たすと伝える
秘密の値そのものを見せずに、決めた条件が成り立つことを検証できる暗号技術。公開する条件や入力はあり、証明した範囲を超える事実まで保証するものではありません。
📌 このページのポイント
- 秘密の値を見せず、決めた条件の成立を検証する
- 完全性・健全性・ゼロ知識性が重要な性質
- 公開する条件や入力と、秘密にする値を分ける
- 方式・初期設定・計算量・証明する条件を確認する
秘密を見せないのに、何を確かめられるの?
条件が成り立つことを確かめるんだ。たとえば年齢確認なら、生年月日を全部伝えずに「指定した年齢以上」という条件を示す、という使い方を考えられる。ただし元の情報を誰が確かめたかや、本人との結び付きは別に設計する必要があるよ。
証明には、どんな性質が必要なの?
正しい条件なら受け入れられる完全性、偽の条件をだまして通すのが十分難しい健全性、確認した事実以外に秘密の値を明かさないゼロ知識性だよ。方式によって、計算上の仮定や非常に小さな誤りの確率などを考えるんだ。
「ゼロ」なら、何も情報を出さないの?
条件や公開入力、証明そのものは伝えるよ。何を公開し、何を秘密にするかを分けて設計するんだ。証明が「20歳以上」を示せば、その事実は相手に伝わる。本人の情報全部が隠れるという意味ではないね。
ブロックチェーンでは何に使うの?
証明が通れば、システム全部が安全かな?
証明で確認するのは、定めた条件や計算の範囲だよ。条件の書き間違い、元の情報の扱い、実装の不具合まで自動でなくなるわけではない。証明を作る計算量や検証の費用も、方式と内容に応じて確認したいね。
もっと詳しく知りたい人へ
zk-SNARKやzk-STARKは何を選ぶための違い?
証明の大きさ、生成・検証に必要な計算、初期設定で置く信頼などが選択の観点です。SNARKには信頼された初期設定を使う方式があり、STARKはそのような初期設定を不要にする透明性を特徴とします。方式名だけで全実装の性能や安全性を決めず、使う方式の前提を確認します。
まとめ:ざっくりこれだけ覚えればOK!
「ゼロ知識証明」って出てきたら「秘密を見せずに、決めた条件の正しさを証明する技術」と思えばだいたいOK!
📖 おまけ:英語の意味
「Zero-Knowledge Proof」 = ゼロ知識証明
💬 証明で確認した事実以外に、秘密の値についての知識を与えないという考え方。「検証者に予備知識が要らない」という意味ではないよ