zk-SNARKs

protocol

前提

概要

非対話ゼロ知識証明(NIZK)の1つ.

Succinct Non-interactive ARgument Knowledge

  • Succinct: 簡潔, 証明のサイズがステートメントに比べて小さい

  • Non-interactive: 非対話型

  • ARgument: 証明者の計算能力に限りがある

  • Knowledge: 知識無しで証明を生成するのは不可能

  • 完全性, 健全性, ゼロ知識性をもつ

アルゴリズム

    • CRS= が含まれている
      • 評価鍵, 検証鍵
  • Prover

    • x: ステートメント, w: 証拠を受け取り, 証明 を出力
  • Verifier : 証明が正しいかをboolで返す

  • CRSモデル: 信頼された第三者を介して証明される

検証

Circuit-SAT に対し, witness をproverに渡すことで
関係 に属していればpoly timeで出力が1かを判定できる
-> のサイズがとても大きく効率悪いので QAP に変換する.

「入出力が正しいか」を「ある多項式を知っているか」に変換

さらに, 多項式をverifierにわたすのはnon-succinctなので, に対して多項式が恒等的に0かを判定する.
-> 式を展開して係数を確認するのはexp timeなので
Schwartz-Zippleの補題 で評価点で判定することで簡潔性を保つ.

Encoding

多項式や評価点は明らかにしてはいけないので 離散対数問題 性を使ってblind

検証

双線型ペアリング
q-PKE 仮定の元で多項式評価の検証を行う

非対話へ変換

これで Pinocchio Protocol の元で zk-SNARKs の構成ができた.

2023-02-16

参考文献