1. 引言
主要见斯坦福大学Wilson Nguyen、Dan Boneh和微软研究中心Srinath Setty 2023年论文《Revisiting the Nova Proof System on a Cycle of Curves》。
前序博客有:
- Nova: Recursive Zero-Knowledge Arguments from Folding Schemes学习笔记
在2021年Nova 论文中,基于relaxed R1CS statements的folding scheme,构建了针对IVC(Incrementally Verifiable Computation)的高效简洁证明系统——Nova证明系统。不过在该论文中,Nova的描述和分析都限制为single chain of incremental computation( z n = F n ( z 0 ) z_n=F^n(z_0) zn=Fn(z0),称为single IVC chain),即每个计算步骤完全相同,当前步骤的输出作为下一步的输入,每一步都运行某函数 F F F,并将 关于之前步骤有效性的statement fold入 an ongoing statement中。在Nova论文中所展示的Nova证明系统使用的是order为 p p p的单一椭圆曲线。
但实际实现时,为提升效率,在https://github.com/Microsoft/Nova代码中,采用的是 2-cycle of elliptic curves。在代码中对应的2条并行的IVC链,且二者必须连接在一起。但迄今为止,该修改方案仅在代码中体现了,并无任何公开的安全性证明。
本文将揭示在https://github.com/Microsoft/Nova的2-cycle Nova系统实现中存在的soundness vulnerability——见附录B。该漏洞使得攻击者可为false statement生成proof——如,在笔记本上仅需1.46秒就可生成 “ 2 75 2^{75} 275轮Minroot VDF的正确执行”的让人信服的Nova proof。该攻击的核心问题在于原始的2-cycle Nova系统生成的IVC proof中包含了一个额外的R1CS instance-witness pair——Verifier未对其做足够约束。
修改了该可靠性漏洞之后的系统效率更高。特别是修改后,从recursive proof中移除了一个R1CS instance-witness pair——使得修订后的Nova具有更短的IVC proof。目前https://github.com/Microsoft/Nova中为修复了该漏洞的安全、优化好的代码。
同时,本文将展示Nova proof是可延展的,在某些应用中存在安全漏洞,并讨论了几个缓解措施。
1.1 IVC(Incrementally Verifiable Computation)
IVC(Incrementally Verifiable Computation)首次由Valiant在其2008年论文《Incrementally verifiable computation or proofs of knowledge imply time/space efficiency》中提出。
对于某函数
F
:
{
0
,
1
}
a
×
{
0
,
1
}
b
→
{
0
,
1
}
a
F:\{0,1\}^a\times\{0,1\}^b\rightarrow\{0,1\}^a
F:{0,1}a×{0,1}b→{0,1}a,有公开值
z
0
,
z
i
∈
{
0
,
1
}
a
z_0,z_i\in\{0,1\}^a
z0,zi∈{0,1}a,IVC方案是指Prover
P
\mathcal{P}
P 声称其知道辅助值
aux
0
,
⋯
,
aux
i
−
1
∈
{
0
,
1
}
b
\text{aux}_0,\cdots,\text{aux}_{i-1}\in \{0,1\}^b
aux0,⋯,auxi−1∈{0,1}b,使得:
,并生成相应的简洁证明。
IVC方案定义为:
以上定义具有完备性和knowledge soundness属性:【其中knowledge soundness属性,是指可full extraction——提取execution chain中的所有辅助值。本文重点关注IVC方案的knowledge soundness属性。】
上述定义中,Verifier的输入中包含函数
F
F
F的描述,即意味着Verifier running time 必须至少为linear in the size of
F
F
F。可额外引入Keygen算法——输出专门针对
F
F
F的prover-verifier key pair (pk, vk),其中vk size为sub-linear in the size of
F
F
F。这样就将处理函数
F
F
F描述的工作 转移给了 预处理阶段。Verifier代替
F
F
F以vk为输入,从而可由更快的线上Verifier。事实上在nova中包含了Keygen算法来实现succinct Verifier。
1.2 Committed Relaxed R1CS over a Ring
基于cycle of curves的Nova证明系统同时使用了2个有限域 F 1 , F 2 \mathbb{F}_1,\mathbb{F}_2 F1,F2。因此可将Nova中的原语看成是基于有限交换ring R : = F 1 × F 2 R:=\mathbb{F}_1\times \mathbb{F}_2 R:=F1×F2,其中的加法和乘法运算是按元素进行的。即对于 R R R中的 a = ( a 1 , a 2 , ) , b = ( b 1 , b 2 ) a=(a_1,a_2,),b=(b_1,b_2) a=(a1,a2,),b=(b1,b2),有 a + b = ( a 1 + b 1 , a 2 + b 2 ) , a ⋅ b = ( a 1 b 1 , a 2 b 2 ) a+b=(a_1+b_1,a_2+b_2),a\cdot b=(a_1b_1,a_2b_2) a+b=(a1+b1,a2+b2),a⋅b=(a1b1,a2b2)。
承诺方案定义为:
承诺方案应满足:binding属性、加法同态属性,以及succinct属性。
限交换ring
R
R
R,对Relaxed R1CS的承诺表示为:
注意,当
s
=
1
s=1
s=1且
E
E
E为零向量时,Relaxed R1CS对应为R1CS,即R1CS为Relaxed R1CS的特例情况。
Trivially Satisfiable Instance-Witness Pair定义:
- 以committed instance-witness pair ( U ⊥ , W ⊥ ) (\mathbb{U}_{\perp}, \mathbb{W}_{\perp}) (U⊥,W⊥)表示某R1CS约束系统R1CS over R R R的trivially satisfying pair。
- 在Nova论文中,改建Trivially Satisfiable Instance-Witness Pair的方法为:【使得
0
=
0
0=0
0=0恒成立。用作IVC的初始instance-witness pair。】
- 设置 E , W , x E,W,x E,W,x均为合适长度的零向量
- E ˉ , W ˉ \bar{E},\bar{W} Eˉ,Wˉ均为对零向量的承诺值
- s = 0 s=0 s=0
1.3 针对Committed Relaxed R1CS over a Ring的Folding Scheme
Folding Schemes为IVC提供了高效方案。近期的一些研究成果[1,2,10-12,15]为不同的问题构建了高效folding方案。Nova论文则为2个committed relaxed R1CS的instance和witness 构建了优雅的folding方案。
Nova的folding scheme为public-coin、one-round交互协议,并可在random oracle model下使用Fiat-Shamir转换为来实现非交互式。此外,Nova启发式地将该random oracle实例化为具体的哈希函数,并假设该启发式生成的协议具有knowledge sound。类似的假设也用于[1,2,10]等其它递归系统中。
Committed Relaxed R1CS的非交互式folding scheme定义为:
该定义满足完备性和knowledge soundness属性:
Nova论文中采用了抗碰撞哈希函数。所谓抗碰撞哈希函数是指:
2. Nova证明系统实现预备知识
- cycle of elliptic curves:为减少与group运算相关的约束数,Nova实际实现时使用了满足DLP(discrete log problem)假设的cycle of elliptic curves。Nova实际实现时可采用实现了特定Rust trait(Nova为pasta cycle of two curves实现了相应trait)的任意cycle of elliptic curves。
将椭圆曲线group表示为 G 1 , G 2 \mathbb{G}_1,\mathbb{G}_2 G1,G2。将椭圆曲线group G \mathbb{G} G的order ∣ G ∣ |\mathbb{G}| ∣G∣称为scalar域 F \mathbb{F} F,该曲线基于的域 F ′ \mathbb{F}' F′称为基域(即point形式为 ( x , y ) ∈ F ′ × F ′ (x,y)\in \mathbb{F}'\times \mathbb{F}' (x,y)∈F′×F′)。
cycle of elliptic curves是指:- group G 1 \mathbb{G}_1 G1具有scalar域 F 1 \mathbb{F}_1 F1和base域 F 2 \mathbb{F}_2 F2。 G 2 \mathbb{G}_2 G2具有scalar域 F 2 \mathbb{F}_2 F2和base域 F 1 \mathbb{F}_1 F1。
- 对 G 1 \mathbb{G}_1 G1的group运算,可高效表示为基于其base域 F 2 \mathbb{F}_2 F2的约束。
- 对 G 2 \mathbb{G}_2 G2的group运算,可高效表示为基于其base域 F 1 \mathbb{F}_1 F1的约束。
Nova系列博客
- Nova: Recursive Zero-Knowledge Arguments from Folding Schemes学习笔记
- Nova 和 SuperNova:无需通用电路的通用机器执行证明系统
- Sangria:类似Nova folding scheme的relaxed PLONK for PLONK
- 基于Nova/SuperNova的zkVM
- SuperNova:为多指令虚拟机执行提供递归证明
- Lurk——Recursive zk-SNARKs编程语言
- Research Day 2023:Succinct ZKP最新进展
- 2023年 ZK Hack以及ZK Summit 亮点记