基于cycle of curves的Nova证明系统(1)

news/2025/1/8 19:44:47/

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,,auxi1{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),ab=(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的约束。
    • 基于 F 1 \mathbb{F}_1 F1向量的vector commitment对应的承诺值空间为group G 1 \mathbb{G}_1 G1
    • 基于 F 2 \mathbb{F}_2 F2向量的vector commitment对应的承诺值空间为group G 2 \mathbb{G}_2 G2

    定义ring R : = F 1 × F 2 R:=\mathbb{F}_1\times \mathbb{F}_2 R:=F1×F2为一组tuples,其中一个元素在 F 1 \mathbb{F}_1 F1,另一个在 F 1 \mathbb{F}_1 F1。域运算对应为每个元素的域运算。
    同理定义group G : = G 1 × G 2 \mathbb{G}:=\mathbb{G}_1\times \mathbb{G}_2 G:=G1×G2为一组tuples,其中一个元素在 G 1 \mathbb{G}_1 G1,另一个在 G 1 \mathbb{G}_1 G1。group运算对应为每个元素的group运算。

  • commitments承诺值:Nova的folding流程中,要求(基于域 F \mathbb{F} F的)向量承诺方案具有加法同态属性。在Nova论文中采用了Pedersen向量承诺方案,对应满足DLG假设的order为 ∣ F ∣ |\mathbb{F}| F的group G \mathbb{G} G。不过在Nova代码实现中支持具有加法同态属性的通用承诺方案,可对向量采用不同的承诺方案,不过本文重点关注Pedersen向量承诺方案。
    对ring R : = F 1 × F 2 R:=\mathbb{F}_1\times \mathbb{F}_2 R:=F1×F2的承诺由 “基于 F 1 \mathbb{F}_1 F1向量的Pedersen vector commitment对应的承诺值空间group G 1 \mathbb{G}_1 G1” 和 “基于 F 2 \mathbb{F}_2 F2向量的Pedersen vector commitment对应的承诺值空间group G 2 \mathbb{G}_2 G2” 组成。对于某向量 x ∈ R n x\in R^n xRn,分别以 x ( 1 ) ∈ F 1 n x^{(1)}\in\mathbb{F}_1^n x(1)F1n x ( 2 ) ∈ F 2 n x^{(2)}\in\mathbb{F}_2^n x(2)F2n来表示其左右侧向量。对 x x x的承诺对应为:对 x ( 1 ) ∈ F 1 n x^{(1)}\in\mathbb{F}_1^n x(1)F1n的承诺 和 对 x ( 2 ) ∈ F 2 n x^{(2)}\in\mathbb{F}_2^n x(2)F2n的承诺。即,对向量 x ∈ R n x\in R^n xRn的承诺值为group G : = G 1 × G 2 \mathbb{G}:=\mathbb{G}_1\times \mathbb{G}_2 G:=G1×G2内元素。

  • committed relaxed instance:有2个分别基于 F 1 和 F 2 \mathbb{F}_1和 \mathbb{F}_2 F1F2的R1CS约束系统:
    R1CS ( 1 ) : = ( A 1 , B 1 , C 1 ∈ F 1 n 1 × m 1 ) \text{R1CS}^{(1)}:=(A_1,B_1,C_1\in\mathbb{F}_1^{n_1\times m_1}) R1CS(1):=(A1,B1,C1F1n1×m1) R1CS ( 2 ) : = ( A 2 , B 2 , C 2 ∈ F 2 n 2 × m 2 ) \text{R1CS}^{(2)}:=(A_2,B_2,C_2\in\mathbb{F}_2^{n_2\times m_2}) R1CS(2):=(A2,B2,C2F2n2×m2)
    R1CS ( 1 ) \text{R1CS}^{(1)} R1CS(1)的committed relaxed instance为tuple:
    U ( 1 ) : = ( E ˉ ( 1 ) , s ( 1 ) , W ˉ ( 1 ) , x ( 1 ) ) \mathbb{U}^{(1)} := (\bar{E}^{(1)},s^{(1)}, \bar{W}^{(1)},x^{(1)}) U(1):=(Eˉ(1),s(1),Wˉ(1),x(1)),其中 E ˉ ( 1 ) , W ˉ ( 1 ) ∈ G 1 , s ( 1 ) ∈ F 1 , x ( 1 ) ∈ F l 1 \bar{E}^{(1)},\bar{W}^{(1)}\in\mathbb{G}_1, s^{(1)}\in \mathbb{F}_1, x^{(1)}\in\mathbb{F}^{l_1} Eˉ(1),Wˉ(1)G1,s(1)F1,x(1)Fl1
    相应的relaxed witness W = ( E ( 1 ) , W ( 1 ) ) \mathbb{W}=(E^{(1)}, W^{(1)}) W=(E(1),W(1))具有error向量 E ( 1 ) ∈ F 1 n 1 E^{(1)}\in\mathbb{F}_1^{n_1} E(1)F1n1 和 extended witness W ( 1 ) ∈ F m 1 − l 1 − 1 W^{(1)}\in\mathbb{F}^{m_1-l_1-1} W(1)Fm1l11
    对称地,对 R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)的committed relaxed instance为tuple:
    U ( 2 ) : = ( E ˉ ( 2 ) , s ( 2 ) , W ˉ ( 2 ) , x ( 2 ) ) \mathbb{U}^{(2)} := (\bar{E}^{(2)},s^{(2)}, \bar{W}^{(2)},x^{(2)}) U(2):=(Eˉ(2),s(2),Wˉ(2),x(2)),其中 E ˉ ( 2 ) , W ˉ ( 2 ) ∈ G 2 , s ( 2 ) ∈ F 2 , x ( 2 ) ∈ F l 2 \bar{E}^{(2)},\bar{W}^{(2)}\in\mathbb{G}_2, s^{(2)}\in \mathbb{F}_2, x^{(2)}\in\mathbb{F}^{l_2} Eˉ(2),Wˉ(2)G2,s(2)F2,x(2)Fl2
    相应的relaxed witness W = ( E ( 2 ) , W ( 2 ) ) \mathbb{W}=(E^{(2)}, W^{(2)}) W=(E(2),W(2))具有error向量 E ( 2 ) ∈ F 2 n 2 E^{(2)}\in\mathbb{F}_2^{n_2} E(2)F2n2 和 extended witness W ( 2 ) ∈ F m 2 − l 2 − 1 W^{(2)}\in\mathbb{F}^{m_2-l_2-1} W(2)Fm2l21
    可将基于 F 1 \mathbb{F}_1 F1 R1CS ( 1 ) \text{R1CS}^{(1)} R1CS(1)约束系统 和 基于 F 2 \mathbb{F}_2 F2 R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)约束系统 看成是 基于 R : = F 1 × F 2 R:=\mathbb{F}_1\times \mathbb{F}_2 R:=F1×F2的单个约束系统 R1CS : = ( A , B , C ∈ R n × m ) \text{R1CS}:=(A,B,C\in R^{n\times m}) R1CS:=(A,B,CRn×m) R1CS ( 1 ) \text{R1CS}^{(1)} R1CS(1) R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)分别对应 R1CS \text{R1CS} R1CS的左右侧,二者可具有不同的dimension(即可以 n 1 ≠ n 2 , m 1 ≠ m 2 n_1\neq n_2,m_1\neq m_2 n1=n2,m1=m2),然后取 m = max ⁡ ( m 1 , m 2 ) , n = max ⁡ ( n 1 , n 2 ) , l = max ⁡ ( l 1 , l 2 ) m=\max(m_1,m_2),n=\max(n_1,n_2),l=\max(l_1,l_2) m=max(m1,m2),n=max(n1,n2),l=max(l1,l2),对其填充dummy行列以具有相同的dimension。同理,instance-witness pair ( U ( 1 ) , W ( 1 ) ) , ( U ( 2 ) , W ( 2 ) ) (\mathbb{U}^{(1)},\mathbb{W}^{(1)}),(\mathbb{U}^{(2)},\mathbb{W}^{(2)}) (U(1),W(1)),(U(2),W(2)) 对应为 R1CS \text{R1CS} R1CS的instance-witness pair ( U , W ) (\mathbb{U},\mathbb{W}) (U,W)的左右侧。

  • 哈希函数:哈希函数 H 1 : F 1 ∗ → F 1 H_1:\mathbb{F}_1^*\rightarrow \mathbb{F}_1 H1:F1F1 H 2 : F 2 ∗ → F 2 H_2:\mathbb{F}_2^*\rightarrow \mathbb{F}_2 H2:F2F2 为抗碰撞哈希函数,其输入为任意数量的域元素,输出为编码了其哈希值的单个域元素。在Nova中,编码了哈希值的单个域元素对应为某scalar值,该scalar值以二进制表示最多有250位长。不过该输出哈希值在 F 1 , F 2 \mathbb{F}_1,\mathbb{F}_2 F1,F2这2个域都有唯一表示,这2个域内元素均为256位。【哈希摘要的长度可配置,不过当前选择的摘要长度为250位,以支持一些流行curve cycles,如:secp/secq、pallas/vesta(pasta curves)、BN254/Grumpkin。】
    定义 h 1 : = H 1 ( ⋯ ) h_1:=H_1(\cdots) h1:=H1() H 1 H_1 H1对任意输入元素 ( ⋯ ) ∈ F 1 ∗ (\cdots)\in\mathbb{F}_1^* ()F1的输出。该哈希值可表示为 h 1 = ∑ i ≤ 250 b i ( 1 ) ⋅ ( 2 ( 1 ) ) i h_1=\sum_{i\leq 250}b_i^{(1)}\cdot (2^{(1)})^i h1=i250bi(1)(2(1))i,其中 2 ( 1 ) ∈ F 1 2^{(1)}\in\mathbb{F}_1 2(1)F1,并对所有的 i ≤ 250 i\leq 250 i250 b i ( 1 ) ∈ F 1 b_i^{(1)}\in\mathbb{F}_1 bi(1)F1均为bits in { 0 , 1 } \{0,1\} {0,1}。域 F 1 \mathbb{F}_1 F1内的哈希输出 h 1 = ∑ i ≤ 250 b i ( 1 ) ⋅ ( 2 ( 1 ) ) i h_1=\sum_{i\leq 250}b_i^{(1)}\cdot (2^{(1)})^i h1=i250bi(1)(2(1))i 可表示为 域 F 2 \mathbb{F}_2 F2内的某元素 h 1 ′ h_1' h1。定义 h 1 ′ = ∑ i ≤ 250 b i ( 2 ) ⋅ ( 2 ( 2 ) ) i h_1'=\sum_{i\leq 250}b_i^{(2)}\cdot (2^{(2)})^i h1=i250bi(2)(2(2))i,其中对于所有 i ≤ 250 i\leq 250 i250,bit b i ( 2 ) ∈ F 2 b_i^{(2)}\in\mathbb{F}_2 bi(2)F2 与 bit b i ( 1 ) ∈ F 1 b_i^{(1)}\in\mathbb{F}_1 bi(1)F1 完全相同(即若 b i ( 1 ) = 1 ( 1 ) b_i^{(1)}=1^{(1)} bi(1)=1(1),则定义 b i ( 2 ) = 1 ( 2 ) b_i^{(2)}=1^{(2)} bi(2)=1(2),反之则定义 b i ( 2 ) = 0 ( 2 ) b_i^{(2)}=0^{(2)} bi(2)=0(2))。同理对于域 F 2 \mathbb{F}_2 F2内的哈希输出 h 2 = ∑ i ≤ 250 b i ( 2 ) ⋅ ( 2 ( 2 ) ) i h_2=\sum_{i\leq 250}b_i^{(2)}\cdot (2^{(2)})^i h2=i250bi(2)(2(2))i 也可用相同方式表示为域 F 1 \mathbb{F}_1 F1内的某元素 h 2 ′ h_2' h2
    抗碰撞哈希函数 H : { 0 , 1 } ∗ → { 0 , 1 } λ H: \{0,1\}^*\rightarrow \{0,1\}^{\lambda} H:{0,1}{0,1}λ的输出哈希值可在2个域中唯一表示。为便于表示,忽略了 H H H的参数。在Nova代码实现中:

    • H 1 H_1 H1 H 2 H_2 H2均使用了Poseidon哈希函数。
    • H H H采用了SHA-3函数。

2.1 基于cycle of curves的folding方案

在Nova论文中,通过对交互式folding方案 应用 Fiat-Shamir transform构建了random oracle model,从而实现了非交互式folding方案。通过使用合适的密码学哈希函数来实例化random oracle,可启发式地获得plain model下的非交互式folding方案。Nova论文中局限为基于单个域 F \mathbb{F} F、承诺值属于某(scalar域为$\mathbb{F})group G \mathbb{G} G的R1CS约束系统 R1CS \text{R1CS} R1CS

本文将R1CS约束系统 R1CS \text{R1CS} R1CS 扩展为基于ring R : = F 1 × F 2 R:=\mathbb{F}_1\times \mathbb{F}_2 R:=F1×F2,包含:

  • 针对 基于域 F 1 \mathbb{F}_1 F1的R1CS约束系统 R1CS ( 1 ) \text{R1CS}^{(1)} R1CS(1)的folding方案。
  • 针对 基于域 F 2 \mathbb{F}_2 F2的R1CS约束系统 R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)的folding方案。

相应地:

  • 当fold committed relaxed instances for R1CS ( 1 ) \text{R1CS}^{(1)} R1CS(1)时,暗示着对基于域 F 1 \mathbb{F}_1 F1的系统运行folding方案。
  • 当fold committed relaxed instances for R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)时,暗示着对基于域 F 2 \mathbb{F}_2 F2的系统运行folding方案。

但是,在这2个folding方案中调用random oracles时,需输入verification key vk \text{vk} vk作为参数,其中 vk \text{vk} vk参数派生自这2个系统。相应的folding setup和folding keygen定义如下:
在这里插入图片描述
Nova的folding scheme通过Fiat-Shamir transform,由交互式协议变为非交互式协议。因此对random oracle的queries中必须包含整个环境的描述。具体为,令 H H H为合适的密码学哈希函数,可启发式实例化一个random oracle, H H H的输出可在两个域内唯一表示。如上面公式(1)所示,verification key vk \text{vk} vk元素表示的是该环境的哈希摘要。因这些摘要元素可看成是交互式协议中folding verifier的输入,为保留Fiat-Shamir transform的soundness,需强调: Fold V \text{Fold}_{\mathcal{V}} FoldV中以 vk \text{vk} vk、𝕦 、 U 、 T ˉ 、\mathbb{U}、\bar{T} UTˉ元素用作其random oracle的参数。

3. Nova中所使用的增强约束系统

Nova IVC方案基于一组函数 F 1 , F 2 F_1,F_2 F1,F2操作,每个函数对应一个域。可将Nova看成是combined函数 F : ( F 1 a 1 × F 2 a 2 ) × ( F 1 b 1 × F 2 b 2 ) → ( F 1 a 1 × F 2 a 2 ) F: (\mathbb{F}_1^{a_1}\times\mathbb{F}_2^{a_2})\times (\mathbb{F}_1^{b_1}\times\mathbb{F}_2^{b_2})\rightarrow (\mathbb{F}_1^{a_1}\times\mathbb{F}_2^{a_2}) F:(F1a1×F2a2)×(F1b1×F2b2)(F1a1×F2a2)的IVC方案:
( ( z ( 1 ) , z ( 2 ) ) , ( aux ( 1 ) , aux ( 2 ) ) ) → F ( F 1 ( z ( 1 ) , aux ( 1 ) ) , F 2 ( z ( 2 ) , aux ( 2 ) ) ) ((z^{(1)},z^{(2)}),(\text{aux}^{(1)},\text{aux}^{(2)}))\overset{F}{\rightarrow}(F_1(z^{(1)},\text{aux}^{(1)}),F_2(z^{(2)},\text{aux}^{(2)})) ((z(1),z(2)),(aux(1),aux(2)))F(F1(z(1),aux(1)),F2(z(2),aux(2)))
其中:

  • F 1 : F 1 a 1 × F 1 b 1 → F 1 a 1 F_1: \mathbb{F}_1^{a_1}\times\mathbb{F}_1^{b_1}\rightarrow \mathbb{F}_1^{a_1} F1:F1a1×F1b1F1a1为基于 F 1 \mathbb{F}_1 F1的poly-size算术电路。
  • F 2 : F 2 a 2 × F 2 b 2 → F 2 a 2 F_2: \mathbb{F}_2^{a_2}\times\mathbb{F}_2^{b_2}\rightarrow \mathbb{F}_2^{a_2} F2:F2a2×F2b2F2a2为基于 F 2 \mathbb{F}_2 F2的poly-size算术电路。

Nova IVC方案旨在证明 ( z i ( 1 ) , z i ( 2 ) ) (z_i^{(1)}, z_i^{(2)}) (zi(1),zi(2))为:

  • 基于初始输入 ( z 0 ( 1 ) , z 0 ( 2 ) ) (z_0^{(1)}, z_0^{(2)}) (z0(1),z0(2))和某些辅助输入,迭代调用函数 F = ( F 1 , F 2 ) F=(F_1,F_2) F=(F1,F2) i i i 次的结果。

每次迭代,IVC使用2个R1CS约束系统(一个基于域 F 1 \mathbb{F}_1 F1,另一个基于域 F 2 \mathbb{F}_2 F2),来验证函数 F 1 F_1 F1 F 2 F_2 F2在该轮迭代时计算正确。但是,Nova将这些核心约束系统做了增强——额外引入了2个增强约束系统来:

  • 验证在每次迭代时folding是正确完成的。
  • 之前迭代的输出正确forward到当前迭代。

3.1 增强约束系统

Nova中定义了2个分别基于域 F 1 \mathbb{F}_1 F1 F 2 \mathbb{F}_2 F2的增强约束系统 R1CS ( 1 ) \text{R1CS}^{(1)} R1CS(1) R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)。如上一章所示, G 1 \mathbb{G}_1 G1的group运算可高效表示为base域 F 2 \mathbb{F}_2 F2的约束。由于folding操作中需要 G 1 \mathbb{G}_1 G1的group运算,Nova代码实现时,会在 R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)约束中 将 R1CS ( 1 ) \text{R1CS}^{(1)} R1CS(1)的committed instance 𝕦 ( 1 ) ^{(1)} (1) U ( 1 ) \mathbb{U}^{(1)} U(1)进行folding;同理也会在 R1CS ( 1 ) \text{R1CS}^{(1)} R1CS(1)约束中 将 R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)的committed instance 𝕦 ( 2 ) ^{(2)} (2) U ( 2 ) \mathbb{U}^{(2)} U(2)进行folding。

增强约束系统 R1CS ( 1 ) \text{R1CS}^{(1)} R1CS(1) R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)的定义为:

  • R1CS ( 1 ) \text{R1CS}^{(1)} R1CS(1)对应为下图relation R 1 \mathcal{R}_1 R1的R1CS约束系统:
    在这里插入图片描述
  • R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)对应为下图relation R 2 \mathcal{R}_2 R2的R1CS约束系统:
    在这里插入图片描述

R1CS ( 1 ) \text{R1CS}^{(1)} R1CS(1) R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)约束系统的每一步,会:

  • 执行函数: z i + 1 : = F ( z i , aux i ) z_{i+1}:=F(z_i,\text{aux}_i) zi+1:=F(zi,auxi)
  • 为对方约束系统,将之前的committed instance 𝕦 fold into a running committed instance U \mathbb{U} U
  • 维护原始输入 z 0 z_0 z0
  • 更新迭代索引 i i i

3.2 其它说明

  • 非原生域元素和域运算的表示:
    对2个committed instances 𝕦 ( 1 ) ^{(1)} (1) U ( 1 ) \mathbb{U}^{(1)} U(1) folding过程中不仅需要基于 G 1 \mathbb{G}_1 G1的group运算,还需要基于 F 1 \mathbb{F}_1 F1的域运算。
    但是,基于 F 2 \mathbb{F}_2 F2的R1CS约束系统 R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)需将这些folding运算 编码为 基于 F 2 \mathbb{F}_2 F2的约束。为此, F 1 \mathbb{F}_1 F1域元素被编码为合适的 F 2 \mathbb{F}_2 F2元素,使得非原生域运算可表示为 F 2 \mathbb{F}_2 F2约束。
    R1CS ( 1 ) \text{R1CS}^{(1)} R1CS(1)采用相同的策略。

  • 哈希参数:
    H 1 , H 2 H_1,H_2 H1,H2的哈希参数 p p H 1 , p p H 2 pp_{H_1},pp_{H_2} ppH1,ppH2被硬编码在相应的约束系统中。为便于标记,在本论文中忽略了这些参数,但在IVC Setup中暗含了以相应参数调用该哈希函数。

  • 对称性:若忽略base case约束, R1CS ( 1 ) \text{R1CS}^{(1)} R1CS(1) R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)为对称约束系统。 𝕦 i ( 1 ) _{i}^{(1)} i(1) VS. 𝕦 i + 1 ( 2 ) _{i+1}^{(2)} i+1(2) 的索引号的差异,并不影响这种对称性。
    此外,需强调:
    如上一章所属,哈希值在两个域均具有唯一表示,因此对 𝕦 i + 1 ( 1 ) . x 0 _{i+1}^{(1)}.x_0 i+1(1).x0 和 𝕦 i + 1 ( 2 ) . x 0 _{i+1}^{(2)}.x_0 i+1(2).x0的唯一约束为:

    • 𝕦 i + 1 ( 1 ) . x 0 _{i+1}^{(1)}.x_0 i+1(1).x0=𝕦 i ( 2 ) . x 1 _{i}^{(2)}.x_1 i(2).x1
    • 𝕦 i + 1 ( 2 ) . x 0 _{i+1}^{(2)}.x_0 i+1(2).x0=𝕦 i + 1 ( 1 ) . x 1 _{i+1}^{(1)}.x_1 i+1(1).x1

    这种equality,可通过copy constraints来将这些哈希值传递作为对方instance的public IO。详细将本论文5.3节。

4. 修订版Nova IVC方案

之前的two-cycle of curves Nova证明系统实现存在漏洞,相应的修改在本文以红色标识了。
整个算法的安全性证明见《Revisiting the Nova Proof System on a Cycle of Curves》第6章”Proof of security“。

4.1 Nova Setup算法

Nova Setup算法中,输入有:

  • security参数 1 λ 1^{\lambda} 1λ
  • poly-size bound n ∈ N n\in \mathbb{N} nN

输出为:

  • p p ← Fold Setup ( 1 λ , n ) pp\leftarrow \text{Fold}_{\text{Setup}}(1^{\lambda},n) ppFoldSetup(1λ,n)

4.2 修订版Nova Verifier算法

Nova Verifier V \mathcal{V} V的输入有:

  • IVC公共参数 p p pp pp
  • 函数描述: F 1 : F 1 a 1 × F 1 b 1 → F 1 a 1 F_1: \mathbb{F}_1^{a_1}\times\mathbb{F}_1^{b_1}\rightarrow \mathbb{F}_1^{a_1} F1:F1a1×F1b1F1a1 F 2 : F 2 a 2 × F 2 b 2 → F 2 a 2 F_2: \mathbb{F}_2^{a_2}\times\mathbb{F}_2^{b_2}\rightarrow \mathbb{F}_2^{a_2} F2:F2a2×F2b2F2a2
  • 索引号 i ∈ N i\in\mathbb{N} iN
  • 起始值 z 0 ( 1 ) ∈ F 1 a 1 z_0^{(1)}\in\mathbb{F}_1^{a_1} z0(1)F1a1 z 0 ( 2 ) ∈ F 2 a 2 z_0^{(2)}\in\mathbb{F}_2^{a_2} z0(2)F2a2
  • i i i次迭代的IVC proof: π i = ( ( \pi_i=(( πi=((𝕦 i ( 2 ) , _i^{(2)}, i(2),𝕨 i ( 2 ) ) , ( U i ( 1 ) , W i ( 1 ) ) , ( U i ( 2 ) , W i ( 2 ) ) ) _i^{(2)}),(\mathbb{U}_i^{(1)},\mathbb{W}_i^{(1)}),(\mathbb{U}_i^{(2)},\mathbb{W}_i^{(2)})) i(2)),(Ui(1),Wi(1)),(Ui(2),Wi(2)))

Verifier V \mathcal{V} V首先会运行如下初始流程,可将其看成是预处理阶段:

  • 1)已知函数 F 1 , F 2 F_1,F_2 F1,F2,确定性的生成 实现relation R 1 \mathcal{R}_1 R1 R 2 \mathcal{R}_2 R2的增强约束系统 R1CS ( 1 ) \text{R1CS}^{(1)} R1CS(1) R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)
  • 2)计算folding verification key:
    ( ⋅ , vk ) ← Fold K ( p p , R1CS : = ( R1CS ( 1 ) , R1CS ( 2 ) ) ) (\cdot,\text{vk})\leftarrow \text{Fold}_{\mathcal{K}}(pp, \text{R1CS}:=(\text{R1CS}^{(1)},\text{R1CS}^{(2)})) (,vk)FoldK(pp,R1CS:=(R1CS(1),R1CS(2)))

当满足以下6个条件时,Verifier验证通过:

  • 1)索引值 i i i必须大于0;
  • 2)𝕦 i ( 2 ) . x 0 = H 1 ( vk , i ( 1 ) , z 0 ( 1 ) , z i ( 1 ) , U i ( 2 ) ) _{i}^{(2)}.x_0=H_1(\text{vk},i^{(1)},z_0^{(1)},z_i^{(1)},\mathbb{U}_i^{(2)}) i(2).x0=H1(vk,i(1),z0(1),zi(1),Ui(2))
  • 3)𝕦 i ( 2 ) . x 1 = H 2 ( vk , i ( 2 ) , z 0 ( 2 ) , z i ( 2 ) , U i ( 1 ) ) _{i}^{(2)}.x_1=H_2(\text{vk},i^{(2)},z_0^{(2)},z_i^{(2)},\mathbb{U}_i^{(1)}) i(2).x1=H2(vk,i(2),z0(2),zi(2),Ui(1))
  • 4) ( U i ( 1 ) , W i ( 1 ) ) (\mathbb{U}_i^{(1)},\mathbb{W}_i^{(1)}) (Ui(1),Wi(1)) pair 满足 R1CS ( 1 ) \text{R1CS}^{(1)} R1CS(1)
  • 5) ( U i ( 2 ) , W i ( 2 ) ) (\mathbb{U}_i^{(2)},\mathbb{W}_i^{(2)}) (Ui(2),Wi(2)) pair 满足 R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)
  • 6) ( ( (𝕦 i ( 2 ) , _i^{(2)}, i(2),𝕨 i ( 2 ) ) _i^{(2)}) i(2)) pair 严格 满足 R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)

4.3 修订版Nova Prover算法

修订版Nova Prover算法分为三大块:

  • 1)初始流程
  • 2)base case step:即针对 i = 0 i=0 i=0的情况
  • 3)recursive step(即non-base case):即针对 i ≥ 1 i\geq 1 i1的情况。

4.3.1 修订版Nova Prover算法——初始流程

Prover P \mathcal{P} P的初始流程 与 Verifier V \mathcal{V} V的初始流程相同:

  • 1)已知函数 F 1 , F 2 F_1,F_2 F1,F2,确定性的生成 实现relation R 1 \mathcal{R}_1 R1 R 2 \mathcal{R}_2 R2的增强约束系统 R1CS ( 1 ) \text{R1CS}^{(1)} R1CS(1) R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)
  • 2)计算folding verification key:
    ( pk , vk ) ← Fold K ( p p , R1CS : = ( R1CS ( 1 ) , R1CS ( 2 ) ) ) (\text{pk},\text{vk})\leftarrow \text{Fold}_{\mathcal{K}}(pp, \text{R1CS}:=(\text{R1CS}^{(1)},\text{R1CS}^{(2)})) (pk,vk)FoldK(pp,R1CS:=(R1CS(1),R1CS(2)))

4.3.2 修订版Nova Prover算法——base case step

在这里插入图片描述

base case step,即针对 i = 0 i=0 i=0的情况,构建首次调用 F F F后的状态——即相当于证明 z 1 = F ( z 0 , aux 0 ) z_1=F(z_0,\text{aux}_0) z1=F(z0,aux0)
Prover P \mathcal{P} P在base case step,输入有:

  • IVC公共参数 p p pp pp
  • 函数描述: F 1 : F 1 a 1 × F 1 b 1 → F 1 a 1 F_1: \mathbb{F}_1^{a_1}\times\mathbb{F}_1^{b_1}\rightarrow \mathbb{F}_1^{a_1} F1:F1a1×F1b1F1a1 F 2 : F 2 a 2 × F 2 b 2 → F 2 a 2 F_2: \mathbb{F}_2^{a_2}\times\mathbb{F}_2^{b_2}\rightarrow \mathbb{F}_2^{a_2} F2:F2a2×F2b2F2a2
  • 起始值 z 0 ( 1 ) ∈ F 1 a 1 z_0^{(1)}\in\mathbb{F}_1^{a_1} z0(1)F1a1 z 0 ( 2 ) ∈ F 2 a 2 z_0^{(2)}\in\mathbb{F}_2^{a_2} z0(2)F2a2
  • 辅助输入 aux 0 ( 1 ) ∈ F 1 b 1 \text{aux}_0^{(1)}\in\mathbb{F}_1^{b_1} aux0(1)F1b1 aux 0 ( 2 ) ∈ F 2 b 2 \text{aux}_0^{(2)}\in\mathbb{F}_2^{b_2} aux0(2)F2b2

Prover P \mathcal{P} P在base case step主要执行3大步骤:

  • 1)为 R1CS ( 1 ) \text{R1CS}^{(1)} R1CS(1)计算新committed pair ( ( (𝕦 1 ( 1 ) , _1^{(1)}, 1(1),𝕨 1 ( 1 ) ) _1^{(1)}) 1(1))
  • 2)为 R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)计算新committed pair ( ( (𝕦 1 ( 2 ) , _1^{(2)}, 1(2),𝕨 1 ( 2 ) ) _1^{(2)}) 1(2))
  • 3)输出Prover State:为step 1输出IVC proof。

Prover P \mathcal{P} P在base case step的详细流程为:

  • 1)为 R1CS ( 1 ) \text{R1CS}^{(1)} R1CS(1)计算新committed pair ( ( (𝕦 1 ( 1 ) , _1^{(1)}, 1(1),𝕨 1 ( 1 ) ) _1^{(1)}) 1(1))

    • 1.1)定义初始dummy instance 𝕦 0 ( 2 ) : = ( 0 ˉ ( 2 ) , 1 ( 2 ) , 0 ˉ ( 2 ) , x : = ( x 0 , x 1 ) ) _0^{(2)}:=(\bar{0}^{(2)}, 1^{(2)},\bar{0}^{(2)},x:=(x_0,x_1)) 0(2):=(0ˉ(2),1(2),0ˉ(2),x:=(x0,x1)),其中:【即 i = 0 i=0 i=0的情况】
      x 0 = H 1 ( vk , 0 ( 1 ) , z 0 ( 1 ) , z 0 ( 1 ) , U ⊥ ( 2 ) ) x_0=H_1(\text{vk},0^{(1)},z_0^{(1)},z_0^{(1)},\mathbb{U}_{\perp}^{(2)}) x0=H1(vk,0(1),z0(1),z0(1),U(2))
      x 1 = H 2 ( vk , 0 ( 2 ) , z 0 ( 2 ) , z 0 ( 2 ) , U ⊥ ( 1 ) ) x_1=H_2(\text{vk},0^{(2)},z_0^{(2)},z_0^{(2)},\mathbb{U}_{\perp}^{(1)}) x1=H2(vk,0(2),z0(2),z0(2),U(1))
      该dummy instance不会与任何running instance fold。
    • 1.2)定义 w ^ 1 ( 1 ) = ( vk , 0 ( 1 ) , z 0 ( 1 ) , z 0 ( 1 ) , aux 0 ( 1 ) , U ⊥ ( 2 ) , \hat{w}_1^{(1)}=(\text{vk}, 0^{(1)}, z_0^{(1)}, z_0^{(1)},\text{aux}_0^{(1)},\mathbb{U}_{\perp}^{(2)}, w^1(1)=(vk,0(1),z0(1),z0(1),aux0(1),U(2),𝕦 0 ( 2 ) , 0 ˉ ( 2 ) ) _0^{(2)},\bar{0}^{(2)}) 0(2),0ˉ(2))为relation R 1 \mathcal{R}_1 R1的witness。然后基于 w ^ 1 ( 1 ) \hat{w}_1^{(1)} w^1(1),计算满足 R1CS ( 1 ) \text{R1CS}^{(1)} R1CS(1)约束系统所需的extended witness w 1 ( 1 ) w_1^{(1)} w1(1)
    • 1.3)对extended witness w 1 ( 1 ) w_1^{(1)} w1(1)进行commit,有: w ˉ 1 ( 1 ) ← Commit ( p p W ( 1 ) , w 1 ( 1 ) ) \bar{w}_1^{(1)}\leftarrow \text{Commit}(pp_W^{(1)},w_1^{(1)}) wˉ1(1)Commit(ppW(1),w1(1))
    • 1.4)定义 U 1 ( 2 ) : = U ⊥ ( 2 ) , W 1 ( 2 ) : = W ⊥ ( 2 ) \mathbb{U}_1^{(2)}:=\mathbb{U}_{\perp}^{(2)},\mathbb{W}_1^{(2)}:=\mathbb{W}_{\perp}^{(2)} U1(2):=U(2),W1(2):=W(2)
    • 1.5)定义 x 0 : = x_0:= x0:=𝕦 0 ( 2 ) . x 1 _0^{(2)}.x_1 0(2).x1,并计算 x 1 : = H 1 ( vk , 1 ( 1 ) , z 0 ( 1 ) , z 1 ( 1 ) : = F 1 ( z 0 ( 1 ) , aux 0 ( 1 ) ) , U 1 ( 2 ) ) x_1:=H_1(\text{vk},1^{(1)},z_0^{(1)},z_1^{(1)}:=F_1(z_0^{(1)}, \text{aux}_0^{(1)}),\mathbb{U}_1^{(2)}) x1:=H1(vk,1(1),z0(1),z1(1):=F1(z0(1),aux0(1)),U1(2))
    • 1.6)设置 𝕦 1 ( 1 ) : = ( 0 ˉ ( 1 ) , 1 ( 1 ) , w ˉ 1 ( 1 ) , x : = ( x 0 , x 1 ) ) _1^{(1)}:=(\bar{0}^{(1)}, 1^{(1)},\bar{w}_1^{(1)},x:=(x_0,x_1)) 1(1):=(0ˉ(1),1(1),wˉ1(1),x:=(x0,x1)),𝕨 1 ( 1 ) : = ( 0 ⃗ ( 1 ) , w 1 ( 1 ) ) _1^{(1)}:=(\vec{0}^{(1)},w_1^{(1)}) 1(1):=(0 (1),w1(1))
  • 2)为 R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)计算新committed pair ( ( (𝕦 1 ( 2 ) , _1^{(2)}, 1(2),𝕨 1 ( 2 ) ) _1^{(2)}) 1(2))

    • 2.1)定义 w ^ 1 ( 2 ) = ( vk , 0 ( 2 ) , z 0 ( 2 ) , z 0 ( 2 ) , aux 0 ( 2 ) , U ⊥ ( 1 ) , \hat{w}_1^{(2)}=(\text{vk}, 0^{(2)}, z_0^{(2)}, z_0^{(2)},\text{aux}_0^{(2)},\mathbb{U}_{\perp}^{(1)}, w^1(2)=(vk,0(2),z0(2),z0(2),aux0(2),U(1),𝕦 1 ( 1 ) , 0 ˉ ( 1 ) ) _1^{(1)},\bar{0}^{(1)}) 1(1),0ˉ(1))为relation R 2 \mathcal{R}_2 R2的witness。然后基于 w ^ 1 ( 2 ) \hat{w}_1^{(2)} w^1(2),计算满足 R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)约束系统所需的extended witness w 1 ( 2 ) w_1^{(2)} w1(2)
    • 2.2)对extended witness w 1 ( 2 ) w_1^{(2)} w1(2)进行commit,有: w ˉ 1 ( 2 ) ← Commit ( p p W ( 2 ) , w 1 ( 2 ) ) \bar{w}_1^{(2)}\leftarrow \text{Commit}(pp_W^{(2)},w_1^{(2)}) wˉ1(2)Commit(ppW(2),w1(2))
    • 2.3)定义 U 1 ( 1 ) : = \mathbb{U}_1^{(1)}:= U1(1):=𝕦 1 ( 1 ) , W 1 ( 1 ) : = _1^{(1)},\mathbb{W}_1^{(1)}:= 1(1),W1(1):=𝕨 1 ( 1 ) _1^{(1)} 1(1)
    • 2.4)定义 x 0 : = x_0:= x0:=𝕦 1 ( 1 ) . x 1 _1^{(1)}.x_1 1(1).x1,并计算 x 1 : = H 2 ( vk , 1 ( 2 ) , z 0 ( 2 ) , z 1 ( 2 ) : = F 2 ( z 0 ( 2 ) , aux 0 ( 2 ) ) , U 1 ( 1 ) ) x_1:=H_2(\text{vk},1^{(2)},z_0^{(2)},z_1^{(2)}:=F_2(z_0^{(2)}, \text{aux}_0^{(2)}),\mathbb{U}_1^{(1)}) x1:=H2(vk,1(2),z0(2),z1(2):=F2(z0(2),aux0(2)),U1(1))
    • 2.5)设置 𝕦 1 ( 2 ) : = ( 0 ˉ ( 2 ) , 1 ( 2 ) , w ˉ 1 ( 2 ) , x : = ( x 0 , x 1 ) ) _1^{(2)}:=(\bar{0}^{(2)}, 1^{(2)},\bar{w}_1^{(2)},x:=(x_0,x_1)) 1(2):=(0ˉ(2),1(2),wˉ1(2),x:=(x0,x1)),𝕨 1 ( 2 ) : = ( 0 ⃗ ( 2 ) , w 1 ( 2 ) ) _1^{(2)}:=(\vec{0}^{(2)},w_1^{(2)}) 1(2):=(0 (2),w1(2))
  • 3)输出Prover State:为step 1输出IVC proof为:
    π 1 : = ( ( \pi_1:=(( π1:=((𝕦 1 ( 2 ) , _1^{(2)}, 1(2),𝕨 1 ( 2 ) ) , ( U 1 ( 1 ) , W 1 ( 1 ) ) , ( U 1 ( 2 ) , W 1 ( 2 ) ) ) _1^{(2)}),(\mathbb{U}_1^{(1)},\mathbb{W}_1^{(1)}),(\mathbb{U}_1^{(2)},\mathbb{W}_1^{(2)})) 1(2)),(U1(1),W1(1)),(U1(2),W1(2)))
    以及新的evaluation值: z 1 ( 1 ) : = F 1 ( z 0 ( 1 ) , aux 0 ( 1 ) ) z_1^{(1)}:=F_1(z_0^{(1)}, \text{aux}_0^{(1)}) z1(1):=F1(z0(1),aux0(1)) 以及 z 1 ( 2 ) : = F 2 ( z 0 ( 2 ) , aux 0 ( 2 ) ) z_1^{(2)}:=F_2(z_0^{(2)}, \text{aux}_0^{(2)}) z1(2):=F2(z0(2),aux0(2))
    这些输出就足以供Nova prover执行another step for Iteration 1。

4.3.3 修订版Nova Prover算法——recursive step(即non-base case)

即针对 i ≥ 1 i\geq 1 i1的情况。迭代过程是指重复调用本小节算法。

Prover P \mathcal{P} P在recursive step(即non-base case),输入有:

  • IVC公共参数 p p pp pp
  • 约束系统 R1CS ( 1 ) \text{R1CS}^{(1)} R1CS(1) R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)
  • 索引值 i ∈ N i\in\mathbb{N} iN,其中 i ≥ 1 i\geq 1 i1
  • 起始值 z 0 ( 1 ) ∈ F 1 a 1 z_0^{(1)}\in\mathbb{F}_1^{a_1} z0(1)F1a1 z 0 ( 2 ) ∈ F 2 a 2 z_0^{(2)}\in\mathbb{F}_2^{a_2} z0(2)F2a2
  • evaluation值 z i ( 1 ) ∈ F 1 a 1 z_i^{(1)}\in\mathbb{F}_1^{a_1} zi(1)F1a1 z i ( 2 ) ∈ F 2 a 2 z_i^{(2)}\in\mathbb{F}_2^{a_2} zi(2)F2a2
  • 辅助输入 aux 0 ( 1 ) ∈ F 1 b 1 \text{aux}_0^{(1)}\in\mathbb{F}_1^{b_1} aux0(1)F1b1 aux 0 ( 2 ) ∈ F 2 b 2 \text{aux}_0^{(2)}\in\mathbb{F}_2^{b_2} aux0(2)F2b2
  • 对 Iteration i i i 的IVC Proof: π i = ( ( \pi_i=(( πi=((𝕦 i ( 2 ) , _i^{(2)}, i(2),𝕨 i ( 2 ) ) , ( U i ( 1 ) , W i ( 1 ) ) , ( U i ( 2 ) , W i ( 2 ) ) ) _i^{(2)}),(\mathbb{U}_i^{(1)},\mathbb{W}_i^{(1)}),(\mathbb{U}_i^{(2)},\mathbb{W}_i^{(2)})) i(2)),(Ui(1),Wi(1)),(Ui(2),Wi(2)))

在这里插入图片描述
如上图所示,Prover P \mathcal{P} P在recursive step(即non-base case),针对 i ≥ 1 i\geq 1 i1情况,主要有5个step,其中“step(1)+(2) 与 “step(3)+(4)” 在每次迭代时会重复调用,而step(5)仅在达到目标迭代次数,确定要输出最终的IVC proof时才执行:

  • 1)step(1):为 R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2) fold pair,计算新的committed relaxed instance-witness pair ( U i + 1 ( 2 ) , W i + 1 ( 2 ) ) (\mathbb{U}_{i+1}^{(2)}, \mathbb{W}_{i+1}^{(2)}) (Ui+1(2),Wi+1(2))
  • 2)step(2):为 R1CS ( 1 ) \text{R1CS}^{(1)} R1CS(1)计算新的committed relaxed instance-witness pair ( ( (𝕦 i + 1 ( 1 ) , _{i+1}^{(1)}, i+1(1),𝕨 i + 1 ( 1 ) ) _{i+1}^{(1)}) i+1(1))
  • 3)step(3):为 R1CS ( 1 ) \text{R1CS}^{(1)} R1CS(1) fold pair,计算新的committed relaxed instance-witness pair ( U i + 1 ( 1 ) , W i + 1 ( 1 ) ) (\mathbb{U}_{i+1}^{(1)}, \mathbb{W}_{i+1}^{(1)}) (Ui+1(1),Wi+1(1))
  • 4)step(4):为 R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)计算新的committed relaxed instance-witness pair ( ( (𝕦 i + 1 ( 2 ) , _{i+1}^{(2)}, i+1(2),𝕨 i + 1 ( 2 ) ) _{i+1}^{(2)}) i+1(2))
  • 5)step(5):输出Prover State:为step i + 1 i+1 i+1 输出IVC proof。

Prover P \mathcal{P} P在recursive step(即non-base case)的具体步骤为:

  • 1)step(1):为 R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2) fold committed pairs ( ( (𝕦 i ( 2 ) , _{i}^{(2)}, i(2),𝕨 i ( 2 ) ) _{i}^{(2)}) i(2)) ( U i ( 2 ) , W i ( 2 ) ) (\mathbb{U}_{i}^{(2)}, \mathbb{W}_{i}^{(2)}) (Ui(2),Wi(2))
    Fold P ( pk , ( \text{Fold}_{\mathcal{P}}(\text{pk},( FoldP(pk,(𝕦 i ( 2 ) , _{i}^{(2)}, i(2),𝕨 i ( 2 ) ) , ( U i ( 2 ) , W i ( 2 ) ) ) → ( T ˉ i ( 2 ) , ( U i + 1 ( 2 ) , W i + 1 ( 2 ) ) ) _{i}^{(2)}),(\mathbb{U}_{i}^{(2)}, \mathbb{W}_{i}^{(2)}))\rightarrow (\bar{T}_i^{(2)},(\mathbb{U}_{i+1}^{(2)}, \mathbb{W}_{i+1}^{(2)})) i(2)),(Ui(2),Wi(2)))(Tˉi(2),(Ui+1(2),Wi+1(2)))
    获得folding proof T ˉ i ( 2 ) \bar{T}_i^{(2)} Tˉi(2) 以及 新的committed relaxed instance-witness pair ( U i + 1 ( 2 ) , W i + 1 ( 2 ) ) (\mathbb{U}_{i+1}^{(2)}, \mathbb{W}_{i+1}^{(2)}) (Ui+1(2),Wi+1(2))

  • 2)step(2):为 R1CS ( 1 ) \text{R1CS}^{(1)} R1CS(1)计算新的committed relaxed instance-witness pair ( ( (𝕦 i + 1 ( 1 ) , _{i+1}^{(1)}, i+1(1),𝕨 i + 1 ( 1 ) ) _{i+1}^{(1)}) i+1(1))

    • 2.1)定义 w ^ i + 1 ( 1 ) = ( vk , i ( 1 ) , z 0 ( 1 ) , z i ( 1 ) , aux i ( 1 ) , U i ( 2 ) , \hat{w}_{i+1}^{(1)}=(\text{vk}, i^{(1)}, z_0^{(1)}, z_i^{(1)},\text{aux}_i^{(1)},\mathbb{U}_{i}^{(2)}, w^i+1(1)=(vk,i(1),z0(1),zi(1),auxi(1),Ui(2),𝕦 i ( 2 ) , T ˉ i ( 2 ) ) _i^{(2)},\bar{T}_i^{(2)}) i(2),Tˉi(2))为relation R 1 \mathcal{R}_1 R1的witness。然后基于 w ^ i + 1 ( 1 ) \hat{w}_{i+1}^{(1)} w^i+1(1),计算满足 R1CS ( 1 ) \text{R1CS}^{(1)} R1CS(1)约束系统所需的extended witness w i + 1 ( 1 ) w_{i+1}^{(1)} wi+1(1)
    • 2.2)对extended witness w i + 1 ( 1 ) w_{i+1}^{(1)} wi+1(1)进行commit,有: w ˉ i + 1 ( 1 ) ← Commit ( p p W ( 1 ) , w i + 1 ( 1 ) ) \bar{w}_{i+1}^{(1)}\leftarrow \text{Commit}(pp_W^{(1)},w_{i+1}^{(1)}) wˉi+1(1)Commit(ppW(1),wi+1(1))
    • 2.3)定义 x 0 : = x_0:= x0:=𝕦 i ( 2 ) . x 1 _i^{(2)}.x_1 i(2).x1,并计算 x 1 : = H 1 ( vk , i + 1 ( 1 ) , z 0 ( 1 ) , z i + 1 ( 1 ) : = F 1 ( z i ( 1 ) , aux i ( 1 ) ) , U i + 1 ( 2 ) ) x_1:=H_1(\text{vk},{i+1}^{(1)},z_0^{(1)},z_{i+1}^{(1)}:=F_1(z_i^{(1)}, \text{aux}_i^{(1)}),\mathbb{U}_{i+1}^{(2)}) x1:=H1(vk,i+1(1),z0(1),zi+1(1):=F1(zi(1),auxi(1)),Ui+1(2))
    • 2.4)设置 𝕦 i + 1 ( 1 ) : = ( 0 ˉ ( 1 ) , 1 ( 1 ) , w ˉ i + 1 ( 1 ) , x : = ( x 0 , x 1 ) ) _{i+1}^{(1)}:=(\bar{0}^{(1)}, 1^{(1)},\bar{w}_{i+1}^{(1)},x:=(x_0,x_1)) i+1(1):=(0ˉ(1),1(1),wˉi+1(1),x:=(x0,x1)),𝕨 i + 1 ( 1 ) : = ( 0 ⃗ ( 1 ) , w i + 1 ( 1 ) ) _{i+1}^{(1)}:=(\vec{0}^{(1)},w_{i+1}^{(1)}) i+1(1):=(0 (1),wi+1(1))
  • 3)step(3):为 R1CS ( 1 ) \text{R1CS}^{(1)} R1CS(1) fold 新计算的 ( ( (𝕦 i + 1 ( 1 ) , _{i+1}^{(1)}, i+1(1),𝕨 i + 1 ( 1 ) ) _{i+1}^{(1)}) i+1(1)) pair 和 ( U i ( 1 ) , W i ( 1 ) ) (\mathbb{U}_{i}^{(1)}, \mathbb{W}_{i}^{(1)}) (Ui(1),Wi(1)) pair:
    Fold P ( pk , ( \text{Fold}_{\mathcal{P}}(\text{pk},( FoldP(pk,(𝕦 i + 1 ( 1 ) , _{i+1}^{(1)}, i+1(1),𝕨 i + 1 ( 1 ) ) , ( U i ( 1 ) , W i ( 1 ) ) ) → ( T ˉ i ( 1 ) , ( U i + 1 ( 1 ) , W i + 1 ( 1 ) ) ) _{i+1}^{(1)}),(\mathbb{U}_{i}^{(1)}, \mathbb{W}_{i}^{(1)}))\rightarrow (\bar{T}_i^{(1)},(\mathbb{U}_{i+1}^{(1)}, \mathbb{W}_{i+1}^{(1)})) i+1(1)),(Ui(1),Wi(1)))(Tˉi(1),(Ui+1(1),Wi+1(1)))
    获得folding proof T ˉ i ( 1 ) \bar{T}_i^{(1)} Tˉi(1) 以及 新的committed relaxed instance-witness pair ( U i + 1 ( 1 ) , W i + 1 ( 1 ) ) (\mathbb{U}_{i+1}^{(1)}, \mathbb{W}_{i+1}^{(1)}) (Ui+1(1),Wi+1(1))

  • 4)step(4):为 R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)计算新的committed relaxed instance-witness pair ( ( (𝕦 i + 1 ( 2 ) , _{i+1}^{(2)}, i+1(2),𝕨 i + 1 ( 2 ) ) _{i+1}^{(2)}) i+1(2))

    • 4.1)定义 w ^ i + 1 ( 2 ) = ( vk , i ( 2 ) , z 0 ( 2 ) , z i ( 2 ) , aux i ( 2 ) , U i ( 1 ) , \hat{w}_{i+1}^{(2)}=(\text{vk}, i^{(2)}, z_0^{(2)}, z_i^{(2)},\text{aux}_i^{(2)},\mathbb{U}_{i}^{(1)}, w^i+1(2)=(vk,i(2),z0(2),zi(2),auxi(2),Ui(1),𝕦 i ( 1 ) , T ˉ i ( 1 ) ) _i^{(1)},\bar{T}_i^{(1)}) i(1),Tˉi(1))为relation R 2 \mathcal{R}_2 R2的witness。然后基于 w ^ i + 1 ( 2 ) \hat{w}_{i+1}^{(2)} w^i+1(2),计算满足 R1CS ( 1 ) \text{R1CS}^{(1)} R1CS(1)约束系统所需的extended witness w i + 1 ( 2 ) w_{i+1}^{(2)} wi+1(2)
    • 4.2)对extended witness w i + 1 ( 2 ) w_{i+1}^{(2)} wi+1(2)进行commit,有: w ˉ i + 1 ( 2 ) ← Commit ( p p W ( 2 ) , w i + 1 ( 2 ) ) \bar{w}_{i+1}^{(2)}\leftarrow \text{Commit}(pp_W^{(2)},w_{i+1}^{(2)}) wˉi+1(2)Commit(ppW(2),wi+1(2))
    • 4.3)定义 x 0 : = x_0:= x0:=𝕦 i + i ( 1 ) . x 1 _{i+i}^{(1)}.x_1 i+i(1).x1,并计算 x 1 : = H 2 ( vk , i + 1 ( 2 ) , z 0 ( 2 ) , z i + 1 ( 2 ) : = F 2 ( z i ( 2 ) , aux i ( 2 ) ) , U i + 1 ( 1 ) ) x_1:=H_2(\text{vk},{i+1}^{(2)},z_0^{(2)},z_{i+1}^{(2)}:=F_2(z_i^{(2)}, \text{aux}_i^{(2)}),\mathbb{U}_{i+1}^{(1)}) x1:=H2(vk,i+1(2),z0(2),zi+1(2):=F2(zi(2),auxi(2)),Ui+1(1))
    • 4.4)设置 𝕦 i + 1 ( 2 ) : = ( 0 ˉ ( 2 ) , 1 ( 2 ) , w ˉ i + 1 ( 2 ) , x : = ( x 0 , x 1 ) ) _{i+1}^{(2)}:=(\bar{0}^{(2)}, 1^{(2)},\bar{w}_{i+1}^{(2)},x:=(x_0,x_1)) i+1(2):=(0ˉ(2),1(2),wˉi+1(2),x:=(x0,x1)),𝕨 i + 1 ( 2 ) : = ( 0 ⃗ ( 1 ) , w i + 1 ( 2 ) ) _{i+1}^{(2)}:=(\vec{0}^{(1)},w_{i+1}^{(2)}) i+1(2):=(0 (1),wi+1(2))
  • 5)step(5):输出Prover State:为step i + 1 i+1 i+1 输出IVC proof:
    π i + 1 = ( ( \pi_{i+1}=(( πi+1=((𝕦 i + 1 ( 2 ) , _{i+1}^{(2)}, i+1(2),𝕨 i + 1 ( 2 ) ) , ( U i + 1 ( 1 ) , W i + 1 ( 1 ) ) , ( U i + 1 ( 2 ) , W i + 1 ( 2 ) ) ) _{i+1}^{(2)}),(\mathbb{U}_{i+1}^{(1)},\mathbb{W}_{i+1}^{(1)}),(\mathbb{U}_{i+1}^{(2)},\mathbb{W}_{i+1}^{(2)})) i+1(2)),(Ui+1(1),Wi+1(1)),(Ui+1(2),Wi+1(2)))

    以及新的evaluation值: z i + 1 ( 1 ) : = F 1 ( z i ( 1 ) , aux i ( 1 ) ) z_{i+1}^{(1)}:=F_1(z_i^{(1)}, \text{aux}_i^{(1)}) zi+1(1):=F1(zi(1),auxi(1)) 以及 z i + 1 ( 2 ) : = F 2 ( z i ( 2 ) , aux i ( 2 ) ) z_{i+1}^{(2)}:=F_2(z_i^{(2)}, \text{aux}_i^{(2)}) zi+1(2):=F2(zi(2),auxi(2))
    这些输出就足以供Nova prover执行another step for Iteration i + 1 i+1 i+1

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 亮点记

http://www.ppmy.cn/news/561602.html

相关文章

kafka集群启动后自动关闭解决办法

kafak的config/server.properties,查看broker.id是否唯一,不能和其他节点的相同。修改成唯一值即可。 再把logs/ meta.properties的broker.id改成与之相同的。就可以了! 比如我把主机1的server.properties和 meta.properties设成1&#xff0c…

Kafka的启动与关闭

Kafka的启动 zookeeper一定是存活的状态 # bin/kafka-server-start.sh -daemon config/server.properties Kafka的关闭 zookeeper一定是存活的状态,并且Kafka不会立即关闭,必须得等Kafka关闭后才能关闭zookeeper bin/kafka-server-stop.sh

麦咖啡产品系列

麦咖啡产品系列 1.产品类型 网络版 和 中小企业包 2.适用的对象 网络版主要适用于客户端较多的企业 中小企业包适用于用户数比较少的企业 也可以通过购买多个中小企业包的方式来适应用户数多的企业 3.价格 网络版按照客户端数量计价 中小企业包按照整体数量计价 4.…

麦咖啡卸载问题

以前一直用卡巴斯基,感觉不错,杀毒能力超强,唯一遗憾就是占用资源厉害,感觉很“卡”。去年一段时间,估计卡巴斯基官方加大反盗版力度,搞的病毒库不能升级了,无奈之下更换别的软件,选…

Mcafee(麦咖啡) 无法升级的解决办法 附:进程详解,设置指南

一直在用Macfee 8.0版杀毒软件,近日添加了两块新硬盘后,Macfee 不能升级了,提示fffff95b 2 返回错误,卸载后重装,升级时提示变成“初始化常规更新程序子系统失败,确保McAfee Franework Service正在运行。M…

Java_泛型_15

泛型 概述 什么是泛型&#xff1f; 泛型就是一个标签&#xff1a;<数据类型> 泛型可以在编译阶段约束只能操作某种数据类型。 注意&#xff1a;JDK 1.7开始之后&#xff0c;泛型后面的申明可以省略不写!! 泛型和集合都只能支持引用数据类型&#xff0c;不支持基本数据类…

JUC阻塞队列BlockingQueue---DelayQueue

JUC阻塞队列BlockingQueue---DelayQueue DelayQueueDelayed接口 使用原理构造方法常量入队put方法出队take方法步骤总结 什么是阻塞队列&#xff1f; DelayQueue DelayQueue 是一个支持延时获取元素的阻塞无界队列&#xff0c; 内部采用优先队列 PriorityQueue 存储元素&…

Nexus3首次登录默认密码

Nexus3 版本&#xff1a;3.41.1 目前的 Nexus3 用户名 admin 的初始化密码不再是 admin123&#xff0c;需要在文件中去查看密码。 cat /opt/sonatype/sonatype-work/nexus3/admin.password 输出后的密码是一个 uuid&#xff0c;这个就是密码&#xff0c;不要考虑太多&#x…