1. Vector Oblivious Linear Evaluation (VOLE)
VOLEは、より高度なゼロ知識証明システムや安全な多者間計算(MPC)の基礎として機能する暗号プリミティブです。
VOLEは、送信者(Sender)と受信者(Receiver)の間で実行される対話型プロトコルです。有限体 $F$ 上において、送信者は入力 $\mathbf{u}, \mathbf{v}$ を提供し、受信者はグローバル鍵 $\mathbf{\Delta}$ を提供します。プロトコル実行後、受信者は以下の**VOLE相関(VOLE correlation)**を満たす $\mathbf{q}$ を出力として得ます:
$$\mathbf{q} = \mathbf{u}\mathbf{\Delta} - \mathbf{v}$$
VOLEは、証明システム内で、 $\mathbf{u}$ の値に対する**情報理論的メッセージ認証コード(MAC)**として機能します。 VOLEの結合特性(binding property)により、グローバル鍵 $\mathbf{\Delta}$ を知らずに $q$ を固定した状態で $u$ の値を変更することはできません。この特性は、証明の健全性(soundness)を保証するために利用されます。
特定の文脈(例:FAEST)では、VOLEはサブフィールドVOLE として利用されます。ここでは、送信者の入力 $\mathbf{u}$ が $\mathbb{F}2$(2元体)に限定される一方で、$\mathbf{v}$ や $\mathbf{q}$、グローバル鍵 $\mathbf{\Delta}$ はより大きな有限体 $F {2^\lambda}$ 上に存在します。
2. MPC-in-the-Head (MPCitH)
**MPCitH(Multiparty Computation-in-the-Head)**は、効率的なゼロ知識証明システムを構築するために、安全な多者間計算(MPC)プロトコルを利用する一般的なフレームワークです。このフレームワークは、Ishai、Kushilevitz、Ostrovsky、Sahaiらによって2007年に発明されました。
MPCitHの基本的な貢献は、NPリレーション $R(x, w)$ の知識証明 (ZKPoK)を、関連する多者間計算ファンクショナリティ $f$ の実行に変換する点にあります。
証明者 $P$ が NP リレーション $R(x, w)$ を満たす証人 $w$ の知識を証明する場合、 $P$ はまず $w$ を $n$ 個のシェア $w_1, \dots, w_n$ に(加法秘密分散などで)分割します。ここで $w = w_1 \oplus \dots \oplus w_n$ が成り立ちます。
$P$ は、このシェアされた入力を用いて、関数 $f(x, w_1, \dots, w_n) = R(x, w_1 \oplus \dots \oplus w_n)$ を計算する半正直なMPCプロトコル $\Pi_f$ を自分の頭の中でエミュレート します。
MPCitHプロトコルは以下のステップで識別スキームを構成します:
ビューの生成とコミットメント: $P$ は、MPC $\Pi_f$ の実行全体から生成される $N$ 個の仮想パーティ(プレイヤー)のビュー $V_1, \dots, V_N$ (入力シェア、乱数、メッセージなど)を計算し、それぞれにコミットします。
チャレンジ: 検証者 $V$ は、ランダムに一つのパーティのインデックス $i^* \in {1, \dots, N}$ を選択します。
開示: $P$ は、選択されなかった $N-1$ 個のパーティ $i \ne i^*$ のビュー $V_i$ を $V$ に開示します。
検証: $V$ は、開示されたビューがコミットメントと整合しているか、そして $N-1$ 個のパーティが MPC $\Pi_f$ のルールに従って正しく計算を行ったかをチェックします。
MPCitHの健全性(Soundness)は、MPCプロトコルの**秘匿性(privacy)と 頑健性(robustness)**に依存します。MPCプロトコルが $(N-1)$ -秘匿($N-1$個のパーティのビューが秘密 $w$ について何も漏らさない)であるという特性を逆に利用します。不正な $P$ が $w$ を知らずに受理されるためには、開示されなかったパーティ $i^*$ のビューを完璧に偽造する必要があります。
MPCitHは任意の回路 に適用可能であり(ジェネリック性)、特にサイズの大きい回路 $C$ (サイズ $s$ ) に対して、通信量を回路サイズ $s$ に線形 ("constant-rate" zero-knowledge)にする $O(s) + poly(k, \log s)$ の効率を達成し、従来のプロトコル($O(ks)$)を改善しました。
QuickSilver は、VOLEを利用して効率的なゼロ知識証明を構築するシステムです。QuickSilverは、Line-Point Zero-Knowledge パラダイムに基づいています。
QuickSilverは、MPCitHが通常Boolean回路や算術回路全体を検証するのに対し、VOLEプロトコルによって提供される情報理論的MAC (VOLE相関)を利用して、回路の**非線形演算(乗算ゲートなど)**が正しく実行されたことを証明します。
QuickSilverでは、証明者は乗算ゲート $\alpha \cdot \beta = \gamma$ が成立していることを、VOLE MACの加法準同型性を用いて効率的に検証者に納得させます。検証者は、すべての制約のランダムな線形結合をチェックするだけで、証明の健全性を確率的に保証します。
QuickSilverは、MACの組み $(u_i, v_i, q_i)$ の結合特性(binding property)を利用して健全性を確保します。ゼロ知識性を維持するため、証明者は、QuickSilverの証明応答を生成する際に、追加のMAC $(a^_1, a^ _0, b^*)$ を使用して、証明値をマスクします。検証者は、マスクされた応答 $\tilde{a}_0, \tilde{a}_1$ と $\tilde{b}$ の間に VOLE 関係 $\tilde{b} = \tilde{a}_0 + \tilde{a}_1 \cdot \Delta$ が成立するかをチェックすることで、秘密情報 $\Delta$ を漏らさずに証明を検証します。
4. VOLE-in-the-Head (VOLEitH)
**VOLE-in-the-Head(VOLEitH)は、VOLEベースのゼロ知識プロトコルを、元の 指定検証者(designated verifier)設定から 公開検証可能(publicly verifiable)**なプロトコルへ変換する新しい手法です。
VOLEitHは、MPCitHフレームワークからの進化形と見なされます。VOLEitHは、既存のMPCitHに基づくアプローチと比較して、より簡潔で、より小さく、より高速な ゼロ知識証明プロトコルを提供します。
4.2 オール・バット・ワン ベクトルコミットメント (VC)
VOLEitHの核心は、ランダムなOT(Oblivious Transfer)インスタンス を、**オール・バット・ワン ベクトルコミットメント(All-but-One Vector Commitments, VC)**で置き換えるコンパイラにあります。
GGMツリーの利用: VCは、長さ倍増PRG(擬似乱数生成器)に基づくGGMツリー を用いて構築されます。署名者(証明者)は、ツリーのルートシードにコミットし、 $N$ 個の葉に $N$ 個のシードを生成します。
開示メカニズム: 署名者は、検証者が要求する開示しないインデックス $j^*$ に対応するルートからのパス上にあるノードの兄弟(sibling)キーを送るだけで、残りの $N-1$ 個のシード(メッセージ)を開示できます。これにより、開示情報は $O(\log N)$ の通信量に抑えられます。
VCは、VOLE相関を非対話的に確立するために使用されます。開示されなかったインデックス $j^*$ は、VOLE相関におけるグローバル鍵 $\Delta$ として機能します。
$N$ 個のシード $sd_i$ はPRGによって長いランダム文字列 $r_i$ に展開され、これを用いて署名者は VOLE の出力 $\mathbf{u}$ と $\mathbf{V}$ を定義します。検証者は、$\Delta$ (開示されなかったインデックス) を用いて、開示された $r_i$ の線形結合を計算することで、VOLE関係 $\mathbf{Q} = \mathbf{u}\mathbf{\Delta} - \mathbf{V}$ を満たす $\mathbf{Q}$ を生成します。