RedShift: Transparent SNARKs from List Polynomial Commitments学习笔记

Posted mutourend

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RedShift: Transparent SNARKs from List Polynomial Commitments学习笔记相关的知识,希望对你有一定的参考价值。

1. 引言

纽约大学Kattis和Matter Labs团队2019年论文《RedShift: Transparent SNARKs from List Polynomial Commitments》,提出了:

  • 名为“List Polynomial Commitment(LPC)”的新的IOP原语,可将现有的需要trusted setup的SNARK方案转换为Transparent SNARK方案。
  • 100万( 2 20 2^20 220)gates,80-bit security level情况下,生成证明时间约为1分钟(还是半分钟),proof size约为515KB。

实际上,本文实现的RedShift证明系统为:(compile PLONK IOP with LPC) + FRI多项式承诺。


上图源自Vitalik 2019年博客Understanding PLONK

本文,将SNARKs(Succinct Non-interactive ARguments of Knowledge)方案分为:

  • 1)pre-processing SNARKs:
    所谓pre-processing,是指需要trusted setup来生成proving/verification key-pair (pk,vk)(又名SRS(Structured Reference String))。
    如Groth16,采用Kate commitment方案,优点是proof size很小,缺点是需要trusted setup。详细可参看博客 Groth16 学习笔记
  • 2)universal SNARKs:但是proof size会比pre-processing SNARKs大。
    所谓universal,是指无需trusted setup。
    其中, T T T为circuit size, d d d为circuit depth, G G G为circuit width。

不过,在本文中,针对某circuit C C C的satisfiability proof system,所实现RedShift证明系统为”fully succinct“ zk-SNARK方案,具有如下属性:【Bulletproofs不具备verifier succinctness,其验证时间与circuit size(即 ∣ C ∣ |C| C)呈线性关系。】

  • Succinctness:Verifier time为poly-logarithmic in ∣ C ∣ |C| C
  • Prover Efficiency:Proving time为quasi-linear in ∣ C ∣ |C| C
  • Proof Succinctness:Proof size为poly-logarithmic in ∣ C ∣ |C| C
  • Transparent:无需可信设置。
  • Plausibly Quantum Resistant:所基于的安全假设是抗量子的。

1.1 多项式承诺方案

所谓多项式承诺方案(PCS,Polynomial Commitment Schemes),是指可高效验证 f f f在其域内任意点的evaluation值。
透明高效的PCS对应transparent SNARK。
现有的多项式承诺方案:【其中 μ \\mu μ为多项式中的变量个数, d d d为多项式degree。】

Eli Ben-Sasson等人2019年论文《DEEP-FRI: Sampling outside the box improves soundness》采用了类似STARK证明系统。在DEEP-FRI协议中,Verifier已知:

  • 所有的setup polynomials
  • 所有的constraints
  • 所有的checked relations

DEEP-FRI的Verifier会直接进行验证。
本文:

1.2 本文贡献

本文的主要贡献为:

  • 1)List Polynomial Commitments(LPC):
    Eli Ben-Sasson等人2018年论文《Fast Reed-Solomon interactive oracle proofs of proximity》和 2019年论文 《DEEP-FRI: Sampling outside the box improves soundness》 中介绍了Fast Reed Solomon IOP of Proximity(FRI IOPP)——为高效proximity testing,可检查某指定函数是否close to any low degree polynomial。该proximity tester可转换为透明PCS,其commitment size为 O ( log ⁡ 2 d ) O(\\log ^2 d) O(log2d),其中 d d d为多项式degree。但是,该PCS的soundness error相对较大,需迭代多次以达到指定的security level。从而导致大的proof size以及大的计算负担。其具有large soundness error的主要原因在于low sensitivity of FRI:when the Hamming distance between two different polynomials is smaller than some predefined constant, it is impossible for FRI to efficiently distinguish them。
    而在本文中,扩大了DEEP-FRI中的PCS方案:可对a list of proximate polynomials进行承诺——引入了LPC(List Polynomial Commitment)。
  • 2)使用LPC来编译IOP:借助LPC可将任意polynomial IOP编译为preprocessing zk-SNARK。
  • 3)RedShift=(compile PLONK IOP with LPC) + FRI多项式承诺:借助LPC对Plonk进行实例化,去除了其中的trusted setup,所构建的新的证明系统称为RedShift。
    本文为RedShift证明系统提供了正确性和安全性论证,并做了原型实现和benchmark对比。

100万( 2 20 2^20 220)gates,80-bit security level情况下,生成证明时间约为半分钟,proof size约为515KB。

1.3 Transparent zk-SNARKs

现有的Transparent zk-SNARKs方案主要有:

  • Auorora(2018年)和Fractal(2019年),均是为R1CS arithmetization设计的IOP,二者提供的编译框架与本文的等价。Auorora(2018年)和Fractal(2019年)分别需要"holographic lincheck argument"/"IOP of Proximity"来构建IOP for R1CS,而本文借助PLONK IOP可避免该情况。
  • Virgo(2020年)以及Libra(2019年,非transparent)采用类似的方案,但采用的为”基于interactive proofs(IPs)的Polynomial IOP“(详细见Goldwasser等人1998年论文《The knowledge complexity of interactive proof systems》)。【详细可参看博客SNARK Design。】
  • Eli Ben-Sasson等人2018年论文《Fast Reed-Solomon interactive oracle proofs of proximity》和 2019年论文 《DEEP-FRI: Sampling outside the box improves soundness》 中,实现了FRI多项式承诺方案,并设计了ALI-IOP for compilation。本文为在此基础上改进。
  • Halo infinite(2020年)定义了具有加法(additive)同态属性的严格版本的PCS,并与Bulletproof(2018年)做了快速递归证明benchmark。然而,这种additive PCS并不适于FRI,若该要求可适当放松,batch效率将可能更高。在Halo infinite(2020年)第4章的batch evaluation problem,等价为,多变量(multivariate)commitment,而LCS可解决该问题。通过放松PCS的binding属性,LCS可替代Kate commitment 为 transparent multivariate commitment,从而可更generally witness polynomials。
  • Plonky2(2022年)借鉴了以上思想,关注 how two modular modifications to the proof system affect performance by using a smaller field for faster modular operations and implementing a leaner PLONK-derived IOP called turboPLONK。【turboPLONK为派生自PLONK-IOP的IOP。】
    在Plonky2中,针对smaller filed会引起soundness loss的问题,对IOP应用tight parallel repetition theorem可提升soundness,同时,Plonky2中选择了合适的extension field来运行FRI。从而使得Plonky2具有高效的recursive proving time,为大规模的transparent recursive proof computation提供解决方案。

2. 总览

Kate多项式承诺方案中基于的安全假设为: t t t-Strong Diffie Hellman假设,使得任何使用Kate PCS的证明系统均需要trusted setup。
PLONK需要trusted setup的原因仅在于其采用了Kate PCS。

STARK(2019)和 Aurora(2018)中的关键组件为FRI协议。
FRI专注于解决如下proximity problem:

  • Verifier 可oracle access to an evaluation of some function f f f on a fixed domain D ⊂ F D\\subset \\mathbbF DF
  • Prover使Verifier信服,该函数 f f f is close to a polynomial of (predefined) degree d d d

若Verifier query f f f获得所有的 D D D evaluations值,并插值计算出多项式,然后验证该多项式的degree不超过 d d d,则整个过程的complexity为 O ( d ) O(d) O(d)。FRI仅需要a poly-logarithmic number of queries in d d d,相应的FRI PCS直观流程为:【有2个FRI实例】

  • 1)Prover对 f f f commit,提供an oracle to all evaluations of f f f on some predefined domain D D D
  • 2)Prover和Verifier参与FRI for f f f with respect to some degree d d d。若Prover通过验证,则Verifier信服大概率 f f f is close to a polynomial of degree less than d d d
  • 3)Verifier想要获得 f f f i ∉ D i\\notin D i/D点的值。
    • Prover发送相应的opening z = f ( i ) z=f(i) z=f(i),然后Prover和Verifier双方开启另一个FRI实例——对应的为某quotient function q ( X ) = ( f ( X ) − z ) / ( X − i ) q(X)=(f(X)-z)/(X-i) q(X)=(f(X)z)/(Xi)的degree小于 d − 1 d-1 d1
    • 注意,此时Verifier具有oracle access to q q q,因其具有oracle access to f f f,且其还知道 i i i z z z
    • 若Prover通过了本FRI实例,则 q ( X ) q(X) q(X)确实对应为某degree小于 d − 1 d-1 d1的多项式函数。
  • 4)根据Bezout理论: h ( t ) = y h(t)=y h(t)=y当且仅当 h ( X ) − y h(X)-y h(X)y可整除 X − t X-t Xt in the ring F [ X ] \\mathbbF[X] F[X]。因此,这意味着 f ( i ) = z f(i)=z f(i)=z成立。

不过,事实上,以上简化流程仍然不够,因存在以下问题:

  • 1)问题1:FRI具有sensitivity bound:若precise polynomials和functions 足够接近,在某预定义metric(此时为relative Hamming distance)中,则FRI无法区分。
  • 2)问题2:从实现一致性角度,希望以上2个FRI实例基于相同的domain。但是,FRI与degree d d d以及 domain size ∣ D ∣ |D| D是相互关联的,有rate ρ = d / ∣ D ∣ \\rho=d/|D| ρ=d/∣D。FRI结构要求rate ρ \\rho ρ是“2-adic”的——即形如 2 − R 2^-R 2R,其中 R ∈ N R\\in \\mathbbN RN。但是,在不对协议做修改的情况下,相邻的degree d d d d − 1 d-1 d1无法同时满足该要求。

问题1 意味着需可正确处理函数只是非常接近某多项式的情况。现有的承诺方案无法满足该要求。
f f f δ \\delta δ-ball around多项式集合 f 1 ′ , f 2 ′ , ⋯   , f n ′ \\f_1',f_2',\\cdots,f_n'\\ f1,f2,,fn,可称该集合为 δ \\delta δ-neighborhood of f f f δ \\delta δ-list of f f f,标记为 L δ = L δ ( f ) L_\\delta=L_\\delta(f) Lδ=Lδ(f)。其中 δ \\delta δ的取值取决于FRI sensitivity。

  • δ \\delta δ足够小,则 L δ L_\\delta Lδ内仅包含一个多项式,可称 δ \\delta δ lies in the unique-decoding radius。但是这种情况下,相同的soundness对应更大的proof size。
  • 增大 δ \\delta δ可降低proof size,对应 L δ L_\\delta Lδ的size要大于1。

为解决该问题,考虑relaxed版本的承诺方案——即,不open to 指定的多项式 f f f,改为,open to a polynomial in the δ \\delta δ-list L δ L_\\delta Lδ