Inner Product Argument(IPA)は、内積の関係を証明するプリミティブで、いくつかの証明システムに組み込まれて使用されている。IPAの解説については、GBEC動画 or 過去記事参照↓
techmedia-think.hatenablog.com
IPAは、多項式コミットメントスキームとしても機能するため、今回はそのプロトコルについて見ていく↓
IPAベースの多項式コミットメント
ここでは、n次の任意の多項式を想定する。
この多項式をx = zで評価した場合、つまりp(z)は、との内積値p(z) = <A, B>となる。
コミットメント方式のセットアップフェーズとして、可換群が与えられ、以下を決める。
- n個のベースポイント
- ブラインドファクター用のベースポイント
コミット
多項式のコミットメントは、ランダムな値r(ブラインドファクター)を選択し、以下を計算することで得られる。
これは楕円曲線上の点で、証明者はこれを多項式p(x)のコミットメントとして検証者に送信する。
オープン
検証者がx = zの場合の評価値p(z)を知りたいのに対して、証明者はy = p(z)がその値であることを検証者に納得させる。yは2つのベクトルとの内積であるため、Inner Product Argumentを利用してこれを証明する。
証明者、とおよびについて、それぞれ前半部と後半部に分割し、それをとする。
検証者は、ランダムな要素を選択し、証明者に送信。
証明者は、ランダムな要素s, s'を選択し、以下のベクトルを計算し、検証者に送信。
検証者はランダムな数値xを選択し、証明者に送信。
証明者は、
を計算し、これらを新しいAおよびB、Gとして各ベクトルの長さが2になるまで繰り返す。
証明者は、最終的に得られたA'、B'と、ブラインドファクターについてを計算し、検証者に送信する。
検証者は、
が成立するか検証する。
元のコミットメントの各係数部分、つまりとの内積は、IPAの折りたたみプロセスにより、検証式のに含まれる。
実際に利用する際は、証明者と検証者間の対話はFiat-Shamir変換により非対話型で構成される。
というのが、IPAを多項式コミットメントとして使用する方法。冒頭の解説動画/記事の内容との違いは、多項式コミットメントの場合、コミットするのは多項式の各係数とブラインドファクターのみなので、Hのベースポイントはベクトルではなく1つだけ。多項式を評価する値zは、後で検証者から証明者に送られるため、検証者はBのベクトルについては既知になる。