ゼロ知識証明 【ZKP】 Zero Knowledge Proof / ZKIP / Zero Knowledge Interactive Proof
検証者が秘密を知らない場合(秘密情報の取引などの場合)、証明者は相手に秘密を知らせる前に秘密を知っていることだけを信じさせることができる。
また、検証者が秘密を知っていて、証明者が持っている情報が本物か調べたい場合(パスワード認証など)でも、両者のやり取りを盗み聞きして第三者に秘密を盗み取られることを防ぐことができる。
具体的な方法として、例えば、検証者が「秘密を知っていれば必ず正答できるが、知らなければどちらなのか分からない二択の問題」を証明者に与え、証明者は問いの回答だけを検証者に知らせる。
証明者が秘密を知らない場合、一度のやり取りで正答する確率は2分の1だが、問題を変えて検証を何度も繰り返せば、秘密なしで10回連続正答する確率は1024(210)分の1、100回では約100万分の1となり、現実にはほとんど起こり得ない低確率となる。
このような検証問題は、情報科学で「NP完全」と呼ばれる種類の問題から生成することが可能であることが知られている。
対話的に何度も検証を繰り返すことから「ゼロ知識対話証明」(ZKIP:Zero-Knowledge Interactive Proof)とも呼ばれる。一度の検証で証明を行う「非対話ゼロ知識証明」は特殊な条件下でしか成立しないとされている。
(2020.2.23更新)