FRI及相关SNARKs的Fiat-Shamir安全

1. 引言

本文主要参考:

评估参数用的Sagemath code见:

2. 何为FRI-based SNARK?

何为FRI-based SNARK?
非正式来说,其为遵循如下配方的SNARK:

  • 1)PIOP:Polynomial Interactive Oracle proof。
  • 2)FRI + Merkle trees:将PIOP用FRI和Merkle trees进行compile。
  • 3)Fiat-Shamir transform

2.1 何为PIOP?

PIOP=Polynomial Interactive Oracle proof。
PIOP是一种交互协议,有Prover和Verifier两种角色,有problem statement x x x,和仅对Prover已知的witness w w w。Prover和Verifier以一定轮数相互交换消息。
在这里插入图片描述
PIOP的独特性在于:

  • Prover发送的消息 m i ( X ) m_i(X) mi(X)为“low degree” polynomials。
  • 在交互阶段结束时,Verifier会在random points来open这些 m i ( X ) m_i(X) mi(X)多项式,并基于这些openings是否满足某些代数关系,来决定是accept还是reject。

当在对PIOP做安全性分析时,一个关键假设是:

  • 假设攻击者(恶意Prover)发送的所有maps都是多项式。【这实际是一个很强的假设,从而让PIOP安全性分析相对简单。】

这样,对PIOP的安全性分析,通常会归结为争论:

  • 除非Verifier(非常不幸)恰巧发送了某特定low-degree polynomial的root,否则攻击者无法破坏该PIOP协议。
    而根据Schwartz-Zippel lemma有:“degree d d d多项式具有 ≤ d \leq d d个roots”。
    因此,攻击者破解该PIOP协议的概率 ≤ d / 2 λ \leq d/2^{\lambda} d/2λ

PIOP是一种对ZKP进行分析的很好的抽象框架,但实际上,PIOP存在如下问题:

  • 1)Verifier如何检查Prover发送的是low degree多项式?
    • 方法之一是:Verifier检查这些多项式的所有evaluations,来确认其是否与某多项式一致,但这会让Verifier非常慢。
  • 2)maps m i ( X ) m_i(X) mi(X)太大,难以发送。这会让proof size巨大,可能会与Prover直接发送witness size相当。

因此,针对以上PIOP问题的解决方案为:

  • Polynomial Commitment Scheme(PCS)多项式承诺方案:即使用某多项式承诺方案对该PIOP进行编译。此时:
    • PIOP中Prover发送的消息为 m i ( X ) m_i(X) mi(X)多项式的承诺值 C m ( m i ( X ) ) Cm(m_i(X)) Cm(mi(X)),而不再是 m i ( X ) m_i(X) mi(X)多项式本身。
    • 在交互协议阶段结束时,为获得在随机点的openings m i ( a ) m_i(a) mi(a),由于此时Verifier只有 m i ( X ) m_i(X) mi(X)的承诺值,其无法自己open,因此Verifier会根据特定的PCS规则 与Prover交互,以获得openings m i ( a ) m_i(a) mi(a)

在这里插入图片描述
目前的PCS多项式承诺方案有:

  • KZG多项式承诺方案
  • IPA-based多项式承诺方案
  • (FRI + Merkle tree)-based多项式承诺方案:本文重点关注本方案。因很多从业人员常使用(FRI + Merkle tree)-based多项式承诺方案,但实际上其需要在非常严格地配置下,才能将FRI用作PCS多项式承诺方案。而这种严格配置,会让(FRI + Merkle tree)-based PCS很慢。
    因此实际应用时,会将FRI配置为非PCS,后续将详谈这个关键点。

在Marlin和Dark等论文中,有如下定理:

  • 若PIOP和PCS是安全的,则新协议是安全的。

2.2 Fiat-Shamir transform

Fiat-Shamir transformation可:

  • 移除交互性
  • 对public coin协议,所有Verifier消息都是随机的
  • 简单思路为:将Verifier的challenges替换为hashes。
  • 将哈希函数 模型化为 a Random Oracle。

借助Fiat-Shamir转换为非交互式协议之后:

  • Verifier会基于 ( x , m 1 , c 1 , ⋯   , m μ ) (x,m_1,c_1,\cdots,m_{\mu}) (x,m1,c1,,mμ)的有效性来决定是accept还是reject。
  • Verifier会检查 c i c_i ci是否“well hashed”。

当前FRI-based SNARKs有:

  • STARK
  • Plonky2
  • RISC Zero
  • Boojum

在这里插入图片描述

3. Fiat-Shamir issues

3.1 Fiat-Shamir转换的安全性

令:

  • Π \Pi Π为某交互式协议
  • F S ( Π ) FS(\Pi) FS(Π)为其Fiat-Shamir转换

则,有可能 Π \Pi Π是安全的,但 F S ( Π ) FS(\Pi) FS(Π)是不安全的。
如:

  • 示例一: Π \Pi Π为sequential repetition of a “small” protocol。如某small protocol的sound error为 1 / 2 1/2 1/2,交互式重复该协议2次,则sound error变为 ( 1 / 2 ) 2 = 1 / 4 (1/2)^2=1/4 (1/2)2=1/4
    当但对该small协议做FS转换获得新协议时,则可能是灾难——其security仍为 1 / 2 1/2 1/2
  • 示例二: Π \Pi Π为parallel repetition of a “smaller” protocol Π 0 \Pi_0 Π0(Attema, Fehr, Kloss, 2022)。【本文重点关注这种并行重复执行协议示例】
    假设 Π 0 \Pi_0 Π0 small协议的安全性为 ϵ \epsilon ϵ,为增加其安全性,并行对其进行重复执行——以2倍并行为例,Prover在每轮会发送2个消息,Verifier在每轮会应答2个challenges。这就相当于以2个线程来并行运行 Π 0 \Pi_0 Π0 Π \Pi Π的Verifier会accept,当且仅当, Π 0 \Pi_0 Π0的Verifier会同时accept ( x , m 1 , c 1 , m 2 , c 2 , m 3 ) (x,m_1,c_1,m_2,c_2,m_3) (x,m1,c1,m2,c2,m3) ( x , m 1 ′ , c 1 ′ , m 2 ′ , c 2 ′ , m 3 ′ ) (x,m_1',c_1',m_2',c_2',m_3') (x,m1,c1,m2,c2,m3)。这样 Π \Pi Π的安全性将是 Π 0 \Pi_0 Π0的二次方,即 ϵ 2 \epsilon^2 ϵ2
    在这里插入图片描述

parallel repetition场景下的FS攻击,攻击者攻击流程为:

  • 1)Prover选择 ( m 1 , m 1 ′ ) (m_1,m_1') (m1,m1)
  • 2)计算 ( c 1 , c 1 ′ ) = H a s h ( x , m 1 , m 1 ′ ) (c_1,c_1')=Hash(x,m_1,m_1') (c1,c1)=Hash(x,m1,m1)
  • 3)检查 c 1 c_1 c1是否为某“special” challenge,其使得 Π 0 \Pi_0 Π0的第一个proof ( x , m 1 , c 1 , m 2 , c 2 , m 3 ) (x,m_1,c_1,m_2,c_2,m_3) (x,m1,c1,m2,c2,m3)是有效的。如, c 1 c_1 c1可为特定多项式的root。【因此,实际需确保Verifier发送的challenge不是多项式的root,否则将破坏协议。】
  • 4)若 c 1 c_1 c1不是特殊的challenge,则Prover rewinds,然后重复执行上面的步骤1)。
    【原则上,Prover需要 ≈ 1 / ϵ = 2 λ \approx1/\epsilon=2^{\lambda} 1/ϵ=2λ次迭代即可成功。其中 λ \lambda λ为交互式协议的安全参数。】
    在这里插入图片描述
    然后,假设Prover最终找到了该特殊的challenge c 1 c_1 c1,并继续如下流程:
  • 1)令 m 2 m_2 m2为某消息,使得Prover可获得第一个有效proof ( x , m 1 , c 1 , m 2 , c 2 , m 3 ) (x,m_1,c_1,m_2,c_2,m_3) (x,m1,c1,m2,c2,m3)
  • 2)然后在另一线程中,重复之前的流程:
    • 2.1)选择任意 m 2 ′ m_2' m2
    • 2.2)计算 ( c 2 , c 2 ′ ) = H a s h ( x , m 1 , m 1 ′ , c 1 , c 1 ′ , m 2 , m 2 ′ ) (c_2,c_2')=Hash(x,m_1,m_1',c_1,c_1',m_2,m_2') (c2,c2)=Hash(x,m1,m1,c1,c1,m2,m2)
    • 2.3)检查 c 2 ′ c_2' c2是否为某“special” challenge,其使得 Π 0 \Pi_0 Π0的第二个proof ( x , m 1 ′ , c 1 ′ , m 2 ′ , c 2 ′ , m 3 ′ ) (x,m_1',c_1',m_2',c_2',m_3') (x,m1,c1,m2,c2,m3)是有效的。如, c 2 ′ c_2' c2可为特定多项式的root。【因此,实际需确保Verifier发送的challenge不是多项式的root,否则将破坏协议。】
    • 2.4)若 c 2 ′ c_2' c2不是特殊的challenge,则Prover rewinds,然后重复执行上面的步骤2.1)。
      【原则上,Prover需要 ≈ 1 / ϵ = 2 λ \approx1/\epsilon=2^{\lambda} 1/ϵ=2λ次迭代即可成功。其中 λ \lambda λ为交互式协议的安全参数。】
      在这里插入图片描述

结论为:

  • 假设Prover为Round 1找到了特殊的 c 1 c_1 c1,为Round 2找到了特殊的 c 2 c_2 c2
  • ( x , m 1 , c 1 , m 2 , c 2 , m 3 ) (x,m_1,c_1,m_2,c_2,m_3) (x,m1,c1,m2,c2,m3) ( x , m 1 ′ , c 1 ′ , m 2 ′ , c 2 ′ , m 3 ′ ) (x,m_1',c_1',m_2',c_2',m_3') (x,m1,c1,m2,c2,m3)均为有效proofs。
  • 找到该特殊 c i c_i ci需要约 ≈ 1 / ϵ = 2 λ \approx 1/\epsilon=2^{\lambda} 1/ϵ=2λ次迭代尝试。
  • 总共,Prover需要 1 / ϵ + 1 / ϵ = 2 / ϵ 1/\epsilon +1/\epsilon=2/\epsilon 1/ϵ+1/ϵ=2/ϵ次迭代尝试。
  • 这样,安全性仅增加了1个bit,尽管期待的是增加2倍,原因在于parallel repetition的交互版本具有的soundness为 1 / ϵ 2 1/\epsilon^2 1/ϵ2
  • 总的来说,第2个parallel repetition对soundness没有任何贡献。
    在这里插入图片描述
    相关经验法则为:
  • Π 0 \Pi_0 Π0为 soundness error为 ϵ \epsilon ϵ μ \mu μ-round协议
  • Π 0 ′ \Pi_0' Π0为并行重复 Π 0 \Pi_0 Π0 t t t 次。
  • F S ( Π 0 ′ ) FS(\Pi_0') FS(Π0)具有的soundness error 为 ≈ ϵ ⌈ t / μ ⌉ \approx \epsilon ^{\left \lceil t/\mu \right \rceil} ϵt/μ
  • 因此,所添加的 Π 0 \Pi_0 Π0并行实例个数,应为 μ \mu μ的倍数,才能实现在FS转换前类似的soundness。
    在这里插入图片描述

3.2 何时FS转换是安全的?

以上面的结论和经验法则可知,存在如下情况:

  • Π 0 ′ \Pi_0' Π0具有soundness ϵ ′ \epsilon' ϵ,但 F S ( Π 0 ′ ) FS(\Pi_0') FS(Π0)具有低得多的soundness。

那么,问题来了,何时FS转换能保持相同量级的soundness?即何时FS转换后的协议与初始的交互协议具有相同的安全级别?
有2种概念:

  • 1)Special soundness(Atttema, Fehr, Kloss, 2022):即证明初始交互协议满足某种特殊的soundness强概念。若初始交互协议是special sound的,则FS转换后的协议与该初始协议一样安全。
  • 2)Round-by-Round (RBR) knowledge soundness(Chiesa, Manohar, Spooner, 2020):即若证明初始交互协议具有Round-by-Round (RBR) knowledge soundness,则FS转换后的协议与该初始协议一样安全。

所谓Round-by-Round (RBR) knowledge soundness:

  • 在之前的2个例子(Sequential repetition和Parallel repetition)中,可称其为 “the overall soundness ϵ \epsilon ϵ of Π \Pi Π is the accumulation of smaller soundness errors throughout Π \Pi Π’s rounds”。
  • 但这正是之前FS攻击所利用之处:攻击者其可rewind proofs,并试图破坏该small soundness checks,这些checks具有small soundness,然后Fiat-Shamir transform将不再按预期工作。
  • 当满足如下情况时,则称该协议是RBR (knowledge) sound的:【协议的安全性,不是多个不太安全checks的累加】
    • 即,当“each round of Π \Pi Π has soundness error ≈ \approx the overall error ϵ \epsilon ϵ of Π \Pi Π”时。

在Theorem (Block, G., Tiwari, Zajac) 中指出:

  • RBR knowledge soundness => special soundness => RBR soundness。

4. FRI及其FS安全性

FRI协议:

  • FRI是a IOP。
  • FRI Prover具有某函数 f : F → F f:\mathbb{F}\rightarrow \mathbb{F} f:FF
  • FRI Verifier可访问所有的 f ( v ) f(v) f(v),其中 v ∈ D v\in D vD D ⊆ F D\subseteq \mathbb{F} DF
  • 理想情况下,FRI协议的目的是:让Verifier信服 f ( X ) f(X) f(X)为某degree ≤ d \leq d d的多项式。
  • 实际情况下,FRI协议的目的是:让Verifier信服 f ( X ) f(X) f(X) δ \delta δ-close 某degree ≤ d \leq d d的多项式。
    • 所谓 δ \delta δ-close,是指:在 D D D的相对大的子集 D 0 D_0 D0内, f ( X ) f(X) f(X)与某low degree多项式 agree,即 ∣ D 0 ∣ ≥ ( 1 − δ ) ∣ D ∣ |D_0|\geq (1-\delta)|D| D0(1δ)D,且 0 < δ < 1 0<\delta <1 0<δ<1

Theorem (Block, G., Katz, Thaler, Tiwari, Zajac; StarkWare) 中指出:

  • FRI协议是RBR (knowledge) sound的。【根据之前的RBR knowledge soundness => special soundness => RBR soundness,可知FRI协议也是special sound的。】

因此,FRI协议FS转换之后,其soundness ≈ Q ε F R I + Q 2 2 \approx \mathcal{Q}_{\varepsilon_{FRI}}+\frac{\mathcal{Q}^2}{2} QεFRI+2Q2。即,可安全的对FRI进行Fiat-Shamir转换。

5. 使用FRI来编译PIOPs

5.1 FRI-based PCS in practice

当 “ δ \delta δ-close” 是 “very close”时,FRI可用于构建多项式承诺:

  • 为验证 f ( z ) = y f(z)=y f(z)=y,需使用FRI来检查:“ q ( X ) : = f ( X ) − y X − z q(X):=\frac{f(X)-y}{X-z} q(X):=Xzf(X)y” 为 “ δ \delta δ-close” to 某degree ≤ d − 1 \leq d-1 d1 多项式。
  • 此处“very close”,是指:在 某unique decoding radius δ ≤ ( 1 − ( d + 1 ) / ∣ D ∣ ) / 2 \delta\leq (1-(d+1)/|D|)/2 δ(1(d+1)/∣D)/2范围内。
  • 但是,取如此小的 δ \delta δ值,在效率上是有开销的。会导致不具备实用性的不高效的FRI协议。也就是说,实际应用时,并不会取如此低的proximity参数。
  • 实际上,当前所有的协议(如STARK、Plonky2、RISC Zero等),会取更大的proximity参数 δ \delta δ值,其最大为Johnson bound: 1 − ( d + 1 ) / ∣ D ∣ 1-\sqrt{(d+1)/|D|} 1(d+1)/∣D
  • 这样的实际取值,导致以上"PCS"将不再是一个多项式承诺方案。原因在于:
    • 可能有多个多项式,其均满足 δ \delta δ-close to the map q ( X ) q(X) q(X)
    • Prover可open这多个close多项式中的任意一个。【此时,Prover不再是对某多项式进行commit,而是对一组多项式进行commit。这是个问题。】
    • 将FRI用作PCS beyond unique decoding radius的相关项目有:
      • RedShift:Plonk + FRI —— 其soundness error随execution trace width指数级扩大。
      • STARK-type协议:DEEP-FRI、ethSTARK等 + Hab¨ock。【其使用FRI来编译PIOPs,当不将FRI看成是多项式承诺方案。】【Polygon Labs Ulrich Hab¨ock 2022年论文《A summary on the FRI low degree test》中,对所评估的soundness进行了一点改进。】

为此,主要结论为:

  • Theorem (Block, G., Katz, Thaler, Tiwari, Zajac) 中指出:有某large class C \mathscr{C} C of PIOPs,使得:
    • 假设该初始PIOP是RBR (knowledge) sound的。
    • 则所生成的FRI-based SNARG是knowledge sound的,即为a SNARK。

因此,关键点在于:

  • 以上Theorem支持,仅通过看该PIOP,来证明该SNARK的安全性。这样通常相对更易于分析。

Alexander R. Block 2023年论文 Fiat-Shamir Security of FRI and Related SNARKs 中:

  • 展示了ethSTARK和Plonky2作为PIOPs是RBR knowledge sound的,且在class C \mathscr{C} C中。
  • 从而可推断出:ethSTARK和Plonky2作为SNARGs是knowledge sound的。
  • 与此同时,StarkWare也展示了ethSTARK的相同结论。
  • 称PIOPs in C \mathscr{C} C 0 0 0-correlated。

在这里插入图片描述

参考资料

[1] Alexander R. Block 2023年论文 Fiat-Shamir Security of FRI and Related SNARKs
[2] Albert Garreta 2023年9月在ZK Summit 10上分享 ZK10: Fiat-Shamir security of FRI and related SNARKs - Albert Garreta (Nethermind)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值