零知识证明零散笔记

零知识证明笔记

一、预备知识

1.1 Reed-Solomon编码

\(n\)个待编码的元素为\(\{a_0,\cdots,a_{n-1}\}\),它们在点\(r\)处(\(r\in\mathbb F_p\))的编码结果为 \[ f(r)=\sum^{n-1}_{i=0}a_i\cdot r^i \] 即把待编码元素看成系数,在\(r\)点对多项式求值。

1.2 单变量拉格朗日插值

对向量\((a_0,\cdots,a_{n-1})\in\mathbb F^n\),存在系数为\(n-1\)的单变量多项式\(q(x)\),满足 \[ q(i)=a_i,\quad i=0,\cdots,n-1 \]

1.3 单变量低次扩展编码

低次扩展:Low-degree Extension(LDE)

即单变量拉格朗日插值中的\(q(x)\)

1.4 Schwartz-Zippel引理

对于两个在\(\mathbb F\)上总次数最大为\(d\)\(m\)变量多项式\(p(x)\)\(q(x)\)\(p(x)=q(x)\)对于最多\(d/|\mathbb F|\)个输入成立。

这里的\(x\)可以是多变量的,如\(p(x_1,x_2)\),所以说总次数最大为\(d\)

1.5 多线性扩展(MLE)

Multi-Linear Extension

函数\(f:\{0,1\}^l\to\mathbb F\)有唯一的多线性扩展\(\tilde f\)(多线性多项式)。多线性是指每个变量的次数最大是\(1\)

如对于\(f(0,0)=1,f(0,1)=2,f(1,0)=8,f(1,1)=10\)的多线性扩展为 \[ \tilde f(x_1,x_2)=(1-x_1)(1-x_2)+2(1-x_1)x_2+8x_1(1-x_2)+10x_1x_2 \]

1.6 多线性多项式拉格朗日插值

即上面例子的更一般化方法。

二、交互式证明

2.1 Sum-check协议

对于多项式\(g(x_1,x_2,x_3)=2x_1^3+x_1x_3+x_2x_3\)\[ H=\sum_{x_1,x_2,x_3\in\{0,1\}}g(x_1,x_2,x_3)=12 \]

开始

证明者发送\(C_1=12\),声称它等于\(H\)

第1轮

证明者发送: \[ \begin{align} g_1(x_1)&=\sum_{x_2,x_3}g(x_1,x_2,x_3)\\ &=g(x_1,0,0)+g(x_1,0,1)+g(x_1,1,0),g(x_1,1,1)\\ &=(2x_1^3)+(2x_1^3+x_1)+(2x_1^3)+(2x_1^3+x_1+1)\\ &=8x_1^3+2x_1+1 \end{align} \] 验证者验证:\(g_1(0)+g_1(1)=1+11=12=C_1\)

验证者发送随机值:\(r_1=2\)

第2轮

证明者发送: \[ \begin{align} g_2(x_2)&=\sum_{x_3}g(r_1,x_2,x_3)\\ &=g(2,x_2,0)+g(2,x_2,1)\\ &=(16)+(16+2+x_2)\\ &=x_2+34 \end{align} \] 验证者验证:\(g_2(0)+g_2(1)=34+35=69=g_1(2)\)

验证者发送随机值:\(r_2=3\)

第3轮

证明者发送: \[ \begin{align} g_3(x_3)&=g(r_1,r_2,x_3)\\ &=g(2,3,x_3)\\ &=16+2x_3+3x_3\\ &=5x_3+16 \end{align} \] 验证者验证:\(g_3(0)+g_3(1)=16+21=37=g_2(3)\)

验证者生成随机值:\(r_3=6\)。计算\(g_3(r_3)=g_3(6)=46\),查询\(g(r_1,r_2,r_3)=g(2,3,6)=16+12+18=46\),两者一致,验证通过。

2.2 GKR协议

对于层状算术电路,从上(根)到下(叶)逐层规约,每一层之间都使用Sum-check协议。比如先用Sum-check证明第一层的结果由第二层正确得出,但验证者不知道第二层的值,因此再继续往下规约,直到最后一层验证者知道输入值。

参考:GKR协议 - 知乎

2.3 随机预言机模型(ROM)

Random Oracle Model

理想化模型,对于任意输入\(x\in D\),从值域\(\{0,1\}^k\)中均匀随机选择\(k\)位输出\(R(x)\)。现实中被具体的哈希函数取代。

2.4 Fiat-Shamir变换

Fiat-Shamir变换将任意的公开掷币协议\(I\)转换成非交互式公开可验证的协议\(Q\)

将验证者在\(I\)中第\(i\)轮的消息替换为查询ROM的结果即可得到\(Q\)。查询的输入为证明者在第\(1,\cdots,i\)轮中发送的所有消息。

2.5 随机存取机(RAM)

Random Access Machine

由主存、寄存器、指令(类似RISC)、程序计数器组成的硬件模型。程序运行时间为\(T(n)\)指在RAM上所需的指令长度为\(T(n)\)

2.6 计算机程序转换为电路可满足性实例

任何在\(T\)时间内运行的计算机程序,都可以被高效地转换成一个等效的电路可满足性的实例\((C,x,y)\),其中电路\(C\)的大小接近\(T\),深度接近\(\log T\)。输入\(x\)时输出\(y\)当且仅当存在\(w\),使得\(C(x,w)=y\)

三、承诺方案

两个过程:承诺(Commit)和打开(open)。

满足:绑定性(Binding)和隐藏性(Hiding)。

3.1 Pedersen承诺

\(G\)的阶是\(q\)\(g\)\(h\)是两个生成元(它们的离散对数关系未知)。

  • 承诺:\(s\)是秘密,\(t\)是采样的随机数。承诺\(c=C_{g,h}(s,t)=g^sh^t\)
  • 打开:给出\(s\)\(t\)

满足不可区分性(indistinguishable):因为有\(t\)的存在,(在\(s\)取值很少的情况下)攻击者不能通过枚举\(s\)比较得出秘密(guess and check)。

3.2 KZG承诺

三个群\(\mathbb G_1\)\(\mathbb G_2\)\(\mathbb G_T\),阶为\(q\)\(g_1\)\(g_2\)分别是\(\mathbb G_1\)\(\mathbb G_2\)的生成元。\(e\)\(\mathbb G_1\times\mathbb G_2\to\mathbb G_T\)\(t\)是多项式的最大次数。要承诺的多项式为\(f(x)=\sum_{i=0}^t c_i\cdot x^i\)

  • 可信设置:从\(\mathbb Z_q\)中随机采样\(\alpha\)\(SK=\alpha\)\(SK\)需要销毁。 \[ PK=<g_1,\alpha g_1,\alpha^2g_1\cdots,\alpha^tg_1,g_2,\alpha g_2> \]

  • 承诺:承诺了\(f(x)\)在至多\(t\)个点的取值。 \[ C=f(\alpha)\cdot g_1=\sum_{i=0}^{t}c_i\cdot(\alpha^i\cdot g_1) \]

  • 打开:即在\(x_0\)点揭示多项式值为\(f(x_0)\),等价于 \[ f(x)-f(x_0)=(x-x_0)f'(x) \] 其中 \[ f'(x)=\frac{f(x)-f(x_0)}{x-x_0}=\sum_{i=0}^{t-1}d_i\cdot x^i \] 证明方需要发送的witness为 \[ w=f'(\alpha)\cdot g_1=\sum_{i=0}^{t-1}d_i\cdot(\alpha^i\cdot g_1) \] 所以证明方一共需要发送\(<x_0,f(x_0),w>\)

    上述过程只揭示了\(x_0\)处的取值,实际上承诺是承诺了\(t\)个点处的取值,因此验证方可以在至多\(t\)个点(\(x_0,x_1,\cdots\))处打开承诺。

  • 验证:检查如下pairing \[ e(C,g_2)=e(w,(\alpha-x_0)\cdot g_2)\cdot e(g_1,g_2)^{f(x_0)} \] 因为 \[ \begin{align} &e(w,(\alpha-x_0)\cdot g_2)\cdot e(g_1,g_2)^{f(x_0)}\\ &=e(f'(\alpha)\cdot g_1,(\alpha-x_0)\cdot g_2)\cdot e(g_1,g_2)^{f(x_0)}\\ &=e(g_1,g_2)^{f'(\alpha)\cdot(\alpha-x_0)+f(x_0)}\\ &=e(g_1,g_2)^{\frac{f(\alpha)-f(x_0)}{\alpha-x_0}\cdot(\alpha-x_0)+f(x_0)}\\ &=e(g_1,g_2)^{f(\alpha)}\\ &=e(f(\alpha)\cdot g_1,g_2)\\ &=e(C,g_2) \end{align} \]

上面的承诺还不满足不可区分性,修复方法:

  • 方法一:多承诺一个随机点处的值,即多项式\(f(x)\)变为\(t+1\)次的。
  • 方法二:用两组\(\mathbb G_1\)的生成元(关系未知),类似Pedersen承诺。

零知识证明零散笔记
https://shuusui.site/blog/2025/07/29/zkp-note/
作者
Shuusui
发布于
2025年7月29日
许可协议