主要见斯坦福大学Wilson Nguyen、Dan Boneh和微软研究中心Srinath Setty 2023年论文《Revisiting the Nova Proof System on a Cycle of Curves》。
前序博客见:
- 基于cycle of curves的Nova证明系统(1)
5. IVC Proof进一步压缩
本文提出了两种压缩IVC proof的方案:
- 1)compression without SNARKs
- 2)compression with SNARKs
https://github.com/Microsoft/Nova代码中的CompressSNARK采用了这两种压缩方式。
5.1)compression without SNARKs
已知某convincing 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端执行如下步骤,获得压缩proof π i ′ \pi_i' πi′:
- 1)为
R1CS
(
2
)
\text{R1CS}^{(2)}
R1CS(2) fold pairs:将
R1CS
(
2
)
\text{R1CS}^{(2)}
R1CS(2)的committed pairs
(
(
(𝕦
i
(
2
)
,
_i^{(2)},
i(2),𝕨
i
(
2
)
)
,
(
U
i
(
2
)
,
W
i
(
2
)
)
_i^{(2)}),(\mathbb{U}_i^{(2)},\mathbb{W}_i^{(2)})
i(2)),(Ui(2),Wi(2)) 进行fold:
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 ) , ( ⋅ , W i + 1 ( 2 ) ) ) _{i}^{(2)}),(\mathbb{U}_{i}^{(2)}, \mathbb{W}_{i}^{(2)}))\rightarrow (\bar{T}_i^{(2)},(\cdot, \mathbb{W}_{i+1}^{(2)})) i(2)),(Ui(2),Wi(2)))→(Tˉi(2),(⋅,Wi+1(2))) - 2)输出压缩proof:
π i ′ = ( \pi_i'=( πi′=(𝕦 i ( 2 ) , U i ( 2 ) , ( T ˉ i ( 2 ) , W i + 1 ( 2 ) ) , ( U i ( 1 ) , W i ( 1 ) ) ) _i^{(2)},\mathbb{U}_i^{(2)},(\bar{T}_i^{(2)},\mathbb{W}_{i+1}^{(2)}),(\mathbb{U}_i^{(1)},\mathbb{W}_i^{(1)})) i(2),Ui(2),(Tˉi(2),Wi+1(2)),(Ui(1),Wi(1)))
Verifier V \mathcal{V} V端执行如下步骤,来验证 压缩proof π i ′ \pi_i' πi′:
- 1)执行初始folding流程: U i + 1 ( 2 ) : = Fold V ( vk , \mathbb{U}_{i+1}^{(2)}:=\text{Fold}_{\mathcal{V}}(\text{vk}, Ui+1(2):=FoldV(vk,𝕦 i ( 2 ) , U i ( 2 ) , T ˉ i ( 2 ) ) _i^{(2)},\mathbb{U}_i^{(2)},\bar{T}_i^{(2)}) i(2),Ui(2),Tˉi(2))
- 2)若满足以下6个条件,则验证通过:
- 2.1)索引值 i i i必须大于0;
- 2.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))
- 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))
- 2.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)
- 2.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)
- 2.6)“
( ( (𝕦 i ( 2 ) , _i^{(2)}, i(2),𝕨 i ( 2 ) ) _i^{(2)}) i(2)) pair 严格 满足 R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)” 改为 ”𝕦 i ( 2 ) . E ˉ = 0 ˉ ( 2 ) _{i}^{(2)}.\bar{E}=\bar{0}^{(2)} i(2).Eˉ=0ˉ(2) 且 𝕦 i ( 2 ) . s = 1 ˉ ( 2 ) _{i}^{(2)}.s=\bar{1}^{(2)} i(2).s=1ˉ(2)“
压缩proof的递归运算:
- 压缩proof π i ′ \pi_i' πi′ 和 新的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。【注意,压缩proof π i ′ \pi_i' πi′是readily incremental的。】
- 为便于理解,本论文中基于未压缩proof π i \pi_i πi构建了IVC方案,也可基于压缩proof π i ′ \pi_i' πi′来构建IVC方案。Nova论文,在”compression without SNARKs“之后,使用了某SNARK来将proof π i ′ \pi_i' πi′进一步压缩为 π i ′ ′ \pi_i^{''} πi′′。
5.2)compression with SNARKs
针对relation R s a t \mathcal{R}_{sat} Rsat的通用SNARK可用于进一步压缩IVC proof。Nova论文中采用Spartan SNARK来压缩IVC proof。
已知”compression without SNARKs“的压缩proof:
π
i
′
=
(
\pi_i'=(
πi′=(𝕦
i
(
2
)
,
U
i
(
2
)
,
(
T
ˉ
i
(
2
)
,
W
i
+
1
(
2
)
)
,
(
U
i
(
1
)
,
W
i
(
1
)
)
)
_i^{(2)},\mathbb{U}_i^{(2)},(\bar{T}_i^{(2)},\mathbb{W}_{i+1}^{(2)}),(\mathbb{U}_i^{(1)},\mathbb{W}_i^{(1)}))
i(2),Ui(2),(Tˉi(2),Wi+1(2)),(Ui(1),Wi(1)))
Prover
P
\mathcal{P}
P端执行如下步骤,获得压缩proof
π
i
′
′
\pi_i^{''}
πi′′:
Verifier
V
\mathcal{V}
V端执行如下步骤,来验证 压缩proof
π
i
′
\pi_i'
πi′:
- 1)执行初始folding流程: U i + 1 ( 2 ) : = Fold V ( vk , \mathbb{U}_{i+1}^{(2)}:=\text{Fold}_{\mathcal{V}}(\text{vk}, Ui+1(2):=FoldV(vk,𝕦 i ( 2 ) , U i ( 2 ) , T ˉ i ( 2 ) ) _i^{(2)},\mathbb{U}_i^{(2)},\bar{T}_i^{(2)}) i(2),Ui(2),Tˉi(2))
- 2)若满足以下6个条件,则验证通过:
- 2.1)索引值 i i i必须大于0;
- 2.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))
- 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))
2.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)2.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)- 2.4) π s a t \pi_{sat} πsat为 relation R s a t \mathcal{R}_{sat} Rsat with instance ( U i + 1 ( 2 ) , U i ( 2 ) ) (\mathbb{U}_{i+1}^{(2)},\mathbb{U}_{i}^{(2)}) (Ui+1(2),Ui(2)) 的convincing SNARK proof。
- 2.5)
2.6)“ ( ( (𝕦 i ( 2 ) , _i^{(2)}, i(2),𝕨 i ( 2 ) ) _i^{(2)}) i(2)) pair 严格 满足 R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)” 改为 ”𝕦 i ( 2 ) . E ˉ = 0 ˉ ( 2 ) _{i}^{(2)}.\bar{E}=\bar{0}^{(2)} i(2).Eˉ=0ˉ(2) 且 𝕦 i ( 2 ) . s = 1 ˉ ( 2 ) _{i}^{(2)}.s=\bar{1}^{(2)} i(2).s=1ˉ(2)“
6. Nova IVC proof的延展性 及 应对措施
Nova的IVC proof具有延展性问题。
假设某adversary知道某valid Nova IVC proof π i \pi_i πi 以及相应的参数:
- 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×F1b1→F1a1 和 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×F2b2→F2a2。
- 索引号 i ∈ N i\in\mathbb{N} i∈N。
- 起始值 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
- claimed evaluations值 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
针对相同的iteration
i
i
i,该adversary可对不同于
z
i
(
2
)
z_i^{(2)}
zi(2)的
z
p
r
i
m
e
(
2
)
z_{prime}^{(2)}
zprime(2)构建proof
π
p
r
i
m
e
\pi_{prime}
πprime,而IVC Verifier的参数为:
(
p
p
,
(
F
1
,
F
2
)
,
i
,
(
z
0
(
1
)
,
z
0
(
2
)
)
,
(
z
i
(
1
)
,
z
p
r
i
m
e
(
2
)
)
,
π
p
r
i
m
e
)
(pp, (F_1,F_2), i, (z_0^{(1)},z_0^{(2)}),(z_i^{(1)},z_{prime}^{(2)}),\pi_{prime})
(pp,(F1,F2),i,(z0(1),z0(2)),(zi(1),zprime(2)),πprime)
为让IVC Verifier验证通过。
需强调:
- 为计算 z i ( 2 ) z_i^{(2)} zi(2),adversary无需知道所有的辅助值 ( aux 0 ( 2 ) , aux 1 ( 2 ) , ⋯ , aux i − 1 ( 2 ) ) (\text{aux}_0^{(2)},\text{aux}_1^{(2)},\cdots,\text{aux}_{i-1}^{(2)}) (aux0(2),aux1(2),⋯,auxi−1(2))。在不知道前 i − 1 i-1 i−1个辅助的情况下,修改替换最后一个辅助值 aux p r i m e ( 2 ) ≠ aux i − 1 ( 2 ) \text{aux}_{prime}^{(2)}\neq \text{aux}_{i-1}^{(2)} auxprime(2)=auxi−1(2),可为iteration i i i的替换值 z p r i m e ( 2 ) z_{prime}^{(2)} zprime(2)构建proof π p r i m e \pi_{prime} πprime。
延展性会带来现实世界漏洞。假设:
- Alice使用其秘密辅助值来计算 z i ( 2 ) z_i^{(2)} zi(2),且 z i ( 2 ) z_i^{(2)} zi(2)中编码了其payment地址。
- Alice将 z i ( 2 ) z_i^{(2)} zi(2)和相应的proof发送给某payment合约。
- 攻击者可拦截Alice的消息,将
z
i
(
2
)
z_i^{(2)}
zi(2)替换为 编码了攻击者payment地址的
z
p
r
i
m
e
(
2
)
z_{prime}^{(2)}
zprime(2),以及有效的proof
π
p
r
i
m
e
\pi_{prime}
πprime 发送个payment合约。payment合约会将资金发送给攻击者,而不是给Alice。
事实上,若Tornado Cash中使用statement可延展的证明系统,则可能盗取资金。
若函数 F F F为确定性函数——即输入中不包含辅助参数,则不存在延展性问题。因为此时,函数 F F F的第 i i i次迭代的结果 z i z_i zi 由初始值 z 0 z_0 z0完全确定。
而对具有辅助输入的Nova IVC,为解决其延展性问题,可采用如下3种策略:
- 1)压缩(Compression):基于cycle of curves的Nova证明系统(1)的”4.3 修订版Nova Prover算法“中,Prover在输出final folded instance的同时会输出a satisfying witness。可替换为,Prover在输出final folded instance的同时输出 a zkSNARK proof that it has a valid witness for this folded instance。若该zkSNARK方案是simulation extractable,则该final proof是非延展性的。事实上,Nova的当前实现就是采用这种方案,在解决延展性问题的同时,对final proof进行了压缩。但是,这与IVC概念不兼容:压缩之后,另一方无法通过folding进一步继续迭代了。这样的结果就是,整个IVC chain的计算仅能由单一方完成。
- 2)上下文(context):将verification key vk \text{vk} vk扩展为包含一个额外的context元素 ctx \text{ctx} ctx。这样可确保非延展性,但是与IVC不兼容。额外的context元素包含了该计算的最后一步,且阻止了其它方使用folding进一步延长IVC chain。
- 3)递增上下文(Incremental context):为确保非延展性的同时,支持IVC的incremental aspect,每次一方与另一方交互时更新verification key vk \text{vk} vk,从而各方都可延长IVC chain。
6.1 延展性攻击
本节展示对IVC chain最后一步的延展性攻击。
已知:
π
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)))
延展性攻击操作如下:
-
1)根据论文《Revisiting the Nova Proof System on a Cycle of Curves》第6章”Proof of Security“可知,可解析𝕨 i ( 2 ) _i^{(2)} i(2) 来获取relational witness:
w ^ i ( 2 ) = ( vk , ( i − 1 ) ( 2 ) , z 0 ( 2 ) , z i − 1 ( 2 ) , aux i − 1 ( 2 ) , U i − 1 ( 1 ) , \hat{w}_{i}^{(2)}=(\text{vk}, (i-1)^{(2)}, z_0^{(2)}, z_{i-1}^{(2)},\text{aux}_{i-1}^{(2)},\mathbb{U}_{i-1}^{(1)}, w^i(2)=(vk,(i−1)(2),z0(2),zi−1(2),auxi−1(2),Ui−1(1),𝕦 i − 1 ( 1 ) , T ˉ i − 1 ( 1 ) ) _{i-1}^{(1)},\bar{T}_{i-1}^{(1)}) i−1(1),Tˉi−1(1))
其中 z i ( 2 ) = F 2 ( z 0 ( 2 ) , aux 0 ( 2 ) ) z_i^{(2)}=F_2(z_0^{(2)}, \text{aux}_0^{(2)}) zi(2)=F2(z0(2),aux0(2)), U i ( 1 ) = Fold V ( vk , U i − 1 ( 1 ) , \mathbb{U}_i^{(1)}=\text{Fold}_{\mathcal{V}}(\text{vk}, \mathbb{U}_{i-1}^{(1)}, Ui(1)=FoldV(vk,Ui−1(1),𝕦 i ( 1 ) , T ˉ i − 1 ( 1 ) ) _i^{(1)},\bar{T}_{i-1}^{(1)}) i(1),Tˉi−1(1))
从而可根据𝕨 i ( 2 ) _i^{(2)} i(2) 来解析获取 w ^ i ( 2 ) \hat{w}_{i}^{(2)} w^i(2)。 -
2)找到一个不同的辅助值:使用 z i − 1 ( 2 ) z_{i-1}^{(2)} zi−1(2),(假设对于 F 2 F_2 F2很容易)找到某 aux p r i m e ( 2 ) \text{aux}_{prime}^{(2)} auxprime(2),使得:
z p r i m e ( 2 ) : = F 2 ( z i − 1 ( 2 ) , aux p r i m e ( 2 ) ) ≠ F 2 ( z i − 1 ( 2 ) , aux i − 1 ( 2 ) ) = z i ( 2 ) z_{prime}^{(2)}:=F_2(z_{i-1}^{(2)},\text{aux}_{prime}^{(2)})\neq F_2(z_{i-1}^{(2)},\text{aux}_{i-1}^{(2)})=z_{i}^{(2)} zprime(2):=F2(zi−1(2),auxprime(2))=F2(zi−1(2),auxi−1(2))=zi(2) -
3)为 R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)计算
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 亮点记
- 基于cycle of curves的Nova证明系统(1)