もう少し詳しく
ゼロ知識証明とは、ある事実が正しいことを、その事実の詳しい内容を一切明らかにせずに、相手に納得してもらえる形で証明できる暗号技術のことです。たとえば「あるプログラムをある入力で動かしたら、確かにこの結果になった」という事実を、入力の内容そのものを見せずに、短い証明データだけで示せます。証明を受け取った側は、プログラムを自分でもう一度実行して確かめる必要がなく、その証明を検証するだけで、ごく短い時間で正しさを確認できます。名前に「ゼロ知識」とあるのは、証明を通じて相手に伝わる情報が、証明したい事実が正しいという1点だけで、それ以外の詳細な情報は何も伝わらない、という性質を指しています。
どこで使われるか
ゼロ知識証明は、本人確認や認証の場面で使われることがあります。たとえば「自分が一定の年齢以上であること」を、生年月日そのものを見せずに証明する、といった使い方です。暗号資産や分散型台帳(ブロックチェーン)の分野でも、取引の内容を公開せずに、その取引が正しく処理されたことを証明する目的で使われています。近年は、企業の業務システムが大量の処理を正しく行ったことを、処理の詳細な内容を外部に公開せずに証明するといった、企業向けの用途の研究も進んでいます。
身近な例
会員制のサービスで「18歳以上の会員だけが見られるページ」があるとします。通常は生年月日や年齢を運営側に登録して確認してもらいますが、ゼロ知識証明の考え方を使えば、理論上は「18歳以上である」という事実だけを証明し、実際の生年月日はサービス側に一切伝えずに済ませることができます。実際の身分確認サービスの多くは、まだこうした仕組みを採用していませんが、プライバシーを守りながら必要な確認だけを行うための技術として注目されています。
注意点
ゼロ知識証明は「処理の手順が、決められた通りに正しく行われたこと」を証明する技術であり、「その処理の内容自体が利用者にとって妥当かどうか」までは証明してくれません。たとえば、ある方針に従って処理が行われたことを厳密に証明できても、その方針自体が利用者の利益にかなっているかどうかは別の問題です。また、技術の種類によって、証明の生成にかかる時間や、安全性の前提となる暗号技術が異なるため、どの方式を使っているかによって、実際の使いやすさや長期的な安全性には差があります。