3-4 ゼロ知識証明のモデルと特性
はじめに、ゼロ知識証明の基礎的な事項である、モデルと特性について定義する[※3A]。ここで、定義するモデルは先述のシュノアプロトコルを含む、ゼロ知識証明全般を包含するものとなっている。
1. モデル
ゼロ知識証明は、ある人(証明者)が他の人(検証者)に特定の事項(以下、命題と呼ぶ)について、当該命題が正しいこと以外の情報を与えずに検証者へ証明するための技術である[※3B]。暗号資産等の実際のユースケースにおいては、複数の証明者と検証者が存在することが想定されるが、ここでは簡素化して、単一の証明者と検証者が存在するモデルを想定する。当該モデルにおける典型的な処理フローは、以下の3つのプロセスから構成される。
[※3A] 分かりやすさの観点から、モデルや特性の定義や実現手法は簡略化している。より厳密、詳細な内容については、実現手法の提案論文等を参照されたい。
[※3B] 命題とは、根拠(証拠等)を提示されたとき、正しいか否か(真偽)を一意かつ客観的に判定可能な文章を意味する。たとえば、「ある暗号文を復号できる秘密鍵を有している」という文章は、実際に暗号文を復号した結果が意味のあるデータであるか否かを確認することにより判定可能であるため、命題である。
(1)初期設定プロセス:
証明者と検証者は、どのような命題をどのゼロ知識証明の手法で証明するかを合意する。その命題を数学的表現に変換してから、その命題の証明に必要な鍵を事前に生成・共有する。具体的には、証明者が命題の正しさを証明するために用いる鍵(証明生成鍵 pk)と、そのことを検証者が検証するために用いる鍵(証明検証鍵 vk)を生成して共有し、証明者が証明生成鍵 pk を、検証者が証明検証鍵 vk をそれぞれ保管する[※3C]。初期設定フェーズの鍵生成については、実現手法によって異なり、証明者と検証者が協力して行う場合や、証明者と検証者がともに信頼できる第三者が行う場合がある。
[※3C] 証明生成鍵 pkと証明検証鍵 vkは、公開しても問題がない情報である。証明者が秘匿したい情報は後述のwitness wである。
(2)証明プロセス:
証明者は、証明したい命題の具体例(インスタンスα)とこれが正しいことの証拠(witness w)に対して、証明生成鍵pkを用いて証明πを生成したのち、インスタンスαと証明πを検証者へ送信する。ここで、証明πを生成する際に、証明者と検証者の間でデータのやり取りが必要となる場合には対話型(Interactive)、そうでない場合(すなわち、証明者から検証者への一 方的なデータの送信のみ)には非対話型(Non-Interactive)と呼ばれる。
前回で述べたシュノアプロトコルでは、離散対数の式に具体的な数値を代入したもの(y, p, q, g)がインスタンスαに相当するが、このインスタンスαは初期設定プロセスにおいて共有した鍵に含まれている。したがって、証明プロセ スにおいてはインスタンスαの送信はなく、対話型証明であることから乱数等 (c, e)をやり取りしながら証明π (c, e, z)を作成して送信している。
(3)検証プロセス:
検証者は、インスタンスαと証明πを受信したのち、証明検証鍵 vk を用いて検証を行う。インスタンスαが正しいことを示す証拠 w が存在する場合には、当該検証に成功し、そうでない場合には失敗となる。検証に成功した場合、検証者は証明者の示した命題が正しいこと(真であること)を受け入れる。