メインコンテンツへ
セキュリティ

ゼロ知識証明(Zero-Knowledge Proof)の説明として正しいものはどれか。

ア.証明者が秘密情報を検証者に開示し、開示した秘密が正しいことを確認してもらう認証プロトコルである。
イ.暗号文から元のデータを推測するために、計算量ゼロ(自明な計算)で解を求める攻撃手法である。
ウ.証明者と検証者が同一人物(ゼロの他者)で行う自己認証の仕組みであり、多要素認証の一形態である。
エ.証明者が秘密情報(秘密鍵等)を一切開示せずに「その秘密を知っていること」を検証者に証明できる暗号プロトコルである。正解

解説

ゼロ知識証明は「洞窟の魔法の扉」の寓話。秘密の呪文(秘密鍵)を教えずに「知っている」と証明する——「私は鍵を持っている、でも見せない」を数学的に実現する魔法。

なぜ エ が正解か

エが正解。ゼロ知識証明の3要件:①完全性(Completeness):秘密を知る証明者は必ず検証者を納得させられる②健全性(Soundness):知らない者は確率的にも証明者を騙せない③ゼロ知識性(Zero-Knowledge):検証者は「秘密を知っている」という事実以外の情報を得ない。応用:Zcash(匿名仮想通貨)、zkSNARK、パスワードレス認証。

なぜ ア は間違いか

秘密を開示してしまう認証は通常の認証(パスワード照合等)。ゼロ知識証明は秘密を「一切」開示しない点が本質。

なぜ イ は間違いか

「計算量ゼロで解を求める攻撃」は全く別の概念(存在しない攻撃の造語)。ゼロ知識の「ゼロ」は「情報漏洩量がゼロ」の意味。

なぜ ウ は間違いか

自己認証・多要素認証とは無関係。ゼロ知識は証明者と検証者が「別の主体」である対話型プロトコル。

出典: AI生成問題(学習用)